Declanșarea generatorului periferic de semnal

by donpedro

Aplicațiile embedded de astăzi sunt extrem de complexe, cu un singur microcontroler care gestionează mai multe funcții. Aceste aplicații necesită o siguranță sporită și un timp optim de execuție, cu un răspuns în timp real, împreună cu sincronizarea perfectă a diferitelor funcții. De la controlul motorului, cu corecție integrată a factorului de putere, până la manipularea intensității luminii, aplicațiile complexe necesită comutare facilă între diverse module. Soluțiile de sincronizare și secvențiere comandate de procesor sunt supuse latențelor inerente, care nu pot fi întotdeauna prezise cu exactitate. Această abordare consumă, de asemenea, lățime de bandă prețioasă, irosind capacitățile procesorului care ar putea fi folosite pentru a optimiza performanța aplicației. Generatorul periferic de semnal de declanșare (PTG) este un nucleu periferic independent (CIP), prezent în controlerele de semnal digital pe 16-biți dsPIC33(DSC) de la Microchip, care permite coordonarea și secvențierea precisă a funcțiilor din aplicațiile complexe, eliberând procesorul principal de anumite sarcini. Mai multe exemple sunt detaliate pentru a arăta modul în care PTG-ul ajută la eficientizarea controlului secvențial al perifericelor pentru aplicații critice de timp, cum ar fi controlul unui motor cu corecția factorului de putere, controlul intensității luminii sau generarea unui semnal de frecvență constantă, semnal care acționează și ca o sursă de ceas independentă de nucleu. Deoarece trigger-ul PTG este independent de CPU, sarcinile menționate pot fi făcute în timp ce procesorul execută alte funcții critice sau este în repaus pentru a economisi energie.

După cum sugerează și numele, un PTG este un ordonator programabil de către utilizator care generează semnale de declanșare cu secvențe complexe ale semnalului de intrare pentru a coordona funcționarea altor periferice de pe cip. Aplicațiile care utilizează PTG-ul se folosesc și de alte periferice, cum ar fi convertorul analogic-digital (ADC), comparatorul de ieșire (OC), generatorul de semnal modulat în lățimea pulsului (PWM), contoarele de timp și controlere de întrerupere pentru a realiza o secvență complexă a semnalelor de declanșare și a răspunsurilor acestora. PTG-ul nu numai că reduce dependența aplicației de CPU, ci, independent, are grijă și de interacțiunile modulelor, ceea ce ajută la reducerea complexității software și la menținerea modularității.

Perifericul PTG acceptă comenzi pe 8-biți, numite comenzi de tip treaptă, pentru registrele în așteptare ale PTG-ului. Fiecare comandă treaptă pe 8-biți este alcătuită dintr-un cod de comandă pe 4-biți și un câmp de opțiune pe 4-biți. Aceste comenzi definesc o secvență de evenimente pentru generarea de semnale de declanșare către periferice. Comenzile de tip treaptă pot fi, de asemenea, utilizate pentru a genera cereri de întrerupere către nucleu.

Controlul motorului și factorului de putere

Într-o aplicație ce integrează corecția factorului de putere (PFC) și controlul motorului, un singur DSC controlează un motor sincron cu magneți permanenți folosind o schemă de control orientat după câmp (FOC), precum și un convertor PFC. Această aplicație necesită trei canale PWM pentru a controla funcționarea motorului și un canal PWM suplimentar pentru a controla funcționarea PFC-ului. Un periferic de tip comparator de ieșire (OC) poate fi utilizat pentru a mări numărul de canale PWM disponibile pentru aplicație, dincolo de numărul de canale PWM de mare viteză disponibile pe dispozitiv.

Figura 1: Executarea codului folosind întreruperi PTG

Perifericul PWM împreună cu un periferic OC, pot fi utilizate pentru a genera semnalele necesare pentru controlul motorului și funcționarea PFC-ului. Cu toate acestea, într-o aplicație precum PFC, timpul de execuție este foarte important, făcând necesară finalizarea diverselor sarcini într-un timp optim de execuție. Acestea includ sincronizarea controlului motorului și PFC PWM, declanșarea perifericului ADC pentru conversie și comutarea canalelor ADC utilizate pentru controlul motorului și semnalele de reacție PFC.

Aceste cerințe pot fi realizate eficient folosind perifericul PTG, care poate sincroniza perifericele de mare viteză PWM și OC și poate genera semnale de declanșare pentru perifericele ADC prin monitorizarea fronturilor semnalului periferic PWM de mare viteză. De asemenea, monitorizează întreruperea conversiei ADC pentru a genera întreruperi adecvate, executând codul de control pentru FOC și digital PFC. Reduce intervenția procesorului, ceea ce face ca nucleul de conducere periferică să fie independent. Acest lucru reduce consumul total de energie al aplicației voastre eliberând procesorul pentru a îndeplini funcții mai importante. Frecvența de comutare a controlului motorului și a PFC PWM trebuie selectată astfel încât să fie în multiplu de număr întreg.

ADC-ul din dsPIC® DSC este capabil să facă simultan eșantionarea pentru patru canale. Atât algoritmii FOC, cât și PFC au propriile canale analogice care trebuie să fie eșantionate simultan, deoarece relația dintre faze a acestor semnale este esențială pentru implementarea unui control eficient.

Semnalele de răspuns ale controlului motorului și ale PFC ar trebui să fie selectate astfel încât, alternând între selecțiile canalului ADC, să fie eșantionate atât semnalele de control ale motorului cât și cele PFC. Semnalele de control ale motorului și ale PFC pot fi conectate la circuitele S&H (Sample and Hold) înainte de declanșarea ADC-ului, pe baza fronturilor semnalului PWM. Canalele ar trebui să fie configurate în așa fel încât, la sfârșitul unui eșantion de patru canale și al secvenței de conversie, rezultatele conversiilor fie pentru FOC, fie pentru PFC să fie disponibile în registrele tampon ADC corespunzătoare.

După setarea biților de selecție a canalului pentru a conecta semnalele de răspuns de la PFC la circuitul S&H al unui ADC, pentru fiecare ciclu PFC PWM, trebuie să fie generat un semnal de declanșare. În mod similar, pentru fiecare ciclu PWM de control al motorului, un semnal de declanșare pentru un ADC trebuie să fie generat după setarea biților de selecție a canalului pentru a conecta semnalele de reacție ale controlului motorului la circuitul S&H al ADC. Prin urmare, perifericul PTG este configurat pentru a genera semnal de declanșare pentru ADC prin monitorizarea fronturilor impulsurilor de control ale motorului și ale PFC PWM. În plus, două întreruperi PTG sunt generate pentru a executa codul pentru FOC și PFC, așa cum se arată în figura 1.

După cum se vede în acest exemplu, un PTG simplifică implementarea prin secvențierea eficientă a utilizării ADC-ului și PWM-urilor pentru a realiza controlul motorului și implementarea PFC-ului într-un dispozitiv dsPIC33.

Controlul iluminatului

Figura 2: Controlul ciclurilor de lucru al celor două comparatoare folosind PTG

Într-o aplicație de control a intensității luminii, se poate folosi un generator de semnal PWM care utilizează OC pentru a controla strălucirea sursei de lumină.

În această aplicație, sunt folosite două periferice de tip OC, iar ciclurile lor de funcționare sunt controlate prin semnalele de intrare obținute de la două canale ADC separate. În funcție de fiecare valoare transmisă de ADC, ciclul de funcționare este actualizat. Perifericul PTG suportă un mod mai simplu de sincronizare a perifericelor ADC și OC. În plus, PTG ajută la evitarea unui blocaj de calcul periferic pentru a spori siguranța aplicațiilor.

Pentru a realiza sincronizarea, circuitul monitorizează mai întâi ADC-ul și generează întreruperi adecvate pentru a schimba ciclul de lucru al OC-ului. Apoi schimbă canalul ADC fără intervenția procesorului, deoarece PTG poate face acest lucru în mod independent. Ca o caracteristică suplimentară de siguranță, în cazul unei defecțiuni neașteptate, perifericul PTG are un contor de timp dedicat supravegherii pentru a monitoriza și efectua acțiunile de corecție necesare. O diagramă bloc a acestei aplicații este prezentată în figura 2.

Contorul de timp destinat supravegherii (temporizatorul watchdog) din perifericul PTG va preveni situația în care PTG-ul așteaptă la nesfârșit un eveniment extern atunci când execută o comandă, care așteaptă o stare hardware de declanșare de tip pornit/oprit. În această aplicație, PTG-ul va aștepta un semnal de declanșare care confirmă faptul când conversia analog-digitală a fost efectuată. Odată activat, contorul de timp destinat supravegherii începe să cronometreze când se începe execuția comenzii și este dezactivat când comanda este finalizată. Dacă un eveniment preconizat nu este realizat înainte de a expira termenul limită al contorului de timp destinat supravegherii, perifericul PTG anulează comanda în curs de desfășurare și oprește secvențiatorul. În continuare, se emite un semnal de întrerupere către CPU pe baza erorii contorului de timp pentru supraveghere.

Aceasta acționează ca o caracteristică de siguranță pentru recuperarea dintr-o situație în care perifericul ADC sau PTG încetează să funcționeze. Aceste periferice pot fi reinițializare și repornite în timpul întreruperii generate de semnalul de eroare al contorului.

PTG-ul va face ca nucleul aplicației să fie independent prin comutarea canalelor ADC și monitorizarea perifericelor fără intervenția procesorului. Aceasta permite utilizarea CPU-ului pentru alte sarcini din aplicație.

PTG-ul singur va avea grijă de toate interacțiunile dintre periferice, ceea ce contribuie la reducerea complexității software și la menținerea modularității. Contorul de timp destinat supravegherii perifericului PTG va ajuta la recuperarea de la orice defecțiune catastrofală, oferind astfel o aplicație mai robustă.

Forma de undă de frecvență constantă

Figura 3: Funcție de mascare programată de către utilizator

Un periferic PTG poate fi utilizat pentru a genera un semnal de frecvență constantă care acționează și ca sursă de ceas. PTG-ul trimite un semnal de declanșare către un comparator care acționează ca o selecție de intrare pentru mască. Lățimea impulsului de declanșare a PTG-ului poate fi variată, PTG-ul având propriul său contor de timp. Generatorul periferic de semnal de declanșare poate funcționa, de asemenea, ca o selecție de intrare de mască pentru amplificatorul operațional și pentru comparator, așa cum se arată în figura 3.

Folosind această caracteristică, o ieșire din PTG poate fi trecută printr-un periferic de tip comparator. Acesta este configurat astfel încât intrarea inversoare să fie conectată la masă, iar intrarea ne-inversoare să fie conectată la o tensiune internă de referință.

Impulsul de declanșare va apărea direct ca semnal de ieșire din comparator. Atâta timp cât PTG-ul generează semnale de declanșare continue, comparatorul va genera un semnal cu o formă de undă de frecvență constantă. Lățimea pulsului formei de undă va fi dată de un ciclu al ceasului PTG-ului.

Timpii de pornire/oprire pot fi controlați prin contorul de timp al PTG-ului și prin biți care controlează lățimea pulsului. Lățimea pulsului de ieșire va decide timpul de oprire a formei de undă de ieșire, iar contorul de timp va decide timpul de pornire a formei de undă, ceea ce reprezintă întârzierea dintre perifericele comparatoare care declanșează.

În funcție de polaritatea de ieșire a comparatorului, timpul de oprire va fi controlat fie de contorul de timp, fie de biții care controlează lățimea pulsului. Frecvența de ieșire poate fi controlată și de un registru care acționează ca un divizor de ceas.

Prin modificarea polarității de ieșire a comparatorului, o formă de undă complementară poate fi generată folosind patru comparatoare periferice. Lățimea pulsului poate fi modificată folosind biții de control ai lățimii impulsului, care reduc frecvența de ieșire. Prin urmare, o formă de undă constantă poate fi generată folosind un PTG și comparatoare periferice.

Printre avantajele utilizării PTG-ului în această aplicație se numără faptul că ieșirea poate acționa ca o sursă de ceas constantă și poate rula complet independent de nucleul principal. Folosind mai multe periferice comparatoare, se poate genera chiar și o formă de undă complementară. PTG-ul funcționează, de asemenea, în moduri de economisire a energiei, precum repaus și inactiv (sleep).

Rezumat

Perifericul PTG din controlerele de semnal digital dsPIC33 de la Microchip permite utilizatorilor să genereze secvențe de evenimente complexe pentru aplicații, cu o flexibilitate sporită acolo unde este necesară o temporizare riguroasă sau un control de putere eficient. Un PTG permite diferitelor periferice să interacționeze între ele, fiind asistat puțin de procesor sau chiar lucrând independent de acesta, îmbunătățind capabilitățile periferice existente, extinzând astfel posibilitățile pe care orice periferic dat le poate realiza.

Folosirea unui periferic PTG oferă un timp de răspuns mai rapid și o sarcină software redusă. Perifericul oferă, de asemenea, funcții integrate, cum ar fi un contor de timp dedicat supravegherii (temporizator watchdog), care crește siguranța funcțională.

Autor: Ravikiran Shetty,
Inginer de aplicații, Microchip

Surse adiționale:
Aplicații ale generatorului de semnal de declanșare periferică (PTG)
Notă de aplicații: http://ww1.microchip.com/downloads/cn/AppNotes/cn586398.pdf

Microchip Technology   |   https://www.microchip.com

Sigla-Microchip

S-ar putea să vă placă și

Adaugă un comentariu