Come guidare un motore brushless con Arduino?


28

È possibile guidare un motore brushless direttamente con Arduino? O dovrei ripristinare il controllo di un motore brushless ESC con impulsi PWM?


1
Potresti forse ottenere un chip driver da un vecchio lettore dvd / cd-rom.
Lars,

Risposte:


10

Dovresti assolutamente usare l'ESC. I motori brushless funzionano al meglio se guidati con un'onda sinusoidale (o il più vicino possibile a un'onda sinusoidale). Richiedono anche un insieme di segnali abbastanza accurato e complicato. Generare le forme d'onda e i tempi corretti da un arduino sarebbe difficile e, a meno che tu non ne abbia davvero bisogno, probabilmente non ne vale la pena. Puoi sempre organizzare il controllo dell'ESC dal tuo arduino, il che ti darebbe il controllo programmatico più l'efficienza e la potenza dell'ESC.


nitpick: Secondo Wikipedia ( en.wikipedia.org/wiki/brushless_DC_electric_motor ), i motori BLDC sono ottimizzati per funzionare al meglio se azionati da DC commutati: pieno positivo, non pilotato e completamente negativo. I motori AC a magneti permanenti sono ottimizzati per funzionare al meglio quando sono azionati da un'onda sinusoidale; questa è l'unica differenza significativa tra loro. Concordo con la tua conclusione: probabilmente vale la pena usare un ESC standard anziché svilupparne uno tu stesso.
davidcary,

4
Il controller su un BLCD potrebbe benissimo usare la stessa atmega di un arduino; quindi il vantaggio è più passare il problema di dettaglio a qualcun altro da risolvere; e consegnando l'attività di commutazione di basso livello per lasciare l'atmega dell'arduino libero per attività di livello superiore.
Chris Stratton,

I motori BLDC utilizzano essenzialmente bobine ad onda quadra. Sul lato utente del controller (ESC) usano l'alimentazione in corrente continua più qualsiasi segnale di controllo richiesto dall'ESC. Le onde sinusoidali non sono presenti.
Russell McMahon,

13

In realtà a volte devi solo creare il tuo ESC. Gli ESC venduti sul mercato sono "commercializzati" e hanno i loro codici di controllo per roba RC come aeroplani, eliche, automobili ...

Ad esempio, a volte è necessario disporre di un freno rigenerativo a doppio lato. Da dietro a stop e da avanti a stop. Non c'è ESC ESC che ha quella caratteristica. O hanno un solo freno rigenerativo da avanti a fermo o nessuno. Oppure potresti aver bisogno di un BLDC di controllo del sensore, ma ci sono solo pochi ESC sensibili sul mercato e hanno solo (lo stesso per i comuni ESC sensorless) funzioni che non ti servono e non ne hai alcune di cui hai assolutamente bisogno !

Progettare il tuo ESC è una scelta perfetta e molto più economica anche di quella da $ 10 più economica con una potenza ENORME.

È vero che il codice di controllo e l'hardware possono essere una seccatura ma dopo qualche lettura è solo un giocattolo.

C'è un buon tutorial qui su come realizzare un controller BLDC con un arduino usando 6 mosfet e alcune altre cose che puoi facilmente trovare sul sito di Jameco (molto bello) Qui è dove compro le mie cose a buon mercato ma spurkfun può essere una buona alternativa se non trovi alcuni sensori come giroscopi, ecc.

http://www.instructables.com/id/BLDC-Motor-Control-with-Arduino-salvaged-HD-motor/

guida molto bella e facile da seguire. Puoi fare QUALSIASI potenza da ESC bassi a ultra alti usando questa guida e quasi qualsiasi combinazione di freno di rigenerazione, usando resistenza, avvolgimenti del motore o caricabatterie ...

L'uso dei mosfet è solo un giocattolo, puoi fare quasi tutto.

Il problema è che non puoi controllare questo mosfet in modo molto efficiente con un MCU come una scheda arduio che emette solo 5 V, penso, e la tensione di gate del mosfet per le tensioni medie è praticamente molto più alta nell'intervallo di 16-30 V facilmente. Quindi devi usare qualche altro tansisor per aumentare la tensione di Arduino.

In bocca al lupo.


6

Ci sono andato avanti e indietro per circa 30 minuti. Penso che probabilmente vorrai usare un ESC a meno che tu non lo stia facendo solo come esperienza di apprendimento. Per controllare correttamente il motore, legarebbe più risorse dal tuo arduino di quanto immaginassi giustificare. Inoltre limiteresti la reattività del motore a quella del polling adc. Non penserei di usare un ESC come ripristino, è così che dovrebbe essere fatto.


4

Dal momento che nessun altro l'ha detto: non saresti in grado di guidare praticamente un motore direttamente da un arduino semplicemente perché il chip AVR non emetterà abbastanza corrente per fornire qualsiasi utile quantità di energia.

Quindi, almeno, dovresti cercare di creare una disposizione trifase del ponte H (leggi: tre "mezzi ponti H") per guidare le correnti necessarie, che richiedono sei linee digitali solo per far funzionare i transistor di azionamento.

Supponendo che tu abbia risolto questo problema di capacità dell'unità e che non sia banale, allora dovresti entrare nel codice di controllo. Questi motori hanno rotori a magneti permanenti, quindi non puoi semplicemente girare ciecamente il campo dello statore e ottenere una coppia utile. Devi conoscere l'orientamento del rotore per mantenere gli angoli di fase elettrici regolati in modo da ottenere una coppia uniforme.

Quindi, come altri hanno già detto, a meno che tu non voglia l'esperienza di apprendimento specifica, non c'è disonore nel solo acquisto di un ESC.


3

Penso che sarebbe un ottimo esercizio di apprendimento, ma gli ESC usano il back EMF per rilevare la rotazione, anche se per questo puoi usare sensori ottici o magnetici. Fondamentalmente devi generare 3 fasi AC e attivarle / disattivarle al momento giusto.

La velocità di rotazione del campo magnetico deve essere adattata a quella del motore, ovvero se si desidera accelerare, il campo deve funzionare un po 'prima e più velocemente. Puoi anche rompere, facendo il contrario.

Per una spiegazione approfondita: http://www.embedded.com/columns/technicalinsights/196701832?_requestid=137540

Per un lavoro pratico, ottenere un ESC.


per prima cosa ho pensato che l'accelerazione e la decelerazione sono state realizzate nel modo in cui descrivi, guidando e ritardando il campo. ma poi ho letto che l'accelerazione è determinata principalmente dalla tensione (anche se non riesco a vedere come ciò possa rallentare). mi sento un po 'confuso. uno degli approcci funziona per l'accelerazione? qualche motivo per preferire l'uno all'altro o mescolarli? Grazie!
Negromante

2

Si può guidare direttamente con Arduino se guidando non si intende la fornitura di corrente letteralmente per gli avvolgimenti - qualsiasi MCU sarebbe troppo debole per questo. Inoltre, Arduino può sprofondare ma non generare corrente, ma avresti bisogno di entrambi per un motore brushless.

Tuttavia, se si utilizza un IC driver H-bridge molto semplice oltre ad Arduino, è possibile implementare praticamente tutte le funzioni dell'ESC. In effetti, a seconda dell'applicazione potrebbe non essere necessario nemmeno un E * SC *, il che significa che potrebbe non essere necessario un controllo della velocità ad anello chiuso - se il carico non è troppo grande, potresti essere in grado di cavartela semplicemente fidandoti del motore per rispondere in sincronia con l'eccitazione dell'avvolgimento, e la velocità dei cambiamenti della corrente di avvolgimento verrebbe dall'Arduino. Dai un'occhiata a questo semplicissimo schema di controllo del motore brushless (BLDC) e allo schizzo di Arduino che potresti essere in grado di adattare per guidare il tuo motore. Quella si basa su un quad H-bridge SN754410NE che è massimo a 750mA se la memoria serve.

Il codice non è troppo banale e utilizza PWM per una rotazione regolare, ma non è troppo difficile analizzare né adattarsi alla propria applicazione. Lo schizzo reale di Arduino per il motore BLDC è qui .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.