collapse

* Posts Recentes

Cerca eléctrica por SerraCabo
[14 de Junho de 2025, 23:26]


Alguém arranja motores? por almamater
[10 de Junho de 2025, 22:34]


Condensador 4.7uF 0603 por brunus
[09 de Junho de 2025, 15:52]


+ LASERs por dropes
[30 de Maio de 2025, 23:11]


Lenovo IdeaPad 3 Não liga por jm_araujo
[07 de Maio de 2025, 19:10]


Identificar Diodo Zenner por filjoa
[01 de Maio de 2025, 23:07]


Meu novo robô por dropes
[18 de Março de 2025, 14:51]


JBL partybox On-The-Go por almamater
[21 de Fevereiro de 2025, 23:32]


Talking Reverse Engineering with an Absolute Legend! por SerraCabo
[13 de Fevereiro de 2025, 09:56]


Motoserra Stihl 120C por brunus
[11 de Fevereiro de 2025, 16:29]

Autor Tópico: Seguidor de linha  (Lida 10013 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline henriquecm7

  • Mini Robot
  • *
  • Mensagens: 75
Seguidor de linha
« em: 07 de Junho de 2013, 00:07 »
Olá, desculpe encomodar.

Estou fazendo um robo que deve seguir uma linha preta. Estou usando 2 sensores QTRRC da Pololu, que ficam nas laterais da linha.
Mas estou enfrentando um problema na programação. Eu comecei a programar de bem pouco, sem PID, e sem Position. O código simplesmente são 2 statements.

Código: [Seleccione]
void loop()
{
  setSpeed(50, 50);
  qtrrc.read(sensorValues);
 
  if(sensorValues[0] > 220)
    setSpeed(70, 30);

  if(sensorValues[1] > 220)
    setSpeed(30, 70);
 
  Run();
}

O valor normal dos sensores quando estão no branco é 184. Então quando algum deles estiver fora do branco, ele vai curvar pro lado da linha, pra tentar se acertas, pelo menos essa é a ideia inicial. Mas não está dando certo, raramente o robô vira, e quando vira, ele vira uma vez só, não é algo contínuo.

Ajudem ai pessoal, fico agradecido.

Offline Pedrock

  • Mini Robot
  • *
  • Mensagens: 279
Re: Seguidor de linha
« Responder #1 em: 07 de Junho de 2013, 09:53 »
Talvez algo deste género:
Código: [Seleccione]
void loop()
{
  qtrrc.read(sensorValues);
 
  if(sensorValues[0] > 220) setSpeed(70, 30);
  else if(sensorValues[1] > 220) setSpeed(30, 70);
  else setSpeed(50, 50);
 
  Run();
}
Os valores "220" estão corretos?

Offline henriquecm7

  • Mini Robot
  • *
  • Mensagens: 75
Re: Seguidor de linha
« Responder #2 em: 07 de Junho de 2013, 16:33 »
Sim, o valor é 220 mesmo.

O problema é que o robô não vira, não sei porque ele continua seguindo em linha reta, ele não fica virando, como deveria.
Não sei se o problema é no motor, estou usando ponte H, com os motores da tamiya.
http://www.pololu.com/catalog/product/114

O robô consegue andar com o valor 100.
« Última modificação: 07 de Junho de 2013, 16:52 por henriquecm7 »

Offline Gmiguel

  • Mini Robot
  • *
  • Mensagens: 26
Re: Seguidor de linha
« Responder #3 em: 07 de Junho de 2013, 17:00 »
Pedro, para desenvolver ajuda a analisar os valores do sinal para saberes o que se está a passar...
(debug)

Serial.print('Value 0');
Serial.print(sensorValues[0] );

Serial.print('Value 1');
Serial.print(sensorValues[1] );


Podes também colocar um print no corpo das condicionais (if´s) e imprimir para perceber o que está a acontecer...

Bom trabalho

Offline henriquecm7

  • Mini Robot
  • *
  • Mensagens: 75
Re: Seguidor de linha
« Responder #4 em: 07 de Junho de 2013, 17:46 »
Já fiz isso, e mesmo assim não da certo. Acho que o problema está nos motores.

Offline Gmiguel

  • Mini Robot
  • *
  • Mensagens: 26
Re: Seguidor de linha
« Responder #5 em: 07 de Junho de 2013, 17:59 »
Se o bot anda.... os motores funcionam...


Não era previsto dar certo... era previsto veres o valor que o sensor estava a registar...

Experimenta sem os if´s :

setSpeed(70, 30);

roda para um lado e depois experimenta

setSpeed(30, 70);

para ver se roda para o outro.....

O problema deve estar nos valores que estás a ler dos sensores.... devias experimentar com ele ligado USB e fazer debug...

Offline henriquecm7

  • Mini Robot
  • *
  • Mensagens: 75
Re: Seguidor de linha
« Responder #6 em: 07 de Junho de 2013, 18:39 »
Ok, vou fazendo os teste, e já volto com uma resposta.

Offline henriquecm7

  • Mini Robot
  • *
  • Mensagens: 75
Re: Seguidor de linha
« Responder #7 em: 07 de Junho de 2013, 19:25 »
Consegui, seguiu a linha. O problema era a bateria que estava no robo, que impedia uma roda de conseguir girar. Agora é pensar num jeito de carregar a bateria. Obrigado pessoal.