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."
Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

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.
Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

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.
Eu não sou o teu criado. Se respondo no fórum é para ajudar todos mediante a minha disponibilidade e disposição. Responder por mensagem pessoal iria contra o propósito do fórum e por isso evito-o.
Se realmente pretendes que eu te ajude por mensagem pessoal, então podemos chegar a um acordo e contrato onde me pagas pela ajuda que eu fornecer e poderás então definir os termos de confidencialidade do meu serviço. De forma contrária toda e qualquer ajuda que eu der tem de ser visível a todos os participantes do fórum (será boa ideia, veres o significado da palavra fórum).
Nota também que eu não me responsabilizo por parvoíces escritas neste espaço pelo que se vais seguir algo dito por mim, entende que o farás por tua conta e risco.

Dito isto, mensagens pessoais só se forem pessoais, ou seja, se já interagimos de alguma forma no passado ou se me pretendes convidar para uma churrascada com cerveja (paga por ti, obviamente).

Go Up