LusoRobótica - Robótica em Português
Robótica => Iniciantes => Tópico iniciado por: Bernardo Lucas em 10 de Setembro de 2013, 09:49
-
Tenho dois circuitos h bridge como este: http://icexduino.blogspot.pt/2011/06/projeto-manipulando-um-motor-dc-no.html (http://icexduino.blogspot.pt/2011/06/projeto-manipulando-um-motor-dc-no.html) , ligados ao arduino. O codigo que estou a usar é este:
int E0 = 10; //Porta esquerda sentido horário
int E1 = 9; //Porta esquerda sentido anti-horário
int D0 = 8; //Porta direita sentido horário
int D1 = 7; //Porta direita sentido anti-horário
void setup(){
pinMode(E0, OUTPUT);
pinMode(E1, OUTPUT);
pinMode(D0, OUTPUT);
pinMode(D1, OUTPUT);
Serial.begin(9600);
}
void loop(){
Serial.println("Move forward");
digitalWrite(E1, HIGH); //Anda em frente
digitalWrite(D0, HIGH);
delay(2000);
Serial.println("Move backward");
digitalWrite(E0, HIGH); //Anda para trás
digitalWrite(D1, HIGH);
delay(2000);
Serial.println("Turn to the right");
digitalWrite(D0, HIGH); //Vira á direita
delay(2000);
Serial.println("Turn to the left");
digitalWrite(E1, HIGH); //Vira á esquerda
delay(2000);
}
O que necessitava era de definir uma velocidade para os motores, como o posso fazer neste código.
-
Usando pwm.
-
Ok. Podia dizer me por favor, nos circuitos que tenho que ligações é necessario alterar. Pois segundo o que sei o pwm consiste num fio que vem de um pino do arduino com essa designação e segue para o circuito certo?
-
Era algo mais simples usares uma ponte H comercial, tipo um L293D ou parecido, simplicava as coisas.
Supostamente é só trocares esses digitalWrite por analogWrite que tens pwm, podes é ter de trocar esses pinos para pinos que suportem pwm.
-
Ok vou experimentar dessa forma. Só não usei uma ponte h comercial para não gastar tanto dinheiro. :)
-
Será desta forma? analogWrite(E1, velocidade) em vez de digitalWrite(E1, HIGH)
-
Sim, só que o pino tem de suportar pwm.
-
Mais uma coisa, a velocidade vem em que unidades e pode variar de quanto a quanto.
-
Mais uma coisa, a velocidade vem em que unidades e pode variar de quanto a quanto.
Um sinal PWM é um sinal em frequência, em que tu defines a largura do pulso. PWM - Pulse Width Modulation.
Tipicamente um sinal PWM é definido pela sua frequência fixa, e pelo seu duty-cycle, sendo o duty-cyle a percentagem da largura de pulso, isto é:
duty-cycle (%) = (tempo a '1' / período do sinal) * 100%
Mais info: http://arduino.cc/en/Tutorial/PWM (http://arduino.cc/en/Tutorial/PWM)
-
Então vamos ver se percebi: analogWrite(E0, 64) delay(2000) o E0 roda com 25% de potência durante 2 segundos....As conecçoes são feitas nos pinos digitais com pwm do arduino, certo?
-
Sim é isso. Valores de 0 a 255 (255 sempre ligado, 0 desligado).
De uma forma simples podes usar o delay. Mas caso avances no código deverás usar a função milis() para poderes continuar a receber comandos enquanto o motor move-se.