Robô Explorador


O Robô Explorador é um robô capaz de "explorar" um ambiente conectado através do canal serial de um PC. Todo o controle do robô é feito através de um programa desenvolvido, especificamente para isso,  na linguagem LOGO .

O robô possui um braço manipulador com dois graus de liberdade que permite uma maior interação do robô com o ambiente a ser explorado. Ele também tem uma câmera de vídeo P&B acoplada ao braço. O sinal de vídeo é remetido para uma TV ou mesmo placa no PC através de um sistema RF (vídeo link).

Ele também possui uma lâmpada para auxiliar a sua navegação em ambientes fechados e escuros, dois bumpers para prevenir colisões, uma saída extra através de um relé com contatos NA/NF e uma entrada extra para um sensor TTL (5V ativo em "0").


Veja mais algumas imgens. Clique para ampliar.



Vídeo demonstrando o funcionamento do robô






CIRCUITO

Na figura abaixo temos o circuito eletrônico do robô explorador. Todo o controle é feito pelo microcontrolador PIC16F628A. Os servos SRV2 a SRV4 controlam o braço manipulador e o servo SRV1 a roda traseira utilizada no controle da direção.


O motor M1 é controlado através de uma ponte “H”, formada por Q1, Q2, Q3 e Q4. Esta ponte é controlada diretamente pelo microcontrolador através da parte mais significativa da porta “B” (pinos RB4 a RB7). Na tabela abaixo estão os bits inseridos na porta do microcontrolador para o controle do motor


Dados no port B

Efeito no motor

RB7

RB6

RB5

RB4

RB3

RB2

RB1

RB0

1

0

0

1

X

X

X

X

* Giro em sentido anti horário

0

1

1

0

X

X

X

X

* Giro em sentido horário

0

0

0

0

X

X

X

X

Motor parado

1

1

X

X

X

X

X

X

** Situação proibida!

X

X

1

1

X

X

X

X

** Situação proibida!

(X) Valor pode ser “1” ou “0” lógico
(*) Depende de como o motor foi ligado à ponte (fio positivo e negativo)
(**) Coloca dois transistores da ponte em curto!


Observando atentamente a tabela acima e o circuito eletrônico, você compreenderá os efeitos do microcontrolador sobre a ponte “H”. Veja os detalhes na figura abaixo.

As chaves S2 e S3 ligadas aos pinos RA0 e RA4, respectivamente, são na verdade bumpers de colisão utilizados para detecção de obstáculos. Os estados destas portas I/O são mantidos sempre em nível lógico “alto” (5VDC) através de R6 e R7. Quando uma chave é pressionada, o nível lógico nestes pinos de I/O vai a “zero” lógico (0VDC). O programa desenvolvido para o robô permite ler o status dos bumpers (pressionados ou não). Assim o programa de controle poderá tomar a atitude necessária (desvio, retorno, etc) ao detectar um obstáculo.

O pino RA7 é utilizado como saída e permite ligar/desligar um relé (saída extra) através de um transistor Q5. Este relé pode controlar cargas de 12V por até 3 ampères, por exemplo, com bastante folga. Já o pino RB3 controla um buzzer através do transistor Q6.

É importante salientar que este buzzer deve ser do tipo continuo, ou seja, com oscilador interno. Buzzers sem oscilador interno não servem neste projeto!

O pino RB0 permite acender e apagar a lâmpada auxiliar de navegação (LP1) através da configuração darlington Q7 (BC548) e Q8 (TIP31). Q8 suporta uma corrente máxima de coletor IC = 3 A. Sendo assim a potência máxima que a lâmpada LP1 poderá ter será de:

P = V x I => P = 12V x 3A => 36W

Porém acredito que trabalhar no limite máximo do componente não seja o mais recomendado e para evitar situações de super aquecimento e até queima do transistor, aconselho não ultrapassar o limite de 20W máximos. As lâmpadas de 12V utilizadas nos painéis dos carros têm boa luminosidade e baixa potência, e assim são ideais neste caso.

O pino RA5 foi utilizado como uma entrada extra, TTL, ativa em nível lógico baixo (exatamente como RA0 e RA4). Nesta entrada você poderá, por exemplo, ligar um sensor IR que seja ativo em nível lógico baixo (como o sensor IR do Robô Lixobô) ou outro qualquer que se comporte da maneira explicada. Sensores com saída do tipo coletor aberto são os mais recomendados para esta entrada.

A entrada e saída extra foram implementadas para permitir ligar dispositivos não pensados durante a fase inicial do projeto, permitindo desta maneira uma personalização maior com a execução de tarefas diferentes das propostas para o robô (não existem limites para a criatividade, certo?!)

Todo o circuito é alimentado por uma bateria de 12VDC GEL com 1.3Ah. Esta bateria alimentará de forma direta a lâmpada, o relé, o buzzer e o motor. Ela também poderá servir de alimentação para o dispositivo extra de saída (ligado ao relé) caso sua alimentação seja compatível com esta tensão.

O circuito prevê ainda um regulador de tensão para 5VDC (CI2). Os capacitores C1 e C2 funcionam como filtros para a alimentação. D2 permite uma proteção “a mais” contra uma possível inversão ao ligar a bateria. R5 e D1 formam a indicação visual da presença da alimentação (5VDC).

Temos ainda CI3 no circuito. Trata-se de um MAX232 (ou qualquer outro compatível). Este CI adapta os níveis de tensão da norma RS-232 para os níveis TTL (0 e 5VDC) do microcontrolador e vice-versa. É através deste CI que o cérebro do Robô Explorador (microcontrolador) se comunicará com o PC.

Você deve ter notado a ausência do cristal de oscilação, muito comum aos microcontroladores. O PIC16F628A possui um oscilador R/C interno com boa precisão. Optei por usá-lo e assim conseguí a liberação de mais dois pinos de I/O.



MONTAGEM ELETRÔNICA


Chamo sua atenção para o nível de complexidade desta montagem. Ela envolve um microcontrolador PIC e será necessário algum conhecimento prévio no uso destes (compilação de programas, gravação e outras) para o sucesso da montagem. Não recomendo esta montagem para iniciantes e/ou aqueles sem a experiência adequada no mundo dos microcontroladores. Neste site existem outros projetos mais simples, mas bastante interessantes, além de muitas dicas sobre microcontroladores, gravadores, etc. É aconselhável dar um passo por vez!

Nas figuras abaixo você encontrará o lay-out que usei para a confecção dos circuitos impressos da placa principal (cérebro) e da placa de comunicação, respectivamente, do meu robô.

Aconselho o uso de soquetes para todos os CI’s (exceto CI2), principalmente para o microcontrolador. Tenha muito cuidado ao soldar os componentes polarizados como capacitores eletrolíticos, diodos e LEDs, transistores, reguladores de tensão (CI2), buzzer e outros. Qualquer inversão poderá ser fatal para o componente e/ou impedir o funcionamento do robô.

Os transistores Q1 a Q4 e também Q8 necessitam de radiadores de calor. A mesma recomendação é valida para o regulador de tensão CI2.

Para os servos recomendo o uso de uma barra de pinos para a sua fácil conexão a placa. Caso você tenha dificuldade em encontrá-las em sua cidade, poderá cortar o conector original dos servos e soldar diretamente os fios na placa. Lembre-se apenas que o comprimento dos fios que controlaram os servos no braço manipulador deve ser tal que permita o livre movimento deste.

A ligação entre a placa principal e a placa de comunicação (alimentação e comunicação) também pode ser feita com barra de pinos. Na falta desta, os fios poderão ser soldados diretamente na placa.

Tenha muito cuidado ao ligar uma placa à outra. Caso os fios que levam a alimentação até a placa de comunicação sejam invertidos, CI3 se danificará irremediavelmente. Cuidado! Observe atentamente os pontos corretos na placa (na dúvida consulte o circuito) para conectar corretamente ambas as placas. Os fios de comunicação também merecem cuidado, mas sua inversão não provocará a queima de qualquer um dos CI’s, mas impedirá a comunicação entre o robô e o PC. Mantenha a atenção neste item também!

Para a ligação da lâmpada, do motor, da saída e entrada extra e a entrada da alimentação utilizei em meu protótipo conectores do tipo parafusável, também conhecidos como conectores KRE. Estes conectores ajudam muito nas conexões e facilitam qualquer montagem e desmontagem (se necessário). Seu uso é opcional (claro!).



CABO DE COMUNICAÇÃO

A montagem do cabo de comunicação é bem simples. Você irá utilizar alguns metros de cabo do tipo “manga” com pelo menos quatro vias e dois conectores DB09 (uma macho e outro fêmea).

A norma RS-232C determina que um cabo de comunicação serial deve ter no máximo 15 metros para uma comunicação segura. Porém se você utilizar um cabo blindado de boa qualidade pode chegar a 30 metros de distância sem maiores problemas.

Não recomendo o uso de cabos utilizados na montagem de redes de computadores (UTP CAT-5) ou ainda os tipo flat cable. No primeiro caso, estes cabos não são muito flexíveis e isso pode prejudicar os movimentos do robô. No segundo caso, a interferência irradiada e captada por este tipo de cabo pode prejudicar a comunicação e conseqüentemente o funionamento do robô.

Monte o cabo conforme a figura e de acordo com a metragem passada. Se notar qualquer problema na comunicação, diminua o comprimento do cabo ou melhore a sua qualidade até obter êxito na comunicação.


Após realizar toda a montagem eletrônica, aconselho uma verificação minuciosa no circuito para ter certeza que todas as ligações foram feitas corretamente! É melhor perder um tempo verificando tudo entre cada etapa, do que ver todo o trabalho se perder por um erro qualquer, que no final do processo é bem mais difícil de se encontrar!



MONTAGEM MECÂNICA

A montagem mecânica deste robô não é das mais simples, mas também não é das mais complexas. Ela exige alguma experiência com serras, furadeiras elétricas, colas e outros.

O protótipo do meu Robô Exporador foi desenvolvido em madeira (manipulador e chassi), com exceção da plataforma superior que foi montada com um pedaço de acrílico de 3 mm aproveitado de uma prancheta escolar, adquirida em papelarias e lojas do ramo. Porém você poderá utilizar o material que achar mais conveniente.

A montagem do manipulador deste robô já foi descrita no artigo Robô Manipulador RM-1 e sendo assim não falarei da mesma aqui, pois você poderá se valer da descrição e desenhos já expostos no referido artigo.

A lâmpada e a câmera de vídeo foram presas ao manipulador do robô. Acredito ter sido esta a solução mais interessante, pois assim foi possível guiar o robô, com o manipulador voltado para frente, e também ao operar o braço ver o que o robô estava “manipulando”.

case utilizado para abrigar a lâmpada é uma caixa de sinalização código SI-1V da Patola. A câmera pode ser qualquer uma desde que esta tenha saída tipo RCA. Este tipo de câmera é muito utilizada em circuito interno de segurança.

Para prender o conjunto “Lâmpada e câmera” utilizei dois parafusos de 3mm de espessura com 60mm de comprimento e um pedaço de madeira com 4mm de espessura. 

O link de comunicação para a câmera foi instalado na plataforma superior (base de acrílico) do robô. Preferí retirar o equipamento de sua caixa para realizar a sua instalação. 

O sistema de direção do robô foi feito com uma “bequilha” dianteira para aeromodelos. A mesma é facilmente encontrada em lojas de aeromodelismo. A ligação entre a bequilha e o servo SRV1 foi feita através de um arame de aço com 2mm de espessura, com suas pontas dobradas em forma de “Z”. 

A bateria foi presa à base do robô, na parte inferior, com o auxílio de cintas plásticas, porém você poderá realizar sua fixação de outra maneira. Utilizei conectores para a ligação da bateria ao circuito. Assim ficou bem fácil realizar a carga da bateria.

O motor utilizado em meu protótipo foi aproveitado de um brinquedo fora de uso doado por um amigo. Ele deve ser, preferencialmente, do tipo com rodas em ambas as pontas do eixo. A fixação deste motor irá variar de caso para caso e você terá de estudar o tipo de motor que tem em mãos e proceder a sua fixação da melhor maneira possível. Em meu caso usei uma braçadeira comercial de ¾ de polegada.

A fixação da plataforma superior foi feita, na parte frontal, com dois pedaços de haste “roscada” de 3mm de espessura. A parte traseira da plataforma foi fixada na extensão superior do chassi utilizando parafusos de madeira. 

A montagem das chaves S2 e S3 (bumpers) foi feita na parte frontal inferior do chassi. Estas chaves permitem que o robô detecte obstáculos abaixo da linha de visão da câmera, como pequenos degraus e ou saliências no terreno.


A montagem mecânica de qualquer robô é bastante peculiar. Tudo depende do material, ferramentas e recursos disponíveis. O mais importante é você ter em mente que a montagem não precisa ser exatamente como a demonstrada com meu protótipo. Cada um irá realizar uma montagem diferente, considerando apenas os conceitos gerais envolvidos e levando em conta os recursos disponíveis.



PROTOCOLO DE COMUNICAÇÃO

Sempre que falamos na comunicação entre um dispositivo de “controle” e um dispositivo “controlado” é preciso entender um pouco sobre o protocolo de comunicação utilizado.

Um protocolo de comunicação define o formato dos dados, como os mesmos devem ser transmitidos, como os mesmos serão gerados pelo elemento transmissore e como estes serão interpretados pelo elemento receptor. Atualmente estamos cercados por inúmeros equipamentos que utilizam protocolos na sua comunicação. Por exemplo, nossos computadores utilizam o protocolo TCP/IP para comunicação na Internet.

Caso você deseje desenvolver um programa de controle diferente do que ofereço ou ainda em uma outra linguagem, deverá se valer do protocolo utilizado. Ele é bem simples. A figura abaixo o detalha bem. Basicamente temos um caracter de inicio (“E”) e mais 5 caracters que podem variar entre números e letras.

Obs.: Os caracteres utilizados no protocolo de comunicação são tratados no formato ASCII pelos programas, tanto no robô (programa ROBO_EXPLORADOR.ASM) como também no PC (programa ROBO_EXPLORADOR.LGO).



PROGRAMAÇÃO - SOFTWARES DE CONTROLE

São dois os programas necessários para o uso do Robô Explorador. O primeiro deles é o "ROBO_EXPLORADOR.ASM". Este é o código fonte.  O arquivo a ser gravador no microcontrolador PIC16F628A tem o mesmo nome, mudando apenas a extensão para ".HEX". A geração do arquivo ".HEX" é conseguida a partir da compilação do código fonte por um programa Assemblador (no caso o MPASM da Microchip, presente na IDE MPLAB). 

Para gravar o arquivo ".HEX" será necessário um gravador para a linha de microcontroladores PIC da Microchip®. Neste site há um gravador, o PROG PIC II, que poderá ser utilizado para esta tarefa. Sua montagem foi descrita no artigo e não tratarei disso aqui. Considero que se você se propôs a montar o Robô Explorador é porque tem a experiência necessária com microcontroladores PIC.

O funcionamento do programa "ROBO_EXPLORADOR.ASM" pode ser visto no fluxograma apresentado na figura mais abaixo. Para ajudar ainda mais a compreensão do programa, eu o comentei bem.

Programas feitos na linguagem Assembly são um pouco mais difíceis de ser interpretados se comparados a outras linguagens, consideradas de "mais alto nível". Para o entendimento do programa assembly do robô será necessário alguma experiência com a linguagem desenvolvida pela Microchip® (a linguagem Assembly varia de microcontrolador para microcontrolador e é sempre específica, na maioria dos casos). Caso você não a tenha, aconselho o estudo das instruções, detalhadas em Microcontroladores PIC - Teoria e Prática.


O funcionamento do programa é bem simples. Primeiro ele define as variáveis de memória que serão utilizadas. Após isto, é determinado como serão configurados os pinos de I/O e os vários registradores de controle dos periféricos (conversores analógicos, USART, etc).

Feito as devidas configurações, o programa limpa os pinos de controle do buzzer, lâmpada, motor e saída extra (todos desligados), e seta os valores iniciais para os servos.

Após o processo de “inicialização” o programa entrará em um “loop” para o tratamento dos servos. Os dados recebidos pela USART serão tratados por uma interrupção, facilitando bastante o controle. Assim não é preciso checar o canal serial para verificar se chegou algum dado.

Quando um dado é recebido, uma interrupção é gerada e o fluxo do programa é então deviado. Nesta parte do programa, os caracteres recebidos são comparados com os caracteres previamente estabelecidos no protocolo de comunicação. Se os mesmo forem válidos, ele os armazena em variáveis e segue até que o comando esteja completo (número de caracteres recebidos igual ao número total de caracteres protocolo). Uma vez recebido um "comando inteiro" e com o mesmo devidamente interpretado, uma ação é feita:

- Ligar o motor em um sentido ou outro, ou ainda desligá-lo.
- Mudar o valor de posicionamento de um servo qualquer.
- Acender ou apagar a lâmpada auxiliar.
- Ligar ou desligar o Buzzer
- Ligar ou desligar o relé (saída extra).
- Ler o estado atual dos bumpers e da entrada extra e enviar ao PC.

O clock adotado para o PIC é interno de 4MHz. Assim tem-se a execução de uma instrução a cada 1 µs (0,000001 segundos). Essa velocidade é mais que suficiente para tratar todo o protocolo e controlar o robô de maneira bastante eficiente.

Um detalhe importante sobre o robô é a velocidade da comunicação serial adotada. Ela é de 2400 bps (bits por segundo). Você poderá alterar este valor, se assim achar melhor, bastando alterar o valor inserido dentro do registrador SPBRG, conforme a tabela abaixo. Lembrando apenas que estes valores são validos apenas para o modo de comunicação “assíncrono”, considerando a velocidade selecionada em modo high através do bit BRGH do registrador TXSTA e o microcontrolador operando com clock de 4MHz (interno ou externo).

Velocidade em bps

Valor em SPBRG (notação Hexadecimal)

1200

CFH

2400

67H

9600

19H

19200

0CH


O outro programa, a que me referi anteriormente é o "ROBO_EXPLORADOR.LGO". Este programa foi desenvolvido na linguagem LOGO e serve basicamente para demonstrar o funcionamento das entradas e saídas presentes no robô e também efetuar o controle "manual" do robô através de um PC. Para executá-lo é necessário ter o interpretador Super LOGO instalado em seu PC. O mesmo pode ser obtido gratuitamente no site http://www.nied.unicamp.br .

A linguagem LOGO é muito utilizada no mundo todo, principalmente por professores/educadores. Ela é bem fácil de se usar, muito intuitiva e poderosa. Eu já utilizei esta linguagem no controle de outros robôs, e a considero bem satisfatória.

Obs.: É extremamente recomendável conhecer a linguagem, caso você pretenda fazer alguma alteração no programa original.

O programa Super LOGO foi desenvolvido para ser utilizado com o sistema operacional Windows 95/98/Me e assim, seu comportamento no Windows XP/2000 pode aprensentar problemas (no Vista eu não sei como ele se comportaria!). Isso porque o WinXP/2000 restringe o acesso as portas I/O do PC. Neste site é possível encontrar dicas e até um programa que permite liberar as portas do PC. Veja isso neste link

O funcionamento do programa está detalhado no fluxograma apresentado na figura abaixo. O programa também foi ricamente comentado para uma melhor compreensão do funcionamento do mesmo.

Seu funcionamento é bem simples. O programa abre o canal de comunicação serial do PC com endereço 3F8H (COM1). Caso você não tenha esta porta liberada, terá de alterar o programa para operar com uma outra qualquer que esteja livre.


Alguns PCs possuem apenas uma única porta serial e se a mesma já estiver sendo utilizada por um mouse, por exemplo, ou outro dispositivo esta máquina não poderá ser utilizada no controle do Robô Explorador, a não ser que você troque o mouse serial por um outro do tipo PS/2 ou USB (se estas portas estiverem disponíveis no PC) ou ainda, faça a inserção de mais um canal serial através de uma placa ou mesmo outro dispositivo externo, como um adaptador USB->RS-232 extra. Estes dispositivos podem ser adquiridos no mercado especializado.


Após a abertura da porta COM1 (caso algo saia errado, o programa LOGO emitira um aviso) uma tela de controle será formada. Ela possui botões para realizar todos os comandos do tipo “on/off” (lâmpada, buzzer, relé e motor) e barras de rolagem para posicionar os servos. Neste último caso, um botão “Enviar” deve ser pressionado para a atualização da posição dos servos no robô. Para os outros casos isso é feito de forma automática. Na tela do programa também existem “Labels” com o estado atual dos bumper’s (chaves S2 e S3 do robô) e também da entrada extra. Para saber sobre estes estados use o botão “Ler status”. Veja a referida tela na imagem abaixo.

Recomendo o estudo de ambos os programas, juntamente com as informações passadas a respeito do protocolo de comunicação, para uma melhor compreensão do funcionamento do conjunto “PC + robô”.



TESTE E USO

Acredito que o mais prudente seja testar primeiro a parte eletrônica na bancada, antes da sua instalação definitiva no chassi do robô (isso é valido para todo e qualquer robô). Vou considerar aqui apenas os testes eletrônicos. Os testes de montagem mecânica são de  sua responsabilidade, pois cada montagem é um caso. 

Após todo o checkup da montagem eletrônica, ligue a placa principal. Ela deverá emitir um beep por um segundo e logo em seguida cessá-lo. Após o beep os servos são centralizados. Conecte o cabo de comunicação e rode o programa no Super LOGO. Se não houver nenhum problema com a porta serial RS-232 do micro, a tela do programa irá abrir.

Utilize os botões presentes na tela do programa "ROBO_EXPLORADOR.LGO" para controlar as saídas digitais como: buzzer, lâmpada, relé e motor. Verifique se tudo está funcionando. Verifique o posicionamento dos servos. Atue sobre as barras de rolagem e clique no botão enviar. Os servos deverão modificar seu posicionamento. Verifique o curso dos servos, o sentido de rotação do motor, etc.

Confirmado o funcionamento do circuito, você já pode realizar a montagem das placas no chassi e realizar as “conexões” mecânicas. Quando tudo estiver ok o seu robô explorador estará pronto para o uso!



CONCLUSÃO

Esta foi um dos robôs mais interessantes que criei, e um dos mais "cheio" de detallhes. Sua complexidade e os avisos dados no artigo não devem desestimular os "menos experientes". Pelo contrário, esta montagem é um desafio tanto para os mais experientes quanto para os menos experientes. Basta estudar e tudo se torna possível! Boa montagem e até a próxima!



DOWNLOADS:

- Circuito do Robô Explorador - cérebro
- Circuito do Robô Explorador - comunicação
- Lay-out para confecção do circuito impresso para placa principal - lado inferior - inv
- Lay-out para confecção do circuito impresso para placa de comunicação - lado inferior - inv
- Código fonte do programa de controle para microcontrolador (Arquivo ASM)
- Arquivo HEX para gravação do microcontrolador
- Código fonte do programa de controle para PC (Arquivo LGO)
- Lista de materiais


Este projeto foi publicado, com minha autorização, na Revista Mecatrônica Fácil nº 19 de Novembro/Dezembro de 2004. 

Especificações:

- Cérebro - PIC16F628A
- Motores - 1 prara tração e 4 servos Hobbico CS-60
- Sensores - 2 bumpers, 1 entrada extra, 1 saida por relé
- Alimentação- 1 bateria GEL 12V/1.3Ah
- Chassi - madeira
- Programa - Assembly Microchip (robô) e LOGO (PC)


Copyright deste conteúdo reservado para Márcio José Soares e protegido pela Lei de Direitos Autorais LEI N° 9.610, de 19 de Fevereiro de 1998. É estritamente proibida a reprodução total ou parcial do conteúdo desta página em outros pontos da internet, livros ou outros tipos de publicações comerciais ou não, sem a prévia autorização por escrito do autor.