Generare segnali PWM con i moduli Output Compare sui PICmicro a 16 e 32 bit

Ho preparato un manualetto in formato PDF che illustra il funzionamento dei moduli Output Compare presenti sui PICmicro a 16bit (PIC24 / dsPIC) e sui PICmicro a 32bit. I moduli Output Compare vengono utilizzati per la generazione di segnali modulati in ampiezza (PWM). In particolare esistono due tipi di moduli OC: quelli che io chiamo “semplici” e quelli con timers dedicati. L’utilizzo di questi due moduli è differente e nel documento in oggetto vengono illustrate le differenze, le impostazioni ed esempi di codice per un rapido utilizzo.

I moduli Output Compare con timers dedicati sono in grado di generare segnali PWM con due diverse modalità: simmetrica ed asimmetrica, in questo documento viene spiegata la differenza tra i due e come settare i registri per ottenere l’uno o l’altro tipo di segnale. Il documento fa riferimento al modulo Output Compare with dedicated Timers presente sul PIC24FJ64GB002 e al modulo Output Compare presente sul PIC32MX250F128BPIC32MX220F032B. Prima di leggere questa brief-note è comunque necessario essere a perfetta conoscenza di cosa sia un segnale PWM e di concetti basilari come frequenza,  duty cycle ecc. Per tale motivo vi invito a leggere il tutorial PWM di Mauro Laurenti presente a questo link.

Per gli utenti di ORbit16™ ho preparato 4 demo di utilizzo del modulo OC con timers dedicati (PIC24FJ64GB002) e 1 demo di utilizzo del modulo OC (PIC32MX220F032B / PIC32MX250F128B), disponibili nell’apposita pagina di esempi sul sito dedicato ad ORbit16™.

Le 4 demo relative al PIC24F sono 2 per la modalità simmetrica e 2 per la modalità asimmetrica. Delle 2 demo, per ogni modalità, la prima illustra come generare un segnale PWM modulato a 20KHz con un duty cycle fisso del 50% e la seconda illustra come variare il duty cycle utilizzando un potenziometro collegato su un ingresso analogico. La demo relativa al PIC32MX illustra l’utilizzo dell’unica modalità presente su tale modulo OC per la generazione di un segnale PWM modulato a 20KHz con un duty cycle del 50%. Dato che per il PIC32MX sono anche presenti esempi di utilizzo del modulo A/D, l’utente riuscirà facilmente ad implementare anche qui la variazione del duty cycle con il potenziometro: non voglio togliervi tutto il divertimento!

A supporto di questo documento, oltre ai sorgenti di esempio, ho anche realizzato due video che aiutano a capire la differenza tra un segnale PWM simmetrico (center-aligned) e uno asimmetrico (edge-aligned) :

Segnale PWM simmetrico o center-aligned:

Segnale PWM asimmetrico o edge-aligned:

Downloads

Vi prego di fare caso alla cura con cui preparo il materiale di supporto agli utenti di Settorezero: se avete perso un po’ di tempo ad impazzire con i registri dei moduli OC, vi potete rendere conto delle settimane di lavoro che ci sono dietro a questo documento che vi accingete a scaricare con tutti gli annessi (codici di esempio, video, articolo). Abbiate rispetto del lavoro altrui osservando le note del disclaimer e le avvertenze riportate nel documento, e, se ne avete la possibilità, supportate settorezero con l’acquisto dei progetti elencati nella sezione servizi. Qui non copiamo niente da nessuno, tutto quello che trovate è frutto della nostra fatica e del nostro prezioso tempo.

Generare segnali PWM con i moduli OC sui PICmicro a 16 e 32bit (952 download)

Se questo articolo ti è piaciuto, condividilo su un social:
Se l'articolo ti è piaciuto o ti è stato utile, potresti dedicare un minuto a leggere questa pagina, dove ho elencato alcune cose che potrebbero farmi contento? Grazie :)