Arduino. Motor CC usando Integrado L293D

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 magnético de las bobinas que impulsa un núcleo metálico (inducido). La dirección de rotación puede ser invertida por la inversión de la polaridad de la tensión en los contactos. Los motores de corriente continua están disponibles en diferentes tamaños, pero aún el más pequeño (por ejemplo, motores de vibración usado en los teléfonos 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 pequeños motores y cargas inductivas, con la capacidad de controlar corriente hasta 600 mA en cada circuito y una tensión 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 rápido y con posibilidad de implementar fácilmente 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 dañar el motor.

Un punto a tomar en cuenta es el PWM (pulse-width modulation) es una técnica en la que se modifica el ciclo de trabajo de una señal periódica (unasenoidal o una cuadrada), para controlar la cantidad de energía que se envía a una carga, la mayoría de los controladores sólo 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);

}

}

}

Veamos la implementacion ::

24 comentarios en “Arduino. Motor CC usando Integrado L293D

  1. Me estoy dando cuenta que mucha gente que sube artículos similares, sube las secuencias con errores a base de bien, algunos parecen hasta intencionados, espero que solo lo parezcan

  2. como estas, sabes que quiero preguntarte si emulaste en VirtualBreadBoard, ya que quiero emularlo ahi pero no encuentro el L293D en la libreria DIP

    1. Muchas gracias por toda la explicación una pregunta hay q abrir el cuadrito chiquito q aparece en el serial o eso ya queda configurado y otra pregunta es q yo lo necesitó para hacer un movimiento de eje x e y para una maquina de cojer peluches entonces necesito conectar otros motores y a su vez manejarlos desde arruinó con el serial si me puede ayudar te lo agradecería gracias

  3. hola lo arme y me funciono, pero al momento de realizar un cambio de direccion quemo el driver lm293 por eso recomiendo no realizar cambios de giro inesperados

  4. muchas!!!! gracias funciona de maravilla!! solo no hagan copy, paste porque si no no funciona , a mi las comillas es lo que me fallaron ” se ponen estas en ves de estas ” y estas ´´

  5. Ok.
    El programa funciona perfectamente.
    Basta cambiar los caracteres de comillas dobles y simples a los valores correctos.
    Las comillas dobles y simples usadas en el programa, en C tampoco son validas. Yo lo he editado previamente en gedit y también había problemas con esos caracteres.

  6. Hola, me interesa mucho tu post… No se mucho sobre puente H y te queria preguntar que si yo quiero controlar la velocidad de 4 motores, cuantos L293D Necesito? El PWM esta incluido en el arduino? Ya sea de manera fisica o via programacion

  7. Hola amigo, una pregunta sobre el puente H, en vez de usar el integrado yo lo quiero hacer con los transistores 2N2222A, yo estoy manejando un motor DC pequeño de 3v, mi pregunta es si aguanta la corriente que necesita el motor o hay problemas al usar los transistores?
    O tendria que comprar el integrado?

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s