Robô seguidor de linha

Este projeto é bem simples, de baixo custo e pode ser aproveitado na OBR(Olimpíada Brasileira de Robótica). Neste tutorial (passo a passo) ensino a montar um robô que consegue seguir uma linha (clara ou escura) e também detectar e desviar de obstáculos.

Robô seguidor de linha com sensor de colisão

seguidor_linha_obr

O projeto baseado no Arduíno, tem como entrada 3 sensores (1 chave fim de curso e 2 LDRs) e como saída o controle de 2 motores DC (3 a 6V) usando o CI L293 D (ponte H). Todos estes componentes são comuns e de baixo custo.

Lista de material:

Mecânica

Podemos usar chassis de baixo custo (tamiya, zumo, magiciam, etc) ou aproveitar peças de brinquedos. O importante é que o robô tenha um bom torque (força) e baixa velocidade, usando pequenos motores DC de 3 a 6V.

chassi

Eletrônica

  • 1 Arduíno UNO (ou versão compatível)
  • Suporte para pilhas (verifique o Passo 2 deste projeto)
  • 2 Leds 5mm auto brilho branco
  • 1 Led 5mm auto brilho vermelho
  • 1 chave fim de curso
  • 2 LDRs pequenos
  • 3 resistores 10 K (marrom, preto e laranja)
  • 3 resistores 100 ohm (marrom, preto e marrom)
  • 1 CI L293 D (ponte H)
  • 1 mini protoboard
  • jumpers (para ligações entre o Arduíno e a mini protoboard)

Pista

2 chapas de madeira MDF branca (90x90cm)

Montagem do robô seguidor de linha:

Passo 1: Montagem do chassi e fixação das peças

  • Montar a caixa de redução e os motores (aproveite para soldar os fios que irão ser ligados na mini protoboard)
  • Montar o chassi e as esteiras/rodas conforme instruções do fabricante e sua criatividade.
  • Fixar o suporte de pilhas e a bateria
  • Fixar o Arduíno e a mini protoboard
  • Deixar um espaço reservado no chassi para a montagem do sensor de colisão (chave fim de curso) e os sensores de linha (LDRs)

Dica: Ligar os motores diretamente no suporte de pilhas e testar todo o conjunto.

ATENÇÃO: Ao montar o seu robô, tenha em mente o objetivo do projeto, pensando sempre em montar o robô de forma robusta e caprichando ao máximo nos detalhes. Não use cola quente e nem faça “gambiarras”. Observe o chassi e planeje a fixação das partes de forma que a troca das pilhas, da bateria e a manutenção do robô sejam simples. Equilibre também o peso e lembre-se que o robô irá subir rampas e passar sobre pequenos detritos além de desviar de obstáculos. Pense também no designer. Não avance para o próximo passo sem ter certeza que este está 100% concluído.

Passo 2: Montagem da ponte H

As saídas digitais do Arduíno não podem ser ligadas diretamente aos motores, sob o risco de queimar a placa. Para fazer o controle dos motores utilizaremos a ponte H que pode ser montada usando transístores ou o CI L293D. Atenção aos limites de corrente deste CI, lembre-se este projeto se destina ao controle de pequenos motores DC(3 a 6V). A alimentação dos motores pode ser independente ou não. Se utilizar motores de 3V use o suporte para 4 pilhas e a bateria de 9V conforme ilustrações. A ponte H retém um pouco da corrente e os motores de 3V trabalham dentro da tolerânica.

Caso use motores de 6V, é possível ter apenas uma fonte de alimentação, substituindo a bateria de 9V e o suporte de 4 pilhas por um único suporte de 6 pilhas. Para isso ligue um fio na entrada Vin da placa arduino junto com o fio vermelho do suporte de 6 pilhas que é ligado ao pino 8 do CI L293D.

As ilustrações a seguir mostram os detalhes da montagem da ponte H:

ponteh0


ponteh1


ponteh2


ponteh3


ponteh4


ponteh5

Lógica da ponte H:

Para entender a lógica, podemos fazer uma analogia com a ligação do motor diretamente a pilha, conforme ilustração abaixo:

motores

Estando um motor ligado em cada roda ou esteira, seguimos o seguinte raciocínio:

  • Para ficar parado os dois motores devem permanecer desligados
  • Para andar para frente os dois motores devem ser acionados no mesmo sentido
  • Para andar para traz os dois motores devem ser acionados no sentido inverso
  • Para fazer uma curva suave, acionamos apenas um motor deixando o outro desligado
  • Para fazer uma curva “radical” giro em torno do próprio eixo, acionamos os motores em sentidos contrários

O aluno deverá “ensinar” o robô o que é frente, traz, esquerda, direita, giro-esquerda, giro-direita e parado. O código abaixo apenas serve de exemplo para testes com a ponte H. Não passe adiante sem ter “ensinado” o robô a se movimentar.

codigo_ponteh

Dica: Uma técnica que pode ser usada para reduzir a velocidade de um motor sem perder o torque(força) é usar o PWM (Pulse Width Modulation). Você pode controlar a velocidade (PWM), substituindo por exemplo:

digitalWrite(11, HIGH); por: analogWrite(11, valor); // valor entre 0 e 255.

Obs: Neste caso o pino digital da placa arduino precisa ser PWM. Consulte a documentação do Arduíno para maiores informações.

Passo 3: Montagem do sensor de colisão

Para montar o sensor de colisão utilizaremos uma chave de fim de curso, que possui um pequeno mecanismo que quando pressionado faz o contato de dois pontos como se fosse um interruptor de pressão. As ilustrações abaixo mostram os detalhes da montagem do sensor de colisão. Aproveite também para ligar o LED vermelho no pino 13 do Arduíno(não esqueça de ligar junto o resistor de 100 R). Este LED será usado para sinalizar a identificação de objetos.

sensor_colisao


colisao

Lógica do sensor de colisão:

O Arduíno faz a leitura desta chave da seguinte forma:

  • Sensor não pressionado (chave desligada) –> LOW (posição padrão)
  • Sensor pressionado (chave ligada) –> HIGH

Existe um exemplo na IDE do Arduíno para teste deste sensor, carregue o exemplo -> digital -> button, conforme ilustração abaixo:

script_colisao

Assim que o sensor for testado com este exemplo (pressionando o sensor o LED acende), junte este código com o código anterior de controle dos motores e ensine o robô a desviar de obstáculos, ou seja ao identificar um obstáculo (objeto), use os movimentos que ensinou ao robô para contornar este objeto. Não vá para o passo 4 sem ter ensinado o robô a desviar de obstáculos.

Passo 4: Montagem dos sensores de linha

Para identificar a linha iremos utilizar 2 LDRs. O LDR é um resistor que varia sua resistência em função da luz. É um componente muito versátil, podendo inclusive ser usado para identificar cores. Para minimizar a interferência de luz externa, iremos adicionar 2 LEDs brancos de auto brilho. As ilustrações abaixo explicam como é feita a montagem destes sensores. Atenção aos detalhes de ligação dos jumpers na mini protoboard. Observe que iremos ligar 2 sensores, um no pino A0 e outro no pino A1. Preste muita atenção na mini protoboard, apenas adicionando os componentes e jumpers dos sensores de linha.

sensor_ldr


ldr

Lógica do sensor LDR:

O Arduíno faz a leitura analógica deste sensor. Os valores variam e a calibração dos sensores deve ser feita diretamente na linha da pista. Anote os valores linha, fora da linha, cor, etc. Quanto maior a variação entre claro e escuro, mais preciso o sensor será. A dica é acondicionar o LDR e o LED num tubo ou caixa de forma que a luz externa interfira o mínimo possível quando a superfície refletir a luz que o LED emite. A IDE do Arduíno tem um exemplo para teste dos sensores. Substitua no código A0 por A1 para testar o segundo sensor.

script_ldr

Como dito no passo anterior, junte tudo num único código, lendo os sensores e tomando decisões (movimento dos motores). Faça uma análise da lógica abaixo e acrescente uma solução para o caso dos 2 sensores encontrarem a faixa (linha).

logicalinha

Considerações finais:

O objetivo deste projeto é ajudar o iniciante em robótica a montar um robô de baixo custo que possa ser aproveitado em vários projetos, inclusive na OBR (rescue junior). Com estudo, criatividade, adaptações e muito raciocínio lógico tenho certeza que o resultado irá surpreender. Sucesso à todos e não esqueçam de dar um nome ao robô.