- Concepto de robot seguidor de línea
- Componentes requeridos
- Diagrama de circuito
- Programación de Atmega16 para robot seguidor de línea
Aquí construiremos otro proyecto más con el microcontrolador AVR Atmega16. Si es nuevo en los microcontroladores AVR, puede consultar tutoriales y proyectos AVR anteriores.
Construir un robot siempre es emocionante para todos los aficionados a la electrónica. Y esta emoción se puede maximizar si el robot puede hacer algunas cosas automáticamente sin instrucciones externas. Uno de los robots más comúnmente construidos por principiantes en electrónica es Line Follower Robot. Como sugiere el nombre, el robot seguirá la línea dibujada en la superficie. No es necesario que la línea sea una línea recta. Además, las líneas pueden ser de cualquier color.
Anteriormente construimos proyectos de robot seguidor de línea utilizando diferentes controladores:
- Robot seguidor de línea con microcontrolador 8051
- Robot seguidor de línea con microcontrolador PIC
- Robot seguidor de línea usando Arduino
- Robot seguidor de línea con Raspberry Pi
- Robot seguidor de línea con plataforma de lanzamiento MSP430
Hoy usaremos el microcontrolador AVR para construir un robot seguidor de línea.
La mayoría de los sensores de infrarrojos se utilizan para detectar líneas. Los sensores de infrarrojos son buenos para detectar superficies blancas o negras. Aunque puede utilizar otros sensores sofisticados que podrán detectar todos los colores y pueden hacer un robot que puede seguir todas las líneas de color. El robot debería poder detectar la línea incluso si la ruta se modifica cambiando el ángulo y seguir siguiendo la línea. Además, debe detenerse donde sea que la zona de parada entre en la línea.
Los robots seguidores de línea se utilizan ampliamente hoy en día en industrias de fabricación, aplicaciones médicas, domésticas y almacén de mercancías. Los robots no se limitan solo a estas aplicaciones y pueden extender sus aplicaciones en muchas aplicaciones futuras.
Concepto de robot seguidor de línea
Los sensores de infrarrojos son un actor clave en este proyecto. Los sensores IR se colocan en la parte frontal del robot para rastrear la línea negra dibujada y la superficie. El robot se coloca entre la línea y, con la ayuda de sensores IR, el robot realiza un seguimiento de la línea. Los sensores de infrarrojos envían la lectura al microcontrolador y, con la ayuda de la lectura de infrarrojos, el microcontrolador mueve los motores hacia la izquierda o hacia la derecha y, de nuevo, lleva el robot al camino.
Line Follower Robot puede rastrear una línea con la ayuda de un sensor de infrarrojos. Este sensor tiene un transmisor de infrarrojos y un receptor de infrarrojos. El transmisor de infrarrojos (LED de infrarrojos) transmite la luz y el receptor (fotodiodo) espera a que la luz transmitida regrese. Una luz IR regresará solo si es reflejada por una superficie. Considerando que, todas las superficies no reflejan una luz IR, solo la superficie de color blanca puede reflejarlas completamente y la superficie de color negro las observará completamente como se muestra en la siguiente figura. Obtenga más información sobre el módulo de sensor de infrarrojos aquí.
Ahora usaremos dos sensores IR para verificar si el robot está en pista con la línea y dos motores para corregir el robot si se sale de la pista. Estos motores requieren alta corriente y deben ser bidireccionales; por lo tanto, usamos un módulo de controlador de motor como L293D. También necesitaremos un microcontrolador como ATmega16 para instruir los motores en función de los valores del sensor de infrarrojos. A continuación se muestra un diagrama de bloques simplificado del mismo.
Estos dos sensores de infrarrojos se colocarán uno a cada lado de la línea. Si ninguno de los sensores detecta una línea negra, el microcontrolador AVR indica a los motores que avancen como se muestra a continuación.
Si el sensor izquierdo aparece en una línea negra, entonces el microcontrolador indica al robot que gire a la izquierda girando la rueda derecha solo.
Si el sensor derecho aparece en una línea negra, entonces el microcontrolador le indica al robot que gire a la derecha girando solo la rueda izquierda.
Si ambos sensores aparecen en línea negra, el robot se detiene.
De esta forma, el Robot podrá seguir la línea sin salirse de la pista. Ahora veamos cómo se ven el circuito y el Código.
Componentes requeridos
- Motorreductores DC (2 unidades)
- Módulo sensor de infrarrojos (2 unidades)
- Módulo L293D
- Fuente de energía inalámbrica (por ejemplo, batería, banco de energía)
- Sillas de robot
- Microcontrolador Atmega16 IC
- Oscilador de cristal de 16Mhz
- Dos condensadores de 100nF
- Dos condensadores de 22pF
- Presionar el botón
- Cables de puente
- Tablero de circuitos
- USBASP v2.0 (Para programar Atmega16)
Diagrama de circuito
Conecte todos los componentes como se muestra a continuación en el diagrama de circuito
Programación de Atmega16 para robot seguidor de línea
Aquí el Atmega16 se programa usando USBASP y Atmel Studio7.0. Si no sabe cómo se puede programar Atmega16 usando USBASP, visite el enlace. El programa completo se proporciona al final del proyecto, simplemente cargue el programa en Atmega16 usando el programador JTAG y Atmel Studio 7.0 como se explicó en el tutorial anterior.
Hemos intentado que el código sea lo más breve y sencillo posible. Entonces estamos usando macros y registros de funciones especiales en este código.
if (bit_is_clear (PINA , leftSen)) { // verifica si el sensor izquierdo está APAGADO
Esta declaración verifica si el PA0 donde está conectado el sensor izquierdo es BAJO o ALTO.
Si desea obtener más información sobre esta declaración y otras macros, vaya a este enlace
Hay cuatro condiciones que estamos siguiendo para leer a través de sensores IR. Los sensores de infrarrojos se nombran según su ubicación en la parte frontal del robot. El IR izquierdo es el sensor izquierdo y el IR derecho es el sensor derecho. Las siguientes condiciones decidirán el movimiento del robot.
Hemos escrito el código de acuerdo con las condiciones anteriores. El único cambio es que estamos usando solo dos pines de entrada del L293D para impulsar ambos motores.
A continuación se proporciona el código completo con un video de demostración.