auto robótico

auto robótico

  • Autor de la entrada:
  • Categoría de la entrada:Arduino
  • Comentarios de la entrada:Sin comentarios

Mini auto robótico con sensor ultrasónico y controlador L293D

Le presentamos un divertido proyecto de un auto robótico muy pequeño, para lo cual usaremos el circuito integrado controlador de motores L293D. Este circuito integrado tiene la capacidad de mover dos motores. En su estructura interna viene los diodos reguladores que conectan la salida de los motores, a diferencia del integrado L293B, motivo por el cual no requiere el uso de estos dispositivos en sus conexiones externas para regular el giro de los motores.

Figura 1. Puente H L293D - extraído de https://uelectronics.com/

Este pequeño CI posee 16 patas o terminales tal como se aprecia en la Figura 1, siendo las señales de entradas 1 y 2 para controlar el motor M1 y las entradas 3 y 4 para controlar el motor M2, podemos observar además que estas entradas corresponden a los terminales 2, 7, 10 y 15 del CI. Otro detalle importante a tomar en cuenta es regular la potencia necesaria  de los motores M1 y M2, para ello debemos alimentar o habilitar los valores PWM que corresponde a los terminales 1 y 9 respectivamente, estos valores digitales están comprendidos entre el 0 y 255 (0 = BAJA POTENCIA y 255 = MAXIMA POTENCIA) y que necesariamente deben estar conectados a los terminales del Arduino nano atribuidos a dicha característica, estos terminales PWM son: 3, 5, 6, 9, 10 y 11, al trabajar con dos motores de preferencia tomemos los siguientes pares (3 y 11), (9 y 10) y (5 y 6). Por ejemplo, para controlar la potencia de M1 y M2 entonces podríamos disponer de cualquier par de terminales se me ocurre el 3 y 11.

El otro detalle a tomar en cuenta es la alimentación  del CI ya que posee dos niveles o formas de alimentación. La primera es para energizar al L293D que se realiza por el terminal 16 alimentado con un voltaje continuo de 5Vcc a 7Vcc, de preferencia se toma el voltaje que alimenta el Arduino nano que es de 5Vcc. La segunda es a través del terminal 8, exclusivo para mover los motores que según característica soporta hasta un máximo de 36 Vcc, ello dependerá del tipo de motor que estén usando, teniendo en cuenta su amperaje, voltaje y potencia de soporte, caso contrario podrían quemarlo, por lo que se recomienda saber las características a precisión  además de tener siempre  un multímetro a disposición. En nuestro caso alimentaremos con una batería de 6Vcc tal como se aprecia en la Figura 2. 

Dispositivos que usaremos:

Un Arduino nano
Un sensor ultrasónico HC-SR04
Un CI puente H  – L293D
Tres diodos LED
Una resistencia de 220 ohmios
Un motor DC 6C caja reductora
Dos mini protoboard de 170 puntos
Batería de 6 V
Un chasis para montar cuadro ruedas
Dos ligas para polea
cables conectores hembra-macho

Diagrama de conexión

Figura 2. Diagrama de conexión de mini auto robótico

Explicación y funcionamiento

Al poner estado de encendido (ON), el eje rotatorio o rotor del motor DC con caja reductora de velocidad, empezará a girar generando un sistema de transmisión de fuerza y velocidad angular, que se transmitirá en primera instancia a un par de poleas de color naranja unidos por una faja o liga negra, la segunda polea mediante su eje rotario accionará a su vez otro sistema de transmisión de dos poleas conectados al eje de la rueda trasera y delantera del chasis del mini auto robótico. El sensor ultrasónico HC-SR04 al detectar un obstáculo a una distancia menor a 20 cm enviará información al microcontrolador Arduino nano, este procesará la información para detener el motor DC por un tiempo de 2 segundos y retroceder por otros 2 segundos. En el avance automáticamente se encenderá de forma intermitente el LED conectado al terminal 8, de igual forma al retroceder se apagará dicho Led y se encenderá los LED del terminal 9 y 10  respectivamente. Para recordarles que en este proyecto solo trabajamos con un motor por lo tanto el giro hacia la derecha e izquierda no será posible, solo avanzará y retrocederá.

//DESARROLLO DEL CÓDIGO

const byte pinTrig = 7;

const byte pinEcho = 6; 
int pinled = 8; 
int pinled9=9;
int pinled10 =10;

int pin2 = 2;

int pin3 = 3;
int PWM = 200;
const float velsonido = 0.0343; 

// inicialización de dispositivos

 void setup() {
  Serial.begin(9600); 
  pinMode(pinTrig, OUTPUT); 
  pinMode(pinEcho, INPUT); 
  pinMode(pinled8, OUTPUT);
  pinMode(pinled9, OUTPUT);
  pinMode(pinled10, OUTPUT);
  pinMode(pin2,OUTPUT);
  pinMode(pin3,OUTPUT);
}

Función de activación del sensor ultrasónico

 void iniciarTrigger() {
  digitalWrite(pinTrig, LOW); 
  delayMicroseconds(2);     
  digitalWrite(pinTrig, HIGH); 
  delayMicroseconds(10);
  digitalWrite(pinTrig, LOW);}

Función principal, se ejecuta indefinidamente.

void loop() {  

digitalWrite(pinled8, HIGH);
delay(150);
digitalWrite(pinled8, LOW);
delay(150);
digitalWrite(pinled9, LOW);
digitalWrite(pinled10, LOW);
analogWrite(pin2, LOW);
analogWrite(pin3,PWM);

iniciarTrigger();

long unsigned tiempo = pulseIn(pinEcho, HIGH);
float distancia = tiempo*velsonido/2; 

// iniciando condicional.

if (distancia <= 20) {
digitalWrite(pinled8,LOW);

digitalWrite(pinle9, HIGH);
digitalWrite(pinled10, HIGH);

analogWrite(pin2, LOW);

analogWrite(pin3, LOW); 
delay(2000);  
  } //cierra if
} //CIERRA LOOP

Espero hay sido de su agrado, no olviden de compartirlo y dejar sus comentarios para realizar nuevos proyectos.

Deja una respuesta