S4A Y EL CONTROLADOR DE MOTORES L298N

Objetivos

 

  • Trabajar con motores de mayor potencia.
  • Presentar el módulo controlador de motores L298N.
  • Explicar cómo se conecta y se utiliza.
  • Usarlo para controlar dos motores de corriente continua
  •  

    MATERIAL REQUERIDO

     

    Vista principal  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.

  • Podríamos decir que la potencia es la velocidad con la que se consume energía.
  • La potencia eléctrica, si hablamos de corriente continua, es el producto de la tensión por la intensidad, es decir P=VxI, y se mide en Vatios.
  • 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.

  • Algunos controladores de motores (y muchos otros componentes) se montan directamente encima del Arduino, y los denominamos shields.
  • Estos shields se reservan directamente ciertos pines para su uso y disfrute, así que no suelen ser recomendables para usar con S4A, ya que raramente nos coinciden correctamente la función de los pines en S4A y en el controlador.
  • 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.

    pines l298n h-bridge

  • Un jumper es un componente que nos sirve para conectar dos pines.[/fancy-ul] [/three-fourth]
  • 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:

  • Si el jumper del regulador está cerrado activaremos el regulador de tensión del L298N, y en V lógico tendremos una salida de 5V, que podremos usar para lo que queramos, por ejemplo para alimentar una placa Arduino.
  • Si el quitamos el jumper desactivaremos el regulador, necesitaremos alimentar la parte lógica del módulo, así que tendremos que meter una tensión de 5V por la conexión V lógico para que el módulo funcione.
  • ¡Cuidado! Si introducimos corriente por V lógico con el jumper de regulación puesto podríamos dañar el módulo.
  • Además el regulador sólo funciona con tensiones hasta 12V en Vin, por encima de este valor tendremos que quitar el jumper y alimentar la parte lógica del módulo desde otra fuente.[/fancy-ul] [/three-fourth]
  • 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:

    l298 scratch for arduino

    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.

    dos motores l298n

    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.

    scratch l298n

    Y e la parte principal del programa iremos llamando a cada función, haciendo que cada una dure lo que queramos usando bloques «esperar«:

     

    scratch l298n

    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:

  • Hemos presentado el módulo L298N que nos permite controlar motores de una cierta potencia de una manera muy sencilla.
  • Sabemos cómo conectarlo a nuestro Arduino y programarlo usando S4A.
  • Hemos creado un programa para mover los motores en ambas direcciones y a diferentes velocidades.
  • Deja una respuesta