collapse

* Posts Recentes

Alimentar Fita Leds por almamater
[Ontem às 16:50]


Como transformar um mosquito killer de tomada em um portátil? por jm_araujo
[20 de Setembro de 2018, 13:35]


Carregador para 18650 por brunus
[19 de Setembro de 2018, 23:16]


cabo utp cravar por brunus
[19 de Setembro de 2018, 23:15]


Keysight UXR 110GHz BW, 256GS/s, 10-bit Real-Time Oscilloscope por SerraCabo
[19 de Setembro de 2018, 20:26]


leitura de voltagens com o analogRead(A0) por jm_araujo
[16 de Setembro de 2018, 18:36]


BostonDynamics - Vai uma mãozinha? por josecarlos
[16 de Setembro de 2018, 11:26]


Comunidades Online de Drones por MAntunes
[09 de Setembro de 2018, 18:00]


Sorte do catano por Njay
[09 de Setembro de 2018, 16:51]


BUILD: Toolmaker's Clamp Thingy por TigPT
[08 de Setembro de 2018, 20:19]

Autor Tópico: Velocidade motores DC  (Lida 2383 vezes)

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

Offline Bernardo Lucas

  • Mini Robot
  • *
  • Mensagens: 262
Velocidade motores DC
« 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 , 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.
« Última modificação: 10 de Setembro de 2013, 10:34 por Bernardo Lucas »

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.548
  • Helpdesk do sitio
Re: Velocidade motores DC
« Responder #1 em: 10 de Setembro de 2013, 11:01 »
Usando pwm.
Avr fanboy

Offline Bernardo Lucas

  • Mini Robot
  • *
  • Mensagens: 262
Re: Velocidade motores DC
« Responder #2 em: 10 de Setembro de 2013, 11:37 »
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?

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.548
  • Helpdesk do sitio
Re: Velocidade motores DC
« Responder #3 em: 10 de Setembro de 2013, 12:05 »
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.
Avr fanboy

Offline Bernardo Lucas

  • Mini Robot
  • *
  • Mensagens: 262
Re: Velocidade motores DC
« Responder #4 em: 10 de Setembro de 2013, 13:38 »
Ok vou experimentar dessa forma. Só não usei uma ponte h comercial para não gastar tanto dinheiro. :)

Offline Bernardo Lucas

  • Mini Robot
  • *
  • Mensagens: 262
Re: Velocidade motores DC
« Responder #5 em: 10 de Setembro de 2013, 14:00 »
Será desta forma?   analogWrite(E1, velocidade) em vez de digitalWrite(E1, HIGH)

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.548
  • Helpdesk do sitio
Re: Velocidade motores DC
« Responder #6 em: 10 de Setembro de 2013, 14:19 »
Sim, só que o pino tem de suportar pwm.
Avr fanboy

Offline Bernardo Lucas

  • Mini Robot
  • *
  • Mensagens: 262
Re: Velocidade motores DC
« Responder #7 em: 10 de Setembro de 2013, 14:37 »
Mais uma coisa, a velocidade vem em que unidades e pode variar de quanto a quanto.

Offline beirao

  • Mini Robot
  • *
  • Mensagens: 1.522
Re: Velocidade motores DC
« Responder #8 em: 10 de Setembro de 2013, 14:40 »
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
"O único lugar onde o sucesso vem antes do trabalho, é no dicionário" - Albert Einstein

Offline Bernardo Lucas

  • Mini Robot
  • *
  • Mensagens: 262
Re: Velocidade motores DC
« Responder #9 em: 10 de Setembro de 2013, 15:13 »
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?
« Última modificação: 10 de Setembro de 2013, 15:20 por Bernardo Lucas »

Offline samc

  • Mini Robot
  • *
  • Mensagens: 438
Re: Velocidade motores DC
« Responder #10 em: 10 de Setembro de 2013, 22:37 »
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.