Aggiungere i sensori al motore

Il passo successivo è stato quello di aggiungere i tre sensori ad effetto Hall al motore. Vi propongo alcune immagini della trasformazione da Sensorless a Sensored.

IMG_1545

IMG_1544

IMG_1546

I sensori impiegati sono tre SS411A della Honeywell, i quali sono sensori ad effetto Hall con uscita digitale, compensati in temperatura, bipolari e con isteresi (qui il datasheet).

Per il montaggio ho preferito la soluzione in cui i tre pin del sensore sono orientati lungo un raggio, così da rendere possibili piccoli aggiustamenti di posizione piegando il sensore lungo la tangente al rotore, in una direzione o nell’altra. In ultimo, magari, bloccando tutto con resina epossidica.

I sensori vanno disposti ad una distanza angolare, tra loro, di 360°/21. Circa 17°. Ho misurato il raggio su cui stavo disponendo i sensori, ne ho calcolato l’ipotetica circonferenza e ho diviso questa misura per 21. Nel mio caso la distanza tra i sensori deve essere di circa 9.5 mm, quindi ho trovato una combinazione che mettesse d’accordo il più possibile le esigenze di spaziatura tra i sensori e il passo del millefori usato come supporto. In questa fase essere precisi è importante, ma bisogna anche tenere presente che è possibile in un secondo tempo fare piccoli aggiustamenti di posizione dei sensori.

A questo punto, dopo aver realizzato i pochi collegamenti elettrici sia sulla schedina sensori che verso il driver, siamo pronti a verificare che ruotando il rotore i tre sensori commutino correttamente, aprendo e chiudendo verso massa le resistenze R17, R18 e R19 poste sulla scheda driver.

Ora è il momento di connettere i tre fili di alimentazione del motore con i tre fili PH_A, PH_B e PH_C del driver. Ricordate di ancorare bene il motore a un supporto prima di dare alimentazione al driver, usate un Duty Cycle del segnale PWM_IN molto basso 5-10% e una fraquenza di 20kHz . A questo punto  si procede per tentativi, vi conviene comunque provare tutte le possibili combinazioni, sono solo sei. In questi tentativi ci sarà sicuramente una combinazione in cui il motore girerà con meno vibrazioni e assorbendo meno corrente, scegliete quella.

E’ arrivato il momento di fare qualche regolazione. Come prima cosa, a motore in rotazione, lasciando fermo il sensore centrale spostare leggermente gli altri due affinchè le tre onde quadre che troviamo sulle resistenze R17, R18 e R19 siano sfasate di 120° tra loro.

IMG_1552

Ora, sempre a motore in funzione, allentando i dadi di fissaggio della basetta dei sensori ruotate leggermente il gruppo sensori in una direzione e nell’altra fino a trovare la condizione in cui il driver assorbe la minima corrente, fissate la basetta dei sensori. Verificate che lo sfasamento dei tre segnali sia ancora 120°, eventualmete ritoccate leggermente.

Come potete notare nella foto dello schermo dell’Analizzatore di Stati Logici, non tutti e tre i segnali dei sensori hanno un duty cycle del 50%, come dovrebbe essere, solo quello del canale 1 (traccia fucsia) si avvicina molto a questa condizione, gli altri due canali invece hanno un duty cycle del 48% uno e l’altro del 52%. Naturalmente nella foto non si può vedere, ma a motore in rotazione questi segnali hanno delle piccole e continue fluttuazioni temporali (jitter), ma comunque sempre nell’intorno dei valori di cui sopra.

Partendo dal presupposto che le condizioni di funzionamento dei tre sensori siano identiche, ritengo che le irregolarità dei segnali dipendano proprio dai sensori ad effetto Hall, più precisamente dal fatto che le isteresi dei sensori delle tracce 0 e 2 non siano centrate nel punto a zero campo magnetico. Comunque in prima battuta mi sento di dire che queste imprecisioni, data la loro contenuta entità, provocano effetti trascurabili.

OK!!! Le tarature sono finite e come avrete avuto modo di vedere il motore gira molto fluidamente, con pochissime vibrazioni e per di più assorbendo pochissima corrente (0.2-0.4A). Ora potete provare ad aumentare il Duty Cycle.

Saluti

FP

Annunci

15 pensieri su “Aggiungere i sensori al motore

  1. Andrea

    Complimenti..! un buon progetto portato avanti con una filosofia rivolta all utilizzo pratico.
    Mi viene un solo piccolo dubbio. Il motore utilizzato seppur potente, non risulta carente di coppia a bassi giri ( sopratutto visto che e’ soggetto a repentini cambi di direzione/rotazione )

    Rispondi
    1. Francesco Pascarella Autore articolo

      Ciao Andrea,
      grazie per il tuo commento e per i complimenti.
      Il motore verrà demoltiplicato prima di arrivare alla ruota, con un rapporto di riduzione di circa 22,5:1 il che implica che la coppia del motore arriverà alla ruota moltiplicata per 22,5, secondo i miei calcoli ogni motore dovrebbe fornire 40 Kg di spinta. Non vedo quali problemi implichi il repentino cambio di direzione, le inerzie dovrebbero essere basse dato che le dinamiche sono lente. In particolare i rapidi cambi di direzione avvengono a veicolo fermo.
      Il mio dubbio invece è che il motore vada troppo su di temperatura anche per erogare potenze dell’ordine 500w continui.
      Come dicevo già ad Antonio ho intenzione di fare dei test di coppia e rendimento così da fugare ogni eventuale dubbio.
      Ciao
      Francesco

      Rispondi
  2. Luca

    Ciao Francesco,

    complimenti x il tuo progetto!

    Anch’io mi sto cimentando su una cosa analoga per costruire un controller brushless sensored per la mia bici elettrica ma purtroppo in giro non ci sono moltissime informazioni.
    Io sono partito da questo progetto su atmega8:
    http://www.instructables.com/id/BLDC-Motor-Control-with-Arduino-salvaged-HD-motor/step11/Control-Software-for-the-Arduino/

    Provato con un motore RC brushless sensored funziona perfettamente!
    Adesso stavo seguendo il tuo stesso percorso aggiungendo i sensori ad un motore innrunner.
    Li ho montati sfasati di 120° come i manuali dicono…il motore funziona però non sale di giri (3000 giri contro 16000…).
    Visto che tu ci 6 riuscito hai qualche idea di quale potrebbe essere il problema?
    Il motore è un 2 poli slotless di quelli RC in commercio.

    Grazie

    Luca

    Rispondi
    1. Francesco Pascarella Autore articolo

      Ciao Luca,
      innanzitutto scusami per il ritardo nel risponderti, in tutta onestà mi era sfuggito di mente.
      Grazie per i complimenti, non ho avuto il tempo di leggere l’articolo di cui mi hai fornito il link, ma partendo dal presupposto che il driver che hai reaizzato con atmega8 funziona perfettamente con un motore dotato di sensori, penso che il problema sia nel motore che stai cercando di sensorizzare.
      Non conosco la struttura dell’assemblaggio motore/sensori, ma la prima cosa che mi viene in mente è la regolazione della fase, dovresti provare a ruotare il gruppo di sensori, la posizione ideale è quella in cui il motore gira (a vuoto) al massimo regime con la minima corrente assorbita dal driver.
      Chiaramente ci potrebbero essere anche altre cause, ma con le poche informazioni in mio possesso non riesco ad andare oltre.
      Vorrei sapere quanta corrente assorbe il driver, se il motore gira fluidamnte (senza vibrazioni) a bassissimi regimi e se gira correttamente nelle due direzioni, inoltre vorrei avere maggiori informazioni sul tipo di motore (marca e modello) e su come lo hai sensorizzato (foto, disegni etc). Scusami per il terzo grado stile “gestapo”, ma senza queste informazioni mi è impossibile aiutarti. Se vuoi, per rendere le cose più semplici, potremmo metterci in contatto con skype.
      Ciao e in bocca al lupo
      Francesco Pascarella

      Rispondi
      1. Luca

        Certo Skype va benissimo! 😉 skype name: luk3luk3 alias: luca style.
        In sti giorni ho provato a collegare al circuito un motore sensored della Leopard diciamo che questo funziona abbastanza bene.
        Tramite il potenziometro puoi regolarne la velocità e fermarlo e farlo ripartire senza problemi.
        Agli alti giri però ho notato che (arduino ha un led verde collegato all’atmega che ti indica se è acceso o spento) il led verde prima flasha e poi si spegne e subito dopo anche il motore si ferma.
        Se si prova a fare girare l’albero motore a mano questo risulta bloccato.
        Se si resetta l’atmega mediante il pulsante di reset tutto riprende a funzionare correttamente.
        Il problema si presenta solo agli alti giri.
        Prima di sensorizzare l’altro motore volevo essere sicuro che il circuito/software funzionasse correttamente altrimenti come dice il detto “cè troppa carne sul fuoco” 🙂

  3. peppe

    ciao,
    sono Peppe e sono interessato ad effettuare questa modifica su un motore
    potresti spiegarmi perche tre hall e non 1?
    grazie

    Rispondi
    1. Francesco Pascarella Autore articolo

      Ciao Peppe,
      innanzitutto grazie per il tuo interessamento al progetto, ma veniamo al dunque.
      La terna trifase che alimenta il motore viene ricostruita in sei passi, quindi il minimo numero di sensori hall per poter esprimere le sei combinazioni è 3 (otto possibilità 2^3=8). Se poi togli le due combinazioni in cui tutti e tre sono ad uno o a zero (combinazioni non significative) ne rimangono giusto sei, questo file forse ti potrà chiarire meglio il meccanismo.
      Ciao
      Francesco Pascarella

      Rispondi
  4. Dario Bossi

    ho visto che sei un mughetto dell’elettrica, sto cercando qualcuno che mi dia consigli su una eventuale applicazione di un joystick su una wheelchair segway.

    Rispondi
  5. Alessandro Fabbris

    Buona sera Francesco, mi stò interessando al progetto OpenWheels e ho letto con piacere le sue note critiche nei confronti delle soluzioni adottate sia nel sito OpenWheel.cc che da Futura Elettronica che lancio un contest sulla cosa mai concluso… volevo sapere se ha portato a termine la realizzazione del suo prototipo, se ci stà lavorando ancora o ha novità in generale. Se posso, vorrei dare anche una mano.
    Un saluto

    Alessandro Fabbris

    Rispondi
    1. Francesco Pascarella Autore articolo

      Salve Alessandro, il progetto è in stallo sia per mancanza di tempo che per motivi di realizzazione meccanica. Sembra piuttosto difficile e quindi costoso montare dei riduttori adeguati al tipo di motore che avevo scelto. Forse usando una coppia di hub motors la trasmissione si semplificherebbe notevolmente e quindi il progetto meccanico sarebbe alla mia portata. Comunque per adesso non se ne parla, troppi impegni.
      Ciao e grazie per il commento.
      Francesco Pascarella

      Rispondi
  6. paolo

    Complimenti Franco, molto interessante.
    mi sono imbattuto nel tuo progetto facendo un ricerca per applicare un encoder al motore che è lo stesso che hai tu. Sto realizzando un robotino per il settore agricoltura. Leggendo la tua realizzazione mi domandavo come possono funzionare i sensori hall (non lo metto in dubbio, sono io che non capisco) dislocati sulla carcassa che quindi non possono distinguere le fasi alimentate da quella floating. Una fase alimentata non perturba il sensore?
    Ancora complimenti.
    Paolo

    Rispondi
    1. Francesco Pascarella Autore articolo

      Ciao Paolo,
      grazie per il tuo commento, che mi consente di chiarire eventuali dubbi, anche se non sono sicuro di averlo interpretato bene.
      I sensori di hall servono a capire in quale posizione si trova il rotore, infatti captano il campo magnetico generato dalle calamite presenti all’interno della campana (rotore).
      In altre parole i sensori di hall forniscono un feedback di posizione del rotore in modo da pilotare correttamente le tre fasi del motore.
      Ciao
      Francesco Pascarella

      Rispondi
  7. william

    Buongiorno Francesco, letto tutto, lettura molto interessante.
    Anche io mi associo a quelli che vorrebbero il tuo aiuto su questioni molto pratiche 🙂

    Anche io ho un motore (brushless sensorless bldc autocostruito), che sto trasformando in sensored. Ho preso i sensori ad effetto Hall, ed i manuali della centralina (una kelly) dicono che possono essere collegati a 90 o 60 gradi. Tu ho visto che hai usato un angolo di 17 gradi… che non avevo mai visto prima. E’ la centralina che te lo permette o un angolo di 17° è equivalente ai fini del calcolo del posizionamento del rotore ad uno di 60 o 90 ?

    Per inciso ho 40 magneti sul rotore…

    grazie per una eventuale risposta

    un saluto
    William

    Rispondi
    1. Francesco Pascarella Autore articolo

      Salve William,
      il mio motore ha 14 magneti, quindi 7 coppie polari lungo la sua circonferenza, il calcolo quindi è 360/(3*7) = 17.14 gradi.
      Nel tuo caso i magneti sono 40, cioè 20 coppie polari, allora la spaziatura minima tra i tre sensori ad effetto Hall è di 360/(3*20) = 6 gradi.
      Il mio consiglio però è quello di disporli a 120° coprendo l’intera circonferenza del rotore. In questo modo avrai i tre segnali sfasati di 120° con la medesima larghezza.
      Nella foto del “Logic Analyzer” puoi notare che solo la traccia fucsia ha un duty cycle del 50%, mentre le altre due hanno un duty cycle leggermente inferiore o superiore al 50%, questo potrebbe non comportare grossi problemi, ma nel tuo caso questa differenza potrebbe essere più pronunciata perchè i sensori sono più vicini tra loro. Montandoli a 120° eviteresti questi problemi.
      Naturalmente tutto quanto detto è valido se il tuo motore ha 3 fasi.
      Ciao
      Francesco Pascarella

      Rispondi
      1. William

        Francesco, intanto grazie per la risposta.
        Si, sono 3 fasi.
        Seguirô il suo consiglio e monterô i sensori a 120 gradi.

        Un saluto
        William

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...