PROJETO ROBÔ
Equipe:
Dennis Carnelossi Furlaneto
Guilherme Spyra Gubert
Hood Wilson Gusso Silva
1. Definição da equipe e escopo do projeto
A equipe, composta por três alunos de Engenharia de
Computação, da Pontifícia Universidade Católica do Paraná, 6º Período, terá os
seguintes integrantes: Dennis Carnelossi Furlaneto, Guilherme Spyra Gubert e
Hood Wilson Gusso Silva.
O grupo de alunos em questão implementará um robô
móvel autônomo, não conectado ao computador (devendo este ser microcontrolado)
que, baseando seu funcionamento em sensores, deverá solucionar pelo menos um
dos problemas propostos. São eles:
Seguidor de
Linha
Sair de um
Labirinto
Detector de
Buraco
Robô que se
alimenta
Seguidor de Luz
A implementação que será feita por este
grupo será a de um robô seguidor de linha e que desvia de obstáculos. Através
dos sensores, este robô deverá detectar o grau de absorção da luz emitida
através dos sensores e, com isso, detectar se ele de fato está seguindo a linha
ou indo para a superfície que absorve ou reflete mais a luz emitida pelo emissor de infravermelho. Mais detalhes a
respeito da parte mecânica e eletrônica será dado mais adiante.
A escolha por este projeto em específico dependeu
única e exclusivamente do interesse dos alunos por este.
Em primeira instância, o grupo decidiu por fazer o
robô movimentar-se através de esteiras, por, além de achar mais conveniente, a
implementação deste, tanto pela parte do projeto eletrônico como pela parte do
software, mais simples e eficaz.
2. Projeto mecânico preliminar
Para a realização do projeto robô, a equipe decidiu
utilizar uma estrutura mecânica existente no mercado, pois o desenvolvimento de
uma nova estrutura demandaria muito tempo. Por esse motivo, a equipe adotou uma
estrutura com esteiras para a movimentação, as quais teriam torque vindo de
dois motores DC de 3 Volts, ligados às esteiras através de caixas de redução.
Com a intenção de evitar problemas
posteriores, foram adquiridas duas estruturas idênticas pela equipe, sendo que
em caso de defeito apresentado, teremos peças de reposição. Por esse motivo não
foram apresentadas alternativas para os motores utilizados nem para a estrutura
mecânica em geral. Além disso, a equipe possui certa experiência no trabalho
com motores DC, sendo por isso a nossa escolha definitiva. A foto dessa
estrutura utilizada está a seguir:

Figura 1: Estrutura mecânica utilizada.
A verificação da posição do robô na
pista será feita através de dois sensores óticos, os quais podem ser um par,
LED IR e fototransistor, ou LED IR e receptor IR. A preferência da equipe é de
utilizar a primeira opção, porém caso não seja obtido sucesso, será feita a
tentativa com a segunda. Ainda existe a última possibilidade, que seria a
substituição do LED IR por um LED padrão, se o trabalho com infravermelho gerar
resultados não satisfatórios.
A idéia inicial é fixar os sensores
na parte de baixo do robô, através de uma abertura que deverá ser feita na
estrutura. A distância do sensores até a pista de prova não preocupa, pois a
altura da base da estrutura até o chão não ultrapassa dois centímetros.
3. Projeto da pista de prova
A pista de prova idealizada pela equipe foi um
trajeto, provavelmente em cor preta, em uma superfície qualquer branca. Esta
superfície, pelo menos por enquanto, deverá ser plana e lisa.
A linha deverá ser contínua, para
não termos a possibilidade de o robô não conseguir voltar para o trajeto.
Eventualmente, uma rotina poderá ser implementada para tratar este caso
excepcional.
Em primeira instância, também não
teremos qualquer tipo de obstáculos na pista. Eventualmente, para incrementar a
pista, poderemos, por exemplo, utilizar outros tons de cores em alguns trechos
do caminho que funcionariam como obstáculo.
O trecho de cor escura (ou clara, o
que dependerá do projeto eletrônico e da implementação do software) poderá ser
feita tanto em uma plataforma quanto em uma superfície sem altura alguma como
uma folha de cartolina ou o piso.
O caminho a ser seguido pelo robô
será sinuoso, como, por exemplo, mostra a figura abaixo:

Figura 2: Exemplo do caminho a ser seguido pelo robô.
“Pista de prova”
4. Projeto dos sensores
Os sensores
utilizados no projeto desenvolvido são de natureza ótica, utilizando diodos
infravermelho. O projeto dos sensores foi baseado quase que inteiramente num
projeto fornecido pelo professor da disciplina, sendo que apenas alguns valores
de resistores foram modificados.
Os sensores são microcontrolados através de um PIC
12F675, o qual tem por função digitalizar o sinal recebido do par led
infravermelho e foto-transistor. Além disso, o software contido no PIC,
minimiza interferências da iluminação do ambiente onde o sensor está
localizado, fazendo com que o sensor possa trabalhar em ambientes de
luminosidade variada sem nenhuma adaptação física. O diagrama do circuito bem
como o diagrama da placa de circuito impresso estão logo a seguir:

Figura 3: circuito eletrônico dos sensores.

Figura 4: diagrama da placa de circuito impresso,
primeira parte.

Figura 5: diagrama da placa de circuito impresso,
segunda parte.
A placa de circuito impresso
utilizada para os sensores, será dividida em duas partes, como pode ser
observado nas figuras dois e três. O motivo disso, é o isolamento em uma placa
dos leds infravermelho e dos foto-transistores, para que seu posicionamento na
estrutura mecânica seja facilitado. As dimensões aproximadas das placas serão
50mm por 35mm para o circuito da figura dois, e 25mm por 25mm para o circuito
da figura três.
Com a intenção da equipe de
possibilitar ao robô a detecção e desvio de obstáculos, será necessário o
desenvolvimento de dois circuitos controladores de sensores, já que serão
utilizados quatro sensores de proximidade.
Após essa definição dos sensores
utilizados, foram realizados os testes exigidos, sendo que os resultados
obtidos bem como fotos desses experimentos estão nos próximos parágrafos. A
única observação a ser feita é de que os testes foram realizados com o circuito
montado no protoboard, pois ainda não
haviam sido montadas as placas de circuito impresso definitivas para o projeto.
Primeiramente, foi feito o teste do
funcionamento do sensor. Para isso, foi utilizado uma folha de papel branco,
com uma faixa de plástico fosco preto, simulando a pista de prova utilizada. O
resultado foi satisfatório, uma vez que o circuito funcionou perfeitamente,
sendo necessário apenas o ajuste da inclinação do foto-transistor. A seguir
estão as fotos da equipe realizando o teste:

Figura 6: circuito montado para testes e fragmento de
pista de prova.


Figura 7: teste do circuito. Na esquerda houve
reflexão e na direita não houve.
O segundo teste a ser realizado, foi a medição do
tempo de resposta do sensor. Para isso, primeiramente foi colocado no led
infravermelho uma grande freqüência. Então foi colocada a ponta de prova do
osciloscópio no circuito receptor que contém o foto-transistor. Com isso, foi
possível verificar a existência de um tempo de resposta não ideal do sensor,
cujo valor foi de aproximadamente 140μs. A foto com o formato de onda
obtido no osciloscópio está logo a seguir:

Figura 8: teste do tempo de resposta. Os sinais de
entrada e saída estão em cima e em baixo, respectivamente.
O último teste realizado foi o
consumo de energia elétrica pelo sensor. Foram obtidos valores diferentes para
quando o circuito detectava a pista branca da pista preta já que nesse segundo
caso, o led da saída do circuito acendia, aumentando assim o consumo de energia
elétrica. Os valores de corrente obtidos (para apenas um sensor e uma saída)
para pista branca e preta foram respectivamente, 7,03mA e 11,04mA. Uma foto
mostrando o resultado obtido com a saída desligada está logo a seguir:

Figura 9: teste de consumo de energia com a saída
desligada.
Para
o valor total de corrente consumida por cada módulo dos sensores, foi medido o
valor da corrente que circulava por cada sensor. Assim, obteve-se o valor final
de 13,07mA para a saída desligada e 21,9mA, sendo essa última a corrente máxima
que cada módulo do sensor pode consumir.
5. Projeto eletro-mecânico
A escolha da estrutura eletro-mecânica utilizada no
projeto pela equipe foi realizada tomando por base as seguintes características
de custo, complexidade e funcionalidade.
Como
foi dito no documento sobre o projeto mecânico preliminar, a equipe decidiu por
utilizar uma estrutura mecânica pronta, ao invés de desenvolver uma nova. Isso
reduziu os custos e proporcionou mais tempo para o desenvolvimento das outras
etapas do projeto.
O Sistema mecânico é baseado na movimentação do robô
através de esteiras, com a movimentação destas feita por dois motores DC, um
para cada esteira.
Nos próximos parágrafos estará uma descrição
detalhada sobre a estrutura empregada no projeto.
Como foi dito, serão utilizados dois motores DC para
a movimentação do robô. Foram escolhidos motores deste tipo pela facilidade em
seu controle, seu baixo consumo de energia. Além disso, a equipe possui certa
experiência no trabalho com esse tipo de motor, simplificando o processo de
desenvolvimento.
A transmissão do torque dos motores, bem como a
redução de velocidade para o aumento do torque será feita através de um sistema
redutor ligado ao eixo de cada motor. Este sistema é formado basicamente por
engrenagens de plástico e eixos metálicos. A equipe não possui maiores detalhes
sobre esse sistema, pois veio instalado na estrutura mecânica, não exigindo
assim maior estudo, uma vez que seu funcionamento adequado foi verificado.
Abaixo está uma foto desse sistema de transmissão/redução.

Figura 10: sistema de
transmissão/redução.
Devemos ressaltar o fato de que, como há um motor
individual para cada esteira do robô, não há um eixo interligando aquelas. Se por
um lado há a facilidade de controle da movimentação do robô, a equipe notou uma
pequena diferença entre a velocidade dos motores, o que pode acarretar algum
problema com relação á manter o robô em uma linha reta (se necessário).
Foram realizados diversos testes para verificar as
características da estrutura eletro-mecânica utilizada. Esses testes
verificaram: velocidade de movimentação do robô, torque e consumo de energia
elétrica (motores junto com circuito de controle).
A velocidade de movimentação do robô foi medida
através da relação entre uma distância percorrida pelo tempo necessário para
isso. Esse teste foi feito em uma mesa comum, sendo que a distancia percorrida
pelo robô foi de 80cm e o tempo total foi de aproximadamente 18s. Com isso,
obteve-se uma velocidade aproximada de 4,45cm/s. A seguir está uma foto do
local de realização desse experimento, juntamente com o instrumento de medida
de distância (régua de 30cm).

Figura 11: teste de
velocidade de movimentação.
O torque do robô gerado por cada um dos motores foi
medido da seguinte maneira: retirou-se a esteira e amarrou-se carga de massa
conhecida através de um barbante, na última roda (roda que fornece o torque).
Com a carga suspensa no ar, ligou-se o motor. A carga foi trocada até o momento
em que o motor não conseguia mais movimentar a roda. A massa suspensa era de
aproximadamente 0,47Kg. Essa massa gerava um peso de 4,61N. Como o raio da roda
que gerava o torque era de 1,2cm, o valor daquele vale 5,53N.cm.
Para o controle dos motores (etapa de potência), foi
utilizado um circuito transistorizado, sendo que cada circuito contendo quatro
transistores, é responsável pelo controle de um dos motores. Cada motor pode
estar em um de três estados, desligado, ligado para frente ou ligado para trás.
O diagrama do circuito está logo a seguir:

Figura 12: circuito de
potência para controle de um motor.
Os sinais de número um e quatro devem ser ligados
juntos e o mesmo deve acontecer entre os sinais dois e três. O único cuidado a
ser tomado na utilização do circuito é não fornecer nível lógico um para os
quatro transistores, pois estaria havendo um curto circuito na fonte de
alimentação.
Os testes realizados do consumo de energia, de cada
motor juntamente com seu respectivo circuito de controle, apresentaram o
seguinte resultado: 246mA para o motor em funcionamento e aproximadamente 0mA
para o motor em repouso, lembrando que a tensão de entrada no circuito deve ser
de 3V. Deve existir uma pequena corrente circulando pelo circuito quando o
motor estiver parado, porém o equipamento utilizado não conseguiu obter tal
medição. A seguir está uma foto mostrando o circuito montado no protoboard para os testes e com os
quatro transistores em corte.

Figura 13: circuito de
controle dos motores.
A placa de circuito impresso ainda não está
terminada, porém o seu diagrama está pronto e está na próxima figura. Como
observação, a equipe decidiu unir os dois circuitos de controle dos motores em
uma única placa de circuito impresso, para facilitar a fixação na estrutura do
robô.

Figura 14: esquema da placa
de circuito impresso para controle dos motores.
6. Projeto eletrônico do
microprocessador
Para realizar o
controle do movimento do robô desenvolvido no projeto, a equipe decidiu utilizar
o microcontrolador 89S52. Além da equipe apresentar uma boa experiência no
desenvolvimento de aplicações com esse controlador, este apresenta todos os
recursos necessários para a sua utilização, bem como parâmetros de consumo
aceitáveis.
Como entrada, utilizaremos a porta P2, sendo que apenas
os seus quatro bits menos
significativos serão utilizados. Além disso, a porta P3.2 será utilizada como
entrada também pois é o pino da interrupção INT0 que será aproveitado no
software desenvolvido.
A saída para o circuito dos motores será feita a partir
dos pinos P1.0 e P1.1. Entretanto devido a baixa corrente fornecida na saída do
controlador, este não era capaz de saturar os transistores do circuito dos
motores. Por isso, foi colocado um resistor entre a alimentação e cada um dos
pinos da porta utilizada, garantindo assim, o nível de corrente desejado.
O circuito que controla o reset, tem duas funções: ele é um power-on-reset e permite que o programa seja reinicializado a
partir de um push-button. Com isso, o
robô poderá iniciar o seu funcionamento automaticamente ao ser ligado, e ainda
poderá ser reiniciado caso seja necessário a qualquer momento.
A equipe verificou
que para altas freqüências, o robô funciona perfeitamente. Por esse motivo, o clock do controlador será de 11,052MHz e
será gerado através de um cristal oscilador de quartzo. O robô havia funcionado
para um clock de alguns kilohertz, porém, como a equipe já
possuía o cristal oscilador mencionado, e este apresentou bom funcionamento, será
utilizado.
Como recurso interno do processador, apenas a interrupção
INT0 será utilizada, sendo que esta deverá ser configurada para funcionar por
rampa ao invés de nível. A sua função será de executar uma rotina especial
quando da detecção de um obstáculo frontal na pista. Dessa maneira será
garantido o tratamento imediato de tal obstáculo.
O diagrama completo do circuito do microprocessador está
logo a seguir:

Figura 15: diagrama
do circuito do microprocessador.
Por último, a equipe montou o circuito em um protoboard para verificar o seu
funcionamento, e após ter obtido sucesso, realizamos a medição de corrente
consumida pelo módulo. O valor medido foi de aproximadamente 31,71mA, que,
segundo a espectativa da equipe, é um baixo consumo, sendo portanto, aceitável.
7. Projeto do sistema de alimentação
Os elementos que
serão utilizados para a alimentação embarcada do robô serão pilhas de alta
capacidade de fornecimento de corrente, não alcalinas e recarregáveis.

Figura 16: Fonte de
energia que será utilizada pela equipe. Pilha recarregável.
Serão utilizadas seis
destas pilhas na alimentação do robô, carga esta que será utilizada tanto para
alimentação dos motores quanto para os circuitos dos sensores e do
microprocessador 89S52.
Cada pilha tem capacidade
para fornecer 2,1Ah e, embora o valor da tensão nominal na pilha esteja como
1,2V, a medição indicou que as pilhas fornecem aproximadamente 1,5V.
Utilizaremos seis
pilhas para a alimentação dos circuitos e dos motores. Eventualmente, caso tenhamos
algum contratempo com o fornecimento de corrente, poderemos utilizar oito
pilhas, quatro em paralelo com outras quatro.
Em função de
estabilizar a tensão contínua em 5V (tensão necessária tanto para o módulo dos
motores quanto para o módulo do microprocessador) utilizamos um regulador de
tensão de 5V, componente através do qual se consegue uma tensão de saída de 5V
com uma entrada de 5V ou maior.

Figura 17: Diagrama
do Circuito de alimentação
Apesar da capacidade de fornecimento das pilhas serem de 2,1A, a corrente que entra no circuito é, de fato, menor ou igual à 1,5A, devido a limitações do próprio regulador de tensão.
Vale lembrar que foram postas duas fontes em séria para ressaltar o fato de os circuitos dos motores serem alimentados com 3V, e não os 5V que saem do regulador.
Foram tiradas medidas do valor de corrente consumido pelo
sistema com o robô em repouso e ativo.

Figura 18: Robô Ativo. Medição da corrente.
O
valor da medição no multímetro é de, aproximadamente, 52mA. Este valor é toda a
corrente consumida por todos os módulos implementados até agora. Como o módulo
do sensor que será utilizado para o desvio de objetos ainda não foi
contabilizado, este ainda não é o valor da corrente total.
Porém,
como a capacidade de fornecimento de corrente de nossa fonte é de
aproximadamente
Neste valor não foi contabilizado o consumo de corrente
dos motores que, juntos, consomem aproximadamente 400mA.

Figura 19: Robô desativado. Medição da corrente.
O
valor da medição no multímetro é de, aproximadamente, 31.57mA.
Como a fonte de alimentação será a mesma para quase todos
os circuitos, aqueles serão alimentados com o valor de tensão de output do
regulador de tensão, ou seja, 5V. A única exceção a regra é o circuito dos
motores, que será alimentado com 3V obtidos diretamente de 2 das pilhas.
Os componentes que nos levaram a adotar o valor base de
5V para a alimentação foram principalmente os micros controladores, os quais
são muito sensíveis com relação a alimentação.
8. Fluxograma do software embarcado
O software embarcado
foi desenvolvido pela equipe com o objetivo de solucionar os dois problemas
propostos anteriormente, fazer com que o robô siga linha e desvie de obstáculos
frontais.
O programa é constituído da seguinte forma: o programa
principal é o responsável por fazer o robô seguir linha, enquanto que uma
rotina de tratamento de interrupção, chamada quando ocorre uma rampa
descendente no pino INT0, fica responsável por realizar o desvio do obstáculo
assim como o retorno do robô à pista.
A função de seguir linha é simples, sendo que quando o
programa detecta a linha preta em algum dos sensores inferiores, altera o
movimento do robô para ir na mesma direção
em que foi detectada essa linha. Caso os dois sensores estejam fora da
linha, ou dentro da linha, nenhuma atitude é tomada e o robô continua a
executar o seu movimento atual. Essa implementação garante que o robô seja
capaz de executar curvas cujos raios são muito pequenos, pois caso o robô saia
da trajetória correta, aquele fica capaz de retornar à pista mais à frente.
A seguir está o fluxograma da rotina seguidora de linha:

Figura 20: Fluxograma
da rotina seguidora de linha.
Para realizar o desvio de obstáculo, foi utilizada uma
rotina de tratamento de interrupção, como foi dito anteriormente. Essa rotina faz com que o robô inicie o
desvio girando para a direita enquanto o obstáculo estiver à sua frente ou ao
seu lado esquerdo. Quando essas condições forem falsas, se iniciará a próxima
etapa de verificação. O robô então deve virar à direita se detectar o objeto à
esquerda, ou virar à esquerda em caso contrário. A cada laço de repetição onde
é feita essa verificação também são analisadas outras duas condições.
Verifica-se novamente se há um obstáculo à frente (em caso afirmativo volta à
primeira verificação da rti) e verifica se voltou à linha com o sensor inferior
direito (em caso afirmativo, volta ao programa seguidor de linha).

Figura 21: Fluxograma
da rotina de desvio de obstáculo.
9. Relatório final
Após o término bem
sucedido das etapas anteriores do projeto como pode ser visto nos relatórios
anteriores, foi realizada a montagem efetiva das placas de circuito impresso
bem como a instalação dos sensores na estrutura mecânica do robô. Na etapa de
montagem das placas, foram encontrados alguns problemas. Vale destacar
principalmente o erro de projeto na placa dos sensores, o qual ocasionou o dano
permanente de alguns componentes da placa, exigindo assim, reposição desses.
Além disso, foi
alterado o projeto do circuito controlador dos motores, já que foi percebida a
não necessidade da reversão desses motores para o correto funcionamento do
projeto. Assim, cada motor pode estar em apenas dois estados, em repouso ou
fazendo o robô se movimentar para a frente.
Para a instalação dos
sensores, foi necessário um trabalho de certa forma exaustivo de posicionamento
até que a distância e ângulos ideais fossem obtidos. Excluindo o tempo que foi
demandado para essa etapa, não foram encontrados mais problemas.
O desenvolvimento do
software foi feito sem grandes problemas, sendo que a rotina principal (seguir
linha) não necessitou nenhum tipo de alteração durante os testes já que seu
funcionamento foi o esperado. Entretanto, a rotina de interrupção responsável
pelo desvio de obstáculos, necessitou de algumas alterações que se tornaram evidentes
quando da realização dos testes. Quando estes foram feitos, o robô não
retornava à linha após o desvio do obstáculo, por isso foi alterada a condição
de verificação para que funcionasse corretamente. Essa alteração provocou o
imediato funcionamento que estava sendo esperado, não restando mais alterações
a serem realizadas.
A seguir estão
algumas fotos do projeto após concluído:

Figura
22: robô percorrendo a pista de prova.


Figura
23: imagem frontal e lateral do robô, respectivamente.

Figura
24: imagem superior do robô.

Figura
25: imagem inferior do robô.