Generazione di due segnali PWM per controllo motore CC mediante DSP Admfc32x
SOMMARIO
1
UNITÀ DI GENERAZIONE PWM DEL ADMCF32X ........................................................................................ 1
PWM TIMER OPERATION ................................................................................................................................................. 2
REGISTRO PWMTM........................................................................................................................................................ 2
REGISTRO PWMDT (DEAD-TIME REGISTER) ................................................................................................................... 2
PWM DUTY-CYCLE ......................................................................................................................................................... 3
PWMTRIP ...................................................................................................................................................................... 3
2
GENERAZIONE DI MODELLI SINUSOIDALI PWM ...................................................................................... 4
3
IMPLEMENTAZIONE SOFTWARE.................................................................................................................... 5
LIBRERIE GENERAL PURPOSE ........................................................................................................................................... 5
Admcf32x.h ................................................................................................................................................................. 5
Flash_CT.h ................................................................................................................................................................. 5
Trigono.h .................................................................................................................................................................... 5
Putvectr.h.................................................................................................................................................................... 6
Macro.h....................................................................................................................................................................... 6
STRUTTURA DEI REGISTRI ................................................................................................................................................ 6
PROGRAMMA PRINCIPALE: LIBRERIA MAIN.H .................................................................................................................. 8
PROGRAMMA PRINCIPALE: MAIN.DSP .............................................................................................................................. 9
SORGENTE “MAIN.DSP”: PORZIONI SIGNIFICATIVE ........................................................................................................ 10
1
Unità di generazione PWM del ADMCF32X
Il generatore PWM del dispositivo ADMCF32X è un flessibile generatore PWM trifase che può essere
programmato per creare diversi tipi di modelli PWM.
Lo schema a blocchi di questa unità è illustrato in Figura 1; i blocchi principali generano sei segnali PWM
che escono dai pin AH,AL,BH,BL,CH e CL. Il codice del DSP può essere progettato per produrre la migliore
strategia PWM richiesta dall’applicazione, grazie anche alla presenza di tre registri (uno per fase) dedicati al
duty-cycle dei segnali PWM.
Figura 1.1
Azionamenti Elettrici per l’Automazione
a.a. 2002/2003
Pag 1 di 11
Generazione di due segnali PWM per controllo motore CC mediante DSP Admfc32x
Ciascuno dei sei segnali PWM può essere disabilitato da differenti enable bit del PWMSEG register. Inoltre
altri tre bit di controllo del PWMSEG (crossover mode) permettono lo scambio di due segnali PWM
consentendo un semplice controllo di motori ECM o brushless DC (BDCM).
Esistono due modi di operare del controller PWM e sono il single update mode ed il double ipdate mode. Nel
primo i modelli PWM generati sono simmetrici mentre nel secondo no. Il vantaggio di avere modelli
asimmetrici risiede nel fatto di produrre meno distorsioni; questo consente l’utilizzo in sistemi di controllo che
sono critici per il rumore.
PWM TIMER OPERATION
Il timer PWM controlla le operazioni interne all’unità di generazionePWM. Queste operazioni, nell’intero
periodo PWM, sono schematizzate in figura 1.2. Il contenuto a 16bit del registro PWMTM viene usato per
controllare la frequenza di switching dei segnali PWM. Durante la prima metà del ciclo il timer PWM
decrementa da PWMTM a 0, una volta a 0 la direzione del conteggio cambia ed il timer inizia ad
incrementare fino al valore PWMTM. In figura1.2 sono anche illustrati gli impulsi PWMSYN, generati dal pin
dedicato PWMSYNC, relativi ad operazioni in single o double update mode.
Figura 1.2
REGISTRO PWMTM
La frequenza di switching è direttamente controllata dal registro PWMTM la cui unità di generazione riesce a
realizzare frequenze di switching da un valore minimo di 153Hz ( quando PWMTM = 0xffff) ad un massimo
stabilito da quel valore per cui si hanno risoluzioni accettabili dei PWM dipendentemente dalla frequenza di
clock del DSP. La relazione che descrive il valore da assegnare al registro è:
PWMTM =
f clk _ out
2 * f pwm
da cui si ricava il periodo di switching
Ts = 2 * PWMTM * t ck
REGISTRO PWMDT (DEAD-TIME REGISTER)
E’ un registro a 10 bit che controlla il ritardo da inserire tra le commutazioni in ingresso al ponte H al fine di
evitare l’effetto di cortogamba che può essere causa di danneggiamento dei dispositivi di potenza.
Azionamenti Elettrici per l’Automazione
a.a. 2002/2003
Pag 2 di 11
Generazione di due segnali PWM per controllo motore CC mediante DSP Admfc32x
TD = 2 * PWMTD * t ck
Ad esempio fissando PWMDT = 10 (0x000A) con un tck = 50ns si ottiene un dead time di 1us.
PWM DUTY-CYCLE
Sono presenti sei uscite PWM (AL,AH,BL,BH,CL e CH) ma allo scopo di questa realizzazione ne sono
effettivamente utili solamente quattro; queste uscite sono controllate da tre registri a 16 bit PWMCHA,
PWMCHB e PWMCHC il cui valore intero controlla il duty-cycle delle uscite (es. PWMCHA regola AH e AL).
Questo valore intero è un numero multiplo del tempo di clock e indica il livello alto del segnale PWM nel
semiperiodo.
Esistono due modi di gestire il duty-cycle:
- Single update mode
- Double update mode
In questo contesto, però, sarà utile occuparsi solo del primo caso.
Nel Single update mode, quindi, i due segnali PWM sono perfettamente simmetrici rispetto alla metà del
periodo di switching, come si vede in figura 1.2:
Figura 1.2
Le relazioni che descrivono i tempi in cui i segnali sono alti:
T AH = 2 * ( PWMCHA − PWMDT ) * t ck
T AL = 2 * ( PWMTM − PWMCHA − PWMDT ) * t ck
da cui i duty-cycle:
D AH =
TAH ( PWMCHA − PWMDT )
TS
PWMTM
D AL =
TAL ( PWMTM − PWMCHA − PWMDT )
TS
PWMTM
Con una breve verifica si nota che non si possono avere valori negativi di TAH e TAL ma possono avere al
minimo valore nullo e al massimo pari a TS (Duty-cycle 100%).
PWMTRIP
In caso di guasti esterni è molto importante che i segnali PWM siano immediatamente disabilitati al fine di
garantire al controller una gestione sicura. Un fronte di discesa di
Azionamenti Elettrici per l’Automazione
a.a. 2002/2003
PWMTRIP scatena un istantaneo e
Pag 3 di 11
Generazione di due segnali PWM per controllo motore CC mediante DSP Admfc32x
asincrono spegnimento del controller PWM. Nello schema a blocchi Figura 1.1 è illustrato anche la circuiteria
relativa alla generazione del PWMTRIP.
2
Generazione di modelli sinusoidali PWM
L’uscita desiderata si ottiene variando ampiezza e frequenza del riferimento VrefX ; il risultato della
comparazione tra riferimento sinusoidale ed onda triangolare danno origine ai segnali PWM usati per
controllare i dispositivi di potenza i quali comandano il motore.
Figura 2.1
In figura 2.1 si ha una visione espansa del processo di generazione di un singolo PWM. Viene evidenziata la
relazione tra la tensione di riferimento VrefA ed il segnale risultante AH.
La tensione di riferimento sinusoidale risulta effettivamente campionata con un rapporto pari a quello della
frequenza di switching. Il campione, prelevato all’inizio di ciascun ciclo di modulazione viene usato per
calcolare il duty-cycle dell’intero periodo PWM.
Ad ogni ciclo il DSP deve contare un nuovo valore ON-Time da poter scrivere nei due registri del duty-cycle
dell’unità di generazione.; dalla figura 2.1 si intuisce che questo può essere trovato calcolando il tempo Ton,A
, di ogni ciclo, dipendentemente dal campione prelevato dal riferimento VrefA. Nel caso d’esempio si assume
che la tensione di riferimento sia rappresentata con un numero con segno in complemento a due (formato
1.15), così che 1.0 rappresenti il massimo picco di tensione applicato al motore.
Sempre dalla Figura 2.1 si nota che i triangoli MPQ e MST sono identici:
|PQ|/|ST| = |PM|/|SM|
da cui:
1
(TS − Ton , A ) 1 − V
ref , A
2
=
1
2
TS
2
e ricavandone Ton,A
Azionamenti Elettrici per l’Automazione
a.a. 2002/2003
Pag 4 di 11
Generazione di due segnali PWM per controllo motore CC mediante DSP Admfc32x
Ton, A = TS *
1 + Vref , A
2
il valore da scrivere nel registro PWMCHA si calcola con:
PWMCHA = PWMTM
1 + Vref , A
2
Da quest’ultima relazione si osserva che per VrefA pari a 0.0 nel duty-cycle register viene scritto un valore pari
a metà periodo, corrispondente ad un dut-cycle del 50%. Se, invece, VrefA = 1.0 si ottiene un
PWMCHA=PWMTM corrispondente ad uno stato sempre ON. Con VrefA = -1.0 cioè PWMCHA=0
corrispondente ad uno stato sempre OFF.
3
Implementazione Software
Il programma utilizza la funzione trigonometrica Seno per creare i due segnali di riferimento sinusoidali.La
fase e’ scalata in modo tale da far si che l’intervallo [-π,π] sia mappato nel formato 1.15.
Formato 1.15
0
-2
segno
2
-1
1
2
–2
2
2
–3
3
2
-4
4
2
–5
5
2
–6
6
2
-7
7
2
-8
8
2
-9
9
2
-10
10
2
-11
11
2
–12
12
2
-13
13
2
-14
2
14
-15
15
Ogni volta che verra’ servita la PWMSync ISR (ogni 100us con una freq di 10kHz) la fase viene
incrementata di una quantita’ dipendente dal parametro Delta che rappresenta la massima frequenza
d’uscita.Tale frequenza (nel nostro caso 5 Hz) e’ ragguinta solo se si inizializza la variabile AD_IN con
0x7FFF,che nel formato 1.15 rappresenta 1,0 in decimale.
La relazione che lega la massima frequenza di fondamentale e il valore di Delta e’ la seguente:
f 1,max = f s
Delta
216
dove fs e’ la frequenza di switching della PWM. Nel nostro esempio,con Delta = 0x0020 = 32 riusciamo a
raggiungere una frequenza massima di 4,88Hz.
Il sw realizzato e’ composto dal programma principale Main.dsp, il quale fa uso delle librerie general purpose
fornite dal costruttore Analog Devices, le quali contengono le macro piu’ comuni per la gestione degli
interrupt, e le costanti, quali ad esempio gli indirizzi in data memory dei registri.
LIBRERIE GENERAL PURPOSE
Admcf32x.h
Tutti I registri del DSP core (PWM, AUX, PIO ecc..) sono mappati in memoria a partire dalla locazione
0x2000. Questa libreria contiene, per ogni registro, il suo relativo indirizzo nella Data Memory.
Flash_CT.h
Dispone delle macro di gestione del blocco di memoria Flash e del Boot From Flash Bit (cancellabile via
hw con un segnale di 3,5v su un qualsiasi piedino dei canali PIO.Nel nostro caso abbiamo usato il PIO6).
Trigono.h
Contiene le macro per l’implementazione via sw (mediante algoritmi di approssimazione) delle principali
funzioni trigonometriche.
Azionamenti Elettrici per l’Automazione
a.a. 2002/2003
Pag 5 di 11
Generazione di due segnali PWM per controllo motore CC mediante DSP Admfc32x
Putvectr.h
Lettura/scrittura dei registri.
Macro.h
Gestione dell’Interrupt Vector, scrittura/lettura locazioni di memoria (DM), operazioni di
clear/set/toggle/test su bit ecc..
I listati delle sopracitate librerie si possono trovare nelle directory _inclF32x (header files *.h) e _libF32x
(dsp files *.dsp).
STRUTTURA DEI REGISTRI
E’ opportuno mostrare la struttura dei principali registri utilizzati nell’applicazione (per dettagli vi
rimandiamo alla sezione 1),ponendo particolare attenzione a quelli dedicati alla PWM Contro Unit .
Infatti,una volta decisi i parametri di progettazione (es:frequenza di switching del segnale PWM, tempo morto
ecc.) non basta far altro che inserire in questi registri l’opportuno valore mediante le funzioni che potete
vedere qui.
Figura 3.1: PWM Switching frequency.
Figura 3.2: PWM Dead Time.
Figura 1.3: PWM Output Control Unit.
Azionamenti Elettrici per l’Automazione
a.a. 2002/2003
Pag 6 di 11
Generazione di due segnali PWM per controllo motore CC mediante DSP Admfc32x
Figura 3.4: Durata dell'impulso PWMSYNC.
Figura 3.2: Minima durata dell'impulso PWM.
Figura 3.3: Gate Drive Unit.
Figura 3.4: Regolazione dei Duty cycles.
Azionamenti Elettrici per l’Automazione
a.a. 2002/2003
Pag 7 di 11
Generazione di due segnali PWM per controllo motore CC mediante DSP Admfc32x
PROGRAMMA PRINCIPALE: LIBRERIA MAIN.H
Il file contiene le costanti necessarie per l’inizializzazione della PWM Control Unit. In questa applicazione si
e’scelto :
• una frequenza di switching di 10kHz;
• tempo morto o cortogamba (per evitare un corto nello stadio di potenza durante le commutazioni da
una diagonale all’altra del ponte) di 500ns;
• durata minima dell’impulso pwm di 1us;
• durata dell’impulso di sincronizzazione (quello che cadenza l’esecuzione della PWMSYNC_ISR) pari
a 1,54us;
• segnale sinusoidale di riferimento a 5 Hz;
• angolo di sfasamento delle due sinusoidi di 180°.
Azionamenti Elettrici per l’Automazione
a.a. 2002/2003
Pag 8 di 11
Generazione di due segnali PWM per controllo motore CC mediante DSP Admfc32x
PROGRAMMA PRINCIPALE: MAIN.DSP
Il main.dsp e’ fondamentalmente suddiviso in due parti:la sezione dedicata all’inizializzazione della PWM
Control Unit e dalla gestione della Interrupt Service Routine (associata all’IRQ della PWMSYNC).Da notare
infatti,che avendola mascherata a livello sw mediante il settaggio opportuno dei registri IFC (Interrupt Force
& Clear) e IMASK,tale ISR viene servita ogni 100us ad una frequenza di switching della PWM di 10kHz.Il
diagramma sottostante mosta i blocchi costitutivi del file main.dsp.
Per la compilazione del sorgente occorre lanciare il file build.bat, facendo particolare attenzione nel
controllare prima che il path all’interno del suddetto file sia corretto.
main
Gestione
Della
Flash
Memory e del
Boot bit. Flash
Inizializzazion
e
blocco
PWM.
Settaggio
Interrupt
Vector
Single Update
Mode
abilitato.
Maschero
IRQ2
con
PWMSYNC_I
SR
Ogni 100us
PWMSYNC
ISR
Fase A
Fase B
Lettura di Theta
(fase corrente) e
Delta
(freq.desiderata)
Calcolo della nuova fase:
Theta=Theta + Delta *AD_IN
Tensione di riferimento per la
fase A:
VrefA = Sin(Theta)*AD_IN
Azionamenti Elettrici per l’Automazione
a.a. 2002/2003
Lettura di Theta
(fase corrente)
Aggiornamento
duty
cycles
mediante scrittura
sui
registri
PWMCH(A,B)
Calcolo della nuova fase:
Theta=Theta –180°
Tensione di riferimento per la fase
B:
VrefB = Sin(Theta)*AD_IN
Pag 9 di 11
Generazione di due segnali PWM per controllo motore CC mediante DSP Admfc32x
SORGENTE “MAIN.DSP”: PORZIONI SIGNIFICATIVE
Azionamenti Elettrici per l’Automazione
a.a. 2002/2003
Pag 10 di 11
Generazione di due segnali PWM per controllo motore CC mediante DSP Admfc32x
E’ utile ricordare il metodo con cui vengono aggiornati i registri dedicati ai duty cycles dei canali A e B (C
infatti a noi non serve,ed e’ stato disabilitato mediante il registro PWMSEG).
PWMCHA =
PWMTM
(1 + VrefA)
2
analogamente per l’altro canale.
Per la gestione dell’ISR PWMTRIP e’ stato deciso di far eseguire una semplice istruzione nop.Tuttavia in
ambito industriale occorre dedicare molta attenzione a questo aspetto in quanto e’ in gioco la sicurezza
dell’impianto. Infatti, ogni qual volta accade un guasto nel sistema controllato, un fronte di discesa sul canale
PWMTRIP causa un istantaneo spegnimento del generatore PWM per garantire la sicurezza del
sistema.Quindi puo’ essere necessario introdurre le blocco PWMTRIP_ISR una gestione opportuna di
questo evento.
Azionamenti Elettrici per l’Automazione
a.a. 2002/2003
Pag 11 di 11
Scarica

1 Unità di generazione PWM del ADMCF32X