collapse

* Posts Recentes

Emulador NES em ESP32 por jm_araujo
[Hoje às 18:12]


Circuito Microfone que funcione por almamater
[27 de Abril de 2024, 17:14]


Arame de Estendal por almamater
[18 de Abril de 2024, 16:16]


O que é isto ? por SerraCabo
[12 de Abril de 2024, 14:20]


Amplificador - Rockboard HA 1 In-Ear por almamater
[11 de Abril de 2024, 20:46]


Meu novo robô por josecarlos
[29 de Março de 2024, 18:30]


Bateria - Portátil por almamater
[25 de Março de 2024, 22:14]


Escolher Osciloscópio por jm_araujo
[06 de Fevereiro de 2024, 23:07]


TP4056 - Dúvida por dropes
[31 de Janeiro de 2024, 14:13]


Leitura de dados por Porta Serie por jm_araujo
[22 de Janeiro de 2024, 14:00]

Autor Tópico: Iniciante em Robótica  (Lida 31949 vezes)

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

Offline CBX

  • Mini Robot
  • *
  • Mensagens: 1.315
Re: Iniciante em Robótica
« Responder #75 em: 11 de Maio de 2011, 18:17 »
os fios não estão ligados no d5 e d6?

é o que me parece...

Offline Psycop

  • Mini Robot
  • *
  • Mensagens: 105
    • O.Cantinho.da.Programação
Re: Iniciante em Robótica
« Responder #76 em: 11 de Maio de 2011, 18:24 »
os fios não estão ligados no d5 e d6?

é o que me parece...

Obrigado pelo reparo!

Era exactamente isso.

Agora esta a funcionar com este código:
Código: [Seleccione]
int motorPin1 = 4;
int motorPin2 = 5;
int motorPin3 = 10;
int motorPin4 = 11;
int delayTime = 500;

void setup() {
 pinMode(motorPin1, OUTPUT);
 pinMode(motorPin2, OUTPUT);
 pinMode(motorPin3, OUTPUT);
 pinMode(motorPin4, OUTPUT);

}

void loop() {
 
 \\Avançar

 digitalWrite(motorPin1, HIGH);
 digitalWrite(motorPin2, LOW);
 digitalWrite(motorPin3, LOW);
 digitalWrite(motorPin4, HIGH);
 delay(1000);
 
 \\Recuar
 
 digitalWrite(motorPin1, LOW);
 digitalWrite(motorPin2, HIGH);
 digitalWrite(motorPin3, HIGH);
 digitalWrite(motorPin4, LOW);
 delay(1000);

}

Offline Psycop

  • Mini Robot
  • *
  • Mensagens: 105
    • O.Cantinho.da.Programação
Re: Iniciante em Robótica
« Responder #77 em: 12 de Maio de 2011, 15:48 »
Boas

Já tenho os motores a funcionar convenientemente. Mas agora gostaria de controlar a velocidade dos motores, sei que isso é feito no PWM mas não faço ideia em qual deles e como e para onde.

Se me pudessem indicar algum esquema, seria muito mais fácil para mim!

Ando também a tentar encontrar informação acerca da montagem do sensor QTR-8RC Reflectance Sensor Array, mas não encontro nada de especial, que me clarifique o modo como devo montar e ligar.

Alguém conhece algumas informações ou esquemas que me possam ser úteis? Qualquer ajuda é bem vinda.

Cumps


Offline CBX

  • Mini Robot
  • *
  • Mensagens: 1.315
Re: Iniciante em Robótica
« Responder #78 em: 12 de Maio de 2011, 16:45 »
como eu já tinha dito ligas os pinos 1 e 9 da ponte a um pwm qualquer e usas um simples analogwrite, vê o link uns posts atrás...

Offline Psycop

  • Mini Robot
  • *
  • Mensagens: 105
    • O.Cantinho.da.Programação
Re: Iniciante em Robótica
« Responder #79 em: 12 de Maio de 2011, 16:52 »
como eu já tinha dito ligas os pinos 1 e 9 da ponte a um pwm qualquer e usas um simples analogwrite, vê o link uns posts atrás...

E ligo os 2 pinos 1 e 9 a apenas um PWM?

Ou uso um PWM para cada?

Cumps

Offline CBX

  • Mini Robot
  • *
  • Mensagens: 1.315
Re: Iniciante em Robótica
« Responder #80 em: 12 de Maio de 2011, 16:58 »
se quiseres velocidade diferente em cada motor tens de usar 2 distintos, se for a mesma um basta

Offline Psycop

  • Mini Robot
  • *
  • Mensagens: 105
    • O.Cantinho.da.Programação
Re: Iniciante em Robótica
« Responder #81 em: 12 de Maio de 2011, 17:32 »
se quiseres velocidade diferente em cada motor tens de usar 2 distintos, se for a mesma um basta

Boas

Liguei o Pino1 da ponte ao pino pwm2 e o pino 9 da ponte ao pwm 3, e criei o seguinte codigo:
Código: [Seleccione]
int motorPin1 = 4;
int motorPin2 = 5;
int motorPin3 = 10;
int motorPin4 = 11;
int analogPin1 = 2;
int analogPin2 = 3;
int delayTime = 500;

void setup()
{
 
 pinMode(motorPin1, OUTPUT);
 pinMode(motorPin2, OUTPUT);
 pinMode(motorPin3, OUTPUT);
 pinMode(motorPin4, OUTPUT);

}

void loop() {
 
 analogWrite(motorPin1, 64);
 analogWrite(motorPin2, 64);
 analogWrite(motorPin3, 64);
 analogWrite(motorPin4, 64);
 digitalWrite(motorPin1, LOW);
 digitalWrite(motorPin2, HIGH);
 digitalWrite(motorPin3, HIGH);
 digitalWrite(motorPin4, LOW);
 delay(1000);
 
 analogWrite(motorPin1, 64);
 analogWrite(motorPin2, 64);
 analogWrite(motorPin3, 64);
 analogWrite(motorPin4, 64);
 digitalWrite(motorPin1, HIGH);
 digitalWrite(motorPin2, LOW);
 digitalWrite(motorPin3, LOW);
 digitalWrite(motorPin4, HIGH);
 delay(1000);
 

}

O Que acontece é que os motores continuam a rodar a mesma velocidade que antes, ou seja máxima, e alterando os valores do analogWrite a velocidade não se altera.

O Que estarei a fazer mal?

Cumps

Offline CBX

  • Mini Robot
  • *
  • Mensagens: 1.315
Re: Iniciante em Robótica
« Responder #82 em: 12 de Maio de 2011, 17:43 »
isto:

Código: [Seleccione]
analogWrite(analogPin1, 64);
analogWrite(analogPin2, 64);

em vez disto;
Código: [Seleccione]
analogWrite(motorPin1, 64);
analogWrite(motorPin2, 64);
analogWrite(motorPin3, 64);
analogWrite(motorPin4, 64);

e atenção que apenas os pinos digitais 3, 5, 6, 9, 10, 11 têm função PWM

Offline Psycop

  • Mini Robot
  • *
  • Mensagens: 105
    • O.Cantinho.da.Programação
Re: Iniciante em Robótica
« Responder #83 em: 12 de Maio de 2011, 17:52 »
Obrigado pelo reparo.

Alterei a ligação para os pinos 3 e 6 que são pwm, e o código para o que me indicaste, mas não vejo qualquer diferença na velocidade dos motores...

Cmps

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.733
  • Helpdesk do sitio
Re: Iniciante em Robótica
« Responder #84 em: 12 de Maio de 2011, 19:57 »
Mostra o código todo.
Avr fanboy

Offline Psycop

  • Mini Robot
  • *
  • Mensagens: 105
    • O.Cantinho.da.Programação
Re: Iniciante em Robótica
« Responder #85 em: 12 de Maio de 2011, 23:20 »
o código todo é o seguinte:
Código: [Seleccione]
int motorPin1 = 4;
int motorPin2 = 5;
int motorPin3 = 10;
int motorPin4 = 11;
int analogPin1 = 3;
int analogPin2 = 6;
int delayTime = 500;

void setup() {
 pinMode(motorPin1, OUTPUT);
 pinMode(motorPin2, OUTPUT);
 pinMode(motorPin3, OUTPUT);
 pinMode(motorPin4, OUTPUT);

}

void loop() {
 
 //Avançar
 
 analogWrite(analogPin1, 64);
 analogWrite(analogPin2, 64);
 digitalWrite(motorPin1, HIGH);
 digitalWrite(motorPin2, LOW);
 digitalWrite(motorPin3, LOW);
 digitalWrite(motorPin4, HIGH);
 delay(1000);
 
 //Recuar
 
 analogWrite(analogPin1, 64);
 analogWrite(analogPin2, 64);
 digitalWrite(motorPin1, LOW);
 digitalWrite(motorPin2, HIGH);
 digitalWrite(motorPin3, HIGH);
 digitalWrite(motorPin4, LOW);
 delay(1000);

}

Offline Psycop

  • Mini Robot
  • *
  • Mensagens: 105
    • O.Cantinho.da.Programação
Re: Iniciante em Robótica
« Responder #86 em: 13 de Maio de 2011, 11:32 »
Olá

Consegui controlar os motores através do seguinte código:
Código: [Seleccione]
int analogPin1 = 3;
int analogPin2 = 6;
int motorPin1 = 4;
int motorPin2 = 5;
int motorPin3 = 10;
int motorPin4 = 11;
int delayTime = 500;

void setup()
{
 pinMode(motorPin1, OUTPUT);
 pinMode(motorPin2, OUTPUT);
 pinMode(motorPin3, OUTPUT);
 pinMode(motorPin4, OUTPUT);

}

void loop()
{
  anda();
  delay(1000);
  parado();
  delay(1000);
}
 
 
void anda()

  analogWrite(motorPin1, 0);
  analogWrite(motorPin2, 64);
  analogWrite(motorPin3, 64);
  analogWrite(motorPin4, 0);
}

void parado()
{
  analogWrite(motorPin1, 0);
  analogWrite(motorPin2, 0);
  analogWrite(motorPin3, 0);
  analogWrite(motorPin4, 0);
}

O que acontece agora é que os motores emitem um som estranho a quando do parado(), o que será?
O que estou a fazer de errado?

Necessito também de ajuda para montar o QTR-8RC Reflectance Sensor Array pois, não faço a mínima ideia de como o montar nem como o ligar.
Alguém me pode explicar o que tenho de fazer e que pinos terei de soldar ao QTR-8RC Reflectance Sensor Array.

Cumps
« Última modificação: 13 de Maio de 2011, 14:59 por Psycop »

Offline CBX

  • Mini Robot
  • *
  • Mensagens: 1.315
Re: Iniciante em Robótica
« Responder #87 em: 13 de Maio de 2011, 15:53 »
o analogwrite apenas funciona em saídas PWM

para poderes controlar dessa maneira precisas de ligar os 4 inputs do L293D a 4 pinos PWM...

usa antes o código como está no outro post acima...

em relação ao sensor podes começar pela página do fabricante, tens lá muita informação ou procura pelo fórum, penso que há por ai mais do que um tópico sobre isso

Offline Psycop

  • Mini Robot
  • *
  • Mensagens: 105
    • O.Cantinho.da.Programação
Re: Iniciante em Robótica
« Responder #88 em: 13 de Maio de 2011, 16:01 »

em relação ao sensor podes começar pela página do fabricante, tens lá muita informação ou procura pelo fórum, penso que há por ai mais do que um tópico sobre isso

Eu já andei pela página do fabricante, o que acontece é que eu não entendi muito bem o que lá diz!
A informação do fabricante é a seguinte: http://www.pololu.com/docs/pdf/0J12/QTR-8x.pdf

Só que mesmo assim, eu não sei bem como proceder!

Poderias-me ajudar?

Cumps

Offline CBX

  • Mini Robot
  • *
  • Mensagens: 1.315
Re: Iniciante em Robótica
« Responder #89 em: 13 de Maio de 2011, 16:18 »
eu nunca usei esse sensor nem nada parecido, procura aqui pelo fórum que encontras de certeza a informação que precisas...