ROBÔ INTELIGENTE II - Nova Versão!



Esta é a segunda versão do Robô Inteligente. Nesta versão, o projeto foi todo revisado e um novo microcontrolador foi aplicado.

Ao encontrar um obstáculo o robô pára, move o sensor 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 como sensor de distância, um Buzzer e um LED nos efeitos sonoros e visuais, respectivamente e como "cérebro" para esta versão eu utilizei o Arne Basic 2k. O chassi, na nova versão foi também alterado. Este novo chassi foi costruído sobre a própria placa de circuito impresso. Os motores utilizados para a tração também são diferentes dos anteriores. São dois motores com caixa de redução. Porém, apesar de um tanto diferente em sua aparência, ele é bastante parecido a versão anterior no quesito "chassi" (servos, motores, etc). Desta forma, se você montou a primeira versão e quer experimentar está, basta adaptar a nova placa.

Veja mais algumas imagens. Clique para ampliar.







Vídeo demonstrando o funcionamento do robô

Colocar aqui o link para youtube

No link mais a frente você poderá encontrar a versão anterior, desenvolvida com o Basic Step 1. Porém devo alertá-lo que está versão não possui mais nenhum suporte meu. Se você optar por montar a primeira versão, deverá entender que em caso de problemas eu não poderei ajudá-lo.  Quer  tentar esta versão?  Veja a mesma aqui: versão Robô Inteligente 1.0.


O CIRCUITO

Na figura abaixo mostro o novo circuito elétrico do robô. O cérebro do robô é um microcontrolador do tipo embedded, o Arne Basic 2k. 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 CI2 (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 D9 é 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 Arne Basic 2k não opera com tensões maiores que 5 volts (+/- 10%) quando usado o pino +5V como entrada. A omissão deste componente (D9) ou mesmo a troca deste por outro qualquer pode provocar a queima do microcontrolador!

O resistor R1 e o LED 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 mudar o LED caso você não saiba calcular a corrente final ok. Em alguns casos ela pode ser bem maior do que o Arne Basic 2k pode suportar (até 25 mA por pino de I/O em modo dreno). O conjunto foi calculado para ficar dentro desta faixa.

O resistor R2, o transistor Q1 e o buzzer fazem parte do conjunto "efeito sonoro". Q1 pode ser substituído por outros transistores NPN de uso geral como o BC548, BC549 ou mesmo o BC337. O buzzer é do tipo não continuo, ou seja, este não possui um oscilador interno. Outros buzzer’s do tipo utilizados em cartões de natal, por exemplo, e outros sem oscilador interno agora servem neste projeto (na versão anterior não serviam). 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 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 S-3003 da Futaba, utilizado em aeromodelos, e pode ser adquirido em lojas especializadas em modelismo ou na Loja do Arne. A sua substituição por qualquer outro servo compatível com a linha Futaba também é possível (sugestâo: CS-61 Hobbico).

Os motores M1 e M2 possuem caixa de redução. Os mesmos podem ser adquiridos no mercado especializado ou adaptados de servos para posicionamento de antenas parabólicas, como feito na primeira versão. 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. Caso você não tenha nenhuma loja como esta próximo a sua casa, pode contar agora com a Loja do Arne.

Os capacitores C1, C2 e C3 são filtros. A chave S1 permite ligar e desligar o robô. 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 médias no sistema é altamente recomendável, já que as mesmas têm tempo de operação superior às pilhas comuns pequenas e mesmo médias.



MONTAGEM ELETRÔNICA

Na Loja do Arne você encontrará para venda o kit parcial para montagem deste robô (placa, microcontrolador com programa pré-gravado e componentes eletrônicos). Deixo a confecção do chassi por conta de cada um. Caso você queira montar seu robô utilizando seus próprios componentes só terá que adquirir um Arne Basic 2k e confeccionar a placa conforme o desenho abaixo. 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.

[inserir desenho da placa]

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 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 D9. 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 D9 é do tipo retificador 1N4001. Procure não trocá-los!

O capacitor C3 é polarizado. Tenha cuidado ao soldá-lo. Os capacitores C1 e C2 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.

A gravação do Arne Basic 2k pode ser feita com o cabo fornecido com o mesmo (para porta paralela) ou ainda com outro gravador.

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.

Obs.: Não é preciso dizer que após o término de qualquer montagem eletrônica, é importante fazer uma verificação de todas as conexões, posições dos componentes (principalmente os polarizados), solda fria ou irregular e no caso de você mesmo ter feito sua placa verifique 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

Abaixo você pode ver o esquema de montagem da primeira versão. 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 você 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 (companheiro de guerra da época do autorama nas pista da Detroit, Monza e da FPA ). Nenhuma solda especial foi necessária para a montagem. Apenas lixei, limpei muito bem as partes onde a solda seria depositada e usei o famoso "fluxo em pasta para solda".

Para prender o servo, o sonar, o buzzer, o LED, a chave S1 e o suporte de pilhas ao chassi 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 BASCOM. O compilador, na versão demo, pode ser obtido gratuitamente no site da empresa MCS Electronics.

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 é “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 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 “dist1” e “dist2”. 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á a primeira vez à esquerda e a próxima a direita, sempre alternando a direção de desvio. 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”. Com o atual microcontrolador isso é totalmente possível, já que a área de programa do mesmo é bem maior que a área de programa do microcontrolador usado na primeira versão.



TESTE E USO

Antes do uso, o robô deve ser ajustado. Insira 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ô pareça 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

Este "novo" robô, criado a partir de uma versão anterior, pode num primeiro momento parecer "mais do mesmo". Mas se você pensar que o atual microcontrolador oferece mais recursos, como área de programa, dados e pinos de I/O é possível vislumbrar muitas melhorias no mesmo. 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ô. Boa montagem e até a próxima!



DOWNLOADS:

- Circuito do Robô Inteligente II
- Desenho do Lay-out para confecção do circuito impresso
- Desenho com as medidas originais do robô
- Código fonte do programa de controle no BASCOM
- Lista de materiais





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.