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

Buonasera a tutti ragazzi! Sto realizzando un quadricottero con controllore di volo composto da un Arduino UNO r3 e FreeIMU v0.43 (si lo so è obsoleta,potevo con 20 o meno euro comprare un qualcosa di già pronto ecc...,ma personalmente credo che sfruttare appieno le potenzialità di arduino sia piu interessante!). Per il montaggio ho seguito lo schema presente sul sito ufficiale multiwii,schema che fa riferimento alla mini (che se non erro è solo una versione ristretta della UNO il che non comporta significative differenze). Monto il tutto e...sorpresa!
Non riesco ad "armare" i motori,ci riesco solo se tramite gui attivo l'arming tramite switch ma, una volta armati, i motori non rispondono a dovere.In base alla combinazione di input ottengo risposte "strane": ad esempio con il full throttle girano 3 motori su 4,con il medio ne girano solo 2 sul lato destro,con il minimo girano sempre 2 motori ma sulla diagonale...inoltre,per consolazione, ho rotto l'ESC che da sul 1° motore,esc dal quale alimento Arduino,e ancora non me ne capacito dato che non sono mai riuscito a farlo girare :cold_sweat: .Se può tornare utile ho effettuato la calibrazone degli ESC prima singolarmente e poi tramite SW (credevo dipendesse da quello). Siccome è una scheda di controllo già testata,mi chiedevo se qualcuno di voi piu capace di me abbia riscontrato lo stesso problema o ne sappia qualcosa!

salve a tutti , vorrei avere delle informazione se possibile, ho in progetto di assemblare un quadricottero con arduino uno e multiwii , come accellerometro ho il GY 521 che ho collegato ai pin a4 e a5 e fin qui tutto bene .
ho acquistato il magnetometro/ bussola hmc5883l , posso collegarlo ai pin di arduino A2 e A3 ?

Arriva il caldo e arrivano anche i nuovi progetti, o meglio uno vecchio per troppo tempo rimasto nel cassetto allo stato di preprepreprototipo, dopo aver deciso di accantonare un altro progetto personale molto impegnativo sia come realizzazione che come costi ho deciso di rimettere mano al progetto del robot volante su base quadrirotore.
Allo scopo ho acquistato un telaio F450 di DJI, un set dei nuovi motori E310 di DJI, una CC3D come fligth controller di base.
Ho scelto i motori E310 perché oltre ad offrire una spinta maggiore rispetto ai predenti E300, 800 gr vs 600 gr, richiedono meno corrente, solo 4.1A con una spinta di 400 gr, inoltre sono dotati di un ESC che usa un controllo tramite tre sinusoidi invece della classica trapezoidale, l'ESC dispone di una data port che permette sia di aggiornarne il firmware che ottenere la telemetria durante il funzionamento, non ultimo la comodità delle eliche autoserranti e l'uso delle nuove eliche 9.5x5.0 di DJI progettate appositamente per questi motori, sia le eliche che i motori arrivano perfettamente bilanciati.
Per quanto riguarda la flight controller la scelta è andata sulla CC3D sia per il basso costo sia perché utilizza un processore STM32 ed è supportata dal software openpilot, è una fligth controller minimale, pensata principalmente per piccoli quadrirotori da divertimento, come sensore ha solo l'MPU6000 (gyro e accelerometro), comunque più che sufficiente per offrire un'ottima stabilità, possiede una porta I2C, alla quale è possibile collegare altri sensori, e una UART per collegare un GPS.
Dato che il mio scopo è realizzare un robot volante mi va benissimo la CC3D come flight controller, anche perché il relativo software è open source e ci posso mettere le mani, il suo scopo è solo tenere il multi stabile ed eseguire i comandi di volo che arrivano dall'elettronica principale.
L'elettronica principale è costituita da una Teensy 3.1 per il low level e una Arietta G25 per l'High Level.
Il compito della Teensy è gestire il GPS, con relativo magnetometro, un MPU9150, un sensore barometrico di precisione (devo ancora decidere quale) e un Lidar Lite, montato sotto che guarda verso il terreno, come sensore di quota rispetto al suolo, gestire la telemetria e generare i comandi di volo per la CC3D in funzione delle direttive di volo impartite da terra.
Il compito di Arietta G25 è gestire gli algoritmi di navigazione autonoma e varie funzioni ausiliarie non time critical, inoltre permette la comunicazione tramite WiFi, però la telemetria principale è gestita con sistema radio basato su moduli Xbee Pro (portata utile oltre 600 metri).
Mano a mano che ci saranno progressi nel lavoro li posterà qui, per il momento ho solo montato il telaio con i motori, Lunedì mi arriva la CC3D.
Una precisazione, in ottemperanza alle attuali normative di legge, ma anche per pura e semplice prudenza, il quadri è controllabile tramite un normale radiocomando semplicemente spostando uno switch sullo stesso, inoltre ho chiesto ad Enac una autorizzazione per volo autonomo (esplicitamente vietato dal regolamento) sperimentale a scopo ricerca scientifica, autorizzazione che mi è stata concessa :slight_smile:
Più tardi qualche foto della meccanica.

non mi e' arrivata la notifica su questo post, forse dopo un tot di tempo le notifiche non arrivanmo piu' ?
incredibile che non si risolva questo rpoblema, che e' alla base della fruizione di un forum grande come questo

Testato:
non mi e' arrivata la notifica su questo post, forse dopo un tot di tempo le notifiche non arrivanmo piu' ?
incredibile che non si risolva questo rpoblema, che e' alla base della fruizione di un forum grande come questo

Delle notifiche non mi fido, infatti sono più le volte che non arrivano che quelle che arrivano, faccio prima ad aprire la pagina del forum e vedere dove ci sono nuovi post.

E' una vita che non va ... a me, quando si degna di darle (nell'unread topic), ne da al massimo 4 o 5, anche se i post dove ho postato e che hanno muovi post sono 10 o 15 ... inoltre, per alcuni post, non me le da quasi mai ...

in realtà siamo discriminati perche spammiamo troppo :confused:

Madwriter:
in realtà siamo discriminati perche spammiamo troppo :confused:

Spammare noi ? ... e quando mai ? ... :grin: :grin: :grin:

Etemenanki:
Spammare noi ? ... e quando mai ? ... :grin: :grin: :grin:

Io l'unico spam che conosco è questo, ed è commestibile. :smiley:

Ciao a tutti, sto costruendo il mio primo quadricottero con arduino uno e imu. Ovviamente la strada non è facile, ma dopo molti problemi sono giunto al primo volo. In quel momento ho constatato che un motore iniziava a girare in ritardo. Allora ho ripetuto la calibrazione degli esc sia manuale che via Multiwii ma non riuscivo a risolvere nulla. Allora ho pensato ad un pin difettoso, e così è stato. Infatti ho provato a cambiare il pin tra il motore 4(quello che inizia a girare in ritardo) e il motore 3 ed il risultato è stato che il motore 3 iniziava a girare in ritardo. Cercando su internet ho trovato che bisogna modificare qualcosa nella sezione OUTPUT ma non essendo un gran programmatore, per evitare danni, chiedo aiuto a voi.

non e' possibile rispondere al quesito con i soli dati riferiti

Ciao a tutti,
premetto che alla fine ce l'ho fatta e ho costruito un quad (600mm) con fc Arduino e imu, dopo averci sbattuto la testa un bel po' è filato tutto liscio.
Ora però il problema è che, dopo averci volato per una settimana e con risultati ottimi, l'altro ieri pomeriggio decido di fare un po' di manutenzione. Stringo le viti del telaio, mi assicuro che tutto sia attaccato bene e cambio lo scotch biadesivo per tenere ferma la imu. Dopo aver fatto ciò, torno a farlo volare con la bruttissima sorpresa che il quad è impazzito. Appena accelero per farlo alzare si alza di pochi centimetri poi inizia a ruotare senza senso, con l'inevitabile conseguenza che si schianti a terra. Prima di tornare a casa ho provato a capire dove potesse essere il problema e ho notato che è come se la fc cercasse di bilanciare un movimento che in realtà non esiste, infatti una coppia di motori accelera facendolo ruotare senza la possibilità di controllarlo. Ho ricontrollato subito tutti i cablaggi ma niente da fare. A casa ho ricontrollato l'ortogonalità tra i motori, e sono praticamente in asse perfetto, poi ho letto che potrebbe essere un problema del giroscopio, ma non credo dato che ci ho volato senza inconvenienti per una settimana.
Quindi, cosa posso aver modificato/rotto mentre facevo la revisione?
Ah, un'ultima cosa. Ho provato anche ad agire sui trim, come consigliato da alcuni, ma niente da fare. Gira troppo forte per risolvere con i trim.
Questo è il video di quello che succede:

che software usi? sicuro di aver rimontato la IMU nella stessa orientazione?

lesto:
che software usi? sicuro di aver rimontato la IMU nella stessa orientazione?

Prima usavo Multiwii 2.3 ma nel cercare di risolvere qualcosa sono passato alla 2.4. Purtroppo è rimasto tutto uguale, errori compresi. Si la imu è montata correttamente, come anche il motori e le eliche. Sono state le prime cose che ho controllato.

Ishac:
Prima usavo Multiwii 2.3 ma nel cercare di risolvere qualcosa sono passato alla 2.4.

[Disclaimer]
Quanto descritto di seguito se decidi di farlo è a tuo rischio e pericolo.
Non mi prendo nessuna responsabilità per eventuali danni a cose e persone.
[/Disclaimer]

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.

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?