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

Federico:
Scusate sono disassemblato, disassestato, ovvero rincoglionito :slight_smile:
Ho risposto nel post sbagliato...

Grazie marchino per il consiglio.
Mi chiedevo una cosa, sul tuo quad hai fissato la scheda MWC direttamente al telaio e poi hai applicato la freeIMU solo col sistema del nastro biadesivo come indicavi?

Esatto
qui si vede la shield montata
https://www.facebook.com/photo.php?fbid=278595642172126&set=oa.10150367529047141&type=1&theater

E il coso blu che spunta da una vite?

Federico:
E il coso blu che spunta da una vite?

E' soltanto un pezzo di termo restringente per non far vedere la filettatura della vite.

curiosità: per chi ha la combinazione stabile, può provare a spostare velocemente di lato il quad senza inclinarlo (a mano quindi, magari usando un tavolo per mantenere il tutto il più in bolla possibile) e osservare da PC se l'inclinazione rilevata dalla IMU varia.
So che in teoria non dovrebbe, ma tra la teoria e la pratica...

lesto:
e osservare da PC se l'inclinazione rilevata dalla IMU varia.
So che in teoria non dovrebbe, ma tra la teoria e la pratica...

Sulla GUI di MultiWii l'assetto risulta quasi costante, e non serve attivare il modo stable perché la visualizzazione tiene conto già di tutti i senori presenti, anche muovendo rapidamente sul piano il quadri al massimo si osservano oscillazioni di pochi gradi che ritornano rapidamente a 0.
Però se guardi il grafico dei sensori ti viene batticuore perché l'accelerometro, per ovvi motivi, schizza alle stelle, il giro rimane pressoché immobile per X e Y e rileva movimenti su Z dovuti agli inevitabili cambi di prua mentre muovi il tutto.

Ci siamo quasi, in allegato il rendering della Qcopter v1.0beta, le dimensioni sono scese a 80mm invece di 100mm, c'è il modulo PPMSUM integrato, ho eliminato i tre trimmer perché alla fine è meglio usare il mini terminale LCD che emula completamente la GUI.
Devo ancora sistemare per bene la serigrafia, sopratutto quella inferiore dove ci sono diversi jumper a saldare per la predisposizione della scheda, e alcuni dettagli di placement-

I fori in corrispondenza della IMU sono per avvitarcela/montarcela?
Ma tramite cosa viene attaccato il secondo arduino+LCD? i2c? Seriale?
Mitica la ppmsum integrata :slight_smile:
Mi spiace per i trimmer, che mi sembravano utili, o no?

L'ATmega a 16Mhz ?
Perchè non 20 ??? sarebbe un pelo più reattivo...

ratto93:
L'ATmega a 16Mhz ?
Perchè non 20 ??? sarebbe un pelo più reattivo...

A quanto ne so io, l'atmega che noi usiamo a 16mhz puo' essere utilizzato a 20 sistemando cristalli e forse firmware, e sperando che le librerie non vadano tutte a farsi benedire...

Federico:

ratto93:
L'ATmega a 16Mhz ?
Perchè non 20 ??? sarebbe un pelo più reattivo...

A quanto ne so io, l'atmega che noi usiamo a 16mhz puo' essere utilizzato a 20 sistemando cristalli e forse firmware, e sperando che le librerie non vadano tutte a farsi benedire...

Stro stesso ha riscritto il bootloader per farlo funzionare a 20Mhz le librerie non dovrebbero aver problemi...

non è detto, multiwii riscrive alcune funzioni a basso livello, e se usa direttamente i timer con valori non autocalcolati a partire dalla frequenza, ma con valori fissi, allora la frittata è fatta :slight_smile:

Federico:
I fori in corrispondenza della IMU sono per avvitarcela/montarcela?

I due fori servono nel caso devi montare sensori che non entrano nello spazio riservato, fatto su misura per la FreeImu e il WMP, in questo caso monti una lastrina di supporto sopra il pcb, usando i due fori per delle colonnine in nylon da 10-15 mm, sulla quale metti i sensori.

Ma tramite cosa viene attaccato il secondo arduino+LCD? i2c? Seriale?

Sul connettore seriale che viene utilizzato sia per la programmazione del ATmega, tramite adattatore USB, e per dialogare con la GUI, la versione su display LCD fa le stesse cose salvo presentare il grafico dei sensori e l'animazione del quadri.

Mi spiace per i trimmer, che mi sembravano utili, o no?

Con il miniterminale LCD fai le stesse cose e pure meglio, ho preferito ridurre le dimensioni, solo 80 mm, in modo da poter utilizzare la Qcopter anche su quadri di piccole dimensioni.

ratto93:
AStro stesso ha riscritto il bootloader per farlo funzionare a 20Mhz le librerie non dovrebbero aver problemi...

Non esageriamo, ho solo modificato il bootloader originale per farlo funzionare a 20 MHz.
Come ti ha detto Lesto MultiWii usa Wiring solo parzialmente, anzi lo usa quasi nulla visto che il 90% del programma è scritto in C ANSI, molti registri che toccano le temporizzazioni sono inizializzati direttamente e se modifichi il clock poi tocca andare a mettere mano a tutto il programma per far quadrare le cose.
C'è anche la questione PPM per gli ESC che utilizza il timing standard di Arduino, 490 Hz, portando il clock a 20 MHz diventa 612 Hz per mantenere costante la Millis(), nel caso di Arduino questo è un fatto positivo, nel caso di MultiWii è negativo perché rende impossibile ottenere un PPM compreso tra 1ms e 2ms ( = 500 Hz).

astrobeed:
Ci siamo quasi, in allegato il rendering della Qcopter v1.0beta, le dimensioni sono scese a 80mm invece di 100mm, c'è il modulo PPMSUM integrato, ho eliminato i tre trimmer perché alla fine è meglio usare il mini terminale LCD che emula completamente la GUI.
Devo ancora sistemare per bene la serigrafia, sopratutto quella inferiore dove ci sono diversi jumper a saldare per la predisposizione della scheda, e alcuni dettagli di placement-

Ciao,
ottimo,
ma occhio ai condensatori con involucro metallico, influiscono sul magnetometro :slight_smile:

marchino65:
ma occhio ai condensatori con involucro metallico, influiscono sul magnetometro :slight_smile:

No perché è in alluminio e come tale non ha caratteristiche magnetiche.

astrobeed:

marchino65:
ma occhio ai condensatori con involucro metallico, influiscono sul magnetometro :slight_smile:

No perché è in alluminio e come tale non ha caratteristiche magnetiche.

te l'ho detto perchè in una IMU del polacco i condensatori metallici hanno causato non pochi problemi

marchino65:
te l'ho detto perchè in una IMU del polacco i condensatori metallici hanno causato non pochi problemi

Una sola o in varie schede ?
Come hanno risolto i problemi ?

astrobeed:
C'è anche la questione PPM per gli ESC che utilizza il timing standard di Arduino, 490 Hz, portando il clock a 20 MHz diventa 612 Hz per mantenere costante la Millis(), nel caso di Arduino questo è un fatto positivo, nel caso di MultiWii è negativo perché rende impossibile ottenere un PPM compreso tra 1ms e 2ms ( = 500 Hz).

non ti seguo. non dovrebbe semplicemente aumentare la precisione del PPM? che poi non si riesca ad ottenere 1 o 2 ms tondi, poco importa no?

astrobeed:

ratto93:
AStro stesso ha riscritto il bootloader per farlo funzionare a 20Mhz le librerie non dovrebbero aver problemi...

Non esageriamo, ho solo modificato il bootloader originale per farlo funzionare a 20 MHz.
Come ti ha detto Lesto MultiWii usa Wiring solo parzialmente, anzi lo usa quasi nulla visto che il 90% del programma è scritto in C ANSI, molti registri che toccano le temporizzazioni sono inizializzati direttamente e se modifichi il clock poi tocca andare a mettere mano a tutto il programma per far quadrare le cose.
C'è anche la questione PPM per gli ESC che utilizza il timing standard di Arduino, 490 Hz, portando il clock a 20 MHz diventa 612 Hz per mantenere costante la Millis(), nel caso di Arduino questo è un fatto positivo, nel caso di MultiWii è negativo perché rende impossibile ottenere un PPM compreso tra 1ms e 2ms ( = 500 Hz).

Come non detto :sweat_smile:

Ed ecco la 1.0 rc1, praticamente definitiva come schema, qualche piccolo ritocco da fare alla disposizione di alcuni elementi secondari.
Rispetto alla versione precedente ho ridotto il numero di OUT programmabili del modulo ppmsum a 3, invece di 6, perchè comunque MultiWii impegna fino sei canali per le funzioni di base, oltre ai quattro per il movimento c'è AUX1 e AUX2, ho aggiunto un led su questo modulo che rimane acceso fisso in assenza di segnale RC in ingresso, inizia a lampeggiare quando vengono rilevati i canali della ricevente.
Dalla GUI di programmazione del modulo ppmsum è possibile scegliere quanti canali indirizzare verso MultiWii, p.e. 6, e quanti indirizzare verso gli OUT programmabili, p.e. con una radio 9 canali posso mandare sei canali a MultiWii e tre verso gli out, oppure otto canali verso multiwii, il massimo gestito, e uno verso gli out.
Sono disponibili come uscite 4 connettori in stile servo per gli i quattro ESC principali, quindi configurazioni 4X, 4+, Y3 e Y4, due connettori per servo da utilizzarsi per pitch e roll della camera, un connettore segnale e gnd per il trigger della camera, è disponibile un connettore AUX su cui sono riportati i due canali PWM restanti per una configurazione Y6 o esa e il pin 7 di Arduino che rimane libero, non gestito da MultiWii standard in configurazione ppmsum, da utilizzarsi per eventuali controlli aggiuntivi.
Dal lato alimentazioni c'è il connettore per collegare il +5V proveniente da un BEC, o un ESC solo se si è sicuri della qualità della tensione, un connettore dove riportare la tensione della LiPo per la misura del relativo livello, c'è un filtro passa basso per ripulirla dal rumore, e un connettore per l'allarme batteria scarica, 5V max 1A, dove collegare un led ad alta luminosità e/o un buzzer.
Il tasto di reset nel rendering è quasi tre volte più grosso del reale, non ho disponibile una primitiva 3D per l'esatto modello di tasto che andrò a montare.