jueves, 25 de abril de 2013

Controlar dos motores con arduino.

Del video anterior la rutina que se programo en el Arduino es muy simple, solo se mandan salidas altas o bajas dependiendo de como queremos que se comporte el motor.

La función del driver esta descrita en la tabla que publiqué anteriormente en la descripción del driver para manejar los motores.


En estas entradas también es muy útil inyectar una señal PWM en lugar de solo un 1 lógico para así controlar la velocidad del motor, la condición de motor bloqueado es para frenar el motor y mantenerlo sin movimiento, esto es mediante un campo magnético generado dentro del motor que evita que el rotor gire.

A continuación coloco el programa hecho para un arduino uno rev. 3, este programa solo controla la dirección de los motores, si se desea controlar la velocidad hay que cambiar las salidas lógicas por salidas PWM, la frecuencia que debe manejar el PWM debe ser alta por encima del rango de frecuencias audibles (mayor a 20KHz) para evitar que nuestros motores emitan sonidos molestos y al final del dia terminemos con dolor de cabeza (lo digo por experiencia propia XD)


int E1 = 0;    //Habilita o desablita la primera mitad del driver
int E2 = 1;    //Habilita o desablita la segunda mitad del driver

int m11 = 2;  //m11 y m12 son los bits de control del motor uno (en la tabla PIN5 PIN7)
int m12 = 3;

int m21 = 4;  //m21 y m22 son los bits de control del motor dos (en la tabla PIN10 PIN12)
int m22 = 5;

void setup() {                
      
}

// the loop routine runs over and over again forever:
void loop() {
  digitalWrite(E1, HIGH);    //ACTIVAR DRIVER
  digitalWrite(E2, HIGH);
  
  digitalWrite(m11, LOW);    //ADELANTE        
  digitalWrite(m12, HIGH);
  digitalWrite(m21, LOW);            
  digitalWrite(m22, HIGH);  
  delay(1500); 
  
  digitalWrite(m11, LOW);    //ALTO        
  digitalWrite(m12, LOW);
  digitalWrite(m21, LOW);            
  digitalWrite(m22, LOW);  
  delay(500); 
  
  digitalWrite(m11, LOW);    //IZQUIERDA 90°        
  digitalWrite(m12, HIGH);
  digitalWrite(m21, HIGH);            
  digitalWrite(m22, LOW);  
  delay(500);
  
  digitalWrite(m11, LOW);    //ALTO        
  digitalWrite(m12, LOW);
  digitalWrite(m21, LOW);            
  digitalWrite(m22, LOW);  
  delay(500); 
  
  digitalWrite(m11, LOW);    //ADELANTE        
  digitalWrite(m12, HIGH);
  digitalWrite(m21, LOW);            
  digitalWrite(m22, HIGH);  
  delay(1500);
  
  digitalWrite(m11, LOW);    //ALTO        
  digitalWrite(m12, LOW);
  digitalWrite(m21, LOW);            
  digitalWrite(m22, LOW);  
  delay(500);
  
  digitalWrite(m11, HIGH);    //DERECHA 90°        
  digitalWrite(m12, LOW);
  digitalWrite(m21, LOW);            
  digitalWrite(m22, HIGH);  
  delay(500);
  
  digitalWrite(m11, LOW);    //ALTO        
  digitalWrite(m12, LOW);
  digitalWrite(m21, LOW);            
  digitalWrite(m22, LOW);  
  delay(500);
  
  digitalWrite(m11, LOW);    //ADELANTE        
  digitalWrite(m12, HIGH);
  digitalWrite(m21, LOW);            
  digitalWrite(m22, HIGH);  
  delay(1500);
  
  digitalWrite(m11, LOW);    //IZQUIERDA        
  digitalWrite(m12, HIGH);
  digitalWrite(m21, LOW);            
  digitalWrite(m22, LOW);  
  delay(1500);
  
  digitalWrite(m11, LOW);    //DERECHA       
  digitalWrite(m12, LOW);
  digitalWrite(m21, LOW);            
  digitalWrite(m22, HIGH);  
  delay(1500);
  
  digitalWrite(m11, LOW);    //ALTO        
  digitalWrite(m12, LOW);
  digitalWrite(m21, LOW);            
  digitalWrite(m22, LOW);  
  delay(500);
  
  digitalWrite(m11, HIGH);    //REVERSA        
  digitalWrite(m12, LOW);
  digitalWrite(m21, HIGH);            
  digitalWrite(m22, LOW);  
  delay(2000);
  
  digitalWrite(m11, LOW);    //ALTO        
  digitalWrite(m12, LOW);
  digitalWrite(m21, LOW);            
  digitalWrite(m22, LOW);  
  delay(9000);
}  

martes, 23 de abril de 2013

Puente H para seguidor de linea

Aquí un ejemplo de como funciona Driver que se publico anteriormente.

También lo tengo disponible a la venta por solo $250.00 pesos si desean adquirir el circuito contáctenme



jueves, 4 de abril de 2013

Sensores para seguidor de linea.

1. Etapa de sensores

El primer circuito de sensores publicado anteriormente aquí en el blog carece de un circuito acondicionador de señal y el nivel de voltaje de la  señal proveniente de los fototransistores dependerá en gran medida de la impedancia de entrada del circuito de control al cual lo estemos conectando ya que la corriente suministrada por el fototransistor es muy pequeña.

Este nuevo sensor cuenta con un circuito de acondicionamiento de señal para evitar que el voltaje de salida de los sensores caiga y sea mas fácil manejaros al conectarlos a un microcontrolador o al Arduino.

Básicamente el circuito de los sensores es el mismo, se añadió el diseño del circuito en PCB para darle mejor presentación y manejarlo mas fácilmente; así como tener la seguridad de que no se desconectara algún cable en el momento de las pruebas.



El circuito esta compuesto de 5 sensores óptico-reflectivos QRD1114 el cual consta de un LED infrarrojo y un fototransistor, la resistencia de 220 es para limitar la corriente del LED a 22mA y evitar quemarlo, la alimentación (VCC) es de 5 volts, la resistencia de 10K es para cerrar el circuito entre el colector y el emisor y poder tener un voltaje de referencia en el emisor que sera proporcional a la cantidad de luz  proveniente del LED reflejada hacia el fototransitor al acercar el sensor a alguna superficie; es del emisor del fototransitor de donde se toma la señal que se acondicionara para tener un nivel de voltaje estable.

El diseño del PCB se realizo de la siguiente manera colocando los sensores en una forma de arco suave, aunque la mejor forma de colocarlos es dependiendo del tipo de linea que va a detectar el robot y la complejidad de la pista, a mi me funciono esta posición pero tal vez no sea la mas eficiente.






2. Acondicionador de Señal.

El acondicionador de señal esta compuesto únicamente por 5 amplificadores operacionales en configuración de seguidor de voltaje, lo que hace este circuito es proveer una alta impedancia de entrada evitando caídas de voltaje en el emisor del sensor y dando a la salida el mismo nivel de voltaje.




A continuación el diseño del circuito en PCB, el circuito es muy sencillo, la pista en color rojo es un puente y las medidas de la baquelita son 5mm x 5mm.



El circuito terminado queda en dos módulos independientes que se ensamblan uno con otro mediante pines hembra y macho, el conjunto de pines del circuito acondicionador de señal identificado con el nombre de "SENSORES" debe ser conectado con el conjunto de pines del PCB de los sensores; el conjunto de pines con la leyenda "SALIDA" debe ser alimentado con el voltaje del Arduino de 5V, el pin que dice 0V es tierra (gnd) y las salidas del 1 al 5 son las salidas de cada sensor que serán conectadas a la entrada analógica del Arduino o microcontrolador que estemos utilizando.

A continuación les dejo unas fotos del par de circuitos conectados entre si.



Por ultimo en el siguiente link se pueden descargar el PDF para imprimir los circuitos y revelarlos.




miércoles, 27 de marzo de 2013

Controlar la dirección y velocidad del robot

Driver para seguidor de linea.

Este nuevo driver basado en un circuito integrado L298N que en esencia es lo mismo que el que se uso anteriormente (L293) con la diferencia de que soporta mayor corriente y podremos utilizar motores de CD mas grandes.

El L298N es un circuito integrado encapsulado en multiwatt 15. es un driver de puente completo de alto voltaje y alta corriente diseñado para aceptar niveles lógicos estandard TTL y manejar cargas inductivas como relevadores, solenoides, motores de CD y motores de pasos. Esta provisto de dos entradas de eneable para activar o desactivar los dos puentes independientemente de las entradas de señal. Los emisores de los transistores mas bajos de cada puente están conectados juntos y la terminal externa correspondiente puede ser usada para la conexión de una resistencia shunt (para sensar corrientes).
- Opera con una fuente de voltaje de hasta 46V
- Corriente de CD hasta 4A
- Bajo voltaje de saturación
- Protección contra sobrecalentamiento
- Voltaje de 0 lógico de entrada hasta 1.5 (Alta inmunidad al ruido)

El diagrama de pines es el siguiente:



Se agregaron dos reguladores de voltaje, uno de 5V y otro de 3.3V para alimentar algunos sensores y otros CI que agreguemos a nuestros diseños.

A continuación se muestra el esquemático del circuito.


Podremos alimentar con una batería de hasta 15V en el borne indicado con la leyenda de BATERIA; esto para no dañar el regulador de 3.3V.

Las entradas de control nombradas IN1 e IN2 son las encargadas de recibir las señales provenientes de un microcontrolador o cualquier otro circuito de control para determinar la dirección de los motores que  se conectaran al borne llamado MOTORES un motor deberá conectarse a los pines 1 y 2 del borne y el otro a los pines 3 y 4. En la siguiente tabla se muestra como se comporta la salida respecto a la entrada.


Finalmente este es el diseño en PCB del circuito, dejo también un link para descargar el esquemático y el layout si es que lo quieren modificar, fue creado en ISIS y ARES de Proteus.








sábado, 16 de abril de 2011

NuEvOoOoO!!!!

PROXIMAMENTE POV LED DISPLAY CON ARDUINO!!!!!!!!!

BANNER FLOTANTE



6 LEDS AL GIRAR A GRAN VELOCIDAD DAN EL EFECTO DE TENER UN BANNER DE LEDS SUSPENDIDO EN EL AIRE :)

viernes, 21 de enero de 2011

Robot Seguidor de Linea con ARDUINO

Este blog ha sido creado con la finalidad compartir paso a paso como desarrollar un robot seguidor de linea negra utilizando una placa de ARDUINO UNO, la construcción es muy sencilla al igual que la programación, cabe mencionar que este diseño gano el concurso de robótica RACEBOT.T. IEEE 2010 llevado a cabo en el Instituto Tecnológico de Toluca