ROBÔ INTELIGENTE II

por: Márcio José Soares

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




Clique para ampliar

A PROPOSTA

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. Veja a figura abaixo.


Modo de operação do robô (clique para ampliar)

Veja um vídeo do Robô

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 foi utilizado o Arne Basic 2k da Arne Robotics (www.arnerobotics.com.br). O chassi, na nova versão foi também alterado. Este novo chassi foi construído sobre uma plataforma de acrílico. Os motores utilizados para a tração também são diferentes dos anteriores, mas ainda seguem a mesma concepção: trata-se de dois motores DC com caixa de redução.

Além disso, um LCD serial foi aplicado a nova versão. A função deste LCD é demonstrar as medidas tomadas pelo sensor, permitindo ao operador do robô acompanhar de forma efetiva seu próximo desvio.

Apesar de um tanto diferente da versão 1 em sua aparência, esta nova versão é bastante parecida com a anterior. Desta forma, se você montou a primeira versão e quer experimentar esta não encontrará muitas dificuldades na adaptação das novas partes mecânicas.


O CIRCUITO

Na figura abaixo é demonstrado o circuito elétrico do robô. O cérebro do mesmo é o microcontrolador embedded Arne Basic 2k. Neste microcontrolador foram ligados um sonar, um servo de aeromodelo S-3003 FUTABA, um driver para motores L293D, um LED, um LCD serial e um buzzer.


Circuito elétrico (clique para ampliar)

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 e sua função é limitar a tensão de alimentação de 6V (4 pilhas) para um valor próximo a 5V (5,3 VDC aproximadamente), devido a queda de tensão de 0,7V. É importante dizer que o Arne Basic 2k não opera com tensões maiores que 5,5V quando usado o pino +5V como entrada. A omissão deste componente (D9) ou mesmo a troca deste por outro qualquer poderá provocar a queima do microcontrolador! Também não é possível utilizar um número maior de pilhas ou mesmo baterias com tensão maior que 6V. Preste bastante atenção a este quesito!

O resistor R1 e o LED formam o efeito visual do robô. Foi utilizado no protótipo um LED vermelho redondo de 5mm de diâmetro (LED comum). Existem outros tipos no mercado, como os de alto brilho e também com outros tamanhos. Não é recomendado alterar o tipo do LED caso você não saiba calcular a corrente final do mesmo. Em alguns casos ela pode ser bem maior do que o microcontrolador pode suportar em seu pino de I/O (no caso, até 25 mA por pino em modo dreno). O conjunto foi calculado para ficar dentro desta faixa, com uma margem bem folgada.

O resistor R2, juntamente com 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 continuo, ou seja, este possui um oscilador interno.

O LCD é do tipo serial, desenvolvido pela Arne Robotics. O sonar utilizado no protótipo foi adquirido junto a Tato Equipamentos Eletrônicos (www.tato.ind.br). Ele tem excelente performance e baixo custo e pode ainda ser utilizado em muitos outros projetos. O servo SRV1 é um S-3003 da FUTABA, como dito anteriormente, 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 também é possível (sugestão: CS-61 HOBBICO).

Os motores M1 e M2 são moto-redutores (motores com caixa de redução). Os mesmos podem ser adquiridos no mercado especializado, aproveitados de brinquedos fora de uso ou ainda 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.

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 e claro, do tamanho do chassi do seu robô. O uso de pilhas alcalinas no robô é altamente recomendável, já que as mesmas têm tempo de operação superior às pilhas comuns. Não é recomendável o uso de pilhas recarregáveis de NiCad. Geralmente estas pilhas tem tensão de descarga menor (em torno de 1.2V) que as pilhas secas comuns (1.5V). Estas pilhas completamente carregadas apresentarão uma tensão de 1.4V e juntas (4 delas) somarão apenas 4,8V. Como há um diodo em série com o circuito, o mesmo provocará uma queda de 0.7V e a tensão apresentada ao microcontrolador será menor que o mínimo tolerado pelo mesmo (4,5V).


MONTAGEM ELETRÔNICA

Na figura abaixo é dado o desenho do lay-out para o circuito impresso. Você também poderá desenhar sua própria placa a partir do desenho do circuito elétrico fornecido, ou ainda usar uma placa do tipo padrão para a montagem eletrônica. A escolha é livre.


Lay-out para o circuito impresso (clique para ampliar)
Veja em downloads os arquivos para confecção desta placa

Aconselho o uso de um soquete para CI1 e CI2. No caso de CI1 um soquete de barra com 20 pinos é o mais recomendável. Caso você não encontre o mesmo em sua região um suporte para CI com 40 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 os fios do 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.

Como dito anteriormente, o buzzer utilizado no robô é do tipo com oscilador interno. Outros buzzer’s do tipo utilizados em cartões de natal, por exemplo, sem oscilador interno não servirão neste projeto. Para saber se um buzzer tem ou não oscilador interno, basta ligá-lo em um conjunto de quatro pilhas (6VDC), respeitando a polaridade indicada pelo mesmo. Se este emitir um som continuo é porque tem oscilador interno, mas se o mesmo não emitir som algum é sinal que não possui oscilador interno. A figura abaixo mostra como realizar este teste.


Teste do buzzer (Clique para ampliar)

Na aplicação do LCD a placa é recomendável o uso de uma barra de pinos, também com três segmentos. Caso você não disponha desta, poderá soldar os fios do LCD diretamente a placa. Tenha bastante atenção ao fazê-lo para evitar a inversão da polaridade que poderia ser faltal para o equipamento. A mesma sugestão é valida para o sonar.

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 é feita com o cabo fornecido com o mesmo.

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), buscar por possíveis soldas frias ou irregulares 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

Na figura abaixo você pode ver o esquema da montagem desta versão. O principal material utilizado na construção do chassi foi um pedaço de acrílico vermelho com 16 cm de diâmetro.


Desenho do Chassi (Clique para ampliar)

O servo e a placa foram presas ao chassi com parafusos de 5cm de comprimento e 3mm de diâmetro. Porcas e arruelas também fazem parte do conjunto. Já os motores foram presos ao chassi com fita dupla face. O LCD foi preso ao chassi através de hastes feitas com tubos de cobre e pedaçõs de plástico. O buzzer e o suporte de pilhas foram fixados também com o auxílio de fita dupla face.

O sonar (sensor) foi preso a alavanca (tipo estrela) do servo com o uso de “cola quente”. O uso deste tipo de adesivo garante boa aderência e também que o mesmo possa ser reaproveitado em projetos futuros, já que é bem simples a remoção deste tipo de adesivo.

A “roda boba” que dá o apóio ao robô foi feita com uma bola de tênis de mesa e arame de 1,5 mm de espessura.

Obs.: A nova versão usa um micro servo para posicionamento do sonar e desta forma não é necessário realizar a abertura de 20 x 40 mm no chassi para a sua inserção. O mesmo é fixado com fita dupla face e apresenta um melhor acabamento.


O PROGRAMA

O programa está disponível na seção downloads do mais abaixo. Ele foi desenvolvido com a Linguagem BASIC, utilizando o compilador BASCOM-AVR. O compilador, na versão demo, pode ser obtido gratuitamente no site da empresa MCS Electronics (www.mcselec.com). A versão demo compilará tranqüilamente o código disponibilizado e também poderá ser utilizada para fazer outros programas para o Arne Basic 2k, já que a mesma é free até 4 kB de programa.

O funcionamento do programa está descrito no fluxograma apresentado na figura 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). Além disso, o LCD apresentará a mensagem “Robô Inteligente II”.


Fluxograma do programa do robô (Clique para ampliar)

Quando um obstáculo é detectado, o robô pára imediatamente. 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. 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 a esquerda. Durante o desvio o LED será apagado, o buzzer ligado e o LCD apresentará as “medidas” feitas a direita e a esquerda. É importante entender que as informações apresentadas no LCD não dizem respeito a exatamente uma medida em milímetros, centímetros ou mesmo metros. Os valores nada mais são que o tamanho do pulso enviado pelo sonar, em múltiplos de 10 us. Quanto menor o valor, mais próximo temos um obstáculo, e quanto maior for o valor maior será a distância entre o robô e um possível obstáculo ou ainda, que nenhum obstáculo pode ser detectado pelo sonar.

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 aproximadamente 3 segundos 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. Caso isso não esteja correto, basta reposicionar a alavanca na parte superior do servo de maneira que o sensor aponte sempre a frente. Caso esta operação não ajuste corretamente a direção do servo/sensor, modifique os valores das variáveis “esquerda”, “direita” e “centro” no programa até obter as posições desejadas.

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 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”.

Após os ajustes do robô, já é possível utilizá-lo. Você perceberá que o mesmo terá 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 tiver um ângulo em relação ao sensor (sonar), o robô às vezes também não perceberá o obstáculo. Estas limitações estão intimamente ligadas ao modo de funcionamento de um sonar. Veja a figura abaixo.


Modo básico de operação de um sonar (clique para ampliar)


CONCLUSÃO

Este "novo" robô, criado a partir de uma versão anterior, pode num primeiro momento parecer "mais do mesmo". Mas se entendermos que o atual microcontrolador oferece mais recursos, como área de programa e dados, além de mais pinos de I/O é possível vislumbrar muitas melhorias no mesmo. Acredito também ter passado neste artigo algumas dicas sobre o uso de “decisões” no controle de um robô, fazendo-o parecer “inteligente”. Espero que você tenha muitas idéias que venham a transformar este novo robô. Boa montagem e até a próxima!


DOWNLOADS:

- Desenho do layer superior da placa de circuito impresso invertida (método térmico)
- Desenho do layer inferior da placa de circuito impresso não invertida (método térmico)
- Código fonte do programa
- Lista de materiais


Este projeto foi publicado, com minha autorização, na revista Eletrônica Total nº144 de Outubro de 2010.









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.