Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
En este tutorial de Arduino, aprenderemos cómo controlar los motores de CC con Arduino. Examinamos
bien algunas técnicas básicas para controlar los motores de CC y hacemos dos ejemplos a través de los
cuales aprenderemos cómo controlar los motores de CC con el controlador L298N y la placa Arduino.
Visión de conjunto
Podemos controlar la velocidad del motor de CC simplemente controlando el voltaje de entrada al motor
y el método más común de hacerlo es mediante el uso de señal PWM.
Entonces, dependiendo del tamaño del motor, simplemente podemos conectar una salida Arduino PWM a
la base del transistor o la puerta de un MOSFET y controlar la velocidad del motor controlando la salida
PWM. La señal Arduino PWM de baja potencia enciende y apaga la puerta en el MOSFET a través de la
cual se acciona el motor de alta potencia.
Nota: Arduino GND y la fuente de alimentación del motor GND deben conectarse juntas.
Entonces, si combinamos estos dos métodos, el PWM y el H-Bridge, podemos tener un control completo
sobre el motor de CC. Hay muchos controladores de motor DC que tienen estas características y el
L298N es uno de ellos.
Driver L298N
El L298N es un controlador de motor H-Bridge dual que permite el control de velocidad y dirección de
dos motores de CC al mismo tiempo. El módulo puede conducir motores de CC que tengan voltajes entre
5 y 35 V, con una corriente máxima de hasta 2A.
Echemos un vistazo más de cerca al pinout del módulo L298N y explique cómo funciona. El módulo
tiene dos bloques de terminales de tornillo para el motor A y B, y otro bloque de terminales de tornillo
para el pin de tierra, el VCC para el motor y un pin de 5V que puede ser una entrada o salida.
Esto depende del voltaje utilizado en los motores VCC. El módulo tiene un regulador de 5V incorporado
que se habilita o deshabilita usando un puente. Si la tensión de alimentación del motor es de hasta 12 V,
podemos habilitar el regulador de 5 V y el pin de 5 V se puede utilizar como salida, por ejemplo para
alimentar nuestra placa Arduino. Pero si la tensión del motor es superior a 12V, debemos desconectar el
puente porque esos voltajes causarán daños en el regulador de 5V incorporado. En este caso, el pin de 5V
se utilizará como entrada, ya que necesitamos conectarlo a una fuente de alimentación de 5V para que el
IC funcione correctamente.
Aquí podemos observar que este CI produce una caída de voltaje de aproximadamente 2V. Entonces, por
ejemplo, si usamos una fuente de alimentación de 12V, el voltaje en los terminales de los motores será de
aproximadamente 10V, lo que significa que no podremos obtener la máxima velocidad de nuestro motor
de 12V DC.
A continuación están las entradas de control lógico. Los pines Habilitar A y Habilitar B se utilizan para
habilitar y controlar la velocidad del motor. Si un jumper está presente en este pin, el motor estará
habilitado y funcionará a la velocidad máxima, y si eliminamos el jumper, podemos conectar una entrada
PWM a este pin y de esa manera controlar la velocidad del motor. Si conectamos este pin a tierra, el
motor se desactivará.
A continuación, los pines Input 1 y Input 2 se utilizan para controlar la dirección de rotación del motor A,
y las entradas 3 y 4 para el motor B. Con estos pines, realmente controlamos los interruptores del H-
Bridge dentro del IC L298N. Si la entrada 1 está BAJA y la entrada 2 está ALTA, el motor avanzará y
viceversa, si la entrada 1 es ALTA y la entrada 2 es BAJA, el motor retrocederá. En caso de que ambas
entradas sean iguales, ya sea BAJO o ALTO, el motor se detendrá. Lo mismo aplica para las entradas 3 y
4 y el motor B.
Arduino y L298N
Ahora hagamos algunas aplicaciones prácticas. En el primer ejemplo, controlaremos la velocidad del
motor usando un potenciómetro y cambiaremos la dirección de rotación con un botón. Aquí están los
esquemas del circuito.
Entonces, necesitamos un controlador L298N, un motor de CC, un potenciómetro, un botón y una placa
Arduino.
Puede obtener los componentes necesarios para este tutorial de Arduino en los siguientes enlaces:
Código Arduino
Aquí está el código de Arduino:
Descripción: Primero, debemos definir los pines y algunas variables necesarias para el programa. En la
sección de configuración, necesitamos establecer los modos de pin y la dirección de rotación inicial del
motor. En la sección de bucle comenzamos leyendo el valor del potenciómetro y luego mapeamos el valor
que obtenemos de él que es de 0 a 1023, a un valor de 0 a 255 para la señal PWM, o que es 0 a 100% del
ciclo de trabajo de la Señal de PWM Luego, utilizando la función analogWrite (), enviamos la señal
PWM al pin Enable de la placa L298N, que realmente impulsa el motor.
Todo lo que necesitamos es 2 DC Motors, el controlador L298N, una placa Arduino y un joystick para el
control. En cuanto a la fuente de alimentación, elegí utilizar tres baterías de iones de litio de 3.7 V, que
proporcionan un total de 11V. Hice el chasis de madera contrachapada de 3 mm, lo conecté a los motores
utilizando soportes metálicos, las ruedas adheridas a los motores y al frente adjunto una rueda giratoria.
Ahora echemos un vistazo al código Arduino y veamos cómo funciona. (Abajo puede encontrar el código
completo)
1. int xAxis = analogRead ( A0 ) ; // Leer el eje X de Joysticks
2. int yAxis = analogRead ( A1 ) ; // Leer el eje Y de los joysticks
Después de definir los pines, en la sección de bucle, comenzamos con la lectura de los valores de los ejes
X e Y del joystick. El joystick está hecho de dos potenciómetros que están conectados a las entradas
analógicas del Arduino y tienen valores de 0 a 1023. Cuando el joystick permanece en su posición central,
el valor de ambos potenciómetros o ejes es de alrededor de 512.
Añadiremos un poco de tolerancia y consideraremos los valores de 470 a 550 como centro. Entonces, si
movemos el eje Y del joystick hacia atrás y el valor baja a 470, estableceremos la dirección de rotación de
los dos motores hacia atrás utilizando los cuatro pines de entrada. Luego, convertiremos los valores
decrecientes de 470 a 0 en valores de PWM crecientes de 0 a 255, que en realidad es la velocidad del
motor.
Similarmente, si movemos el eje Y del joystick hacia adelante y el valor va por encima de 550,
configuraremos los motores para avanzar y convertiremos las lecturas de 550 a 1023 en valores de PWM
de 0 a 255. Si el joystick permanece en su centro, la velocidad de los motores será cero.
A continuación, veamos cómo usamos el eje X para el control izquierdo y derecho del automóvil.
De nuevo, primero tenemos que convertir las lecturas del eje X en valores de velocidad de 0 a 255. Para
mover hacia la izquierda, usamos este valor para disminuir la velocidad del motor izquierdo y aumentar la
velocidad correcta del motor. Aquí, debido a las funciones aritméticas, usamos dos declaraciones "if"
adicionales para limitar el rango de la velocidad del motor de 0 a 255.
Dependiendo de la tensión aplicada y del propio motor, a velocidades más bajas, el motor no puede
comenzar a moverse y produce un zumbido. En mi caso, los motores no podían moverse si el valor de la
señal PWM estaba por debajo de 70. Por lo tanto, al utilizar estos dos enunciados if realmente me limité
al rango de velocidad de 70 a 255. Al final solo enviamos las velocidades finales del motor o Señal PWM
a los pines de habilitación del controlador L298N.
1. // Prevent buzzing at low speeds (Adjust according to your motors. My motors couldn't start moving if PWM value was below value
of 70)
2. if (motorSpeedA < 70) {
3. motorSpeedA = 0;
4. }
5. if (motorSpeedB < 70) {
6. motorSpeedB = 0;
7. }
8. analogWrite(enA, motorSpeedA); // Send PWM signal to motor A
9. analogWrite(enB, motorSpeedB); // Send PWM signal to motor B
Aquí está el código completo del ejemplo de Arduino robot car:
Así que eso sería todo para este tutorial, y en mi próximo video actualizaremos este auto robot Arduino,
agregando un dispositivo Bluetooth y Radio para habilitar el control de teléfonos inteligentes e
inalámbricos.