Ciao a tutti.
Ho una domanda da porre:
É possibile cambiare la frquenza PWM e portarla a 23khz, sempre con la possibilità di poter variare la durata dell'impulso fino a 255 step?
Grazie mille! ![]()
Ciao a tutti.
Ho una domanda da porre:
É possibile cambiare la frquenza PWM e portarla a 23khz, sempre con la possibilità di poter variare la durata dell'impulso fino a 255 step?
Grazie mille! ![]()
![]()
Grazie CALZAND !
Posso provare una delle frequenze disponibili, anche se mi servirebbe 23,4kHz, che comunque non è quella di default molto bassa (circa 450Hz).
Ciao.
Se hai la pazienza di leggerti tutto il datasheet relativamente al PWM troverai che si possono impostare i timer interni per fare tutto ciò che si vuole. Questo è un articolo sul PWM che spiega bene i vari registri da modificare, ti consiglio di leggerlo perché riassumere tutto in poche righe non è facile.
Ciao Leo72.
Wow! Veramente ben dettagliato, grazie.
Spero non cambi nulla se l'articolo parla di Arduino 2009, io possiedo Arduino Uno ?
E' ben descritto, ma utilizzado i prescaler, imposto delle frequenze fisse, dove posso cambiare solo la durata dell'imulso duty cycle(%), mentre no la frequenza.
Io avrei bisogno di una uscita PWM da 23,4kHz con duty variabile da 0 a 100%(0-255step)
In poche parole, devo generare una uscita analogica pulita senza picchi (es. 1...4v) semplicemente utilizzando un filtro RC con resistenza da 100k e condensatore da 100nF, poi amplificata con un operazionale 1:1 per potenziare il segnale.
Siccome il circuito è già funzionante con un pic, utilizzando quarzi e prescaler appositi, vorrei realizzarlo su Arduino Uno se possibile.
Esiste eventualmente un sistema alternativo per generare una tensione pulita con Arduino ?
I prescaler non sono delle frequenze fisse, sono dei divisori del clock da cui poi ottieni il segnale di aggiornamento del timer.
La modalità di generazione del segnale PWM varia, come hai visto, ogni timer ha diverse modalità. Cmq si può ottenere tranquillamente la frequenza da te richiesta, con qualsiasi duty cicle da 0 a 100%.
Ok. Proverò a fare dei test per approfondire l'argomento.
Nel frattempo, ho trovato questo
http://www.arduino.cc/playground/Main/RegulatedPositiveVoltageBooster
qui si varia la tensione variando la frequenza, credo però sia un circuito che ne risenta delle derive termiche ma comunque semplice da realizzare.
Ecco, prima parlavo di questo tipo di PWM per out analogico:
http://www.thebox.myzen.co.uk/Tutorial/PWM.html
Domani provo ad impostare la frequenza sull'uscita PWM e vedo cosa riesco ad ottenere.
Dato che il 328 non ha un DAC o usi il PWM oppure un DAC esterno, il più semplice è un ladder R2R però ti impegna tanti pin quanti sono i bit di risoluzione che desideri, in compenso ottieni un valore analogico molto più pulito e preciso di quello ottenibile tramite PWM.
Certo astrobeed, ma ho la necessità di utilizzare un solo pin.
![]()
Comunque la notte porta consiglio, e verificato al volo quello che mi ha indicato Leo72, sono riuscito ad impostare una frequenza più alta (976 Hz), lasciando la resistenza da 100k ma cambiando il condensatore del filtro RC con un 470nF in poliestere, ho ottenuto una variazione veloce, lineare e pulita che và da circa 0,6v a 4,1v (con DV=3,5v).
Se si utilizza un condensatore elettrolitico da 4,7uF e si interdice l'uscita PWM, si ottiene un circuito simple and old, dove la tensione in uscita scende molto molto lentamente grazie all'operazioale che ho usato per potenziare il segnale in uscita con amplificazione 1:1.
Ora basta integrare un cicuito analogico per poter portare la tensione da 1...5v, 0...10v o addirittura 4....20mA, ma occorre una alimentazione duale per far lavorare bene gli operazionali.
Un saluto a tutti.