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:
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.
Related posts
15 Comments
Lascia un commento Annulla risposta
Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.
Articoli popolari
Sorry. No data so far.
.Net micro framework Arduino Arduino Webserver Domotica Flyport I2C IOT Netduino OpenPicus raspberry RTC Speed Test
Ciao Marco,
complimenti per i tuoi tutorial… sempre precisi e dettagliati…
Potresti postare anche la “lista della spesa” (magari anche i link), relativa all’occorrente per costruire la scheda?
Saluti
cercherò di farlo al più presto!
grazie dei complimenti!
Marco
Salve,
tutorial molto interessante ed esaustivo…
Volevo solo chiedere un chiarimento; quel componente 7805 è LM7805? Qual è la sua funzionalità all’interno del circuito? e quella dei condensatori?
Grazie in anticipo
Saluti
Salve…Alla domanda precedente volevo chiedere se era possibile illustrare meglio il collegamento tra esc e arduino mini.
Saluti
Ciao Mario
il 7805 (LM7805 o equivalente) serve per poter portare la tensione della lipo a 5Vdc, valore necessario ad alimentare arduino mini, imu e ricevente. I condensatori servono filtrare spurie e a stabilizzare la tensione continua, soprattutto nei momenti di maggior assorbimento.
Gli ESC hanno due fili di alimentazione che devono essere collegati alla LiPo poi hanno un cavetto a tre fili (Segnale, Vcc, Gnd). Gnd va collegato al gnd del circuito e della LiPo, Vcc non viene collegato e il pin Segnale va connesso al pin di Arduino.
Grazie mille per la risposta tempestiva ed esaustiva!
Marco, il tuo lavoro è molto interessante (se vuoi possiamo parlare eventuale collaborazione per la scrittura delle pagine restanti).
Intanto, vorrei suggerire che, invece della Arduino Mini o Uno, ho trovato molto comoda la SainSmart Uno R3, che è un clone di Arduino Uno R3, ma ha la “felice” caratteristica di avere, invece dei singoli collegamenti tipici di Arduino, una fila di “triplette” (gnd, vcc, signal), comodissima per collegare sia i cavetti provenienti dagli ESC, sia quelli della ricevente. L’assemblaggio risulta quindi oltremodo semplice e vicino a quello delle centraline specializzate.
Scusa ancora una domanda…Ma la scheda per connettere l’USB può rimanere collegata definitivamente al quadricottero?
Grazie ancora
Volendo si, io non l’ho inserita perchè una volta calibrata la centralina di volo la usb2serial può essere usata per altri scopi.
Scusa ancora una domanda…Ma la scheda per connettere l’USB può rimanere collegata definitivamente al quadricottero? Inoltre i tuo esc sono da 20A come la potenza max. assorbita dai motori; non sarebbe meglio prendere gli esc da 25A?
Grazie ancora
si in effetti per stare tranquilli l’ideale è usare un ESC con qualche ampere in più, l’ho anche scritto nel tutorial precedente. Normalmente si vola usando il 50% della potenza quindi non ci dovrebbero essere rischi usando ESC da 20A.
Grazie mille per le risposte sempre precise!
In effetti la domanda di Giuseppe interessa anche a me…Io pensavo all’installazione di una action cam dal peso di 100g più o meno..potrebbe andare bene?
Buongiorno Marco,
Grazie per le risposte…
Volendo installare una foto/video-camera… È possibile? Come? Hai in preparazione un tutorial dedicato?
bello bello bello ciao a tutti, una domanda ma un quadricottero ha bisogno per forza di arduino ecc ecc per volare?
Ciao
ci sono tante centraline di volo, quella con Arduino è open e ti permette di fare molta esperienza didattica. Per applicazioni un po più professionali puoi andare ad acquistare una Dji Naza.
Saluti
Marco