Objetivos
MATERIAL REQUERIDO
Robot educativo |
INTRODUCCIÓN
Ya hemos visto en sesiones anteriores cómo podemos manejar motores de corriente continua (CC) en S4A, utilizando directamente los pines de salida analógica de Arduino.
Pero nuestro honorable Arduino está limitado por la intensidad que puede proporcionar al motor, y en seguida va a ser insuficiente cuando queramos usarlo para controlar motores de mayor potencia.
Por lo tanto, cuando queramos trabajar con motores un poquito potentes vamos a tener que utilizar unos componentes a los que llamamos controladores de motores o drivers. Estos controladores nos permitirán suministrar la potencia necesaria a los motores y os controlaremos utilizando nuestros Arduinos.
Hay muchísimos controladores diferentes, pero nosotros nos hemos decidido por el L298N por su facilidad de uso y su reducido precio, y porque nos permite elegir los pines del Arduino que queremos usar para controlar los motores. El L298N puede trabajar con tensiones hasta 35V y una intensidad de hasta 2A, muy superiores a las de la placa Arduino.
Este módulo tiene además otra característica muy importante, y es que nos permite controlar la dirección de giro de los motores, es decir podremos hacer que giren en ambos sentidos (esto suena fenomenal para hacer un coche).
Además nos permite obtener del módulo una tensión de 5V, perfecta para alimentar nuestro Arduino. Eso sí, este regulador sólo funciona si alimentamos el módulo con una tensión máxima de 12V.
Esto, unido a que ya hemos aprendido a utilizar el Bluetooth, nos será muy útil cuando construyamos ese coche que se nos está empezando a pasar por la cabeza o algún robot, para utilizar una única fuente de alimentación para todo.
CONEXIÓN Y FUNCIONAMIENTO
La entrada de tensión Vin admite tensiones entre 3V y 35V, y justo a su derecha en la imagen tenemos el pin que debemos conectar a GND.
La tercera conexión de ese grupo V lógico puede funcionar de dos maneras:
Las salidas para los motores A y B nos darán la energía para mover los motores. Tened en cuenta la polaridad al conectarlos (el orden en el que conectamos los cables), para que cuando más tarde hagamos que se muevan adelante, funcionen como deberían. Si no fuera así, no tendríamos más que invertir las conexiones.
Los pines IN1 e IN2 nos sirven para controlar el sentido de giro del motor A, y los pines IN3 e IN4 el del motor B. Funcionan de forma que si IN1 está a HIGH e IN2 a LOW, el motor A gira en un sentido, y si está IN1 a LOW e IN2 a HIGH lo hace en el otro. Y lo mismo con los pines IN3 e IN4 y el motor B.
Para controlar la velocidad de giro de los motores tenemos que quitar los jumpers y usar los pines ENA y ENB. Los conectaremos a dos salidas analógicas de forma que le enviemos un valor entre 0 y 255 que controle la velocidad de giro. Si tenemos los jumpers colocados, los motores girarán a máxima velocidad.
El esquema de montaje que vamos a utilizar va a ser el siguiente:
PROGRAMACIÓN
Sabiendo todo esto, ya estamos en posición de empezar a programar. Así que abrimos S4A y al lío. Primero vamos a hacer las funciones que moverán los motores en los diferentes sentidos y velocidades; empezando por mover los dos motores hacia delante y a máxima velocidad.
Vamos a hacerlas de tal manera que al recibir un mensaje desde el programa principal, cambie los valores de las salidas para mover los motores como queramos. Es importante ser ordenado y colocar los bloques con cuidado para asegurarnos que controlamos bien las entradas IN1 a IN4 del módulo controlador.
Y para las demás direcciones de giro haríamos lo mismo, variando además el valor que mandamos a ENA y ENB para cambiar la velocidad. Además haremos una función que pare los dos motores, poniendo todo a LOW.
Y e la parte principal del programa iremos llamando a cada función, haciendo que cada una dure lo que queramos usando bloques «esperar«:
Podéis descargar el programa completo aquí: l298n.
Si al ejecutarlo resulta que los motores se mueven en direcciones que no son las esperadas, podéis intercambiar las conexiones del motor en los bornes del L298N.
Resumen de la sesión
En esta sesión hemos aprendido varias cosas importantes: