Para probar los motores ya conectados a nuestro robot es necesario realizar un código para cargar a la placa controladora y verificar las siguientes operaciones:
Configuración del Motor (Izquierdo - Derecho) en el código.
Dirección de giro (Avance - Retroceso) de cada motor.
En la imagen vemos los dos motores desde la vista posterior para definir al motor Izquierdo y al motor derecho.
Debemos revisar las conexiones de nuestro driver a la placa controladora para poder realizar el código.
Los driver tienen tres señales para controlar cada motor, en el caso del L293D estas son:
ENABLE1
IMPUT1
INPUT2
Motores Izquierdo - Derecho
Etiquetas de esquemático para utilizar en el código
Como ejemplo utilizando el driver L293D (controlador de motores dual) podemos ver los pines que controlan la dirección y velocidad de los motores con sus net port de conexión al micro.
Consultar la información del driver L293D para identificar las conexiones necesarias al micro.
Los Net port serán las etiquetas de los GPIO en el código de nuestro micro (ARDUINO).
Conexiones Driver L293D
► Motor A1:
Velocidad - PMW1
Dirección - AIN1 - AIN2
► Motor B1:
Velocidad - PMW2
Dirección - BIN1 - BIN2
Se muestra en la imagen las conexiones del driver al micro por medio de los Net Port.
PWM1 conectado al GPIO - D6
AIN1 conectado al GPIO - D4
AIN2 conectado al GPIO - D8
PWM2 conectado al GPIO - D5
BIN1 conectado al GPIO - D9
BIN2 conectado al GPIO - D7
GPIO (General Purpose Input/Output, Entrada/Salida de Propósito General) es un pin genérico en un chip, cuyo comportamiento (incluyendo si es un pin de entrada o salida) se puede controlar (programar) por el usuario en tiempo de ejecución.
Conexiones ARDUINO NANO
☼ Código de testeo para motores.
/* TEST DE MOTORES*/
/* PINES DE DIRECCION DRIVER */
#define AIN1 4
#define AIN2 8
#define BIN1 9
#define BIN2 7
/* PINES DE SEÑAL PWM DRIVER */
#define PWM1 6
#define PWM2 5
void setup() {
/* PULSADOR */
pinMode(2,INPUT);
/* MODOS DE PIN */
pinMode(AIN1,OUTPUT);
pinMode(AIN2,OUTPUT);
pinMode(BIN1,OUTPUT);
pinMode(BIN1,OUTPUT);
pinMode(PWM1,OUTPUT);
pinMode(PWM2,OUTPUT);
}
void loop() {
analogWrite(PWM2,0);
while(digitalRead(2)==0) {
/* MOTOR */
digitalWrite(BIN1,0);
digitalWrite(BIN2,1);
analogWrite(PWM2,120);
} // FIN WHILE
} // FIN LOOP
▬ En el programa de testeo de motores tenemos que :
☼ Configurar las etiquetas de los pines GPIO ejemplo:
#define AIN1 4 // en el GPIO D4 esta AIN1
☼ Declarar los pines como entradas o salidas, en este caso, salvo el pulsador las demás son todas salidas, ejemplo:
pinMode(AIN1,OUTPUT); // AIN1 Salida
☼ En el loop vamos a probar la dirección de los motores cambiando el estado de AIN1 y AIN2 de (HIGH o LOW) colocando además un valor de velocidad (PWM1) ejemplo:
analogWrite(PWMB,0); // velocidad 0
digitalWrite(BIN1,0); // LOW
digitalWrite(BIN2,1); // HIGH
analogWrite(PWMB,120); // velocidad 120
► Tomamos nota de cual es el motor izquierdo o derecho y la configuración de giro (avance o retroceso).
☼ Hacemos lo mismo para el otro motor y ya tenemos los datos necesarios para luego armar la función de control para los motores.