Salve a tutti, rieccomi qui. Volevo sapere come posso portare un pin PWM a 4Khz da poter utilizzare con analogWrite da 0 a 1024.
Ho arduino duemilanove. Ho letto varie guide, compresa la lib TimerOne...ma non ho capito molto bene...
parla dei registri e ho anche fatto delle prove.... Grazie
ciao.
prova a vedere questo link: http://www.mauroalfieri.it/elettronica/frequenza-pwm-arduino-duty-cycle.html
E' spiegato molto bene, non dovresti avere problemi.
ciao
pippo72
I PWM sono sempre a 8Bit non a 10. Non cambia niente se cambi la frequenza.
La frequenza si puó cambiare in pochi steps perché deriva dal clock e ci sono pochi divisori fissi.
Elenco delle frequenze possibili: http://www.letsmakerobots.com/content/changing-pwm-frequencies-arduino-controllers
Google Code Archive - Long-term storage for Google Code Project Hosting. e http://forum.arduino.cc/index.php/topic,117425.0.html
Ciao Uwe
uwefed:
I PWM sono sempre a 8Bit non a 10. Non cambia niente se cambi la frequenza.
Questo non è del tutto corretto, il PWM standard di Arduino è a solo otto bit, però se agisci su i timer non solo ne puoi cambiare la frequenza, puoi anche cambiare la risoluzione, p.e. la libreria Timer1, di default, offre 10 bit sul pwm.
pwm(pin, duty, period)
Generates a PWM waveform on the specified pin.
.
.
.
The duty cycle is specified as a 10 bit value, so anything between 0 and 1023.
Grazie al link del secondo post sono riuscito a settare la frequenza a 3.94khz.
domanda: ma facendo così mi aumenta il range da 0 a 1023?
Grazie
roxdragon:
Salve a tutti, rieccomi qui. Volevo sapere come posso portare un pin PWM a 4Khz da poter utilizzare con analogWrite da 0 a 1024.
Sono 2 cose distinte.
Il PWM è un segnale quadro su un pin di output con una frequenza ed un duty cycle dipendente dai parametri impostati. Il timer ha un contatore ad 8 o 16 bit, a seconda del tipo. Mentre l'analogWrite legge un input analogico e restituisce sempre un valore numerico a 10 bit (0-1023) (anche se si può "forzare" ad 8 bit, perdendo i 2 bit meno significativi).
edit: ho letto male, dormivo... correggo la risposta
leo72:
Mentre l'analogWrite legge un input analogico e restituisce sempre un valore numerico a 10 bit (0-1023) (anche se si può "forzare" ad 8 bit, perdendo i 2 bit meno significativi).
Un bel caffè per Leo, AnalogWrite != AnalogRead
Czz che figurrimm.....
Ore 6:20, al lavoro da mezz'ora e con 5 ore di sonno alle spalle... scusate proprio per la str...z..ta che ho scritto
leo72:
Czz che figurrimm.....![]()
Ore 6:20, al lavoro da mezz'ora e con 5 ore di sonno alle spalle..
Non a caso ti offerto un bel caffè
Ma volendo generare un onda quadra da 1,5 Mhz ?
lo_sty:
Ma volendo generare un onda quadra da 1,5 Mhz ?
Prendi un oscillatore da 1,5Mhz.
Ciao Uwe
Nel mio prototipo uso gia un degli LTC1799 .
Questa scheda comunica con la seriale del pc tramite un max232 .
Vorrei far passare tutto tramite arduino e rimpicciolire il più possibile la scheda togliendo oscillatori e comparatore visto che posso usare gli ingressi analogici .
Gli oscillatori sono 2 , ma posso anche usarne uno . Si riesce a generare quella frequenza co il PWM o tone() di arduino ?
uwefed:
Prendi un oscillatore da 1,5Mhz.
Ciao Uwe