• Welcome to LusoRobótica - Robótica em Português.
 

Iniciante em Robótica

Started by Psycop, 07 de March de 2011, 16:01

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Psycop

Quote from: dvdt on 09 de May de 2011, 17:21
o segundo motor e ligado presisamente como o primeiro ou seja e como se tivesses a fazer aqueles desenhos de simetria que te dao um lado e tens que desenhar o outro mas isto se aplica nos pinos ground input e output e o resto depende ja do codigo

Mas para já o que tenho até aqui está correcto, certo?

Ou poderei melhorar?

Eu consegui movimento no motor com o seguinte código:

int motorPin1 = 9;
int motorPin2 = 4;
int delayTime = 500;

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

}

void loop() {
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
delay(delayTime);
}


Cumps

CBX

até ai está correcto, agora é fazer o mesmo para o outro

Psycop

Quote from: CBX on 09 de May de 2011, 17:43
até ai está correcto, agora é fazer o mesmo para o outro

Sim, mas a minha dificuldade está na montagem do circuito para o segundo motor!

Cumps

CBX

é igual, ligas o input 3 e 4 do L293D ao arduino como ligaste os outros e o output 3 e 4 aos fios do outro motor, não esquecer o enable

tens a ponte montada ao contrario...

Psycop

Quote from: CBX on 08 de May de 2011, 21:23


este é bastante simples...

sabes como funciona uma breadboard?

Se Não fosse muito incomodo poderias completar esse esquema para um segundo motor?

Cumps

Psycop

Boas

Tentei montar a Ponte L293D para dois motores, mas apenas consegui movimento num dos motores e apenas uma vez!

O a montagem esta na foto seguinte:


E o código que usei foi o seguinte:
int motorPin1 = 4;
int motorPin2 = 5;
int motorPin3 = 10;
int motorPin4 = 11;
int delayTime = 100;

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

}

void loop() {
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, HIGH);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay(delayTime);
}


Estarei a fazer algo de errado?

Cumps

CBX

o código está incorrecto, para poderes ter movimento tens de ter um pino a HIGH e o outro a LOW, os dois em HIGH o motor "trava"

void loop() {
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(delayTime);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(delayTime);
}


aumenta o tempo no delay, 100ms é 0,1s...

Psycop

Boas

Já Consegui colocar a ponte a funcionar para os 2 motores, inclusive coloquei um pequeno interruptor.
Aqui fica a foto:


Não Sei se a forma como coloquei o interruptor é a mais correcta.

À alguma coisa que possa melhorar ou simplificar relativamente às ligações?

Podem agora dar-me umas dicas de como poderei ligar o Sensor de Pista:  QTR-8RC Reflectance Sensor Array [INM-0129]

Cumps

Psycop

Boas

Usando este código alguém me pode ajudar a saber como poderei controlar a velocidade dos motores e a sua direcção?

int motorPin1 = 4;
int motorPin2 = 5;
int motorPin3 = 11;
int motorPin4 = 10;
int delayTime = 500;

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

}

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

}


Cumps

CBX

assim vai rodar numa direcção:

digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);


assim na oposta:

digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);


para controlar a velocidade ligas os pinos 1 e 9 da ponte a um PWM do arduino:

http://arduino.cc/en/Reference/AnalogWrite

Psycop

Olá

Não Estou a conseguir inverter a marcha!

Para ter ambos os motores para a frente uso:
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay(1000);


Mas se inverter as coisas usando:
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay(1000);



Apenas o motor esquerdo anda e para trás!

O que se estará a passar?

Cumps


microbyte

Verifica se tens as ligações feitas de acordo com as variáveis motorPin1...4

Parece-me que tens aí 1 das variáveis que tem o numero de um pino  do Arduino que nao estás a usar.

Psycop

Quote from: microbyte on 11 de May de 2011, 17:36
Verifica se tens as ligações feitas de acordo com as variáveis motorPin1...4

Parece-me que tens aí 1 das variáveis que tem o numero de um pino  do Arduino que nao estás a usar.

Estive a tentar verificar o que me disseste e penso que esteja tudo bem! I Guess!

Mas aqui fica a foto da montagem actual:



Cumps

CBX

a imagem não é muito esclarecedora mas não tens ligados os fios no D5 e D6?

Psycop

Quote from: CBX on 11 de May de 2011, 17:46
a imagem não é muito esclarecedora mas não tens ligados os fios no D5 e D6?

Tirei uma nova foto, e penso que agora esteja mais nitida!



Cumps