Archivi tag: PLD

Il driver per motori BLDC

E’ passato un po’ di tempo dall’ultimo articolo, ma non è trascorso invano. In questo periodo ho progettato e realizzato un prototipo di driver per motori brushless sensorizzati.

IMG_1541

Le caratteristiche di questo driver sono state dettate da questo motore. Nell’immagne di seguito potete vedere lo schema elettrico del driver (qui la versione pdf).

MyOpenWheels _ Driver BLDC

Il funzionamento di questo driver è veramente molto semplice. Il cuore di tutto il sistema  è una GAL 16V8 (U2) che sintetizza le sei reti combinatorie (qui la tabella della verità) che pilotano i segnali IN e SD dei tre IRS2104 (U1, U3 e U5). IRS2104 che a loro volta pilotano le tre coppie di mosfet le quali con le loro commutazioni generano una pseudo terna trifase che alimenta e fa girare il motore.

La GAL 16V8 accende e spegne i mosfet, in base ai 6 segnali d’ingresso. Tre di questi provengono dall’esterno, cioè dal sistema di controllo che comanderà il presente driver e sono EN (abilitazione), DIR (direzione) e PWM_IN (ingresso PWM). In breve, il livello 1 all’ingresso EN abilita l’azionamento, il livello logico 1 o 0 all’ingresso DIR determina la direzione di rotazione del motore e in ultimo il segnale all’ingresso PWM_IN modula la corrente negli avvolgimenti del motore, quindi ne fa variare la coppia e la velocità di rotazione. Gli altri tre segnali che entrano nella GAL 16V8 (U2) sono SA, SB e SC, cioè i segnali provenienti dal sensore interno al motore, che individuano la posizione istantanea del rotore.

Dall’esterno, quindi, si dovranno fornire i tre segnali per il controllo del motore cioè EN, DIR e PWM_IN, ma al tempo stesso riceveremo dal driver BLDC le seguenti informazioni:

  1. Segnale analogico funzione della corrente assorbita dal motore da -75A a +75A;
  2. Segnale analogico funzione della temperatura del motore da 2°C a 100°C;
  3. Coppia di segnali in quadratura di fase (emulazione encoder) ENC_A e ENC_B.

Con la presenza di questi segnali di feedback un generico sistema di controllo potrà avere tutte le informazioni necessarie alla gestione delle funzionalità e delle sicurezze.

Il sensore di temperatura LM35DZ connesso al connettore J4, viene a sua volta montato in contatto termico con il motore.

La GAL 16V8 U4 è quella che si occupa di trasformare i segnali SA, SB e SC in ENC_A ed ENC_B, per fare ciò viene sintetizzato al suo interno il seguente schema elettrico.

MyOpenWheels _ Emul Encoder

La risoluzione dei segnali emulati ENC_A e ENC_B dipende strettamente dalle caratteristiche del motore. Nel nostro caso, ad esempio, il motore ha 12  poli statorici e 14 poli rotorici, percui ci saranno 42 commutazioni per giro. 21 per ENC_A e altrettanti per ENC_B.

Naturalmente nel caso non dovessero servire i segnali di emulazione dell’encoder, si può omettere dal circuito U4, la seconda GAL16V8.

Desidero ringraziare Enzo Caruana, che mi ha aiutato nelle varie fasi di questo progetto, nonchè mi ha “iniziato” alla logica programmabile. Questo è il mio primo progetto che fa uso di PLD, e devo ammettere che il risultato mi ha entusiasmato.

Un saluto a tutti.

FP

Vi ricordo che tutto il materiale di queste pagine è reso disponibile secondo la licenza CC BY-NC-SA 3.0.

GAL Commutazioni

GAL Encoder

PS: Il software utilizzato per compilare i file JED è WinCUPL di Atmel gratuitamente scaricabile da qui, previo registrazione.