collapse

* Links de Robótica

* Posts Recentes

Palavras Cruzadas por Hugu
[Hoje às 18:07]


[Projecto] Bomba Airsoft por jm_araujo
[23 de Setembro de 2017, 16:54]


Apresentação por Tech_JA
[23 de Setembro de 2017, 09:19]


Medir Agua que está no Poço por filjoa
[21 de Setembro de 2017, 20:58]


URGENTE - display de 7 segmentos com backpack por helderjsd
[20 de Setembro de 2017, 12:30]


Preços e fabricantes de pcb por Sérgio_Sena
[19 de Setembro de 2017, 10:20]


Isaac Asimov - I, Robot por senso
[18 de Setembro de 2017, 03:41]


ic SL440 da Plessey? por senso
[16 de Setembro de 2017, 13:11]


Compra Colectiva RS-Amidata por brunus
[15 de Setembro de 2017, 22:31]


Ideias para construir um quadrúpede simples por zordlyon
[15 de Setembro de 2017, 10:18]

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

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

Offline TigPT

  • Administrator
  • Mini Robot
  • *****
  • Mensagens: 5.234
    • 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.234
    • 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.726
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.234
    • 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
    • Facebook:
Re:[Arduino]Dia 5 - Arduino analogWrite ( PWM )
« Responder #5 em: 12 de Junho de 2009, 00:47 »

Offline amando96

  • Mini Robot
  • *
  • Mensagens: 1.627
  • 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.234
    • 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.234
    • 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.088
    • 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.088
    • 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 ?