La parte principale dell’intero controller è sicuramente quella di pilotaggio del motore, che nel caso di un motore brushless, non è un’operazione banale, infatti devono essere eseguite diverse operazioni che si vanno a sommare a tutte quelle che il microcontrollore deve svolgere per poter far funzionare in modo corretto il sistema rasaerba. La scelta del microcontrollore LPC1549 è stata dettata dalla presenza di una particolare periferica di cui esso è dotato, la StateConfigurableTimer/PWM (SCTimer/PWM). Questa periferica, proprietaria di NXP, aggiunge alle classiche caratteristiche di un timer, la possibilità di configurare una macchina a stati che può ricevere in ingresso segnali provenienti sia dall’esterno sia dall’interno del microcontrollore. Ha la possibilità di generare segnali PWM multipli e segnali PWM con dead-time. Una caratteristica molto importante di questa periferica è quella per cui, una volta configurata, è in grado di funzionare in modo completamente autonomo e indipendente rispetto al core del microcontrollore. Il firmware ha il compito di far partire/fermare il timer e/o la macchina a stati programmata e di servire le eventuali richieste di
CAPITOLO 4: Progettazione Firmware
68
interrupt della periferica, inoltre è anche possibile riconfigurarla durante il run-time. Queste caratteristiche sono state fondamentali per la scelta di tale microcontrollore per l’applicazione progettata; avere una periferica con tali caratteristiche è un vantaggio non indifferente per implementare un sistema di pilotaggio per un motore brushless.
È necessario spiegare brevemente il significato di alcuni termini tecnici connessi all’utilizzo della periferica affinché risulti più semplice al lettore la comprensione della spiegazione seguente.
Even t: è molto importante capire a cosa ci si riferisce quando si usa questo termine; l’event è principalmente la transizione della macchina a stati; sono diverse le possibili condizioni che possono definire un event: una couter match condition, fronti o livelli su segnali di input (o output) e combinazione delle due precedenti condizioni in or o and logico. Il verificarsi di un event oltre che far cambiare stato alla macchina, può anche controllare segnali di uscita e generare interrupt, inoltre esistono particolari event che non fanno cambiare stato alla macchina. Durante la definizione di un event è necessario indicare in quale stato esso è attivo e dunque si può verificare;
State: sono le variabili di stato della macchina sequenziale;
Stop: il bit di STOP del control register della periferica consente di bloccare il timer attraverso firmware e anche attraverso event della stessa macchina a stati;
CAPITOLO 4: Progettazione Firmware
69
H alt: ha lo stesso effetto del bit di STOP, ma su questo bit ci può agire solo il firmware, e non event interni alla macchina a stati; M atch register: quando il counter raggiunge il valore contenuto
nel match register, viene generato un event; questi registri possono essere più di uno e gli event generati in questo modo possono resettare il contatore ([16]);
È stata implementata con SCTimer/PWM la macchina a stati che genera i segnali che pilotano i MOS del inverter. In funzione della posizione del rotore, la macchina a stati decide quali siano le fasi da pilotare; il pilotaggio dei MOS che attivano le fasi scelte non è del tipo ON/OFF ma è possibile modulare la corrente da far scorrere nelle fasi del motore, andando a modulare in PWM i segnali di controllo dei gate dei MOS. Facendo riferimento alla definizione di Event che è stata data prima, è possibile descrivere come è stata configurata la periferica in questa applicazione.
La macchina a stati ha dodici event differenti più uno: sei sono responsabili della generazione della modulazione PWM, altri sei delle transizioni di stato e infine c’è un event speciale che è in grado di verificarsi in qualsiasi
CAPITOLO 4: Progettazione Firmware
70
stato ed è quello responsabile del reset dei segnali d’uscita. Questa macchina è formata da sei stati come quello in Figura 29, ognuno dei quali avrà dunque un event per transire allo stato successivo e uno che si verifica ogni qual volta il conteggio del timer raggiunge il valore contenuto in un match register (match register 1), che contiene un valore proporzionale al duty-cycle che si vuole attribuire al segnale PWM da generare. Gli eventi di transizione, invece, vengono generati in funzione dei fronti in salita e in discesa degli ingressi della macchina a stati (sono i segnali che comunicano informazioni sulla posizione del rotore) in AND logico con la condizione in cui il contatore ha raggiunto il valore di fondo scala (match register 0). Gli altri eventi invece non sono responsabili di cambiamenti di stato ma generano le commutazioni delle uscite in modo tale da generare la modulazione PWM. Ogni qualvolta il conteggio del timer raggiunge il valore del match register 1, le uscite connesse a quell’event vengono settate. Il meccanismo di generazione della modulazione PWM è il seguente: l’uscita rimane bassa fino al verificarsi dell’event y che la setta (Figura 29), alla fine del periodo, ovvero quando il timer raggiunge il valore contenuto in match register 0, l’event 0 resetta l’uscita, questo meccanismo si ripete sulle stesse uscite fin tanto che lo stato della
Figura 29: Singolo stato della macchina di gestione dei segnali di controllo dei MOS dell’inverter trifase
State N From state N-1 To state N+1 Event x Event y Event 0
CAPITOLO 4: Progettazione Firmware
71
macchina rimane costante. Il periodo dei segnali PWM generati è pari al (match register 0) * Tckl e duty cycle pari a 1 −𝑚𝑎𝑡𝑐ℎ 𝑟𝑒𝑔𝑖𝑠𝑡𝑒𝑟 1
𝑚𝑎𝑡𝑐ℎ 𝑟𝑒𝑔𝑖𝑠𝑡𝑒𝑟 0. Consideriamo
per esempio lo stato nel quale vengono attivati gli switch del ponte AH e
BL.
Quello che accade al segnale PWM è rappresentato nella Figura 30, nella quale, è rappresentato l’andamento del conteggio del timer in funzione del tempo (nella parte superiore), mentre il grafico sottostante rappresenta l’andamento del segnale PWM di controllo del MOS AH (quello di BL è identico).
La codifica degli stati della macchina è una codifica Gray e il codice corrispondente a ciascuno stato è uguale al codice rappresentato dai tre segnali di ingresso considerati come una parola a tre bit formata da Hall_A, Hall_B, Hall_C. I segnali di ingresso alla macchia a stati che siano segnali Hall o segnali generati dalla zero-crossing detection, hanno
CAPITOLO 4: Progettazione Firmware
72
lo stesso andamento come abbiamo potuto constatare nei capitoli precedenti: la combinazione dei tre segnali vista come una parola a tre bit, come appena descritto, ha delle variazioni di un bit per volta ogni 60° elettrici, rispettando in questo modo con la codifica Gray.
STEP
HALL
STATE EVENT DRIVE
H A H B H C 1 1 0 1 5 3 SWA H SWBL 2 1 0 0 4 1 SWA H SWCL 3 1 1 0 6 5 SWBH SWCL 4 0 1 0 2 4 SWBH SWA L 5 0 1 1 3 6 SWCH SWA L 6 0 0 1 1 2 SWCH SWBL
CAPITOLO 4: Progettazione Firmware
73
Tabella 1: Corrispondenza stati, event e switch del ponte pilotati (SW con indice dispari pilotano le parti alte del ponte quelli con indice pari le parti basse)
Questo risulta essere un vantaggio in quanto, fissato lo stato è noto a priori su quale dei tre segnali H (sono gli ingressi della macchina a stati, ovvero i segnali che danno informazioni sulla posizione del rotore) ci sarà la transizione che deciderà il momento nel quale la macchina dovrà passare dallo stato attuale al successivo: ad esempio facendo l’ipotesi che la macchina a stati si trovi nello stato 5, la periferica controlla solo l’ingresso corrispondente a HC in quanto è noto a priori che deve essere una sua transizione verso il basso a causare la transizione di stato. La codifica degli stati realizzata in questo modo permette di poter andare a settare lo stato iniziale della macchina in modo semplice: il firmware legge lo stato dei segnali Hall, il quale corrisponde direttamente alla codifica dello stato iniziale della macchina. Sapendo come evolvono i segnali Hall (o i segnali equivalenti) dunque è possibile descrivere la macchina a stati nella sua parte relativa alle transizioni. Le uscite invece sono funzione degli stati della macchina. In ogni stato vengono attivate le uscite che vanno a pilotare due MOS del ponte, uno in grado di connettere la fase alla tensione di alimentazione e l’altro in grado di connettere la relativa fase a massa. Per quanto detto questa macchina a stati appartiene alla tipologia delle macchine dette di Moore, in quanto le uscite sono funzione solo degli stati e non degli ingressi, che invece hanno il compito di far transire gli stati. Il diagramma a palle della macchina a stati risulta essere il seguente, con Hx (x= A, B, C) sono indicati i segnali di ingresso con SWy (y=AH, AL, BH, BL, CH, CL) i segnali di uscita che corrispondono ai sei segnali di controllo degli switch.
CAPITOLO 4: Progettazione Firmware
74
Gli EVTx (x= 1, 2, 3, 4, 5, 6) sono gli event che si verificano quando il counter raggiunge il match register 1, mentre l’event 0 si verifica al raggiungimento del match register 0, condizione che si deve anche
101 100 110 011 001 010 EVT 3 SW1=SW4=1 EVT 1 SW1=SW6=1 EVT 5 SW3=SW6=1 EVT 4 SW3=SW2=1 EVT 6 SW5=SW2=1 EVT 2 SW5=SW4=1 EVT12 /HC EVT9 HB EVT8 /HA EVT10 /HB EVT7 HA ALL STATES EVT 0 SW1=SW2=SW3=SW4=SW5=SW6=0
CAPITOLO 4: Progettazione Firmware
75
verificare in and logico con quella sui segnali HA, HB, HC per eseguire la transizione tra gli stati.
Valori contenuti nei match register:
Match register 0: PWM_PERIOD (500); Match register 1: Variabile inizialmente è 300; fclk del timer è settato a 10 MHz (Tclk 100 ns);
Dunque in conclusione tenendo presente dei parametri sopra riportati, il periodo dei segnali PWM risulta essere pari a 𝑇𝑃𝑊𝑀 = 500 𝑇𝑐𝑙𝑘 = 50 𝜇𝑠, che corrispondono ad una frequenza pari a 𝑓𝑃𝑊𝑀 =
1
𝑇𝑃𝑊𝑀 = 20 𝑘𝐻𝑧.