- Materiais requisitados:
- Conceitos de seguidor de linha
- Diagrama de circuito e explicação:
- Microcontrolador PIC de programação:
- Seguidor de linha PIC em ação:
Um Line Follower Robot é um robô simples, mas fascinante, para a maioria dos alunos / amadores construir. Neste tutorial, aprenderemos como funciona um robô seguidor de linha e como podemos construir um usando o microcontrolador PIC PIC16F877A. O PIC16F877A é um MCU multifuncional de 40 pinos da Microchip, usamos esse IC em nossa série completa de tutoriais de PIC. Se você é novo, talvez queira dar uma olhada nesses tutoriais PIC para aprender o básico deste IC e como fazer upload de programas para o microcontrolador. Como já cobrimos essas informações em nossos tutoriais, iremos ignorá-los na explicação abaixo.
Se você está interessado em robótica, deve estar bem familiarizado com o nome “ Line Follower Robot ”. Este robô é capaz de seguir uma linha, apenas usando um par de sensores e motores. Este robô oferece espaço para desenvolvimento infinito e robôs como o Kiva (robô de depósito da Amazon) são um exemplo disso. Você também pode verificar nossos outros robôs seguidores de linha:
- Robô seguidor de linha usando o microcontrolador 8051
- Robô seguidor de linha usando Arduino
- Robô seguidor de linha usando Raspberry Pi
Materiais requisitados:
- PIC16F877A
- Sensor IR (2Nos)
- Motor de engrenagem DC (2Nos)
- Motorista L293D
- Chaises (você também pode construir seu próprio usando papelão)
- Banco de energia (qualquer fonte de energia disponível)
Conceitos de seguidor de linha
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 PIC 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 PIC instrui os motores a se moverem para frente, conforme 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.
Diagrama de circuito e explicação:
O diagrama de circuito completo para este robô seguidor de linha baseado em PIC é mostrado abaixo
O circuito emprega dois sensores IR e um par de motoredutores CC junto com um módulo acionador de motor conforme mostrado acima. O módulo driver do motor usado neste projeto é L293D, precisaremos de um driver do motor porque o pino de saída do microcontrolador PIC não pode fornecer corrente suficiente para os motores acionarem. Este módulo será alimentado diretamente da fonte de alimentação (5V) conforme mostrado no circuito. O módulo possui quatro pinos (dois para cada motor) que são conectados ao PIC para controlar a direção dos motores. Também temos dois sensores IR que atuam como uma entrada para o microcontrolador PIC. Esses sensores ficarão altos (1) se estiverem sobre uma superfície branca e serão baixos (0) quando estiverem sobre uma superfície preta. As conexões de pinos completas são ilustradas na tabela abaixo.
S.Não |
Conectado de |
Conectado a |
1 |
Pino de saída do sensor IR |
RD2 (pino 21) |
2 |
Pino direito do sensor IR |
RD3 (pino 22) |
4 |
Pino do canal A do motor 1 |
RC4 (pino 23) |
5 |
Pino do canal B do motor 1 |
RC5 (pino 25) |
6 |
Pino do canal A do motor 2 |
RC6 (pino 26) |
7 |
Pino do canal B do motor 2 |
RC7 (pino 27) |
No hardware atual, usei um banco de energia que dará uma saída de + 5 V diretamente através de sua porta USB; portanto, ignorei o regulador de tensão 7805 e alimentei o PIC, os sensores e os motores usando os mesmos. Você pode fazer o mesmo usando uma bateria de 12 V junto com um regulador conforme mostrado no circuito.
Microcontrolador PIC de programação:
Assim que estiver pronto com seu Hardware, é hora de começar a programar. O programa completo deste Projeto de Robô Seguidor de Linha PIC é fornecido no final desta página. No entanto, os pedaços importantes são explicados abaixo.
Inicialize os pinos de E / S pelas seguintes linhas. Os 2 pinos do sensor IR atuam como entrada e os quatro pinos do motor atuam como pinos de saída.
TRISD2 = 1; TRISD3 = 1; // Banho os pinos do sensor IR são declarados como input TRISC4 = 0; TRISC5 = 0; // Pinos do motor 1 declarados como saída TRISC6 = 0; TRISC7 = 0; // Motor 2 pinos declarados como saída
Agora, temos que ler o status do sensor IR e controlar o motor de acordo. Por exemplo, se ambos os sensores estão altos (não vem sob a linha preta), então movemos ambos os motores para frente conforme mostrado no programa abaixo.
if (RD2 == 1 && RD3 == 1) // Ambos os sensores não ultrapassaram a linha traseira {RC4 = 0; RC5 = 1; // Motor 1 para frente RC6 = 1; RC7 = 0; // Motor 2 forward}
Se o sensor esquerdo ultrapassar a linha preta, então fazemos uma curva para a direita mantendo o Motor 1 parado e girando o Motor 2 na direção para frente. Este tipo de torneamento é denominado torneamento diferencial.
else if (RD2 == 0 && RD3 == 1) // O sensor esquerdo está sobre a linha preta {RC4 = 1; RC5 = 1; // Motor 1 parada RC6 = 1; RC7 = 0; // Motor 2 forward}
Da mesma forma, se o sensor direito ultrapassar a linha preta, então o robô deve virar à esquerda mantendo o segundo motor parado e girando o primeiro motor sozinho na direção para frente, conforme mostrado abaixo.
else if (RD2 == 1 && RD3 == 0) // O sensor direito está sobre a linha preta {RC4 = 0; RC5 = 1; // Motor 1 para frente RC6 = 1; RC7 = 1; // Motor 2 stop}
Finalmente, se ambos os sensores estiverem sob uma linha preta, é hora de parar o bot. Isso pode ser feito aumentando todos os pinos de ambos os motores. O código para fazer o mesmo é mostrado abaixo
else // Ambos os sensores sobre a linha preta {RC4 = 1; RC5 = 1; // Motor 1 parada RC6 = 1; RC7 = 1; // Motor 2 stop}
Assim o programa está pronto e pode ser carregado no PIC usando qualquer programador como o PicKit.
Seguidor de linha PIC em ação:
Assim que o hardware e o código estiverem prontos, é hora de alguma ação. Como disse antes, usei um banco de energia para alimentar o bot, então tudo que tenho a fazer é simplesmente conectar o banco de energia ao bot que tem o hardware configurado e o código já carregado.
A placa PIC Perf foi feita para nossa série de tutoriais PIC, na qual aprendemos como usar o microcontrolador PIC. Você pode querer voltar para aqueles tutoriais de Microcontrolador PIC usando MPLABX e XC8 se você não souber como gravar um programa usando Pickit 3, já que estarei pulando todas essas informações básicas.
Agora, basta lançar o bot sobre uma linha preta e você deve observá-lo seguindo a linha.
Você pode enfrentar algumas dificuldades no início, nesse caso, leia mais. Se as rodas girarem no sentido oposto, simplesmente troque a polaridade do motor cuja roda está girando na direção oposta. Se o bot se desviar da linha, troque o sensor IR e tudo ficará bem.
O funcionamento completo do bot pode ser encontrado no vídeo abaixo. Espero que você goste do projeto e tenha gostado de construir algo semelhante. Se você tiver problemas em fazer isso funcionar, você pode postá-los na seção de comentários abaixo para resolver o problema ou usar nossos fóruns para discutir conteúdos técnicos.