Arduino en español
Circuitos con Arduino - Juan Antonio Villalpando
-- Tutorial de iniciación a Arduino --
Volver al índice del tutorial
____________________________
Bluetooth y Arduino. Proyecto cochecito - 1
Bluetooth y Arduino. Proyecto cochecito - 2
Bluetooth y Arduino. Proyecto cochecito - 3
29B.- Motor de contínua. Puente H.
Son esos motorcitos que encontramos en juguetes, estos motorcitos los podemos conectar también al Arduino.
Una vez más, no es conveniente conectarlos directamente a la placa del Arduino, ya que absorven mucha intensidad, lo más normal es conectarlos mediante un puente H o un integrado. Además este puente debe estar alimentado con tensión externa al Arduino. De esta manera además de darle la intensidad necesaria podemos cambiar fácilmente desde un programa del Arduino el sentido de giro del motor.
Si solo quieres que gire en un sentido, solamente sería necesario poner un transistor:
http://www.hispavila.com/3ds/atmega/motorescc.html
En Aliexpress podemos encontrar motores como el de la figura, es un motor de contínua y puede venir con una rueda como se ve en la imagen.
__________________________
Puente H para doble giro
Mediante un puente H realizado con transistores o circuito integrado, podemos hacer que el motor de contínua gire hacia un lado u otro, según le apliquemos tensión a la base de los transistores, que actúan en pareja.
Cuando le aplicamos una tensión "alta" a la base de Q1 y Q3, estos conducen y circula intensidad por ellos.
Si aplicamos una tensión "baja" a la base de Q2 y Q4, estos no conducen |
Cuando le aplicamos una tensión "alta" a la base de Q2 y Q4, estos conducen y circula intensidad por ellos.
Si aplicamos una tensión "baja" a la base de Q1 y Q3, estos no conducen |
Según la intensidad entre por el lado izquiero o derecho del motor, girará en un sentido u otro.
______________________
Este circuito es parecido al anterior, los diodos son de protección, ya que al cambiar el sentido de la intensidad se produce una sobretensión que puede dañar al circuito, los diodos protegen de esa sobretensión.
Puente H con integrado.
El integrado L293 actúa como puente.
________________________________________________
Nosotros utilizaremos este módulo...
- Módulo con dos puentes H.
Puede controlar el giro izquierda-derecha de dos motores de contínua, también puede controlar su velocidad mediante PWM.
Además puede controlar un motor paso a paso.
Está basado en el integrado L290N. Tiene incorporado los diodos protectores. Además tiene un regulador de tensión de 5V para alimentar al Arduino.
Data sheet.
Notas de aplicación.
____________________________
. Control de dos motores de continua con cambio de velocidad.
Control izquierda-derecha de dos motores de contínua, con cambio de velocidad.
Vamos a controlar dos motores de contínua, cada uno podrá girar a la izquierda o a la derecha.
Además mediante PWM vamos a controlar sus velocidades de giro.
- Conexiones.
- Conectamos un motor a las salidas OUT1 y OUT2. Conectamos el otro motor a las salidas OUT3 y OUT4.
- Es posible que las entradas ENA y ENB traigan un puente de fábrica... quitamos los puentes de las entradas ENA y ENB
- Realizamos las siguientes conexiones...
Módulo |
ENA |
In1 |
In2 |
In3 |
In4 |
ENB |
Arduino |
10 |
9 |
8 |
7 |
6 |
5 |
Mediante un portapilas y 6 pilas de 1,5 V, alimentamos con 9 V al módulo, conectándolo a Vcc y Gnd.
(También se podría alimentar con 4 pilas, es decir con 6 V)
- Conectamos la salida de 5 V y el Gnd del módulo a los 5 V y Gnd del Arduino, como vemos en la imagen. Es muy importante no olvidar conectar el cable del Gnd al Arduino.
Al conectarlo de esta manera, la salida de 5 V del módulo alimentará al Arduino, y no necesitaremos alimentar al Arduino con ninguna otra alimentación. Es decir, el módulo alimenta al Arduino.
- Comentario de las conexiones.
INA, In1, In2: controlan al motor A (OUT1 y OUT2)
INB, In3, In4: controlan al motor B (OUT3 y OUT4)
------------------------------------
A las entradas INA y INB se les puede suministrar un pulso PWM para modificar la velocidad del motor.
Cuanto mayor sea la anchura de pulso, mayor será la velocidad del motor.
A la anchura de pulso le podemos suministrar un valor comprendido entre 0 y 255, con esto conseguimos un Duty Cycle entre 0 y 100%.
Si ponemos:
analogWrite(enA, 200);
Estamos estableciendo un PWM de 200, esto sería como el 78,4 de ancho de pulso (Duty Cycle). El motor girará a cierta velocidad.
Si ponemos:
analogWrite(enA, 100);
Estamos estableciendo un PWM de 100, esto sería como el 39,2 de ancho de pulso (Duty Cycle). El motor girará a mitad de velocidad que antes.
----------------------
Mediante In1 y In2 controlamos el sentido de giro del motor.
Según pongamos estan estradas en HIGH y LOW o al contrario LOW y HIGH, el motor girará en un sentido o en el otro.
Si ponemos:
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
El motor girará en sentido horario.
-------------------
Si ponemos:
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
El motor girará en sentido anti horario.
------------------
Si ponemos:
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
El motor se parará.
------------------
____________________________
- Código.
Mediente este código de prueba observaremos que los motores girarán automáticamente en un sentido, en el otro, se pararán, acelerarán y desacelerarán, todo se hará automáticamente, de esta manera podemos observar cómo trabaja el módulo del controlador.
Programa para el Arduino.
|
// Conexiones del Motor A
int enA = 10;
int in1 = 9;
int in2 = 8;
// Conexiones del Motor B
int enB = 5;
int in3 = 7;
int in4 = 6;
void setup()
{
// Terminales de salida en el Arduino
pinMode(enA, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
}
void cambiodegiro()
{
// Motor A gira a izquierda
digitalWrite(in1, HIGH);
digitalWrite(in2, LOW);
// Velocidad del Motor A (puede cambiar de 0 a 255)
analogWrite(enA, 200);
// Motor B gira a izquierda
digitalWrite(in3, HIGH);
digitalWrite(in4, LOW);
// Velocidad del Motor B (puede cambiar de 0 a 255)
analogWrite(enB, 200);
delay(2000);
// Los dos Motores cambian su dirección
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
delay(2000);
// Parada de los dos Motores.
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
void acelera_desacelera()
{
// Giro a derecha de los dos motores
digitalWrite(in1, LOW);
digitalWrite(in2, HIGH);
digitalWrite(in3, LOW);
digitalWrite(in4, HIGH);
// Aceleracion
// Cambio de velocidad de 0 a 255, acelerando
for (int i = 0; i < 256; i++)
{
analogWrite(enA, i);
analogWrite(enB, i);
delay(20);
}
// Desaceleracion
// Cambio de velocidad de 255 a 0, Desacelerando
for (int i = 255; i >= 0; --i)
{
analogWrite(enA, i);
analogWrite(enB, i);
delay(20);
}
// Parada de los dos Motores.
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
}
void loop()
{
cambiodegiro();
delay(1000);
acelera_desacelera();
delay(1000);
}
|
--------------------------------------------------------------------------------------------------------------------
- Características.
http://kaiwatechnology.com.ar/comando-de-un-motor-cc-mediante-driver-l298/
http://tronixlabs.com/news/tutorial-l298n-dual-motor-controller-module-2a-and-arduino/
- Conexión "+" para el motor A de Contínua. O bien conexión A+ para un motor paso a paso.
- Conexión "-" para el motor A de Contínua. O bien conexión A- para un motor paso a paso.
- Si la alimentación es mayor de 12 VDC, quita este puente.
- Conexión de alimentación, máximo 35 VDC. Si la alimentación es de más de 12 VDC, quita el puente 3.
- GND
- Proporciona 5 V para alimentar al Arduino. (Debe estar conectado el puente 3).
- Habilita el motor de continua A. Si quitamos este puente e introducimos por él pulsos PWM, podemos controlar la velocidad del motor de contínua. Si utilizas un motor paso a paso, este puente debe estar puesto.
- IN1
- IN2
- IN3
- IN4
- Habilita el motor de continua B. Si quitamos este puente e introducimos por él pulsos PWM, podemos controlar la velocidad del motor de contínua. Si utilizas un motor paso a paso, este puente debe estar puesto.
- Conexión "+" para el motor B de Contínua. O bien conexión B+ para un motor paso a paso.
- Conexión "-" para el motor B de Contínua. O bien conexión B- para un motor paso a paso.
http://blog.filipeflop.com/motores-e-servos/motor-dc-arduino-ponte-h-l298n.html
Características:
L298N
Alta potencia de trabajo 46 v, corriente puede llegar a 3A Max y continuar actual es 2a, poder de 25 w.
Puede conducir un motor paso a paso 2-fase, un fases del motor de pasos o dos motores de corriente continua.
78M05 incorporado, obtener energía de la unidad, sin embargo, cuando over12V alimentación de la unidad, por favor, utilice la energía externa 5 V como fuente de alimentación.
Gran capacidad de filtro de capacitancia, diodo de protección flujo posterior, más estable y fiable.
Especificación:
Accionamiento doble puente H
Chip: L298N (st new)
Lógica voltaje: 5 V
Tensión drive: 5 V-35 V
Lógico actual: 0mA-36mA
Corriente de impulsión: 2A (puente Max individual)
Potencia máxima: 25 W
Tamaño: 43x43x26mm
Peso neto: 25g
Nota:
Este módulo tiene incorporado a 5 V fuente de alimentación, cuando el voltaje de activación es 7 V-35 v, este suministro es adecuado para la fuente de alimentación
No Voltaje de entrada a + 5 V alimentación interfaz, sin embargo ledding cabo 5 V para uso externo está disponible.
Cuando ENA habilitar control IN1 IN2 OUT2 OUT1
Cuando ENB habilitar el control IN4 IN3 OUT4 OUT3
También se puede utilizar este módulo con un motor paso a paso.
_______________________
- Motor paso a paso.
________________________________
|