PSMC – Controllore Programmabile a Commutazione

Sul blog di Elettronica Open Source puoi leggere non solo tutti gli articoli Premium riservati agli abbonati Platinum 2.0 e inseriti nella rivista Firmware 2.0 (insieme ad articoli tecnici, progetti, approfondimenti sulle tecnologie emergenti, news, tutorial a puntate, e molto altro) ma anche gli articoli della Rubrica Firmware Reload. In questa Rubrica del blog abbiamo raccolto gli articoli tecnici della vecchia rivista cartacea Firmware, che contengono argomenti e temi evergreen per Professionisti, Makers, Hobbisti e Appassionati di elettronica. In questo articolo della rivista Firmware scopriamo nei dettagli la periferica PSMC (Programmable Switch Mode Controller), un modulo PWM ad elevate prestazioni disponibile su alcuni modelli della famiglia PIC di Microchip.

Introduzione

Il PSMC (acronimo di Programmable Switch Mode Controller) è un modulo PWM a 16-bit di elevate prestazioni, configurabile in uno tra dodici differenti modi di funzionamento, adatto per applicazioni a fase sia singola che multipla. In particolare, il modulo è stato espressamente progettato per essere efficacemente utilizzato in applicazioni quali: alimentatori switching, sistemi di illuminazione, pilotaggio di motori. I primi microcontrollori PIC equipaggiati con questo modulo sono quelli della serie PIC16(LF)F178X, i quali includono anche altri dispositivi analogici avanzati, come convertitori ADC a 12-bit, comparatori ad elevata velocità, amplificatori operazionali, convertitori DAC a 8-bit, timer, interfacce I2C, SPI, EUSART, e Fixed Voltage Reference.

SCHEMA A BLOCCHI DEL MODULO

In Figura 1 è mostrato lo schema a blocchi semplificato relativo al modulo PSMC. Nella parte inferiore dello schema troviamo gli ingressi del modulo, che possono essere selezionati tra: uscite del comparatore integrato ad alta velocità (CxOUT), un pin di ingresso esterno (PSMCxIN), oppure l’uscita dei moduli integrati CCP (Capture/Compare/PWM). I primi due tipi di ingressi alimentano poi un blocco denominato “Blanking”, la cui funzione è quella di rendere inattivi tali ingressi per un certo periodo di tempo. In questo modo si evitano pericolosi transitori elettrici quando l’alimentazione viene fornita o rimossa dal componente. Dopo essere transitati per il blocco di Blanking, i segnali di ingresso raggiungono la parte più interna del PSMC, dove vengono eseguite le operazioni tipiche del modulo, basate sulla sequenza di tre eventi: l’evento Period, l’evento Rising Edge, e l’evento Falling Edge. Ciascuno di questi tre eventi viene attivato in base a una particolare combinazione degli input esterni (uscite del comparatore e pin di ingresso del PSMC), oppure degli ingressi di un contatore derivati da un clock interno (registri PSMCxPR, PSMCxPH, PSMCxDC, e PSMCxTMR). E’ altresì possibile sincronizzare i periodi di due o più moduli PSMC, a condizione che essi siano sullo stesso dispositivo. La sincronizzazione viene ottenuta inviando un segnale sync dal modulo PSMC master verso gli slave desiderati. Tale segnale genererà un evento Period in ogni modulo slave, allineando così tutti gli slave al master.

Figura 1: schema a blocchi del PSMC

Figura 1: Schema a blocchi del PSMC

EVENTO PERIOD

L’evento Period determina la frequenza dell’impulso in uscita, in base alla combinazione selezionata degli ingressi menzionati in precedenza (si veda come riferimento la Figura 2).

Figura 2: generazione del segnale PWM

Figura 2: Generazione del segnale PWM

Durante un singolo periodo, gli eventi Rising Edge e Falling Edge possono occorrere una volta sola; eventuali occorrenze multiple degli stessi eventi che si verificassero all’interno dello stesso periodo verranno soppresse, evitando quindi che l’uscita possa risentire della presenza di ingressi spurii. Ciò è ben visibile nella Figura 3, dove possiamo notare come il secondo evento di tipo Rising Edge che si verifica all’interno dei periodi 1 e 2 venga di fatto ignorato, non producendo alcun effetto sul segnale di uscita.

Figura 3: eventi Rising Edge multipli

Figura 3: Eventi Rising Edge multipli

Un discorso analogo può essere fatto per l’evento Falling Edge, come evidenziato in Figura 4.

Figura 4: eventi Falling Edge multipli

Figura 4: Eventi Falling Edge multipli

EVENTO RISING EDGE

L’evento Rising Edge determina l’inizio dell’impulso di uscita. In base al modo di funzionamento selezionato per il PSMC, una o più delle uscite del PSMC cambieranno come effetto immediato dell’evento Rising Edge (si veda a questo proposito il diagramma temporale di Figura 2). Un eventuale evento di tipo Rising Edge che si dovesse verificare nello stesso periodo dopo l’occorrenza di un evento Falling Edge verrà soppresso (ignorato), come ben evidenziato nella Figura 5.

Figura 5: Rising Edge dopo un Falling Edge

Figura 5: Rising Edge dopo un Falling Edge

EVENTO FALLING EDGE

L’evento Falling Edge determina la fine dell’impulso di uscita. Questo evento viene anche indicato con il termine duty cycle, poiché variando questo evento (e mantenendo fissi l’evento Rising Edge ed il periodo), è possibile variare il duty cycle del segnale in uscita. In base al modo PSMC selezionato, una o più delle uscite del modulo PSMC cambieranno come effetto immediato del verificarsi di questo evento, come indicato in Figura 2. Nel caso in cui un evento Falling Edge dovesse propagarsi anche nel periodo successivo, l’evento Rising Edge del periodo successivo verrà ignorato, e pertanto in quel periodo non vi sarà alcun segnale di uscita PWM. Questo fenomeno particolare è evidenziato nella Figura 6.

Figura 6: Falling Edge su due periodi

Figura 6: Falling Edge su due periodi

SELEZIONE DEL CLOCK

Esistono tre modalità distinte con cui ottenere il clock da applicare al modulo PSMC: il pin del clock esterno, un clock di frequenza 64 MHz, oppure la frequenza dell’oscillatore di sistema (Fosc). La sorgente di clock esterno può avere una frequenza compresa tra 32 kHz e 20 MHz, a seconda del particolare quarzo utilizzato. Se si seleziona l’opzione di clock a 64 MHz, il modulo PSMC funzionerà a questa frequenza, mentre il resto del microcontrollore opererà alla frequenza di 32 kHz; in questo modo la CPU potrà funzionare in una modalità a basso assorbimento, mentre il PSMC potrà operare a una frequenza di molto superiore. Con l’ultima opzione disponibile, il PSMC girerà alla stessa frequenza di clock della CPU. Il blocco di selezione del clock è visibile nella parte alta dello schema a blocchi di Figura 1.

EVENTI TIME BASED

Nel caso in cui un’applicazione richieda un’uscita PWM in cui gli eventi di rising e falling edge devono avvenire secondo una tempistica rigida e ben definita, è possibile utilizzare gli eventi di tipo time based. Il registro PSMCxTMR (un contatore a 16-bit) viene impiegato come riferimento di tempo per ogni periodo PWM. Il contatore parte con il valore 0000h e si incrementa sul fronte di salita del segnale di clock del PSMC fino al valore FFFFh. Il registro di periodo PSMCxPR viene utilizzato per generare l’evento Period in base al valore del contatore a 16-bit PSMCxPTR. Più precisamente, quando il valore del contatore PSMCxTMR sarà uguale al contenuto del registro PSMCxPR, verrà generato l’evento Period. Se ad esempio PSMCxPR = 0030h, il contatore PSMCxTMR si incrementerà dal valore iniziale (0000h) fino a 0030h, per poi ricominciare un nuovo ciclo di conteggio da 0000h. Ogni ciclo di conteggio fino a 0030h rappresenterà quindi un ciclo PWM. Il registro di fase PSMCxPH viene invece utilizzato per generare l’evento Rising Edge in base al contenuto del contatore a 16-bit PSMCxTMR: quando il contenuto di questi due registri sarà uguale, l’evento verrà generato. Se ad esempio PSMCxPH = 0002h, quando il contatore PSMCxTMR raggiungerà il valore 0002h verrà generato un evento di tipo Rising Edge. Il registro di duty cycle PSMCxDS viene infine utilizzato per generare un evento sincrono di Falling Edge, anch’esso in base al contenuto del contatore PSMCxTMR (quando il contenuto di PSMCxTMR sarà uguale a quello di PSMCxDC).

Se, ad esempio, PSMCxDC = 0028h, quando il contatore PSMCxTMR raggiungerà il valore 0028h verrà generato un evento di Falling Edge. Si noti come, per configurare l’uscita PWM in modo tale che il duty cycle sia pari a 0%, sia sufficiente porre il contenuto di PSMCxDC uguale a quello di PSMCxPH. In tal caso, infatti, verrà generato un evento Falling Edge simultaneamente all’evento Rising Edge. Analogamente, per ottenere un duty cycle pari al 100%, sarà sufficiente assegnare a PSMCxDC un valore maggiore di PSMCxPR. In tal caso, l’evento Falling Edge non potrà mai essere generato. Il posizionamento degli eventi Rising e Falling Edge, all’interno di uno specifico periodo, determina quindi la forma assunta dal segnale di uscita PWM. Come riferimento (e applicazione degli esempi proposti), si faccia riferimento al diagramma mostrato in Figura 7.

Figura 7: PWM generato con eventi time based

Figura 7: PWM generato con eventi time based

MODI DI FUNZIONAMENTO

Torniamo ora allo schema a blocchi di Figura 1. Qui possiamo notare che gli eventi Rising e Falling Edge sono collegati agli ingressi S ed R, rispettivamente, di un registro latch. Seguono poi i blocchi Mode Control e Output Control, la cui funzione è quella di generare diversi segnali PWM in base al modo di funzionamento selezionato. Sono disponibili dodici modi operativi, ciascuno con le proprie caratteristiche adattabili a diverse tipologie di applicazioni switching. Le dodici differenti modalità di funzionamento del modulo PSMC sono indicate nella tabella di Figura 8, in cui sono anche riportate le applicazioni tipiche di ogni modo. Vediamo ora le caratteristiche salienti di queste modalità operative del modulo PSMC.

Figura 8: modi di funzionamento del PSMC

Figura 8: Modi di funzionamento del PSMC

Single-phase PWM

Si tratta della modalità PWM di base (Figura 9), con un’uscita singola che utilizza tutti e tre i tipi di evento (period, rising, e falling).

Figura 9: single-phase PWM

Figura 9: Single-phase PWM

Complementary PWM

E’ analogo al modo precedente, con la differenza che ora in uscita vengono generate due forme d’onda (Figura 10), con polarità opposta (quindi complementari). In questo caso le due forme d’onda dispongono anche di un controllo della dead-band. La sua funzione è quella di fornire dei segnali PWM non sovrapposti in modo tale da evitare delle pericolose correnti negli alimentatori collegati in serie. Il modulo dispone di contatori dead-band a 8-bit indipendenti, sia per il controllo del Rising Edge che del Falling Edge. Come indicato nella tabella di Figura 8, il controllo della dead-band è disponibile solamente nei modi di funzionamento complementari.

Figura 10: complementary PWM

Figura 10: Complementary PWM

Push-pull PWM

Questa modalità viene utilizzata per pilotare alimentatori half e full-bridge e motori sincroni. Essa utilizza almeno due uscite, e genera dei segnali PWM che si alternano tra le due uscite nei cicli pari e dispari. Le uscite PWM sono disponibili soltanto su due dei sei pin di uscita (Figura 11).

Figura 11: push-pull PWM

Figura 11: Push-pull PWM

Push-pull con uscite complementari

Viene utilizzata per pilotare switch sincroni e circuiti a ponte con transistor. Le forme d’onda in uscita si presentano come due coppie di segnali a uscita doppia, con un’uscita primaria e una secondaria su ciascuna coppia (Figura 12).

Figura 12: push-pull complementare

Figura 12: Push-pull complementare

Push-pull con quattro uscite full-bridge

Il PWM push-pull con uscite full-bridge (si veda la Figura 13) viene utilizzato per gli inverter da tensione continua ad alternata, per gli stadi di uscita in classe D, e per i motori a induzione. I segnali di uscita sono disponibili solo su quattro dei sei pin di uscita.

Figura 13: push-pull con uscite full-bridge

Figura 13: Push-pull con uscite full-bridge

Push-pull con quattro uscite full-bridge complementari

Il PWM push-pull con uscite full-bridge complementari (si veda la Figura 14) viene utilizzato, come il modo precedente, per gli inverter da tensione continua ad alternata, per gli stadi di uscita in classe D, e per i motori a induzione. I segnali di uscita sono disponibili solo su quattro dei sei pin di uscita. Con questa modalità le uscite PWM primarie sono inviate su quattro pin, e le uscite complementari sui due pin di uscita rimanenti.

Figura 14: push-pull con uscite full-bridge complementari

Figura 14: Push-pull con uscite full-bridge complementari

Pulse-skipping

Questa modalità PWM viene impiegata per generare una serie di impulsi di lunghezza fissa in corrispondenza di ogni evento di tipo Period. Si utilizza soprattutto per i convertitori boost in modo tensione e ad alta efficienza. Affinchè il segnale PWM venga generato, occorre che l’evento Rising Edge asincrono sia attivo (livello alto), e l’evento Rising Edge sincrono si verifichi all’interno dello stesso set (singolo oppure multiplo) di eventi Period (si veda la Figura 15). In caso contrario, non verrà prodotto alcun segnale in uscita. Il segnale in uscita utilizza un solo pin.

Figura 15: pulse-skipping

Figura 15: Pulse-skipping

 

Figura 16: pulse-skipping complementare

Figura 16: Pulse-skipping complementare

Pulse-skipping complementare

Questa modalità PWM è analoga alla precedente, con la differenza che ora viene generato un segnale di uscita complementare, reso disponibile su un pin dedicato.

Full-bridge compatibile ECCP

Questo modo di funzionamento è stato progettato per essere associato al modo full-bridge del modulo ECCP. Viene detto compatibile ECCP poiché esso replica i segnali di uscita PWM richiesti per pilotare un circuito full-bridge in entrambe le direzioni forward e reverse, come indicato nella Figura 17.

Figura 17: full-bridge compatibile ECCP

Figura 17: Full-bridge compatibile ECCP

 

Figura 18: PWM a frequenza variabile

Figura 18: PWM a frequenza variabile

Frequenza variabile, duty cycle fisso

Questo modo di funzionamento è totalmente differente dai precedenti, e utilizza soltanto l’evento Period per generare il segnale PWM. In corrispondenza di ogni evento Period, l’uscita PWM viene commutata, producendo un segnale con duty cycle fisso.

Frequenza variabile, duty cycle fisso, complementare

E’ come il modo precedente, con l’aggiunta di un’uscita complementare (Figura 19).

Figura 19: duty cycle fisso, uscita complementare

Figura 19: Duty cycle fisso, uscita complementare

PWM A 3 FASI

Viene utilizzato negli alimentatori trifase e nelle applicazioni per il controllo motori con configurazione half-bridge. La configurazione half-bridge è composta da due driver di potenza collegati in serie tra la linea di alimentazione positiva (lato superiore) e la linea di alimentazione negativa (lato inferiore). Le tre uscite sono prelevate sulle giunzioni tra due driver in ogni half-bridge (Figura 20).

Figura 20: applicazioni tri-fase

Figura 20: Applicazioni trifase

In questa modalità operativa vengono utilizzate tutte e sei le uscite PSMC disponibili, ma soltanto due alla volta sono attive. Per fare girare il motore in un determinato verso e con una determinata velocità, occorre impostare opportunamente il contenuto del registro PSMC Steering Control (si veda la Figura 21).

Figura 21: PWM a 3 fasi

Figura 21: PWM a 3 fasi

CONCLUSIONI

Il PSMC è un modulo PWM a 16-bit che rappresenta la soluzione ideale per applicazioni quali: alimentatori switching, sistemi di illuminazione, e controllo di differenti tipologie di motori (brushless, a tre fasi, in continua). Attualmente la periferica è disponibile solo sui microcontrollori PIC16(L)F1782 e PIC16(L)F1783, ma in futuro sarà integrata anche in altri modelli della serie PIC.

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend