Guia do escudo do driver do motor L293D do Arduino

Guía del escudo del controlador del motor Arduino L293D

La Guía de protección del controlador de motor Arduino L293D es un proyecto de robótica que implica controlar varios tipos de motores. Los tipos más comunes utilizados para aplicaciones robóticas incluyen motores CC, servomotores y paso a paso.

Sin embargo, estos motores normalmente no pueden ser controlados directamente por Arduino u otro microcontrolador. Esto se debe a sus mayores índices de corriente y potencia, por lo que se utilizan protectores de motor o circuitos integrados de controlador. Estos escudos o circuitos integrados aíslan la fuente de alimentación del motor y utilizan la lógica de control del circuito del microcontrolador.

Uno de los protectores de controlador de motor más populares utilizados con Arduino es el L293D. El escudo del controlador de motor completo L293D puede controlar hasta cuatro motores CC bidireccionales con selección de velocidad de 8 bits, dos motores paso a paso y dos servomotores.

Un tutorial del L293D
El protector del controlador del motor L293D incluye dos CI del controlador del motor L293 y un CI de registro de desplazamiento 74HC595. El escudo tiene varios componentes importantes.

El controlador: El L293D es un controlador de motor de puente H de doble canal que puede controlar dos motores de CC o un motor paso a paso al mismo tiempo. Dado que hay dos circuitos integrados L293D en el blindaje, es técnicamente capaz de controlar un total de cuatro motores de CC.

Esto es ideal para plataformas robóticas de dos y cuatro ruedas. El IC consta de dos puentes H para controlar los motores, cada uno de los cuales suministra pa 0,6 A a un motor.

El registro de desplazamiento: El 74HC595 es un registro de desplazamiento de entrada serial de 8 bits y salida serial/paralela. Se utiliza para extender cuatro Arduino GPIO (u otro microcontrolador) a ocho pines de control de dirección para dos de los circuitos integrados del controlador del motor L293D.

La fuente de alimentación: La fuente de alimentación del escudo se puede usar tanto para el escudo como para el Arduino o los dos pueden usar fuentes de alimentación separadas. Si comparte una fuente de alimentación común, se debe colocar un puente de alimentación en el escudo. La fuente de alimentación se puede suministrar a través del puerto USB de Arduino, su conector CC o el bloque EXT-PWR de 2 pines del escudo.

Si se utilizan fuentes de alimentación independientes, es importante evitar colocar el puente de alimentación en el blindaje. Se debe utilizar el bloque EXT-PWR de 2 pines del escudo y el Arduino aún puede recibir alimentación conectándolo a su conector USB o CC.

Si se utiliza una fuente de alimentación independiente, se debe insertar alimentación blindada en el bloque EXT-PWR de 2 pines.

Idealmente, se recomienda mantener la fuente de alimentación y el escudo de Arduino separados. Pero si se utiliza una fuente común, el voltaje nunca debe exceder los 12V.

El escudo viene con un indicador LED integrado que se ilumina si la potencia del motor es suficiente. También tiene un conjunto de resistencias desplegables que mantienen el motor apagado cuando está encendido.

Los terminales de salida: Para conectar motores de CC, hay dos terminales de tornillo de cinco pines en los bordes del blindaje. Estos terminales están etiquetados como M1, M2, M3 y M4. A estos terminales se pueden conectar motores de CC con voltajes nominales entre 4,5 y 25 V y proporcionarán energía de hasta 600 mA.

También se pueden usar los mismos terminales de tornillo de 5 pines para conectar dos motores paso a paso usando puertos de motor M1-M2 y M3-M4. El terminal de tierra en los conectores de tornillo de 5 pines puede conectar motores paso a paso unipolares a través de las tomas centrales del motor y los terminales GND.

Para conectar dos servomotores, utilice los dos conectores de 3 pines en el borde superior izquierdo del escudo.

El botón de reinicio: el escudo tiene un botón de reinicio en la esquina inferior izquierda. Es solo el botón de reinicio de Arduino que se muestra en la parte superior del escudo para su uso.

Pero cuando el escudo está equipado con Arduino, sólo se debe usar el botón de reinicio de Arduino (que está en la parte superior del escudo).

Motores CC
Los motores de CC se utilizan comúnmente en proyectos de robótica y electrónica. Tienen dos terminales. El motor gira en una dirección cuando se aplica voltaje en una polaridad y gira en la otra dirección cuando se invierte la polaridad.

Estos motores requieren un voltaje mínimo para comenzar a funcionar y su velocidad aumentará a medida que aumente el voltaje aplicado. Sin embargo, una vez que se alcanza el voltaje nominal máximo, cualquier voltaje disminuirá su velocidad. Se utiliza un controlador de motor para suministrar suficiente voltaje al motor, controlando su velocidad y dirección.

Motores paso a paso
Los motores paso a paso se utilizan para girar un eje en un número determinado de pasos. La rotación completa se puede dividir en un número predeterminado de pasos iguales que se pueden programar en el Arduino. La cantidad de rotación por paso depende de la estructura del motor. Estos motores se utilizan en dispositivos que incluyen máquinas CNC e impresoras 3D. y escáneres.

Servomotores
Los servomotores son motores de corriente continua con control de posición. Un servo se puede girar en un ángulo específico aplicando la señal PWM adecuada. Estos motores son adecuados para aplicaciones como brazos robóticos.

Usando el L293 con Arduino
El escudo del controlador del motor Arduino L293D es compatible con Arduino Mega y UNO. El escudo se puede instalar encima de la placa Arduino.

En estos casos, seis pines analógicos, incluidos los pines 2 y 13, quedan libres para su uso.

Para controlar el servomotor, utilice:

  • Pines 2, 9 y 10.

Para controlar motores DC utilice:

  • Pin 11 para el puerto del motor M1
  • Pin 3 para el puerto del motor M2
  • Pin 5 para puerto del motor M3
  • Pin 6 para puerto del motor M4
  • También se pueden utilizar los pines 4, 7, 8 y 12.

Para controlar motores paso a paso, utilice:

  • Pines 11 y 3 para el puerto del motor M1-M2
  • Pines 5 y 6 para el puerto del motor M2-M3
  • También se pueden utilizar los pines 4, 7, 8 y 12.

Control del motor CC
El motor de CC se puede conectar a cualquiera de los cuatro puertos del motor. Usemos el puerto M4.

Para controlar el motor de CC utilizando el escudo del controlador del motor L293D, la biblioteca AFMotor resulta útil.

A continuación se muestra un boceto de ejemplo que controla el motor de CC utilizando el escudo del controlador del motor L293D...

#incluir
Motor AF_DCMotor (4, MOTOR12_64KHZ)
configuración nula
{
//Define la velocidad inicial del motor y se detiene
motor.setSpeed(200);
motor.run(LIBERACIÓN);

}
bucle vacío
{
uint8_ti;

//Encender el motor
motor.run(SIGUIENTE);

//Acelera desde cero hasta la velocidad máxima
para (l=0; l<255; l++)
{
motor.setSpeed(i);
retraso(10);
}

// desacelera desde la velocidad máxima a cero
para (l=255; l!=0; l–)
{
motor.setSpeed(i);
retraso(10);
}

// Ahora cambia la dirección del motor.
motor.run (HACIA ATRÁS);

//Acelera desde cero hasta la velocidad máxima
para (l=0; l<255; l++)
{
motor.setSpeed(i);
retraso(10);
}

// desacelera desde la velocidad máxima a cero
para (l=255; l!=0; l–)
{
motor.setSpeed(i);
retraso(10);
}

// Ahora apaga el motor
motor.run(LIBERACIÓN);
retraso(1000);
}

El boceto de Arduino comienza incluyendo la biblioteca AFMotor.h. La siguiente línea crea un objeto de clase AF_DCMotor. La instanciación de este objeto requiere la mención del puerto donde está conectado el motor y el segundo parámetro que es la frecuencia de control de velocidad del motor.

El segundo argumento puede ser MOTOR12_2KHZ, MOTOR12_8KHZ, MOTOR12_8KHZ y MOTOR12_8KHZ para los puertos 1 y 2 de los motores. Puede ser MOTOR12_8KHZ, MOTOR12_8KHZ y MOTOR12_8KHZ para los puertos 3 y 4 de los motores.

Si no se selecciona, será 1KHZ de forma predeterminada. Para conectar varios motores al escudo, se deben crear objetos separados para cada motor.

Por ejemplo…

AF_DCMotor motor1(1);
AF_DCMotor motor2(2);

La función setSpeed(velocidad) establece la velocidad del motor. La velocidad varía de 0 a 255 ('0' = apagado y 255 = aceleración máxima).

La función run(cmd) define el modo de funcionamiento del motor. Los valores válidos para cmd son ADELANTE para hacer funcionar el motor hacia adelante, HACIA ATRÁS para hacer funcionar el motor hacia atrás y LIBERAR para detener el motor.

El protector del motor no implementa frenado dinámico, por lo que el motor puede tardar algún tiempo en dejar de moverse.

Control del servomotor
El escudo del motor separa los pines 9 y 10 de salida PWM de 16 bits de Arduino hasta el borde del escudo, con dos conectores de 3 pines. Los servos funcionan con el regulador de 5 V incorporado en Arduino, por lo que no es necesario conectar una fuente de alimentación externa al terminal EXT_PWR. Se puede conectar un servo a cualquiera de estos conectores.

Para controlar servomotores, la biblioteca de servos es útil. A continuación se muestra un boceto de ejemplo para controlar un servomotor utilizando el protector del controlador del motor L293D.

#incluir
Siervo mi siervo; //crea un objeto servo para controlar un servo
posicionesint = 0; //variable para almacenar la posición del servo
configuración nula
{
// conecta el servo en el pin 10 al objeto servo
miservidor.attach(10);
}

bucle vacío
{
//escanear de 0 grados a 180 grados
para(pos = 0; pos <= 180; pos += 1)
{
myservo.write(pos);
retraso(15);
}
//escanear de 180 grados a 0 grados
para(pos = 180; pos>=0; pos-=1)
{
myservo.write(pos);
retraso(15);
}
}

El boceto de Arduino comienza importando la biblioteca de servos. La siguiente línea crea un objeto de clase sirviente. El método aquí asigna el pin de servocontrol. El método de grabado se utiliza para girar el servo y establecer ángulos.

Controlando el motor paso a paso
Los motores paso a paso más populares son el paso a paso unipolar 28BYJ-48 y el paso a paso bipolar NEMA 17.

El paso a paso unipolar 28BYJ-48 tiene una potencia nominal de 5 V y ofrece 48 pasos por revolución. Para conectar estos motores, se debe suministrar una fuente externa de 5 V al terminal EXT_PWR.

El paso bipolar NEMA 17 tiene una potencia nominal de 12 V y ofrece 200 pasos por revolución. Para conectar estos motores se debe suministrar una fuente de alimentación externa de 12 V al terminal EXT_PWR.

Recuerde quitar el puente de alimentación del escudo. Se puede conectar un motor paso a paso a cualquiera de los terminales del motor M1-M2 o M3-M4.

Para controlar motores paso a paso, la biblioteca AFmotor es útil. A continuación se muestra un boceto de ejemplo para controlar un motor paso a paso utilizando el protector del controlador del motor L293D.

#incluir
// Número de pasos por rotación de salida
const int pasos por revolución = 48;
// conecta el motor al puerto #2 (M3 y M4)
Motor AF_Stepper(pasosPorRevolución, 2);
configuración vacía {
Serie.begin(9600);
Serial.println(“¡Paso de prueba!”);
motor.setSpeed(10); //10rpm
}
bucle vacío {
Serial.println(“Pasos de bobina única”);
motor.step(100, ADELANTE, ÚNICO);
motor.step(100, HACIA ATRÁS, ÚNICO);

Serial.println(“Pasos de doble bobina”);
motor.step(100, ADELANTE, DOBLE);
motor.step(100, HACIA ATRÁS, DOBLE);

Serial.println(“Pasos de entrelazado de bobinas”);
motor.step(100, ADELANTE, INTERCALADO);
motor.step(100, HACIA ATRÁS, INTERCALADO);

Serial.println(“Pasos de micropasos”);
motor.paso(100, ADELANTE, MICROSPASO);
motor.paso(100, HACIA ATRÁS, MICROSPASO);
}

El boceto de Arduino comienza incluyendo la biblioteca AFMotor.h. La siguiente línea crea una instancia de un objeto de clase AF_Stepper. Este objeto requiere pasos por rotación del motor y un número de puerto al que el motor está conectado como parámetros.

La función setSpeed(rpm) establece la velocidad del motor, donde las rpm indican cuántas revoluciones por minuto desea que gire el motor paso a paso.

La función de paso (#pasos, dirección, tipo de paso) se utiliza para mover el motor cada vez. El parámetro #steps es el número de pasos, con dirección HACIA ADELANTE o HACIA ATRÁS.

Los valores válidos para stepstyle son:

  • SINGLE para energizar una bobina a la vez,
  • DOBLE para energizar dos bobinas a la vez
  • INTERLEAVE para cambiar entre sencillo
  • DOBLE para crear medio paso entre
  • MICROSTEP para energizar bobinas adyacentes creando una serie de micropasos entre cada paso completo

Regresar al blog

Deja un comentario

Ten en cuenta que los comentarios deben aprobarse antes de que se publiquen.