Pilotare un motore brushless con ESC e Arduino

Ciao a tutti!



Dato che mi sto interessando al mondo dei droni e ad alcuni progetti che necessitano di un motore dalle elevate prestazioni,
ho iniziato a smanettare con due componenti molto conosciuti dagli aeromodellisti:
i motori brushless e gli ESC.



Partiamo dalla definizione di motore brushless:



"Il motore brushless ("senza spazzole") è un motore elettrico a corrente continua con il rotore a magneti permanenti e lo statore a campo magnetico ruotante. A differenza di un motore a spazzole non ha quindi bisogno di contatti elettrici striscianti (spazzole) sull'albero motore per funzionare. La commutazione della corrente circolante negli avvolgimenti dello statore, e quindi la variazione dell'orientamento del campo magnetico da essi generato, avviene elettronicamente."
(da Wikipedia, "Motore brushless")



Quindi il motore brushless deve essere pilotato da un dispositivo elettronico che generi "una commutazione della corrente circolante negli avvolgimenti dello statore",
questo dispositivo si chiama ESC (Electronic Speed Control).



Ecco un semplice ESC:




Come potete vedere ha vari cavi, i tre cavi rossi nella parte superiore sono quelli per il collegamento col motore, il rosso e nero in basso servono per il collegamento con la batteria, mentre al connettore a 3 contatti collegherò la centralina per il controllo della velocità del motore (in questo caso il mio Arduino)



Ed ecco ora il classico video di esempio, nel quale controllerò un motore brushless di una certa potenza (lo devo tenere con una tenaglia) regolandone la velocità con un potenziometro collegato ad Arduino.




Realizzare tutto questo è relativamente semplice, vi basterà realizzare il tutto seguendo lo schema elettrico qui sotto e caricare lo sketch che trovate in seguito (la guida va bene anche per ESC e motori di diverse dimensioni).



Ecco lo schema, per alimentare Arduino ho lasciato collegato il cavo usb al pc, ma se volete utilizzare il vostro progetto alimentando il tutto con la batteria al litio vi basterà collegare anche il cavetto rosso che arriva dall'ESC (nel disegno sotto è scollegato) al pin 5V di Arduino, ma fate attenzione che sul vostro ESC ci sia scritto BEC 5V e non valori di tensione più alti perchè altrimenti rischierete di friggere il vostro Arduino.



Ed ecco lo sketch da caricare nel vostro Arduino,
come potrete vedere il motore verrà controllato in PWM sfruttando la libreria "Servo",
ruotando il potenziometro si avrà un aumento di giri del motore, infatti il valore letto sul pin A0 verrà scalato con la funzione "map" e convertito in PWM sul pin 9.


  1. #include <Servo.h>
  2. int potpin = A0;
  3. int val;
  4. Servo motor_1;
  5. void setup()
  6. {
  7.   motor_1.attach(9);
  8.   Serial.begin(9600);
  9.   delay(10000);
  10. }
  11. void loop()
  12. {
  13.   val = analogRead(potpin);            
  14.   val = map(val, 0, 1023, 0, 180);
  15.   motor_1.write(val);                  
  16. }


Se avete problemi nella regolazione della velocità del motore (ad esempio il motore inizia a girare solo quando avere ruotato quasi tutto il potenziometro) è probabile che dobbiate eseguire la taratura del vostro ESC (grazie a +Massimo per questa dritta)
Per fare questo la procedura da seguire è questa:

- Collegate l'Arduino, il potenziometro e l'ESC come nello schema sopra (il motore e la batteria lasciateli scollegati)
- Alimentate l'Arduino (ad esempio con il cavo usb) e ruotate il potenziometro nella posizione massima
- Alimentate l'ESC collegandolo alla batteria lipo, a questo punto l'ESC dovrà emettere dei beep.
- Ora ruotate il potenziometro nella posizione minima (si dovranno sentire altri segnali acustici)
- Scollegate la batteria lipo, a questo punto il vostro ESC sarà calibrato



L'ultimo consiglio che vi voglio dare è di fare molta attenzione nell'acquisto dei componenti, infatti le batterie al litio hanno una tensione nominale per ogni cella di 3.7 Volt.
In commercio troverete batterie con valori multipli di 3.7, questo valore viene identificato con la lettera "S", ad esempio se trovate una batteria "3S" avrà una tensione nominale di 11.1Volt (3.7 x 3).
Ovviamente tutti i componenti dovranno essere compatibili tra loro, quindi anche ESC e motore dovranno supportare la tensione fornita dalla batteria.



Finito! se avete dubbi o domande lasciate pure un commento qui sotto, cercherò di rispondervi al più presto, ciao!

Segui Daniele Alberti su Google+!

7 commenti:

  1. Ciao, articolo interessante, volevo farti una domanda da niubbo questo utente esegue una modifica hardware nel syma x8, per quanto riguarda il software secondo te bisogna seguire questa tua procedura? Grazie.

    RispondiElimina
  2. E' possibile prelevando il segnale da uno dei tre fili di alimentazione del brushless, contare i giri?

    RispondiElimina
    Risposte
    1. Ciao, bella idea, non ci avevo mai pensato, in effetti dovrebbe uscire una sorta di sinusoide, quindi leggendo il picco di tensione potresti contare un giro. Sicuramente la tensione sarebbe troppo alta per entrare direttamente su un pin di Arduino potresti abbassarla con un partitore di tensione.
      Che dire, prova! se poi ti va facci sapere, potrebbe tornare utile a molti. Ciao

      Elimina
    2. Ho intenzione di prendere Arduino e provarci, ma parto completamente da zero.
      In questo momento non ho la più pallida idea su come fare... :-)

      Elimina
  3. ma quindi una volta collegato ad arduino si comanda come un normale servo motore? comunque bellla guida mi è stata utile.

    RispondiElimina
    Risposte
    1. grazie, si in base al valore che gli dai girerà piú o meno velocemente in una direzione o nell'altra. Ciao!

      Elimina
    2. grazie mille mi sei stato molto utile

      Elimina

Lascia un commento qui sotto, ti risponderò il prima possibile!

Related Posts Plugin for WordPress, Blogger...