ROBÔ INTELIGENTE


O Robô Inteligente é um robô capaz de desviar de obstáculos. Até ai tudo muito normal, e aparentemente muito comum. Seria se ele não utilizasse uma lógica um aparato diferente. Ao encontrar um obstáculo o robô pára, move o sonar 90º à esquerda e mede a distância de algum possível obstáculo. Depois ele faz uma outra medida, desta vez à direita. Após isso o robô calcula a maior distância entre as duas medidas e segue nesta direção. Caso ambas as medidas sejam iguais o desvio será sempre feito a esquerda.

O robô utiliza um Sonar da Tato Equipamentos Eletrônicos como sensor de distância. Um Buzzer e um LED são utilizados nos efeitos sonoros e visuais, respectivamente. Como "cérebro" utilizei um Basic Step 1, no chassi hastes "roscadas" com 3 milímetros e um pequeno pedaço de tudo de latão de mesma espessura externa. Um outro detalhe importante sobre este robô está nos motores utilizados para a tração. São dois servos de posicionamento para antenas parabólicas adaptados para giro continuo com apenas dois fios (a placa de controle interna foi retirada) e os resultados são excelentes.

Veja mais algumas imagens. Clique para ampliar.



Vídeo demonstrando o funcionamento do robô




O CIRCUITO

Na figura abaixo mostro o circuito elétrico do robô. O cérebro do robô é um microcontrolador do tipo embedded, o Basic Step 1. Neste microcontrolador está ligado um sonar, um servo de aeromodelo CS-60 Hobbico (ou qualquer equivalente), um driver para motores L293D, um LED e um buzzer.


O circuito integrado CI3 (L293D) pode controlar motores com tensão de trabalho de até 36V sob uma corrente máxima de 0,6 A (600 mA). Os diodos D1 a D8 ajudam a proteger as saídas do L293D. O diodo D10 é muito importante para o circuito. Ele foi colocado em série com o circuito e sua função é baixar a tensão de alimentação de 6 volts (4 pilhas) para perto de 5 volts (5,3 VDC), devido a queda de tensão de 0,7V aproximadamente que o mesmo provoca. Devo lembrar que o Basic Step 1 não opera com tensões maiores que 5 volts (+/- 10%) quando utiliza-se o pino +5V como entrada. A omissão deste componente (D10) ou mesmo a troca deste por outro qualquer pode provocar a queima do microcontrolador!

O resistor R1 e o LED D9 formam o efeito visual do robô. Utilizei em meu protótipo um LED vermelho redondo de 5mm comum. Existem outros no mercado como os de alto brilho, além de LED’s maiores. Não recomendo estes, pois a corrente de dreno pode ser bem maior que o Basic Step pode fornecer (até 20 mA por pino de I/O). O conjunto foi calculado para ficar dentro desta faixa.

O resistor R2, o transistor Q1 e o buzzer BZ1 fazem parte do conjunto para o "efeito sonoro". Q1 pode ser substituído por outros transistores NPN de uso geral como o BC547, BC549 ou o BC337. O buzzer BZ1 é do tipo continuo, ou seja, ele possui um oscilador interno. Outros buzzer’s do tipo utilizados em cartões de natal, por exemplo, e outros sem oscilador interno não servem neste projeto. Para saber se um buzzer tem ou não oscilador interno, basta ligá-lo em um conjunto de quatro pilhas (6 volts), respeitando a polaridade indicada pelo mesmo. Se o mesmo emitir um som continuo é porque este tem oscilador interno, mas se o mesmo não emitir som algum é sinal que não possui oscilador interno.

O sonar CI3 utilizado em meu projeto foi adquirido junto a Tato Equipamentos Eletrônicos. Ele tem excelente performance e baixo custo e pode ainda ser utilizado em muitos outros projetos.

O servo SRV1 é um CS-60 da Hobbico, utilizado em aeromodelos, e pode ser adquirido em lojas especializadas em modelismo. A sua substituição por qualquer outro servo compatível com a linha Futaba é possível, porém você também poderá usar um servo para posicionamento de antenas parabólicas. Neste caso terá apenas de alterar no programa as sub-rotinas de posicionamento do mesmo.

Os motores M1 e M2 foram adaptados de servos para posicionamento de antenas parabólicas. Estes servos podem ser adquiridos novos ou mesmo usados em lojas que comercializam e/ou prestam manutenção neste tipo de antena. Muitos servos danificados podem ser encontrados nestas lojas. Geralmente ao queimar a placa de controle eles são sucateados, porém o motor e todo o conjunto de engrenagens estão em perfeito estado e assim podem ser utilizados, e tudo a um baixo custo.

Os capacitores C1, C2 e C3 são filtros para a alimentação e também para CI3 (C2 e C3). A chave S1 permite ligar e desligar o robô. A chave S2 permite o reset do microcontrolador. A alimentação do sistema é fornecida por quatro pilhas pequenas ou médias, e a escolha por uma ou outra depende do tempo de operação desejado. O uso de pilhas alcalinas no sistema é altamente recomendável, já que as mesmas têm tempo de operação superior às pilhas comuns.



MONTAGEM ELETRÔNICA

Para montar o seu protótipo você terá de confeccionar a placa de circuito impresso ou mesmo usar uma placa padrão, sempre se baseando pelo esquema elétrico. Se você não sabe como confeccionar uma placa de circuito impresso, consulte os links  “Como confeccionar placas de circuito impresso” método manual e por transferência térmica.

Aconselho o uso de um soquete para CI1 e CI2. No caso de CI1 um suporte para CI de 28 pinos poderá ser utilizado (apenas uma metade). Para ligar o servo você poderá utilizar uma “barra de pinos” com três segmentos ou mesmo soldar diretamente o servo na placa (não muito recomendado). O LED D9 pode ser soldado diretamente na placa ou pode-se utilizar um par de fios para colocar o LED em um ponto mais visível do robô. O mesmo procedimento é recomendado para o buzzer.

Tenha muita atenção ao soldar os diodos D1 a D8 e o diodo D10. Eles são polarizados e qualquer inversão pode ser fatal para o circuito. Repare também que D1 a D8 são diodos de sinal 1N4148 e o diodo D10 é do tipo retificador 1N4001. Procure não trocá-los!

O capacitor C1 é polarizado. Tenha cuidado ao soldá-lo. Os capacitores C2 e C3 são do tipo cerâmico e não possuem polaridade e assim não há risco de inversão neste caso.

O transistor Q1 também é polarizado e sua inversão poderá fazer com que o buzzer não funcione. O próprio buzzer também é polarizado. Procure ligá-lo da seguinte maneira: o positivo do buzzer no 6VDC e seu negativo no coletor de Q1. 

O conector CN1 foi inserido no circuito para permitir a gravação do robô, sem a necessidade da remoção do microcontrolador para uma placa específica como a Step Lab, por exemplo. Para isso você deve construir um cabo, conforme a figura abaixo. Para a este conector você poderá utilizar uma “barra de pinos” com três segmentos (é o mais apropriado).

A ligação dos motores pode ser feita através de um terminal do tipo “parafusável” ou ainda soldando os fios diretamente na placa. A chave S2 deve ser do tipo push-button normalmente aberta.

Obs.: Não é preciso dizer que após o término de qualquer montagem eletrônica, é importante fazer uma verificação de todas as ligações, das posições dos componentes (principalmente os polarizados), verificar se não existem trilhas faltando, em curto ou qualquer ligação errada. É preciso alguma paciência ao se “verificar” uma placa. É melhor perder um pouco de tempo agora, do que ver tudo virar fumaça ao ligar o circuito.



MONTAGEM MECÂNICA

O material utilizado na construção do chassi foi uma “haste roscada” de 1/8 de polegada de diâmetro com um metro de comprimento, um pedaço de tubo de cobre também com 1/8 de polegada de diâmetro, arruelas e parafusos na medida da haste. Estes materiais são facilmente encontrados em casas especializadas na venda e parafusos e ferragens.

Não sei se alguém irá reproduzir este robô exatamente como eu fiz, pois acredito que cada um acaba encontrando uma solução para suas montagens, principalmente quando se trata de robôs. Porém, acho que as medidas do meu protótipo podem ajudar e servir de referência. A figura abaixo mostra um desenho com tais medidas.


Para soldar as peças utilizei um ferro de soldar com 100 Watts de potência. Nenhuma solda especial foi necessária para a montagem. Apenas lixei e limpei muito bem as partes onde a solda seria depositada para que a solda tivesse aderência.

Para prender o servo SRV1, o sonar, o buzzer, o Led, a chave S1 e o suporte de pilhas, utilizei cola quente. As rodas do robô são as mesmas utilizadas em aeromodelos.

Obs.: Se você pretende utilizar este robô em ambientes com carpetes, recomendo que o chassi seja modificado de maneira que a terceira roda fique móvel, melhorando a performance do mesma.

Para evitar que a placa encostasse à base do robô, usei pequenos pedaços de tubo de silicone, facilmente encontrados em casas especializadas em modelismo. Porém qualquer pedaço de tubo flexível com diâmetro interno próximo ao diâmetro externo da haste roscada poderia ter sido utilizado.



O PROGRAMA

O programa está disponível logo abaixo em downloads. Ele foi desenvolvido na linguagem TBASIC. O compilador para o programa pode ser obtido gratuitamente no site da Tato Equipamentos Eletrônicos.

O funcionamento do programa está descrito no fluxograma abaixo. Ele inicia as variáveis e define as direções dos pinos de I/O. Logo a seguir, o servo SRV1 é “centralizado” (sonar apontado para frente) e os motores são desligados (robô parado). Um laço é iniciado sempre verificando o valor obtido pelo sonar, movendo o robô à frente, centralizando o servo SRV1 e trocando o estado do LED (isso permite que o mesmo pisque).

Quando um obstáculo é detectado, o robô pára imediatamente (função pense). Nesta função o robô gira o servo à esquerda, tira uma medida do sonar, gira o servo à direita e tira uma outra medida. Estas duas medidas são guardadas em variáveis diferentes “dt1” e “dt2”. Isso é feito para que o programa possa calcular qual delas é a maior. Esta lógica permite que o programa tome uma decisão, se o desvio deve ser à esquerda ou à direita. Caso ambas as distâncias sejam iguais, o robô desviará sempre à esquerda. O programa, durante o desvio, apaga o LED e liga o buzzer

Percebe-se que a lógica implementada é bem simples, mas permite muitas modificações e ampliações. Uma delas seria aumentar o número de medidas com um menor grau de distância entre as mesmas, permitindo ao robô desvios mais “sutis”.



TESTE E USO

Antes do uso, o robô deve ser ajustado. Inserira as pilhas e ligue-o. Você notará que após ligá-lo ele não se move imediatamente. Esse “tempo” de inatividade de 1 segundo foi inserido no programa para permitir que o usuário se afastasse do robô, mas isso pode ser alterado se necessário.

Após o tempo de inatividade, o robô coloca-se em movimento sempre à frente e com o sonar voltado para frente. Observe se ambos os motores giram na mesma direção. Caso um (ou os dois) pareça se mover para trás, inverta os fios preto e vermelho do motor que estiver girando ao contrário.

Caso o robô parece desviar para o lado contrário, inverta as ligações do motor “esquerdo” com o “direito”. Para isso, inverta ambos os fios vermelhos e pretos dos dois motores. A inversão neste caso é: vermelho com vermelho e preto com preto.

O servo SRV1 também deve ser ajustado. Verifique se o mesmo está centralizando e se está movendo-se 90º à esquerda e a direita (considerando como ponto de partida a posição central). Ajuste a alavanca do servo (basta soltar o parafuso e retirar a alavanca) para que as posições sejam obtidas. Caso este tipo de operação não ajuste o servo, modifique os valores das variáveis “esquerda”, “direita” e “centro” no programa até obter as posições desejadas.

Após os ajustes do robô, já é possível utilizá-lo. Eu percebi que o mesmo tem um bom efeito com paredes e superfícies lisas. Pernas de cadeira, superfícies irregulares (como as almofadas da sala) e outras às vezes não são “percebidas” pelo robô. Um outro detalhe importante é que se a superfície a ser detectada temr um ângulo em relação ao sonar, o robô às vezes também não percebe o obstáculo. Estas limitações estão intimamente ligadas ao modo de funcionamento de um sonar.



CONCLUSÃO

Acredito ter passado neste artigo algumas dicas sobre o uso de “decisões” no controle de um robô. Agora você já sabe como fazer para que um robô reaja de forma que pareça “inteligente”. Espero que você tenha muitas idéias que venham a  transformar este robô. Não se esqueça de compartilhar com todos as suas alterações. Boa montagem e até a próxima!



DOWNLOADS:

- Circuito do Robô Inteligente
- Desenho com as medidas originais do robô
- Código fonte do programa de controle em TBASIC
- Lista de materiais


 

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

Especificações:

- Cérebro - Basic Step 1
- Motores - 2 servo de antena parabólica adaptados e 1 servo de posição
- Sensores - um sonar Tato
- Alimentação- 4 pilhas pequenas (6V)
- Chassi - metal
- Programa - desenvolvido em basic (TBASIC)


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.