[Multicotteri] Elettronica : IMU, MCU, Sensori ed algoritmi di controllo

astrobeed:
Tenendo il quadri ben saldo in mano, sospeso sopra la testa, con l'USB collegata e la GUI di MultiWii aperta dai potenza e verifica il comportamento dei sensori e dei motori, se due motori spingono molto di più degli altri senza nessun drift segnalato dai sensori è un problema degli ESC, prova a ricalibrarli.
Se i sensori segnalano un drift sul yaw, di conseguenza i motori cercano di compensarlo, è un problema legato alla IMU o alle eliche, la causa possono essere le vibrazioni, basta un'elica leggermente danneggiata, anche un'elica montata al contrario può causare quel problema.

Allora, l'ultima volta in cui ho volato, il quadricottero volava bene e quindi non credo sia un problema di eliche, dato che sono atterato bene senza incidenti.
Quando ho fatto la prova con la GUI ho notato che quando è fermo sul tavolo i motori girano alla stessa velocità, e anche provandolo ad inclinare i motori compensano correttamente.
Un'altra cosa che vorrei segnalarvi è che se, con il quad a terra, accelero improvvisamente lui si alza e rimane fermo ad un metro da trra per circa un secondo, poi impazzisce come al solito.
Non capisco proprio a cosa possa essere dovuto un comportamento del genere.

uhmmm detto coì sembra più il PID che impazzisce, in particolare la I troppo grande, ce dici astro?

Ma è possible che solo stringendo qualche vite e cambiando il biadesivo sotto la imu, abbia influenzato il pid?
A me sembra una cosa impossibile anche perché ho volato con il pid di default, e mi sono trovato benissimo.

lesto:
uhmmm detto coì sembra più il PID che impazzisce, in particolare la I troppo grande, ce dici astro?

Il pid con la rotazione sul jaw non c'entra nulla, le possibili cause le ho già elencate complete di test di fare.
E' inutile dire prima funzionava, se ora non va più qualcosa di sbagliato è stato fatto e/o ci sono danni.

astrobeed:
Il pid con la rotazione sul jaw non c'entra nulla, le possibili cause le ho già elencate complete di test di fare.
E' inutile dire prima funzionava, se ora non va più qualcosa di sbagliato è stato fatto e/o ci sono danni.

Siccome non riuscivo a risolvere ho deciso di smontare tutto e riassemblarlo da capo.
Finalmente funziona!! Grazie mille ragazzi.
Ora, siccome ho acquisito un po' di esperienza tramite la modalità acro vorrei provare ad abilitare anche magnetometro e barometro per nuove funzioni, dato che ho la IMU gy-80.
Nello schema di multiwii ho trovato un solo collegamento per un solo Aux. Ora, dato che ho una ricevente di 8 canali, i restanti canali a quali pin di arduino dovrei collegarli (Arduino UNO), sempre se è possibile farlo, per gestire gli atri canali dal radiocomando?

quelli che vuoi, poi devi scrivere il codice per leggerli (trovi qualcosa sul mio github usando gli interrupt)

lesto:
quelli che vuoi, poi devi scrivere il codice per leggerli (trovi qualcosa sul mio github usando gli interrupt)

Quindi ora come ora posso gestire un solo Aux?
Potresti spiegarmi rapidamente come funziona questo metodo?

Quindi ora come ora posso gestire un solo Aux?

ho scritto tutti quelli che vuoi

Potresti spiegarmi rapidamente come funziona questo metodo?

tutti i pin arduino sono "connessi" 8 ad 8 ad un registro, e questo possiede un interrupt di "change", quindi che viene attivato quando uno degli 8 pin cambia stato.

quindi io attivo questo interrupt, ed ad ogni cambio stato faccio uno xor con iil valore precedente in modo da ottenere i pin che han cambiato stato. Poi ogni pin è 1:1 con un array in cui segno i tempi di inizio segnale alto, ed un altro array (volatile) in cui sengno i valori di durata del segnale alto (che normalmente è un valore da 1000 a 2000 proporzionale all'input della RX)

È un po' complicato da capire perché sono solo al terzo anno di un istituto tecnico elettronico-informatico, ma ho capito il concetto il linea generale.
Potresti reindirizzarmi alla guida che hai fatto, in modo da capire dove e come aggiungere le righe di codice?

mi spiace, niente guida, solo codice: arduinoSketch/ClassPPM at master · lestofante/arduinoSketch · GitHub

lesto:
mi spiace, niente guida, solo codice: arduinoSketch/ClassPPM at master · lestofante/arduinoSketch · GitHub

Scusami se sono insistente, devo aggiungerli allo sketch di multiwii che poi carico su Arduino?

nono, il multiwii ha già qualcosa di simile dentro di sè, e poi io lavoro a basso livello sui registri, quindi sicuramente il codice "cozza" con il multiwii e tutto si schianta per terra. Pensavo che volessi usare un arduino separato per fare le tue cose, cosa che ti consiglio fortemente, da quello che leggo non sei in grado di mettere mano ad un codice che controlla qualcosa di così potenzialmente pericoloso; se invece fai le tue cose su un tuoo arduino o simili, sei tranquillo che il multiwii funziona come al solito, e se il tuo codice si blocca o ha un errore poco male.

lesto:
quindi sicuramente il codice "cozza" con il multiwii e tutto si schianta per terra.

Sicuramente si, inoltre le versioni più recenti di Multiwii gestiscono fino a 8 canali radio, quattro sono per i movimenti, uno per i modi di volo, i rimanenti tre per il movimento di un eventuale gimbal (fino a 3 assi) e/o il controllo delle luci.
Però sulla UNO, o board similare è possibile collegare solo sei canali radio, nel caso di un quadri, perché i pin sono finiti, solo usando il ppmsum è possibile usare tutti gli otto canali sulla UNO.
Rimane comunque la questione che MultiWii è rimasto quello che era quando è uscito, ovvero un software poco ottimizzato con grossi limiti.
Tutti i software alternativi sono decisamente migliori di MultiWii, tutti sono passati come minimo al Atmega2560 e pure questo ormai è deprecato, con 25 Euro si compra una CC3D, basata su STM32, che è decisamente meglio di un Arduino UNO o Mega 2560, ci si può caricare sopra diversi software 32 bit.
Il top rimangono sempre le FC di DJI, stanno arrivando dei cloni low cost però non so quanto siano affidabili, quelle di 3D Robotics e di Virtualrobotix, certo costicchiano però non c'è paragone in quanto a prestazioni e affidabilità rispetto ad un Arduino con MultiWii-
Domani posto qualche foto del super esacottero da qualche migliaio di Euro, uso professionale, che ho realizzato per un mio cliente, verrà impiegato per riprendere le balene in mare aperto, inutile dire che a bordo di Arduino non c'è traccia. :slight_smile:
In realtà volevo usare una pro mini per gestire i led delle luci di segnalazione, però visto che volerà sempre in piena luce solare e abbastanza lontano, raggio operativo circa 600 metri, mi hanno detto di lasciar perdere e risparmiare peso :slight_smile:

Grazie mille, sia Lesto che Astrobeed, per le risposte chiare e precise.
Quindi ho capito che con il solo Arduino Uno si può fare veramente poco, se non il minimo indispensabile, ma alla fine per il progetto scolastico a cui sto lavorando va già più che bene.
In futuro, nel caso in cui volessi costruire un drone un po' più completo e complesso, avevo visto la Crius come possibile fc, perché non troppo costosa ma anche qualitativamente buona.
E' veramente così? avete altre fc da consigliare?
p.s. ho visto che le migliori sono le naza, ma chiedo informazioni per fc non troppo costose (per fare esperienza).

Ecco una foto del esa per uso professionale, sono ancora in fase di messa a punto e il cablaggio elettrico è parzialmente provvisorio, ha già fatto due voli di prova comportandosi molto bene.
Il telaio è totalmente in carbonio, pesa meno di 400 grammi, la distanza tra i motori è 70 cm, motori Tmotor 2814, ESC da 40A (molto sovradimensionati), eliche 12x3.8 in carbonio, bracci e carrello sono ripiegabili per facilitare il trasporto, la spinta massima esercitata dai sei rotori è quasi 8.5 kg.
Come elettonica la f.c. è una Naza v2 col suo GPS, Gimbal DJI Zenmuse H3-3D sul quale è montata una GoPo Hero 4 (versione con risoluzione 4k), per la telemetria DJI OSD MKII, oltre a fornire tutti i dati di volo in sovra impressione video li registra su una flash in modo da poterli analizzare su pc dopo il volo, Tx video 5.8 GHz da 600 mW dotato di antenna cloverleaf.
Per la stazione a terra c'è un radiocomando Graupner HOTT MZ18 e un monitor per fpv della Boscam con integrato un ricevitore diversity 5.8 GHz e DVR, registra il video (720p o 1080p) su SD, il segnale video trasmesso a terra è quello fornito dalla GoPro, un classico pal 16:9 a 25 fps.
Batteria 4S da 5200 mAh utilizzabile sia singolarmente che doppia, il peso del esa senza batteria è solo 2150 grammi, molto leggero per la sua categoria, i pacchi batteria pesano 504 grammi, con un singolo pacco l'autonomia di volo è circa 15 minuti, con due pacchi si arriva a poco più di 20 minuti, per tutte e due le condizioni c'è almeno un minuto di riserva per l'eventuale atterraggio di emergenza in automatico, lo gestisce la Naza v2.
Dato che l'impiego principale di questo drone è in mare sul carrello verranno montati due galleggianti, realizzati in plastica termoformata in modo da essere leggerissimi, con un volume complessivo di circa 5 litri (2.5 litri per lato carrello) in modo da garantire il galleggiamento in caso di ammaraggio forzato.

Ishac:
In futuro, nel caso in cui volessi costruire un drone un po' più completo e complesso, avevo visto la Crius come possibile fc, perché non troppo costosa ma anche qualitativamente buona.

Il problema della Crius è che la trovi in varie versione di cui la maggior parte sono cineserie, non è semplice capire quali sono quelle buone e quelle schifezza, anche perché il prezzo cambia di pochi Euro.
In tutti i casi se decidi di andare avanti e realizzare un quadri, o un esa, di livello superiore lascia perdere Arduino perché ormai tutti i software non lo supportano più, lo sviluppo è fermo da oltre un anno perché sono stati raggiunti i limiti del Mega2560.
Ti conviene andare su fc a 32 bit, la più semplice, ed economica visto che costa solo 25 Euro completa di case e cavi, è la CC3D basata su un STM32 @72MHz come micro e un MPU6500 come IMU, è possibile collegare magnetometro e barometro esterni tramite I2C, ovviamente anche il GPS.
La Naza Lite costa solo 130 Euro completa del suo GPS, se ti fai due conti alla fine non spendi molto di più rispetto a qualunque altra fc entry level completa di GPS, è ottima, sicuramente tra le migliori fc esistenti, la puoi avere in bundle con i kit di DJI a solo 50 Euro nel caso del quadri e a solo 30 Euro nel caso del esa.
La cosa divertente della Naza Lite è che in realtà è una Naza v2 declassata, viene fornita con la PMU senza can bus e il firmware installato è diverso in modo da togliere alcune funzionalità superiori.
Però con un piccola "magia" è possibile installare sulla Naza Lite il firmware della Naza v2 facendola diventare di fatto una Naza v2 con tutte le relative funzioni aggiuntive.
Acquistando a parte la PMU della v2 (45 Euro) si ha anche il can bus se si vuole collegare alla Naza il Gimbal DJI o altri add on.
La modifica da Lite a v2 non richiede in nessun modo la manomissione hardware, è solo software, ed è reversibile in qualunque momento semplicemente attivando il deep reset della Naza (un jumper su due pin all'accensione) che forza l'upload del firmware originale.

astrobeed:
...
In realtà volevo usare una pro mini per gestire i led delle luci di segnalazione, però visto che volerà sempre in piena luce solare e abbastanza lontano, raggio operativo circa 600 metri, mi hanno detto di lasciar perdere e risparmiare peso :slight_smile:

Vergognati, che spreco di risorse ... i led di segnalazione (5630 ad alta efficenza e basso peso), li si gestisce con un 555 in SMD su un PCB da meno di 5 grammi ... :stuck_out_tongue: :smiley: :smiley: :smiley:

Piuttosto, il salvagente glie l'hai messo ? ... si sa mai, in mare ... :wink:

EDIT: si, leggo ora che e' previsto il galleggiante ... Aumentera' un po il peso, ma e' una necessita' imprescindibile, lavorando sull'acqua ... gia' sara' meglio che vernici tutta l'elettronica con 3 o 4 mani di plastivel, l'acqua di mare si mangia le piste di rame che e' un (dis) piacere, specie se sottoposte a differenze di tensione ... (magari l'aerogel idrofobo costasse poco, ci si potrebbero fare dei bei lavoretti :stuck_out_tongue: :D)

Etemenanki:
Vergognati, che spreco di risorse ... i led di segnalazione (5630 ad alta efficenza e basso peso), li si gestisce con un 555 in SMD su un PCB da meno di 5 grammi ... :stuck_out_tongue: :smiley: :smiley: :smiley:

Io volevo metterci dei WS2812 in modo da poter cambiare il colore a seconda del verso di marcia e fornire varie segnalazione, p.e. batteria quasi scarica.

Piuttosto, il salvagente glie l'hai messo ? ... si sa mai, in mare ... :wink:

sono previsti i galleggianti sul carrello, li stanno facendo.

uhmm, basta che i galleggianti non vadano a "sporcare" il flusso d'aria sotto le aliche.. sarebbe interessante una prova usando delle poveri per colorare l'aria

lesto:
uhmm, basta che i galleggianti non vadano a "sporcare" il flusso d'aria sotto le aliche.. s

Il flusso d'aria sotto le eliche è già un caos di suo, dei galleggianti montati sul carrello, che si trova a quasi 23 cm sotto le eliche e solo pochi cm della sua estensione in lunghezza si trova il loro disco, non dovrebbe creare nessun problema.