Modulazione della larghezza di impulso (PWM): che cos'è? Come impiegarla?

Prima che esistesse la modulazione della larghezza di impulso (PWM), l'unico modo per regolare la tensione o la corrente per il dimmeraggio era utilizzare i reostati o potenziometri. La PWM ha inoltre reso più facile il controllo di componenti di dimensioni maggiori, come motori, valvole, pompe, componenti idraulici e altri componenti meccanici.

Di norma, la tensione c.c. resta costante a un valore superiore o inferiore a zero. La modulazione della larghezza di impulso converte un segnale digitale in uno analogico modificando il periodo di tempo in cui tale segnale resta acceso o spento. Il termine "ciclo di lavoro" viene utilizzato per descrivere la percentuale o il rapporto che indica per quanto tempo un segnale resta acceso rispetto al periodo totale. Di norma, i dispositivi con un'uscita PWM hanno una frequenza di aggiornamento molto alta per far sì che la potenza media "sembri" costante rispetto a un carico. Ho collaudato, come esempio, Arduino con un analizzatore digitale, registrando una frequenza di aggiornamento pari a 500°Hz. Ecco un esempio dell'aspetto di alcuni segnali PWM. Ho utilizzato LTspice per simulare i segnali e ho acquisito un'immagine delle forme d'onda.

Segnali PWM generati tramite LTspice, un programma di simulazione di circuiti prodotto da Analog Devices.

Ho utilizzato livelli di tensione differenti e posto un offset per ciascun segnale in modo da mostrare le differenze tra i cicli di lavoro. Come è possibile notare dall'immagine, con un ciclo di lavoro elevato il segnale resta acceso per più tempo di quanto non resti spento, mentre il contrario è vero per un ciclo di lavoro basso.

Qual è lo scopo di questo tipo di segnale? Un dispositivo con funzionalità PWM mantiene qualsiasi ciclo di lavoro definito dall'utente, e in alcuni casi è possibile programmare delle modifiche relative all'ampiezza dell'impulso in qualsiasi momento. In termini matematici, i dispositivi con funzionalità PWM modificano il segnale il uscita in modo che sia presente una tensione media. Un segnale impostato con un ciclo di lavoro del 50% ridurrà la tensione media di un carico di circa il 50%. Tuttavia, questa non è una soluzione adeguata nella maggior parte dei casi, in quanto i dispositivi non hanno una precisione assoluta. Una misurazione più accurata da prendere in considerazione è quella del valore quadratico medio (RMS). Molti multimetri e altre apparecchiature di misurazione sono in grado di effettuare misurazioni del RMS. Ad esempio, in una simulazione in LTspice, un segnale di 5 Vc.c. con un ciclo di lavoro del 50% a una frequenza di aggiornamento di 60 Hz presenta una tensione efficace di 3,57 V. Ho inoltre inserito nella stessa simulazione un carico che in genere assorbe 1 A senza impulso PWM e ho registrato un RMS di circa 714 mA con un ciclo di lavoro del 50%.

I segnali digitali tendono a restare intorno ai 5°V o ai 3,3°V, a seconda dell'applicazione, ma è possibile ripetere l'effetto con tensioni più alte utilizzando dei MOSFET. Poiché questi transistor sono spesso impiegati come interruttori controllati in tensione, si attivano e si disattivano in base al segnale PWM, a seconda della tensione gate-source. Questa reazione permette alle alte tensioni di avere un aspetto identico al segnale PWM e di seguire lo stesso comportamento. La PWM è particolarmente utile nell'emulazione di un effetto di dimmeraggio in diversi componenti. I LED, specialmente a corrente e tensione elevate, non reagiscono molto bene ai potenziometri. Tuttavia, i dispositivi con funzionalità PWM e i MOSFET aiutano a mantenere la tensione a un livello sufficientemente alto per mantenere accesi i LED più a lungo, risultando in un intervallo di dimmeraggio maggiore. La PWM viene utilizzata anche per controllare la velocità dei motori sfruttando lo stesso concetto.

A chi vuole provare la PWM per la prima volta consiglio la piattaforma Arduino. I due modelli che ho utilizzato io sono 1050-1024-ND e 1050-1018-ND. La versione Mega dispone di più pin per l'uscita PWM. Arduino utilizza una funzione "analogWrite(pin, val)" per ottenere tale risultato. La variabile del pin è l'I/O con la funzionalità PWM (indicata da un simbolo ~ accanto al pin), mentre il valore può variare da 0 a 255. Con un valore pari a 0 si ha un ciclo di lavoro dello 0%, mentre con 255 si ha un ciclo di lavoro a pieno regime.

Informazioni su questo autore

Image of Kaleb Kohlhase

Kaleb Kohlhase è un tecnico elettronico presso l'ufficio di ingegneria delle applicazioni DigiKey. Kaleb lavora in DigiKey dall'inizio del 2018. I suoi interessi includono la logica digitale, la programmazione, la simulazione di circuiti, la progettazione di PCB, la modellazione 3D, i circuiti audio e tanto altro. Kaleb si è laureato in ingegneria alla Minnesota State University nel 2017. I suoi punti di forza riguardano la comprensione della documentazione tecnica, come gli schemi circuitali e le schede tecniche, la redazione di documentazione tecnica sulle informazioni ricercate, la risoluzione dei problemi di vari sistemi, la finalizzazione dei concetti mediante la realizzazione di prototipi fisici e la programmazione in vari linguaggi informatici. Nel tempo libero Kaleb guarda film su Netflix in compagnia della moglie, gioca ai videogiochi, va in bicicletta, nuota e armeggia con l'elettronica.

More posts by Kaleb Kohlhase
 TechForum

Have questions or comments? Continue the conversation on TechForum, DigiKey's online community and technical resource.

Visit TechForum