Arduino e Multiwii, come costruire una scheda di controllo volo

Tutti i componenti che abbiamo assemblato nello scorso articolo devono essere controllati da una centralina elettronica che elabori i segnali provenienti dal radiocomando e quelli provenienti dai sensori inerziali.
In commercio esistono soluzioni già pronte semplici da installare e con impostazioni e calibrazioni pronte al volo. Nel nostro caso utilizzeremo invece una scheda Arduino Mini e un sistema inerziale a nove assi.

La parte software che girerà su Arduino Mini è un progetto open source molto popolare che ha riscosso nel tempo diversi successi, MultiWii. Essendo un progetto open abbiamo la possibilità di vedere gli algoritmi che gestiscono il quadricottero, opportunità sicuramente interessante e formativa.

Tutte le informazioni riguardo il montaggio e il caricamento del software sono disponibili sul sito ufficiale MultiWii.com e su MultiWii.it. In questo tutorial illustrerò questi passaggi in modo semplice affinché gli utenti con poca esperienza possano riuscire nella realizzazione di questo progetto.
Possiamo usare diverse schede Arduino, ma quella che consiglio è la Mini, questo perchè ha dimensioni e peso contenuti, l’unico inconveniente, se cosi si può definire è che dobbiamo utilizzare il convertitore usb2serial light per effettuarne la programmazione.


Lo schema elettrico della scheda di controllo del quadricottero è riportato di seguito:

Circuito scheda di controllo arduino multiwii

Il ricevitore del radiocomando possiede diversi canali, a seconda del modello, con segnale PWM in uscita. Il posizionamento dei canali dipende dal modello che stiamo usando, nel datasheet del telecomando in vostro possesso otterrete tutte le indicazioni necessarie.
I canali che sono indispensabili (e tipici) sono:

  • CH1 ROLL – Per far inclinare il quadricottero a destra o sinistra
  • CH2 PITCH – Per far inclinare il quadricottero in avanti o indietro
  • CH3 THROTTLE – Per far variare la velocità di rotazione dei 4 motori
  • CH4 YAW – Per far ruotare il quadricottero sul proprio asse verticale.
  • CH5 MODE – Per selezionare opzioni aggiuntive di volo.

I segnali provenienti dal ricevitore devono essere collegati ai relativi pin di Arduino Mini, quindi:

  • CH1 – ROLL viene collegato al pin 4 di Arduino Mini
  • CH2 – PITCH viene collegato al pin 5 di Arduino Mini
  • CH3 – THROTTLE viene collegato al pin 2 di Arduino Mini
  • CH4 – YAW viene collegato al pin 6 di Arduino Mini
  • CH5 – MODE viene collegato al pin 7 di Arduino Mini

Questi segnali vengono elaborati in base ai dati che giungono del sistema inerziale (IMU GY80). La scheda GY80 comunica i dati utilizzando il protocollo I2C. Il collegamento fisico avviene collegando:

  • pin AD4 di Arduino Mini al pin SDA della GY80
  • pin AD5 di Arduino Mini al pin SCL della GY80

da notare la presenza delle resistenze di pull-up R che, in taluni casi non sono necessarie, consiglio di inserirle per evitare errori di comunicazione tra Arduino Mini e GY80.

Il risultato degli algoritmi del software MultiWii viene restituito sotto forma di segnale PWM che viene inviato ai regolatori (ESC) collegati ai pin 3, 9, 10 e 11 di Arduino Mini.
I segnali PWM andranno a variare in modo intelligente le velocità dei motori in funzione dei comandi che arrivano dal telecomando e ai dati restituiti dalla piattaforma inerziale GY80.

Nei precedenti tutorial abbiamo appreso che il verso di rotazione dei motori dipende dal modo in cui esso è collegato al regolatore di velocità (ESC), i motori M1 e M4 gireranno in senso orario mentre i motori M2 e M3 in senso antiorario. Nello schema notiamo che i motori M2 e M4 sono collegati in modo differente dai motori M1 e M3. Sulla carta non possiamo stabilire il verso di rotazione ma esso dovrà essere verificato in fase di prima accensione. Nel caso in cui ad esempio il motore M1 gira in senso antiorario sarà sufficiente invertire  il collegamento di due fili per farlo girare in senso orario.

La batteria LiPo fornisce direttamente l’energia agli ESC mentre tutti gli altri componenti vengono alimentati attraverso un regolatore che livella la tensione a 5Vdc.

La Arduino Mini viene programmata utilizzando il convertitore usb seriale Usb2Serial Light, questo componente non è fisicamente montato sul quadricottero ma viene utilizzato solamente in fase di programmazione e calibrazione.