Este robô desvia dos obstáculos utilizando um sonar, que envia os dados recolhi- dos para o Basic Step, que por sua vez faz os devidos ajustes nos motores para mudar a sua rota.
Octavio Nogueira
Nota: Artigo publicado na revista Eletrônica Total 143 de 2010
Octa-l é um robô capaz de desviar de obstáculos. Ao se deparar com um obstáculo ele para, dá um giro de 45° e segue em frente, até encontrar um novo obstáculo. Isto permite que ele possa, por exemplo sair de dentro de um labirinto. O melhor de tudo isto é que ele é um robô que você mesmo pode construir.
A Mecatrônica é um campo do conhecimento humano que tende a crescer muito nos próximos anos. É possível constatar nos dias de hoje, por exemplo, o nível de automação nas indústrias que utiliza cada vez mais robôs na linha de produção de seus produtos. Estes robôs não se parecem com os que vemos nos filmes de ficção científica onde, normalmente, se movimentam e, invariavelmente, acabam por querer dominar o mundo. Se este tipo de coisa acontecerá (ou não) nós não sabemos, mas o que sabemos é que se quisermos ter o controle da situação e um bom emprego no futuro, devemos começar desde já a aprender como um robô funciona e como fazer para programá-lo.
Nos Estados Unidos existem diversas competições de robôs e as escolas montam diversos times para competir entre si, e os melhores são mandados para competições estaduais e nacionais. Infelizmente aqui no Brasil ainda não temos nada que se compare a isto, mas se não começarmos logo, iremos ficando cada vez mais deslocados. O Octa-l, o robô descrito neste artigo, poderia servir de base para uma com- petição semelhante ao que vemos lá.
Este artigo permitirá construir um robô com as seguintes características:
• Sistema motriz: Dois servomotores com velocidade variável e inversão do sentido de giro;
• Sensor: O sonar permite deter- minar a distância que o robô está de um objeto. Com este sensor, o robô pode se movimentar des- viando de obstáculos;
• Microcontrolador: É a parte principal do robô, pois é onde as informações dos sensores serão avaliadas e onde serão tomadas as decisões;
• Alimentação - Fornece energia para o robô se movimentar. A seguir serão explicados com mais detalhes os itens acima:
Sistema motriz
O Octa-l possui dois servomotores. Eles se diferenciam dos motores normais, pois permitem que a velocidade seja variada através do tamanho dos pulsos que são enviados, veja a ilustração na figura 1.
Eles possuem três terminais, sendo: terra, alimentação de 5 V e controle. O sinal de controle é um trem de pulsos com duração entre 1 ms e 2 ms e um período de 10 ms, ou seja, pulsos de 1 ms a 2 ms com um intervalo entre eles de 10 ms, conforme mostra a figura 2. Quando o pulso tem 1,5 ms o motor está parado, quando tem 1 ms o motor gira na velocidade máxima em um sentido, e quando está em 2 ms, gira na velocidade máxima no outro sentido.
Nós não precisamos enviar pulsos de 1 ms e 2 ms. Quaisquer valores entre estes limites farão o motor se mover, por exemplo se quisermos fazer o robô se mover lentamente para frente, poderíamos enviar pulsos de 1,6 ms e se quisermos que o robô vire, mandamos pulsos de 1,6 ms para um motor e 1,4 ms para o outro. Com estas durações de pulsos, um motor vai se mover lentamente para frente e o outro lentamente para trás.
Um aspecto importante a lembrar é que o motor precisa receber um pulso a cada 10 ms para continuar se movimentando, se pararmos de mandar pulsos ele para.
Sensor
O sonar (figura 3) é um dos sensores mais interessantes, pois faz com que o robô "saiba" a distância que está de um objeto, permitindo com isto que ele desvie e não colida com o mesmo.
O funcionamento do sonar é o seguinte: ele envia um pulso ultra- sônico muito curto e fica esperando o seu retorno. O pulso vai viajar a uma velocidade aproximada de 340 m/s, bater em um obstáculo e retornar. Assim que retornar, o módulo do sonar calcula o tempo que o pulso levou para ir e voltar. Como sabemos a velocidade do pulso e o tempo que ele levou para ir e voltar, é possível calcular a distância que ele percorreu.
A diferença deste sensor para os outros que detectam obstáculos, como os ópticos, é que o sonar nos permite saber a distância exata do obstáculo.
Imagine que o seu robô está participando de uma competição onde ele tem que sair de um labirinto, se estivesse usando um sensor óptico ele teria que andar até encontrar uma parede e então ir seguindo a parede até achar uma porta e seguir este processo para caminhar pelo labirinto. Utilizando o sonar ele poderia fazer um giro de 360 graus sobre o seu eixo, fazendo medições de distância à medida que girasse e, após isto, saberia em qual sentido deveria se mover para passar pela porta.
"Cérebro" ou processador central
Um dos grandes problemas de quem quer começar a aprender ou se aprofundar em robótica é ter que aprender a linguagem de programação do robô. Hoje existem diversas linguagens, cada uma com suas vantagens e desvantagens. Para este robô nós escolhemos utilizar o microcontrolador BASIC Step 2K, conforme mostra a figura 4.

Este é um poderoso microcontrolador com 2048 bytes de memória flash que possui 15 entradas/saídas e pode ser programado em BASIC. Esta é uma linguagem muito fácil de se aprender e ao mesmo tempo poderosa. Ela possui todas as características das linguagens de alto nível como C e Pascal, com a vantagem de ser muito mais fácil de se aprender. A Microsoft fornecia a linguagem QBASIC junto com o DOS, antes da introdução do Windows e, provavelmente, considerável parte dos leitores já programou alguma vez em QBASIC. Pois bem, o BASIC utilizado pelo BASIC Step 2K é praticamente idêntico ao QBASIC.
Outros problemas com os microcontroladores são a necessidade de um gravador, geralmente caro, e a sua disponibilidade no mercado nacional. Pois bem, o BASIC Step 2K é de fabricação nacional e o seu gravador é um simples cabo ligado à porta paralela do PC. O compilador onde escrevemos o código fonte é totalmente amigável e integrado com o gravador, nos permitindo fazer simulações e emulação antes de gravarmos o microcontrolador. Ele possui em sua biblioteca diversas funções úteis já prontas para uso, tais como escrita em display LCD, comunicação serial, 12C e 1WIRE. E o melhor, é gratuito.
Todas as informações sobre o microcontrolador BASIC Step 2K, assim como o compilador para download estão disponíveis no site http://www. tato.ind.br
Gostaria ainda, de deixar claro que este artigo é apenas um ponto de partida para o que pode ser um grande projeto, já que estamos estudando os conceitos básicos de um robô moto- rizado. Os tópicos aqui apresentados podem ser aplicados para outros tipos de robôs e este robô básico pode ser ampliado com o acréscimo de outros sensores e dispositivos.
Compilador:
O programa precisa ser escrito e compilado antes de ser gravado no microcontrolador do robô, para isto usamos o compilador Bascom. Ele é um ambiente completo de desenvolvimento para os microcontroladores BASIC Step 2K. Ele possui o editor de texto, compilador, simulador, gravador e arquivo de ajuda com todos os comandos explicados.
A figura 5 mostra a sua aparência. Como dissemos anteriormente a linguagem utilizada é o BASIC, uma linguagem muito fácil de se aprender e com muitos recursos.
O Bascom é especialmente indicado para o nosso robô pois já possui em suas bibliotecas, comandos para con- trole dos motores, leitura dos sensores de ultrassom, etc.
A primeira coisa a fazer em nosso programa é configurar os servos com o seguinte comando:
Config Servos = 2, Servo1 = Portb.0,
Servo2 = Portb.1, Reload = 50
Este comando diz ao compilador que teremos dois servos ligados as saídas Pb0 e Pb1. Para fazermos os motores se moverem basta executarmos o seguinte comando: Servo(1)=20 ou servo(2)=20.
Para facilitar o nosso trabalho, podemos escrever algumas rotinas para automatizar este processo:
Rotina para fazer os motores pararem:
Sub Para()
Servo(1) = 30
Servo(2) = 30
End Sub
Faz o robô se mover para frente com velocidade determinada por v:
Sub Frente(V As Byte)
Servo(1) = 30 + V
Servo(2) = 30 + V
End Sub
Faz o robô se mover para trás:
Sub Re(V as Byte)
Servo(1) = 30 - V
Servo(2) = 30 - V
End Sub
Faz o robô virar para a direita:
Sub Direita(V as Byte)
Servo(1) = 30 + V
Servo(2) = 30 – V
End Sub
E para a esquerda:
Sub Esquerda(V as Byte)
Servo(1) = 30 - V
Servo(2) = 30 + V
End Sub
Estas rotinas são chamadas pelo programa principal à medida do necessário, um exemplo de programa simples seria fazer o robô se mover para a frente por 2 segundos, parar, se virar para a direita e se mover por mais 2 segundos. O programa ficaria assim:
Call Frente(5)
Wait 2
Call Para()
Call Direita(3)
Wait 1
Call Para()
Call Frente(5)
Wait 2
Call Para()
Como pode ser visto por este pequeno programa - exemplo, a linguagem é bem simples e com a ajuda de sub-rotinas podemos programar o robô em uma linguagem quase coloquial.
Montagem
Para a montagem deste robô você vai precisar de:
1 microcontrolador BASIC Step 2K
2 servomotores modificados para rotação contínua com pneus.
1 módulo sonar
1 capacitor de 100 μF x 16 V
1 suporte para 4 pilhas pequenas. 1 base de montagem
1 diodo 1N4004 ou 1N4007 fios de ligação.
Pinagem do BASIC Step 2K
Como a parte principal do robô é o seu microcontrolador de controle, iremos descrever a pinagem do mesmo, veja que nem todos os pinos serão usados neste robô. O BASIC Step 2K é muito potente com diversos periféricos, tais como comunicação serial RS-232, etc, e diversos destes periféricos não serão usados neste projeto.
A pinagem do Basic Step 2K é mostrada na tabela 1. Como podemos ver temos disponível 15 linhas de entrada/ saída à nossa disposição, neste robô usaremos duas saídas para os motores e 1 entrada para o sonar.
Na figura 6 visualizamos a montagem da placa-suporte do Basic Step 2K.
O esquema elétrico, com suas respectivas ligações, está representadas na figura 7. Os principais passos a serem seguidos são:
• Ligue o fio de controle do motor direito ao pino 20 (PD0) e o fio ziar de controle do motor esquerdo ao pino 19 (PD1)
• Ligue os fios de alimentação e terra dos dois motores ao suporte de pilhas, tomando o cuidado para não inverter a polaridade.
• O sonar precisa de 3 ligações, ligue o fio +5V ao pino 5 do BASIC Step 2K, o fio G ao terra e o fio de saída ao pino 18 (PD2) do BASIC Step 2K.
• Ligue o terra do suporte de pilhas ao terra do BASIC Step 2k (pino 2)
• Ligue o terminal positivo do suporte de pilhas ao anodo do diodo, e o catodo do mesmo ao pino 5 do BASIC Step.
Com isto terminamos as ligações elétricas e agora nosso robô, precisa de um programa para executar. A programação, como vimos anterior- mente, é feita através compilador Bascom.
Após o programa ter sido compilado sem erros, conectamos o cabo de gravação e transferimos o programa para o microcontrolador.
O site da Tato Equipamentos Eletrônicos é www.tato.ind.br, onde você pode adquirir todos os componentes necessários para a montagem elétrica do seu robô bem como o compilador e programas de exemplo para testá-lo.

A estrutura de plástico do Octa-l
O nosso protótipo foi construído em um chassi de dois níveis: inferior com os dois redutores e a roda livre e superior com os circuitos eletrônicos e a caixa de pilhas (figura 8).
Os materiais utilizados foram chapa de plástico estireno de 2 mm e chapa de acrílico transparente de 2 mm. A escolha de um chassi com essa configuração se deu com o intuito de obter uma melhor distribuição de peso sobre uma base de três apoios (as duas rodas motrizes dos redutores e a roda livre). Observe a montagem da roda no servo- motor ilustrada na figura 9.
Distribuímos as rodas de modo a formar com elas um triângulo quase equilátero, de acordo com a figura 10. Isso facilita a mobilidade do robô e os circuitos na parte elevada ficam com o acesso mais fácil, além de se conseguir uma melhor "leitura" dos sensores com uma maior distância deles em relação ao solo. Veja na figura 11 detalhes da montagem do chassi do Octa-l.
Com base nessas informações use sua criatividade, você poderá usar muitos materiais diferentes para a construção do chassi tais como: chapas metálicas diversas, Eucatex, madeira compensada fina, etc.
Tenha sempre em mente uma construção compacta e firme, dê especial atenção ao alinhamento do sistema motriz e proteja os circuitos do pó com uma tampa ou cobertura, bom trabalho e divirta-se!.

























