Вы находитесь на странице: 1из 5

Arduino.

Motor CC usando
Integrado L293D
Publicado el junio 8, 2012 por miguelalonso01
Control de velocidad y direccion de Motor CC
Tengo en mente proyecto de robotica que voy a tratar en este blog: Usando Arduino Uno,
construir un carrito de carreras totalmente autonomo. Me gusta trabajar con
Arduino principalmente por su simplicidad en implementacion de distintos tipos de
aplicaciones de hardware y software, ademas de su programacion minimalista de C!.

Motor cc
El motor de corriente continua (DC) es un dispositivo sencillo con dos cables conectados a
los cepillos (contactos) que controlan el campo magntico de las bobinas que impulsa un
ncleo metlico (inducido). La direccin de rotacin puede ser invertida por la inversin de
la polaridad de la tensin en los contactos. Los motores de corriente continua estn
disponibles en diferentes tamaos, pero an el ms pequeo (por ejemplo, motores de
vibracin usado en los telfonos celulares) requiere un transistor o de otro tipo de control
externo para proporcionar la corriente adecuada. En este ejemplo veremos el control de un
motor usando un transistor o un circuito de control externo llamado H-Puente. Usando
Arduino y un puente H-L293D podemor implementar la conexion. El
integrado L293D incluye cuatro circuitos para manejar cargas de potencia media, en
especial pequeos motores y cargas inductivas, con la capacidad de controlar corriente
hasta 600 mA en cada circuito y una tensin entre 4,5 V a 36 V. El integrado permite
formar, entonces, dos puentes H completos, con los que se puede realizar el manejo de dos
motores. En este caso el manejo ser bidireccional, con frenado rpido y con posibilidad de
implementar fcilmente el control de velocidad.

Conoctemos a Arduino y el motor cc atravez del integrado L293D de esta forma

Podemos observar que la velocidad del


motor es proporcional a la cantidad de corriente suministrada para el funcionamiento
optimo del motor, pero no te exedas de voltaje, podrias daar el motor.
Un punto a tomar en cuenta es el PWM (pulse-width modulation) es una tcnica en la que
se modifica el ciclo de trabajo de una seal peridica (unasenoidal o una cuadrada), para
controlar la cantidad de energa que se enva a una carga, la mayora de los controladores

slo atacan el ajuste de velocidad y no consideran el torque el cual puede permitir el


acelerar/desacelerar a mayor precision. Normalmente entre mas grande y/o pesado sea un
motor posee mayor torque. Una vez implementado y entendido la parte fisica podemos
abordar la parte logica o software, tome el codigo del libro Arduino_cookbook capitulo
8.10 dado que es un ejemplo claro y practico para comenzar.
/*
* Brushed_H_Bridge sketch
*comandos desde puero serie para control de direccion y velocidad
*0 a 9 para la velocidad tomando a 0 apagado, 9 maxima velocidad
* + y para asignar la direccion
*/
const int enPin = 5; // PWM se conecta al pin 1 del puente-H
const int in1Pin = 7; // Entrada 2 del puente-H
const int in2Pin = 4; // Entrada 7 del puente-H
void setup() //Inicializa y prepara los valores
{
Serial.begin(9600); //Abre el puerto serie a 9600 bps
pinMode(in1Pin, OUTPUT); //Configura in1Pin como salida
pinMode(in2Pin, OUTPUT); //Configura in2Pin como salida
Serial.println(Speed (0-9) or + to set direction); //Imprime en la consola puerto serie
}
void loop() //La funcion loop se ejecuta consecutivamente
{ //permitiendole al programa variar y responder
if ( Serial.available()) { //Si el puerto serie esta disponible?
char ch = Serial.read(); //variable tipo char desde puerto serial

if(ch >= 0 && ch <= 9) //Si ch es un numero?


{
int speed = map(ch, 0, 9, 0, 255); //Re-mapea un numero desde un rango a otro
analogWrite(enPin, speed); //0 a 0 9 a 255
Serial.println(speed); //Escribe el valor analogico PWM enPin
}
else if (ch == +) //Si el caracter es +
{ //el motor avanza Clockwise
Serial.println(CW);
digitalWrite(in1Pin,LOW);
digitalWrite(in2Pin,HIGH);
}
else if (ch == -) //Si el caracter es
{ //el motor avanza CounterClockwise
Serial.println(CCW);
digitalWrite(in1Pin,HIGH);
digitalWrite(in2Pin,LOW);
}
else //Cualquier otro caracter es omitido
{
Serial.print(Unexpected character );
Serial.println(ch);
}

}
}

Вам также может понравиться