Go Down

Topic: Ajuda com geração de sinal PWM (Read 1 time) previous topic - next topic

junior001

Estou usando a biblioteca servo.h para gerar um pulso minimo e uma máximo para uma saída pwm do Arduíno, pelo que me parece essa biblioteca é meio bugada, alguém conhece uma biblioteca melhor ou uma função na qual eu consigo gerar pulsos (mínimos e máximos) para uma saída pwm?

OBS: Preciso gerar um sinal aonde eu controlo o mim e o max em milissegundos.

mmoscz

4x Duemilanove (clone)
Uno torrado (clone)
Amiga 1200 40MB
Windows XP

HugoPT

Se quiseres podes sempre tentar usar os registos para poderes atingir esse fim.
Mas teras de fazer umas continhas à old school
http://newbiehack.com/TimersandCountersDefaultandBasicUsage.aspx
Vê este video
ALias recomendo ver todos eles muito bem detalhados sobre alguns registos.
Deve fazer parte dos estudos de qualquer fan do arduino :D
Debian,Mint,Ubuntu
Arduino Mega 2560
Arduino Nano
Arduino Duemilanove
MAC OS Montain Lion
Raspberry PI Model B

bubulindo


Se quiseres podes sempre tentar usar os registos para poderes atingir esse fim.


Eu diria "deves" usar sempre os registos para atingir esse fim.

É quase como o meu instrutor de condução disse acerca das mudanças automáticas: "Eu quero controlar o carro. Não quero que ele se controle a ele próprio."
This... is a hobby.

neuron_upheaval

Os analogWrite() e delay() não bastam para isso?

bubulindo


Os analogWrite() e delay() não bastam para isso?


Sabes quando o teu computador congela? Fica ali a processar e não te dá feedback nenhum ao input do rato e teclado? Isso é o que o delay faz... fica ali congelado a literalmente contar carneirinhos. Mas enquanto o teu computador faz isso por ficar demasiado carregado, o Arduino faria isso por má programacão. Achas isso boa prática?

O analogWrite configura os pinos de saída dos timers como saídas PWM... e se for esse o caso, usar o delay é desnecessário. O problema é que o pwm pode ser rápido demais para controlar o servo.
This... is a hobby.

neuron_upheaval

#6
Sep 13, 2012, 07:13 am Last Edit: Sep 13, 2012, 07:18 am by neuron_upheaval Reason: 1
Um pulso mínimo é um pulso com duty cycle zero e um pulso máximo, com 100%. Qual seria o problema em gerar isso? Nem é preciso PWM, pode gerar com o digitalWrite() e o delay() mesmo. Além disso, o servo provavelmente vai precisar de pulsos da ordem de grandeza de milissegundos. Se o clock do Arduino estiver em 16 MHz, milissegundos equivalem a milhares de ciclos de CPU e tendo um delay() ou fazendo malabarismos para não tê-lo, dá na mesma, ou melhor, o último é muito mais complicado e pessoas não letradas em programação, coisa comum no mundo Arduino, não teriam conhecimento suficiente para fazê-lo.

bubulindo

Obviamente não percebes o quão errado é usar delay()... boa sorte com os teus projectos.
This... is a hobby.

Go Up