collapse

* Posts Recentes

Amplificador - Rockboard HA 1 In-Ear por almamater
[Ontem às 19:13]


O que é isto ? por KammutierSpule
[26 de Março de 2024, 19:35]


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


Emulador NES em ESP32 por dropes
[13 de Março de 2024, 21:19]


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]


Distancia Cabo por jm_araujo
[08 de Janeiro de 2024, 16:30]


Meu novo robô por josecarlos
[06 de Janeiro de 2024, 16:46]


Laser Engraver - Alguém tem? por almamater
[16 de Dezembro de 2023, 14:23]

Autor Tópico: [Arduino]Dia 5 - Arduino analogWrite ( PWM )  (Lida 26635 vezes)

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

Offline TigPT

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 5.372
    • Tiago Rodrigues
[Arduino]Dia 5 - Arduino analogWrite ( PWM )
« em: 17 de Julho de 2008, 14:02 »
Dia 5:

Então e se quisermos controlar dispositivos como os servos com o nosso Arduino?! este precisam dos conhecidos PWM, são ondas quadradas que variam entre GRD e VCC, e o que varia é o tempo de on e off do sinal.

Fica uma imagem explicativa do PWM, e da correspondência de valores para o analogWrite do Arduino:

Fonte da image: http://www.arduino.cc

Para fazermos o output de um PWM, dispomos dos pins 3, 5, 6, 9, 10 e 11, mas podemos recorrer à biblioteca Servo.h que se encontra no site http://www.arduino.cc, e assim controlar servos com PWM por qualquer dos pins do Arduino.

Como para o meu robô não preciso de usar mais de 6 servos neste momento, vou fazer um simples analogWrite(pinNumb, 0-255) como no código abaixo, para controlar o PWM.

Se ligarmos este sinal a uma simples ponte H para controlar motores DC, o que fazemos é activar e desactivar os transistors, produzindo assim com o máximo de torque uma velocidade mais baixa do que se utilizasse-mos um valor analógico entre GRD e VCC, para alem de que evita o aquecimento dos transistors, visto que estes estão sempre ou ao corte, ou saturado.

No vídeo abaixo faço um exemplo disso mesmo, que pode ser facilmente acompanhado pelo código em anexo.

Coloquei um bocado de fita branca na roda para se poder ver as diferenças de velocidade.
http://www.revver.com/video/900986

Gerar PWM com Arduino
« Última modificação: 10 de Setembro de 2010, 16:11 por TigPT »

Offline joaoamaral

  • Mini Robot
  • *
  • Mensagens: 218
Re:[Arduino]Dia 5 - Arduino analogWrite ( PWM )
« Responder #1 em: 05 de Maio de 2009, 23:10 »
sobre o PWM encontrei este vídeo :)

PWM Tutorial
Twitter: @joaoamaral | Skype: joaoamaral

Offline TigPT

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 5.372
    • Tiago Rodrigues
Re:[Arduino]Dia 5 - Arduino analogWrite ( PWM )
« Responder #2 em: 06 de Maio de 2009, 10:41 »
Excelente vídeo, obrigado por partilhares ;)

Offline metRo_

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 3.753
Re:[Arduino]Dia 5 - Arduino analogWrite ( PWM )
« Responder #3 em: 07 de Maio de 2009, 14:28 »
Neste post também mostro umas pwm's do arduino!
http://lusorobotica.com/index.php/topic,499.msg4418.html#msg4418

Offline TigPT

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 5.372
    • Tiago Rodrigues
Re:[Arduino]Dia 5 - Arduino analogWrite ( PWM )
« Responder #4 em: 07 de Maio de 2009, 14:38 »
Neste post também mostro umas pwm's do arduino!
http://lusorobotica.com/index.php/topic,499.msg4418.html#msg4418

Fizeste bem em dizer, adicionei ao primeiro post ;)

Offline antonio_jose

  • Mini Robot
  • *
  • Mensagens: 336
Re:[Arduino]Dia 5 - Arduino analogWrite ( PWM )
« Responder #5 em: 12 de Junho de 2009, 00:47 »

Offline amando96

  • Mini Robot
  • *
  • Mensagens: 1.631
  • MAC address? But I have windows...
    • Projects, News, Blog, Tutorials
Re:[Arduino]Dia 5 - Arduino analogWrite ( PWM )
« Responder #6 em: 12 de Junho de 2009, 08:50 »
Excelente vídeo, obrigado por partilhares ;)

a roda is ponte-H é de ''o meu robot'' né?

Offline TigPT

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 5.372
    • Tiago Rodrigues
Re:[Arduino]Dia 5 - Arduino analogWrite ( PWM )
« Responder #7 em: 12 de Junho de 2009, 09:20 »
sim.. :) não chegou a funcionar por causa de umas falhas... :)

Offline Raul

  • Mini Robot
  • *
  • Mensagens: 185
Re: [Arduino]Dia 5 - Arduino analogWrite ( PWM )
« Responder #8 em: 30 de Setembro de 2009, 18:43 »
Mas eu vi que se pode controlar um servo digitalmente, com o digitalWrite(pin, value)
Esta aqui o circuito e tudo, estranhei a necessidade da resistência.

servo output


Hobby servos are a type of self-contained motor that can move in a 180º arc. All that is needed is a pulse sent every 20ms. This example uses a servoPulse function to move the servo from 10º -170º and back again.
Código: [Seleccione]
int servoPin = 2; // servo connected to digital pin 2
int myAngle; // angle of the servo roughly 0-180
int pulseWidth; // servoPulse function variable
void setup()
{
pinMode(servoPin, OUTPUT); // sets pin 2 as output
}
void servoPulse(int servoPin, int myAngle)
{
pulseWidth = (myAngle * 10) + 600; // determines delay
digitalWrite(servoPin, HIGH); // set servo high
delayMicroseconds(pulseWidth); // microsecond pause
digitalWrite(servoPin, LOW); // set servo low
}
void loop()
{
// servo starts at 10 deg and rotates to 170 deg
for (myAngle=10; myAngle<=170; myAngle++)
{
servoPulse(servoPin, myAngle); // send pin and angle
delay(20); // refresh cycle
}
// servo starts at 170 deg and rotates to 10 deg
for (myAngle=170; myAngle>=10; myAngle--)
{
servoPulse(servoPin, myAngle); // send pin and angle
delay(20); // refresh cycle
}
}
« Última modificação: 30 de Setembro de 2009, 20:13 por TigPT »

Offline TigPT

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 5.372
    • Tiago Rodrigues
Re: [Arduino]Dia 5 - Arduino analogWrite ( PWM )
« Responder #9 em: 30 de Setembro de 2009, 20:17 »
No fundo esse código está a gerar um pwm por software.

Offline Njay

  • Mini Robot
  • *
  • Mensagens: 3.598
    • Tróniquices
Re: [Arduino]Dia 5 - Arduino analogWrite ( PWM )
« Responder #10 em: 30 de Setembro de 2009, 23:20 »
É assim que funciona a biblioteca MegaServo do ambiente de programação do Arduino.

Offline Raul

  • Mini Robot
  • *
  • Mensagens: 185
Re: [Arduino]Dia 5 - Arduino analogWrite ( PWM )
« Responder #11 em: 02 de Outubro de 2009, 19:38 »
Mas é necessário ter aquela resistência de 220 ohms?
Ou os 220ohms o arduino já os aplica dentro dele?
Cumprimentos

Offline Njay

  • Mini Robot
  • *
  • Mensagens: 3.598
    • Tróniquices
Re: [Arduino]Dia 5 - Arduino analogWrite ( PWM )
« Responder #12 em: 02 de Outubro de 2009, 22:50 »
A resistência de 220 Ohm é uma segurança extra. Não é necessário, mas se quiseres um sistema tolerante a algumas falhas, podes pôr.

Offline leandrosilva

  • Mini Robot
  • *
  • Mensagens: 45
Re: [Arduino]Dia 5 - Arduino analogWrite ( PWM )
« Responder #13 em: 08 de Setembro de 2010, 17:04 »
Mt boa explicaçao das pwm's :D bom trabalho ;)

Offline Mikey

  • Mini Robot
  • *
  • Mensagens: 2
Re: [Arduino]Dia 5 - Arduino analogWrite ( PWM )
« Responder #14 em: 06 de Janeiro de 2011, 16:54 »
TigPT o ficheiro do codigo do motor1 esta corrupto quando se extrae .
alguem disponibiliza ?