Go Down

Topic: programação de um robô seguidor de linha (Read 9359 times) previous topic - next topic

Cleitonribeiro

estou fazendo um robô seguidor de linha para uma competição na faculdade, a parte fisica ta pronta, um arduino, com dois sensores para verificar a faixa branca da pista, e outro para verificar o ponto de largada e chegada, estou com problema mesmo é no código

fiz um aqui mais ele não esta seguindo corretamente, ele sai da pista facil, alguem poderia ajudar? e queria introduzir pwm nesse código:


Code: [Select]
const int PinoSensor1= 0;
const int PinoSensor2= 1;
const int PinoSensor3= 2;
const int Motor1 = 3;
const int Motor2 = 5;

int ValorSensor1 = 0;
int ValorSensor2 = 0;
int ValorSensor3 = 0;
void setup (){
  pinMode(PinoSensor1, INPUT);
  pinMode(PinoSensor2, INPUT);
  pinMode(PinoSensor3, INPUT);
  pinMode(Motor1, OUTPUT);
  pinMode(Motor2,OUTPUT);
 
}

void loop(){
   
   ValorSensor1 = analogRead(PinoSensor1);
   ValorSensor2 = analogRead(PinoSensor2);
   ValorSensor3 = analogRead(PinoSensor3);
   
   
  if (ValorSensor1 >=750){
    digitalWrite(Motor1,LOW);
   
  }
    else{
      digitalWrite(Motor1,HIGH);
     
    }
    if (ValorSensor2 >=750){
      digitalWrite(Motor2,LOW);
     
    }
     
    else {
      digitalWrite(Motor2,HIGH);
     
    }
  if (ValorSensor3 <= 750){
    digitalWrite(Motor1,LOW);
    digitalWrite(Motor2,LOW);
    delay(2100);
  }
   
   else {
  }
    }
       


intaum queria introduzir pwm e fazer com que funcione, porque o robozinho tende a sair fora da pista, queria que inves de desligar os motores quando der a condição ele coloca-se 50% da velocidade só

bubulindo

Eu não vi os motores, ou o robot... mas parece-me que primeiro devias ter-te preocupado em controlar a velocidade dos motores e só depois fazê-lo seguir uma pista. Estás a fazer o projecto sem bases...

Como ligaste o hardware? Tens um controlador de potência para os motores? Um relé? Um transistor?

Se vires a documentacão do Arduino, tem lá como gerar PWM creio que é analogOutput() ou algo semelhante. Certamente que o que acontece é que o carro está a andar muito depressa para o código que tens. Além de que o teu código não tem como procurar a pista no caso de sair fora dela.

De resto, já verificaste os valores que o sensor dá quando "vê" a pista? Isto é um ponto óbvio para o programa falhar (e eu falo por experiência).

Quanto ao código, em vez de usares o analogInput para veres o sensor, tenta fazer isso com hardware a ligar/desligar um pino de entrada para saberes onde está o carro.
Para te dar um pouco mais de ajuda, como tens os sensores no carro? O que faz o sensor1, 2 e 3?
Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Cleitonribeiro

os motores tem 330 rpm cada um, eles  estão bem rapidos,  a parte de potencia, estou usando transistors, estaum bem dimensionados, estou usando acoplador optico para isolar do microcontrolador o 4n25,  sou meio novato na area de programação, ainda mais a de um seguidor de linha que necessita de uma programação boa,  o sensor 1 e 2, são os que ficam dentro da pista branca, são sensores infravermelho analogicos, feitos para seguidor de linha mesmo, o sensor 3 é para detectar a linha de largada e partida, o meu intuito, não é fazer um robô que ganhe a competição e sim conseguir fazer ele realizar o trajeto sem problemas, mais mesmo isso esta dificil, o programa esta muito fraco, naum esta respondendo direito, os motores estão muito rapidos, e ele não esta parando na pista, por isso queria colocar o PWM para diminuir a rotação deles, para ver se o robo realizaria o circuito

obrigado desde jah

Anthony Collucci

Amigo,

330rpms??? putz, c vc tiver a essa rotação mesmo que os sensores acusem que o robo esta fora da linha, provavelmente, a inercia vai mandar ele para fora.

Vc vai ter de ir ajustando a velocidade e a programação aos poucos e ver o melhor posicionamento dos seus sensores, tecnicamente a programação e bem simples...

Poste detalhes do seu projeto, e se possivel videos para analizarmos..
att,
--
        Anthony M. Collucci
        (0xx31)9243-1690
      http://amcollucci.com.br
      http://astrobrasil.blogspot.com
      http://c

bubulindo

Experimenta ver isto http://www.arduino.cc/en/Reference/AnalogWrite.

E depois liga um motor a um pino marcado como PWM e experimenta essa função a enviar um valor de PWM entre 0 e 255 para veres a reacção do motor.

É provável que necessites de arranjar um transistor que comute mais rápido (FET???) para controlar o motor, ou então em vez de usar esta função, ler como usar o PWM via registos do Arduino para poderes alterar a frequência usada por essa função.

Mete aqui mais detalhes e se quiseres, eu meto um exemplo para alterar frequências de PWM nos pinos. ;)
Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

MarceloBoeira

http://geekdevteam.blogspot.com/2011/05/robo-extremamente-simples-com-arduino-2.html
My Toys:
Raspberry Pi (Model B)
Arduino MEGA 1280: ( Shield LCD 16x2, Ethernet, RFID )
Freescale Kinetis KL25Z [/

Cleitonribeiro

Obrigado a todos que colaboraram no tópico, consegui melhorar o código, introduzi o PWM , diminui a velocidade, ele fez o percurso inteiro, não esta perfeito ainda mais ta utilizavel,  não estou em casa, estou no serviço, a tarde coloco o código aqui para quem quiser ver e copiar, é só colocar a autoria =].  a parte eletronica eu vou criar um diagrama aqui e até o final de semana eu coloco aqui tbm

Obrigado pessoal

Go Up