- Conceito de robô seguidor de linha
- Componentes necessários
- Diagrama de circuito
- Programando Atmega16 para Robô Seguidor de Linha
Aqui estaremos construindo mais um projeto com o Microcontrolador AVR Atmega16. Se você é novo em microcontroladores AVR, pode consultar os projetos e tutoriais AVR anteriores.
Construir um robô é sempre uma emoção para todos os entusiastas da eletrônica. E essa emoção pode ser maximizada se o robô puder fazer algumas coisas automaticamente sem quaisquer instruções externas. Um dos robôs mais comumente construídos por iniciantes em eletrônica é o Line Follower Robot. Como o nome sugere, o robô seguirá a linha desenhada na superfície. A linha não precisa ser uma linha reta. Além disso, as linhas podem ser de qualquer cor.
Anteriormente, criamos projetos de Robô Seguidor de Linha usando diferentes Controladores:
- Robô seguidor de linha usando o microcontrolador 8051
- Robô seguidor de linha usando microcontrolador PIC
- Robô seguidor de linha usando Arduino
- Robô seguidor de linha usando Raspberry Pi
- Robô seguidor de linha usando o Launchpad MSP430
Hoje usaremos o microcontrolador AVR para construir um Robô seguidor de linha.
Principalmente os sensores IR são usados para detectar linhas. Os sensores IR são bons na detecção de superfícies brancas ou pretas. Embora você possa usar outros sensores sofisticados que serão capazes de detectar todas as cores e podem fazer um robô que pode seguir todas as linhas de cores. O robô deve ser capaz de detectar a linha, mesmo se o caminho for alterado, mudando o ângulo e continuar seguindo a linha. Além disso, deve parar onde quer que a zona de parada venha na linha.
Os robôs seguidores de linha são usados extensivamente hoje em dia nas indústrias de manufatura, médicas, aplicações domésticas e depósitos de mercadorias. Os robôs não estão limitados apenas a essas aplicações e podem estender suas aplicações em muitas aplicações futuras.
Conceito de robô seguidor de linha
Os sensores IR são peça chave neste projeto. Sensores de infravermelho são colocados na parte frontal do robô para rastrear a linha preta desenhada e a superfície. O robô é colocado entre a linha e com a ajuda de sensores infravermelhos o robô mantém o controle da linha. Os sensores de IR retornam a leitura ao microcontrolador e com a ajuda da leitura de IR, o microcontrolador move os motores para a esquerda ou para a direita e novamente traz o robô para o caminho.
O Robô seguidor de linha é capaz de rastrear uma linha com a ajuda de um sensor infravermelho. Este sensor possui um transmissor IR e um receptor IR. O transmissor IR (LED IR) transmite a luz e o receptor (fotodiodo) espera que a luz transmitida volte. Uma luz infravermelha retornará somente se for refletida por uma superfície. Enquanto todas as superfícies não refletem uma luz infravermelha, apenas a superfície de cor branca pode refleti-las completamente e a superfície de cor preta irá observá-las completamente como mostrado na figura abaixo. Saiba mais sobre o módulo do sensor IR aqui.
Agora usaremos dois sensores IR para verificar se o robô está em linha com a linha e dois motores para corrigir o robô se ele se mover para fora da linha. Esses motores requerem alta corrente e devem ser bidirecionais; portanto, usamos um módulo de driver de motor como o L293D. Também precisaremos de um microcontrolador como o ATmega16 para instruir os motores com base nos valores do sensor IR. Um diagrama de blocos simplificado do mesmo é mostrado abaixo.
Esses dois sensores IR serão colocados um em cada lado da linha. Se nenhum dos sensores estiver detectando uma linha preta, o microcontrolador AVR instrui os motores a avançar como mostrado abaixo
Se o sensor esquerdo vier na linha preta, o microcontrolador instrui o robô a virar para a esquerda girando apenas a roda direita.
Se o sensor direito vier na linha preta, o microcontrolador instrui o robô a virar à direita girando apenas a roda esquerda.
Se os dois sensores estiverem na linha preta, o robô para.
Desta forma, o Robô poderá seguir a linha sem sair da pista. Agora vamos ver como o circuito e o código se parecem.
Componentes necessários
- Motores de engrenagem DC (2 unidades)
- Módulo de sensor IR (2 unidades)
- Módulo L293D
- Fonte de alimentação sem fio (por exemplo, bateria, banco de energia)
- Robot Chaises
- Atmega16 Microcontrolador IC
- Oscilador de cristal de 16 MHz
- Dois capacitores 100nF
- Dois capacitores 22pF
- Botão de apertar
- Jumper Wires
- Tábua de pão
- USBASP v2.0 (para programar Atmega16)
Diagrama de circuito
Conecte todos os componentes conforme mostrado abaixo no Diagrama de Circuito
Programando Atmega16 para Robô Seguidor de Linha
Aqui, o Atmega16 é programado usando USBASP e Atmel Studio7.0. Se você não sabe como o Atmega16 pode ser programado usando o USBASP, visite o link. O Programa Completo é fornecido no final do projeto, basta fazer o upload do programa no Atmega16 usando o programador JTAG e Atmel Studio 7.0 conforme explicado no tutorial anterior.
Tentamos manter o código o mais curto e simples possível. Portanto, estamos usando macros e registradores de função especial neste código.
if (bit_is_clear (PINA , leftSen)) { // verifique se o sensor esquerdo está DESLIGADO
Esta declaração verifica se o PA0 onde o sensor esquerdo está conectado está BAIXO ou ALTO.
Se você quiser saber mais sobre esta declaração e outras macros, acesse este link
Existem quatro condições que estamos seguindo para ler através de sensores infravermelhos. Os sensores IR são nomeados de acordo com sua colocação na frente do robô. O IR esquerdo é o sensor esquerdo e o IR direito é o sensor direito. As seguintes condições decidirão o movimento do robô.
Escrevemos o código de acordo com as condições acima. A única mudança é que estamos usando apenas dois pinos de entrada do L293D para acionar os dois motores.
O código completo com um vídeo de demonstração é fornecido abaixo.