Em artigo anterior (*) publicamos um pequeno robô, capaz de "seguir uma linha" no chão. Este robô não possuía qualquer tipo de processamento e sua operação era feita através de uma lógica muito simples implementada com transistores. Após a publicação, muitos leitores nos enviaram e-mails perguntando sobre como realizar o projeto de um robô com as mesmas características, porém microcontrolado. Esta é a proposta deste artigo: um Robô Rastreador Microcontrolado.
Marcio José Soares
(*) Este artigo foi publicado numa revista Mecatrônica Fácil de setembro de 2005. Outros artigos do mesmo autor estão disponíveis neste site.
O QUE MUDOU?
Na figura 1 o leitor pode ver a nossa primeira versão. Ela foi projetada utilizando-se apenas transistores e outros componentes discretos. Tudo muito simples, mas bastante funcional.
A nova versão, que pode ser vista na abertura deste artigo, é microcontrolada. Para obtermos uma "certa" compatibilidade no modo de operação manteve-se nesta versão o mesmo número de sensores e também o mesmo padrão de operação para eles. A diferença básica agora é o uso de um microcontrolador no "controle" do robô. As vantagens são muitas, tais como:
- Escolha do modo de operação dos sensores;
- Desenvolvimento de um programa adequado a competições;
- Desenvolvimento de programas específicos para cada tipo de pista;
- Entre outras.
O leitor que montou a primeira versão, deve lembrar-se que esta possuía algumas limitações como: a pista não podia ter cruzamentos, desvios e terminações em "T" para alguns trechos, e também tinha que necessariamente ser fechada. Com o uso de um microcontrolador no robô, estes problemas são facilmente resolvidos. Basta criar o algoritmo adequado a cada situação.
Neste artigo apresentaremos um algoritmo que permite ao robô "transitar" em uma pista fechada que pode ter cruzamentos e desvios sem problemas. Neste primeiro algoritmo a pista deve ser fechada. Mas o leitor poderá, com um pouco de criatividade, desenvolver outros programas que possam ser utilizados em pistas "abertas" e também com outros tipos de "obstáculos". Tudo é uma questão de avaliar o que se deseja e colocar "mãos à obra".
COMO FUNCIONA
O Robô Rastreador II possui um par de sensores que permitem que o mesmo "rastreie" uma linha "escura" no chão com largura de até 25 mm. O contraste entre a linha e o resto da "pista" é importante.
Cada sensor (esquerdo e direito) é formado por um LED emissor de IR (infravermelho) e um fototransistor receptor (exatamente como na primeira versão). Veja a figura 2.
Quando o LED de um sensor se encontra sobre a cor "clara" da pista (esta deve ser preferencialmente branca) os raios infravermelhos são, então, refletidos e captados pelo fototransistor que passa a receber o sinal IR e a conduzir (saturação). Porém, se o LED IR estiver sobre a linha que deve ter cor escura: preta, marrom, vermelha, etc. (escuros e não reflexivos), os raios IR são absorvidos na sua maioria. Sem reflexão, o fototransistor fica no "corte" e não conduz.
Cada fototransistor está ligado a um pino de "I/0" do microcontrolador. Este então, interpreta o estado do pino (e consequentemente do sensor) e passa a controlar os motores.
Se os sensores estiverem conduzindo, o microcontrolador ligará ambos os motores (servos de rotação). Se apenas um dos sensores parar de conduzir, o microcontrolador desligará o motor do mesmo lado do sensor que parou de conduzir. Desta forma, o robô realizará uma correção na sua trajetória e poderá assim continuar a seguir a "linha", sem "atropelá-la".
Na edição n° 16 demonstramos que existem outros tipos de posicionamento possíveis para os sensores. Acreditamos que repeti-los agora será interessante, principalmente para o leitor que não possui a edição mencionada. Observe a figura 3.
Em "A" temos um posicionamento muito interessante. Nele, um sensor (par diodo / fototransistor) é posicionado de maneira a sempre ficar sobre a cor clara da pista e o outro sobre a linha (cor escura). Alguns robôs fornecidos em forma de kits, utilizam este tipo de configuração. Nesta, o sensor posicionado sobre a cor clara responde sempre que estiver sobre a cor escura, e o sensor posicionado sobre a cor escura, opera justamente ao contrário. A vantagem deste tipo de configuração é que a linha não precisará de uma largura específica, mas como desvantagem temos a dificuldade no desenvolvimento de um algoritmo para pistas com cruzamentos e terminações "T".
No tipo "B" ambos os sensores respondem quando deixam de "enxergar" a cor escura (linha). Um pequeno desvio e o sensor que ficar sobre a cor clara da pista fará o aviso, e o robô então desviará para o lado indicado. As vantagens do sensor B são: possibilidade da pista possuir cruzamentos e terminações "T". Como desvantagens podemos citar a impossibilidade de trabalhar "desvios" de maneira apropriada (a configuração não permite visualizar que ocorreu um desvio) e também a largura da linha, que deve ser sempre adequada para evitar oscilações (nem muito fina nem muito larga).
Em "C" temos a configuração adotada em nossas duas versões do "Robô Rastreador". Neste tipo de configuração os sensores respondem sempre que estiverem sobre a "linha", mantendo-se neutros quando estiverem sobre a cor clara da pista. As vantagens desta configuração são: a pista pode ter cruzamentos, desvios e terminações. Como desvantagem: a "linha" precisa ficar dentro de uma faixa de valores seguros no quesito "largura" (nem muito fina, nem muito larga).
O CIRCUITO
Na figura 4 temos o circuito elétrico do nosso robô. O microcontrolador C11, um Basic Step 1, é o "cérebro" do circuito. Ele executa as funções de leitura dos sensores, controle dos servos de rotação (motores) e também dos LEDs para informação visual do motor que está realizando o desvio.
O microcontrolador Basic Step 1 já é um velho conhecido, tendo sido utilizado em muitos outros projetos apresentados aqui na revista. A novidade agora é o uso da versão OEM neste projeto. Nesta versão, o Basic Step 1 é comercializado na forma de um Cl com encapsulamento DIP 18 pinos e tem uri custo relativamente acessível. As principais características do Basic Step 1 OEM são:
- Encapsulamento DIP 18;
- 8 linhas de I/O bidirecionais programáveis independentemente;
- 256 bytes de memória de programa EEPROM;
- 80 a 100 linhas de instruções máximas;
- 16 bytes de memória RAM (2 para I/0's e 14 para variáveis);
- Clock de 8 MHz (aproximadamente 5.000 instruções por segundo);
- Comunicação RS-232 até 2400. bps em qualquer pino;
- 5 entradas analógicas (conversores AD);
- Faixa de alimentação: de 5 VDC +/- 5% (nível TTL);
- Usa interpretador TBASIC (Windows), com comandos em inglês e português;
- Possui suporte técnico nacional com fórum em língua portuguesa;
- O programa TBASIC, assim como exemplos de uso, são fornecidos gratuitamente pelo fabricante;
- Compatibilidade total com o Basic Step 1 versão em encapsulamento SI P; - Custo: R$ 29,00 (tomada de preço feita em 24/05/2005)
Os LEDs D1 e D2 são LEDs IR (emissor de infravermelho). 0, e Q2 são fototransistores. Os pares D1 / Q1 e D2/ Q2 formam os sensores "direito" e "esquerdo", respectivamente. O funcionamento destes sensores já foi detalhado anteriormente. Os LEDs D3 e D4 informam qual motor está realizando o desvio.
O diodo D5 permite ligar o circuito em 6 VDC (4 pilhas). Isso é possível devido à queda de tensão de aproximadamente 0,7 VDC que o mesmo provoca no circuito. Assim, temos na entrada do microcontrolador uma tensão não superior a 5,3 VDC, que está dentro da faixa aceitável pelo mesmo.
Os motores usados são, na verdade, servos de rotação que podem ser adquiridos prontos no mercado especializado ou mesmo adaptados pelo leitor a partir de servos para posicionamento de antenas parabólicas e/ou servos para modelismo em geral (Futaba, Hitec ou outros). Acreditamos que a escolha por servos de antenas parabólicas seja a opção mais barata e por isso indicada.
Os resistores R1 e R2 formam o divisor resistivo para a gravação do microcontrolador. A gravação é feita através do canal serial do PC, e os níveis de tensão presentes são de +/-12 VDC (padrão RS-232). Note que o divisor está presente apenas no pino de entrada. Para o pino de saída não é necessário nenhum divisor.
Os resistores R4, R6, R7 e R8 são resistores limitadores de corrente para os diodos (IR e normais). Os resistores R3 e R5 são resistores de "pull-up". Eles fornecem nível lógico "1" sempre que os fototransistores a eles ligados se mantiverem no corte (sensor não refletindo). Quando o fototransistor conduzir (saturação), o resistor ajudará a limitar a corrente.
Para realizar a gravação do microcontrolador Basic Step 1 o leitor precisará apenas de um cabo, montado conforme mostra a figura 5, e do compilador TBasic fornecido gratuitamente no sita, do fabricante do microcontrolador.
O conector "GRAVA" permite a ligação da placa do robô diretamente ao PC durante a gravação, facilitando muito a inserção do programa de controle e testes de outros programas que o leitor poderá vir a implementar, sem a necessidade de placas ou gravadores especiais.
Ao montar o cabo identifique os pinos do conector que será ligado à placa. Isso ajudará na utilização, evitando que o mesmo seja invertido, poupando muita "dor de cabeça".
Na figura 6 o leitor encontra o layout para circuito impresso empregado em nosso protótipo. Comece por montar os resistores e conectores (gravação, servos e entrada para o suporte de pilhas). Se o leitor quiser, poderá usar uma chave para ligar / desligar o robô. Para isso basta inseri-la entre o suporte de pilhas e a placa. Veja a figura 7. Esta chave deve ser do tipo "on / off" "alavanca" ou mesmo "gangorra". A escolha de uma ou outra é livre.
Aconselha-se o uso de um soquete de Cl com 18 pinos para o microcontrolador. Evite soldar o mesmo diretamente na placa. Assim, além de evitar danificá-lo o leitor poderá, se e quando necessário, usar o mesmo microcontrolador em outros testes e/ou circuitos.
Os fios dos servos podem ser ligados diretamente à placa ou pode-se utilizar conectores tipo "barra de pinos". Apenas recomenda-se muito cuidado ao realizar as ligações. Os fios são "polarizados": geralmente vermelho para Vcc, preto para GND e branco ou amarelo para o sinal. Cuidado ao ligá-los à placa!
No caso do "conector" para gravação, aconselha-se o uso de "barra de pinos" ou outro conector que facilite a inserção e retirada do cabo. Desta maneira facilita-se em muito a inserção do algoritmo ou mesmo estudo de novos algoritmos (alteração e implementações no programa). O capacitor C, não é polarizado e não requer cuidados neste quesito ao ser ligado ao circuito. Porém o mesmo não acontece com o CI, diodos, foto transistores e LEDs. Siga atentamente a orientação fornecida na "máscara" dos componentes (figura 6). Qualquer inversão poderá provocar o não funcionamento do componente e também a perda do componente. Tenha cuidado ao ligar componentes polarizados nos circuitos!
O desenho do "layout" 6b é para uma placa auxiliar que deve ser usada caso o chassi adotado mantenha a placa do robô longe da "linha a ser seguida". Assim é possível ligar os sensores mais próximos à pista sem a necessidade de mover a placa principal para tal. A ligação entre as placas deve então ser feita através de fios, seguindo o mesmo padrão demonstrado nas máscaras. Note que temos na placa auxiliar apenas uma ligação para GND. Escolha um ponto na placa principal para a ligação deste, que pode ser o catodo de D1, por exemplo.
Após finalizar a montagem, faça uma conferência em todas as ligações, fios, soldas, posição dos componentes. Cheque se os valores estão corretos. Note que existem valores diferentes para cada resistor. Use a lista de materiais se tiver dúvidas (código de cores fornecido).
Importante
Nesta mesma edição é possível conferir o artigo "Construa um chassi multi plataforma". A fim de demonstrar a versatilidade deste, o aproveitamos para a construção do nosso robô. Note que apenas duas das três bandejas foram utilizadas.
O PROGRAMA
No site da revista (www.mecatronicafacil. com.br), seção "Downloads"(na época em que foi publicado), o leitor encontrará o código-fonte para o microcontrolador para "download" gratuito. Na figura 8 temos o fluxograma para auxiliar na visualização e compreensão do seu funcionamento. Ter o programa em mãos também é recomendado.
O programa inicia as variáveis e o ambiente (direção dos pinos — "entrada ou saída" e o seu estado inicial). Em seguida, ele pisca os LEDs D3 e 0, num período de 3 segundos para informar que o robô está pronto para seguir a "linha". Após o período de tempo, os LEDs são apagados e o programa entra em um "laço eterno" (loop) onde o estado dos sensores é pesquisado e os motores são então ligados / desligados de acordo com a informação obtida do sensor:
- Sensor informando estado lógico "0", sensor na parte clara da pista, mantém motor ligado;
- Sensor informando estado lógico "1", sensor em cima da linha, desliga motor do lado do sensor até recuperação do trajeto.
O programa é bem pequeno e está bem comentado. A linguagem Basic é uma das mais fáceis para compreender. O compilador possui um "help" poderoso com a descrição de cada comando em português. Sua leitura e estudo poderão ajudar o leitor iniciante com o microcontrolador Basic Step 1.
GRAVANDO O MICROCONTROLADOR
Agora que seu robô já está montado, é hora de testá-lo. Insira o microcontrolador no suporte (soquete) na placa. Verifique atentamente a posição do mesmo. Use a figura 6 para auxiliá-lo. Conecte o cabo de gravação entre o PC (porta serial RS-232 livre) e a placa do robô. Insira as pilhas de alimentação no suporte de pilhas e ligue a chave S, (se esta foi inserida, conforme a figura 7).
Rode o compilador TBasic que deve ser obtido no site do fabricante do Basic Step 1. Faça o "download" do código-fonte "ROBO_RASTREADOR _II.BAS" no site da revista. Grave-o em um subdiretório qualquer, mas conhecido. Abra-o com o compilador TBasic (menu Arquivo — Abrir). Verifique no menu "Ferramentas - português" se esta opção está selecionada. Se estiver, desmarque-a. Em seguida, no menu "Ferramentas — Porta Serial" selecione a COM (porta serial) onde ligou o cabo de gravação. Clique agora no menu "Download" e observe na barra de "status" do TBasic o andamento da gravação.
Se tudo correu bem o leitor observará o funcionamento do robô, com os LEDs D3 e D4 piscando durante 3 segundos. Retire o cabo de gravação e desligue o robô, ele já está pronto para ser utilizado e o programa não será perdido. O programa está agora na Memória do microcontrolador e não se perderá quando o robô for desligado. Se algo saiu errado, e o programa não foi gravado no microcontrolador aconselha-se:
- Uma verificação no cabo de gravação;
- Nas ligações do cabo à placa (conector do cabo com conector GRAVA na placa);
- Porta serial usada. Alguns PCs possuem mais de uma porta. Verifique se selecionou a correta.
Importante
Alguns PCs possuem apenas uma porta serial e muitas vezes esta já está ocupada por um mouse ou outro dispositivo. Nestes casos é necessário desinstalar o dispositivo (inclusive softwares e drives de controle) para poder utilizá-la.
AJUSTE DOS SENSORES
O ajuste dos sensores do Robô Rastreador II não é crítico, mas requer atenção. Conforme dito anteriormente, os mesmos operam por reflexão e precisam ser posicionados de maneira que o elemento receptor (fototransistor) "possa perceber" a presença do sinal do elemento emissor (LED IR). Veja a figura 9.
Nos testes de laboratório obtivemos bons resultados com distâncias entre 0,5 cm e 3 cm do solo (pista). Esta distância está intimamente ligada ao tipo de diodo emissor e fototransistor usado, e também ao contraste da pista (cor da parte clara e escura) e também ao ângulo deixado entre o emissor e o receptor (conforme figura 9). Quanto maior o ângulo, menor será a distância entre os sensores e a pista.
Para ajustar a reflexão use um pedaço de papel claro com uma "faixa" no meio, imitando a "linha". As cores utilizadas devem ser, preferencialmente, as mesmas adotadas para a sua pista. Se os sensores estiverem funcionando, ao aproximar o cartão, com a linha bem no meio de ambos, os motores deverão girar, movimentando o robô à frente. Ao desviar o pedaço de papel, de maneira que agora um dos sensores perceba a cor da "linha", o motor no lado deste deverá parar. Ajuste o ângulo dos sensores para obter o melhor rendimento dos mesmos.
TESTE E USO
Para testar seu robô, o leitor precisará construir uma pista. Ela deve ser, como dissemos anteriormente, "fechada", ou seja, ela começa em um ponto e termina neste mesmo ponto. Esta nova pista pode ter desvios e até cruzamentos. A largura da pista deve ser tal que a mesma fique entre os sensores, de maneira que os mesmos fiquem sempre sobre a parte clara da pista. Uma largura entre 15 mm e 25 mm pode ser experimentada.
Um detalhe importante sobre a mesma diz respeito às curvas. O raio mínimo para as mesmas está intimamente ligado à distância entre o eixo das rodas e os sensores. Quanto maior é a distância, maior será o raio, e assim a curva terá de ser desenhada bem aberta. A situação inversa também é verdadeira e diminuindo a distância entre o eixo das rodas do robô e seus sensores, diminuímos o raio da curva e desta forma o robô poderá realizar curvas mais fechadas.
Estude bem esse comportamento no seu robô, pois pode acontecer dele não realizar bem as curvas e o leitor acreditar ser um defeito no projeto ou mesmo problema com os sensores, mas o problema estará, na verdade, no projeto da pista. Atenção a esta recomendação!
MUDA COM PROBLEMAS
A seguir, listamos alguns pontos observados em nosso laboratório e que poderão ajudar o leitor na solução de um possível problema.
"Liguei meu robô e nada aconteceu! Ele não se move! Nada acontece!"
Verifique os seguintes itens:
- A alimentação do robô (ligação do suporte de pilhas à placa, chave S, se existir, e também a posição das pilhas no suporte);
- A posição do diodo D5. Se o mesmo for ligado invertido, o robô não funcionará;
- A presença do microcontrolador na placa e se sua posição está correta;
- Se o processo de gravação correu bem. O microcontrolador foi gravado com sucesso?
- Troque as pilhas por outras novas e preferencialmente alcalinas. É comum o uso de pilhas usadas e sem carga nos testes. O microcontrolador precisa de 4,5 VDC no mínimo para funcionar (já descontada a queda de tensão provocada pelo diodo D5). Pilhas fracas (usadas) podem fornecer uma tensão abaixo do recomendado.
"Liguei meu robô, os LEDs piscam, mas o robô não se move!"
Verifique os seguintes itens:
- Ligação dos servos na placa. Temos três fios com cores distintas. Branco para sinal, vermelho para VDC e preto para GND. Verifique se não os inverteu;
- Tipo de servo utilizado. O circuito foi testado com servos de rotação adaptados a partir de servos de posicionamento de antenas parabólicas. Outros tipos podem requerer alterações no programa para um funcionamento adequado.
"Liguei meu robô, e o mesmo está funcionando, mas ele não segue a linha corretamente em uma curva."
Verifique os seguintes itens:
- As ligações de D1, D2, Q1 e Q2 na placa. Qualquer inversão e os mesmos não funcionarão adequadamente. Confira este item.
- Veja se os sensores funcionam de forma independente, conforme descrito no item "Ajuste dos sensores". - Confirme se os "raios" das curvas adotadas em sua pista estão adequados para o funcionamento do robô.
"Meu robô tem funcionamento estranho. Ele não desliga o motor do lado do sensor e, assim, sai da pista a toda hora.
" Verifique os seguintes itens:
- Inverta as ligações dos servos 1 e 2.
"Meu robô se move e tudo está certo, mas ele sai da pista a todo momento.
" Verifique os seguintes itens:
- Se a velocidade do seu robô estiver muito alta, os sensores poderão não atuar adequadamente. Altere o programa, inserindo "delays" (tempos). No programa, o autor inseriu um comentário que poderá ajudá-lo. Estude-o e use se necessário.
CONCLUSÃO
Esta nova versão do Robô Rastreador, apesar de ter "herdado" o mesmo nome da primeira versão, se mostrará muito diferente. Agora o robô pode ser programado e desta maneira poderá ser usado em pequenas competições, Feiras e outras com a aplicação de algoritmos específicos para percorrer tipos diferentes de pistas, demonstrando o conhecimento do aluno no assunto, por exemplo. Boa montagem e até uma próxima!