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.

11 pensieri su “Il driver per motori BLDC

  1. Santi Mirenna

    Ciao, volevo farti i miei piu’ sentiti complimenti.
    E’ da un po che seguo vari progetti per la costruzione di un “veicolo” elettrico, e questo mi sembra sia partito con il piede giusto.
    Poi cosa non trascurabile e’ portato avanti da un Italiano!!
    Ciao ed a presto con i tuoi/vostri nuovi aggiornamenti.
    Grazie.

    Santi

    Rispondi
  2. Francesco Pascarella

    Ciao Santi,
    grazie per il sostegno, sono molto contento che il progetto ti piaccia.
    Spero solo, in tempi non troppo lunghi, di portare a termine il progetto e poter fare tanti giri su MyOpenWheels.
    Ciao
    Francesco

    Rispondi
  3. mcmos

    Mi accodo anch’io nel farti i complimenti!
    Non vedevo post da un pò di tempo e mi ero preoccupato che il progetto fosse stato messo nel cassetto “cose da fare” 😉
    Grazie per l’articolo, molto interessante!
    PS: il mio prossimo commento spero possa essere più utile per la causa..

    Rispondi
  4. Gino Caliano

    Complimenti per le sue attività. Sono anch’io un appassionato di veicoli di questo tipo e un appassionato di elettronica (ormai da troppi anni). Se posso aiutarla, mi farebbe piacere, ma vedo che se la cava benissimo anche da solo !
    Saluti
    Gino Caliano

    Rispondi
    1. Francesco Pascarella Autore articolo

      Grazie Gino,
      sono lusingato dal suo commento e, come dicevo anche ad altre persone il vostro interessamento è già un aiuto.
      Sarei felice di una sua collaborazione al progetto MyOpenWheels.
      Saluti
      Francesco

      Rispondi
      1. William Bastoni

        Gent.mo Francesco, le chiedo se il progetto è completato. Grazie William

      2. Francesco Pascarella Autore articolo

        Salve William,
        no purtroppo, il progetto non è mai stato completato per la mancanza di una meccanica adeguata.
        La mia competenza è principalmente in campo elettronico e di controllo.
        Saluti
        Francesco

      3. William Bastoni

        Il motore BL con i sensori esterni consente di comandare il numero dei giri anche a valori bassi es 80-200 giri/min mantenendo una buona coppia? Per quanto ne so questo tipo di motori sono molto veloci.
        Saluti
        William

      4. Francesco Pascarella Autore articolo

        Si, la coppia dei BLDC con i sensori è “quasi” costante a partire da 0 rpm e decresce a reggimi alti. La potenza meccanica all’albero è uguale al prodotto della velocità di rotazione per la coppia, quindi a velocità molto basse la potenza all’albero rimane comunque bassa. Da questo nasce l’esigenza di usare un riduttore tra il motore e la ruota, così da poter adattare la velocità/coppia del motore a quelle necessaire alla ruota.
        Qui nascono le mie difficoltà, ci vorrebbe un riduttore 20/30:1 con un primario che possa resistere ai 6000 rpm del motore. L’idea era quella di usare un doppio stadio, riduttore epicicloidale massimo 10:1 e una coppia pignone corona con una catena che facesse il resto.
        A questo punto necessita una progettazione meccanica dettagliata… e qui mi sono fermato!!!
        Saluti
        Francesco

Scrivi una risposta a Francesco Pascarella Cancella risposta