ARDUINO: CONTROL DE MOTOR CD CON L293D



En esta práctica se enseñará el uso y control de un motor DC con un puente H, este puente H nos dará un poco de más control sobre el motor ya que podremos cambiarlo de dirección, lo cual se verá en la práctica además de modificar la velocidad del motor (PWM) pero esto se le deja al lector investigarlo.

Materiales:

  • 1x Arduino
  • 1x Motorreductor de 6V
  • Fuente de 6V(puede ser 4 pilas AA)
  • 1x L293D
  • 2x Resistores de 10K
  • 2x Pulsadores de 4 o 2 pines.
  • 1x Protoboard
  • Jumpers

 

Esquema de montaje

A continuación, se mostrará el esquema de montaje requerido.

Código 

Como pueden observar el código se inicia llamando la librería del servo usando #include <Servo.h>, después se definen los pines a usar; en este caso el potenciómetro y el servo al que se le asigna el nombre de ServoUNO. En el setup se configuran los pines con la función de la librería attach enviándola al nombre del servo, se declara en qué pin está conectado el servo; en este caso en el pin 2 como se ve en el diagrama.

En la parte del loop puede observar que se leen los datos del potenciómetro y se almacenan en una variable, después usando la función map vista anteriormente se transforman los valores del potenciómetro a valores aceptados por el servomotor, en este caso el servomotor es de 0 a 180°, es por eso que, gracias a la función map trasformamos a los valores de 0 a 180.

A continuación, usando la función write de la librería Servo y enviándola al nombre del servomotor, le entregamos como parámetro la variable aux, ya que en esa variable se almacenarán los números de 0 a 180, se asigna un delay para que el servomotor no se mueva muy rápido, cuando intente mover el potenciómetro usted notará que el servomotor también se mueve desde 0 a 180°.

Usando el monitor serial podemos ver los valores del potenciómetro y a qué grado se convierte cada valor, como puede ver hemos unido lo visto en sensores analógicos para mover un servomotor, también se puede unir lo visto en sensores digitales para mover el servomotor, esto queda como investigación al lector.

//Definimos los pines
#define MotorUno_1 2
#define MotorUno_2 3

#define pulsador_uno 4
#define pulsador_dos 5

int puldador_UR;
int pulsador_DR;

void setup() {

  //Configuramos los pines como salida o entrada
  pinMode(MotorUno_1, OUTPUT);
  pinMode(MotorUno_2, OUTPUT);
  pinMode(pulsador_uno, INPUT);
  pinMode(pulsador_dos, INPUT);
  //Inicamos el motor en apagado
  digitalWrite(MotorUno_1, LOW);
  digitalWrite(MotorUno_2, LOW);
}

void loop() {
  puldador_UR = digitalRead(pulsador_uno);
  pulsador_DR = digitalRead(pulsador_dos);

  if (puldador_UR == HIGH) {
    digitalWrite(MotorUno_1, HIGH);
    digitalWrite(MotorUno_2, LOW);
  }
  if (pulsador_DR == HIGH) {
    digitalWrite(MotorUno_1, LOW);
    digitalWrite(MotorUno_2, HIGH);
  }
  if(puldador_UR == LOW && pulsador_DR = LOW){
    digitalWrite(MotorUno_1, LOW);
    digitalWrite(MotorUno_2, LOW);
  }
}