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

Federico:
Dai non fate i barboni comprate caricatori che hanno almeno su il timer :stuck_out_tongue:

se mi finanziassi io non avrei di questi problemi (magari peggio :grin:)

io le carico a 2C e in 35 minuti sono cariche :slight_smile:

La mia disavventura con gli accelerometri continua...
ADXL345 e MultiWii 1.8v2

Sostanzialmente con bus i2c a 400mhz mi vede sempre tutto angolato strano e l'accelerometro nel conf ha valori di 1000. Con bus i2c a 100mhz vede circa 300 -300 557 (roll pitch yaw) ma in alcun caso muovendo il quadri vedo muoversi le linee che identificano i valori dell' ADXL. Vedo invece muoversi il disegno del quadri.

In particolare col bus scanner i2c noto che il mio adxl prende indirizzo 0x1D (su quel bus scanner) mentre sarebbe previsto un 0X3A (sempre VD0 su VCC) che e' esattamente 1 bit in piu'. Su multiwii ottengo gli stessi risultati sia con un indirizzo sia con l'altro.

Mi sparo?
F

Federico:
In particolare col bus scanner i2c noto che il mio adxl prende indirizzo 0x1D (su quel bus scanner) mentre sarebbe previsto un 0X3A (sempre VD0 su VCC)

Collega CS e SDO a +3.3, in questo modo cambi l'address a 0x3A, se usi lo stesso address del WM+ è normale che non funziona nulla.

Non credo sia lo stesso indirizzo ma attualmente CS e' NC nel mio setup.
Modifico subito e riprovo. INT1 e INT2 li lascio NC invece.
Chissa' se cambia qualcosa...

EDIT: No :-/ Sostanzialmente sia sul mio shield sia su una breadboard prova mi va sempre a 0x1D l'indirizzo del 345. Strano. Inoltre l' ADXL mi da sempre valori -1000 1000 1000. Uao :slight_smile: Ricontrollo tutto..

EDIT2: L'ADXL funzionerebbe, stesso cablaggio (del solo adxl345) su una breadboard e un .pde di esempio per leggere i valori, sembrerebbe dare cose realistiche. Multiwii se ne frega (v 1.8.2)

EDIT3: Forse sto capendo l'arcano mistero... (sperém)

EDIT4: YATTA! E' quasi la una ma... Allora. Ho dovuto togliere il filo che univa AREF a 3.3v (usato per l'altro accel attualmente disconnesso) perche' altrimenti mi dava 4v sul bus i2c. Non ne capisco il perche'. Ho usato quindi l'indirizzo i2c proposto da MultiWii per l'adxl345 anche se qualsiasi altro software non lo trova con quell'indirizzo, e non capisco il perche'. Ho rimesso la velocita' del bus a 100 e non a 400 perche' mi pare dai grafici sul multiwii dare una risposta migliore, ma questo posso valutarlo se davvero necessario. Infine avevo messo il 345 con lo stesso orientamento stando ai segni del 335, e inutile dire che non erano identici, quindi per il momento ho corretto gli assi via software.
Che sbattimento.

Federico:
Non credo sia lo stesso indirizzo ma attualmente CS e' NC nel mio setup.

CS va collegato a +3.3V per dire che usi la I2C invece della SPI, SDO a seconda del suo stato logico ti permette di scegliere tra due diversi address I2C, quello di default è identico a quello del WM+, devi usare quello alternativo pertanto SDO va collegato a 1 logico, address 0x1D che diventa 0x3A in write e 0x3B in read.

EDIT: No :-/ Sostanzialmente sia sul mio shield sia su una breadboard prova mi va sempre a 0x1D l'indirizzo del 345. Strano. Inoltre l' ADXL mi da sempre valori -1000 1000 1000. Uao :slight_smile: Ricontrollo tutto..

L'address è quello giusto, devi calibrare l'accelerometro per vedere i valori cambiare correttamente.

EDIT4: YATTA! E' quasi la una ma... Allora. Ho dovuto togliere il filo che univa AREF a 3.3v (usato per l'altro accel attualmente disconnesso) perche' altrimenti mi dava 4v sul bus i2c.

Premesso che non ti serve più il 3.3V su Aref però non ha alcun effetto sulla I2C perché tale tensione viene semplicemente applicata sul comparatore dell'ADC come riferimento, però se colleghi 3.3V su Aref senza attivare da software il riferimento esterno fai un bel corto tra il +5V di default su Aref e il 3.3V, fortunatamente può scorrere solo poca corrente e il rischio di danni è minimo, però hai sicuramente malfunzionamenti sulla I2C.

Infine avevo messo il 345 con lo stesso orientamento stando ai segni del 335, e inutile dire che non erano identici, quindi per il momento ho corretto gli assi via software.

Per l'orientamento dovresti fare riferimento al data sheet del 345 più che alla serigrafia sul pcb, ogni produttore di quelle board fa come gli pare.
Tanto per dirtene una divertente ho preso questa breakout di Sparkfun per avere giro e accelerometro sulla stessa board e risparmiare spazio, all'atto pratico gli assi dell'accelerometro e quelli del giroscopio risultano tra loro sfasati di 90° e invertiti come modulo, ovvero l'asse Y del giroscopio è parallelo all'asse -X dell'accelerometro e ovviamente ho dovuto modificare il relativo setup.
In pratica mi è bastato modificare il setup di default degli assi in "CONFIG" basandomi sull'orientamento di base del giroscopio con i suoi assi orientati in accordo con gli assi del quadri.
Ti consiglio di passare all'ultima mod del 8/10, lo sto usando sul mio quadri e va bene, ti permette di usare il pin 8 o il 12 come sesto canale RC, molto comodo se vuoi armare i motori con un interruttore della radio invece di fare il "giocoliere" con gli stick :slight_smile:

//****** end of advanced users settings *************

//if you want to change to orientation of individual sensor

#define ACC_ORIENTATION(X, Y, Z)  {accADC[ROLL]  = -Y; accADC[PITCH]  = X; accADC[YAW]  = Z;}

// opzioni di default da lasciare commentate se non serve cambiare nulla.
//#define ACC_ORIENTATION(X, Y, Z)  {accADC[ROLL]  =  Y; accADC[PITCH]  = -X; accADC[YAW]  = Z;}  
//#define GYRO_ORIENTATION(X, Y, Z) {gyroADC[ROLL] = -Y; gyroADC[PITCH] =  X; gyroADC[YAW] = Z;}
//#define MAG_ORIENTATION(X, Y, Z)  {magADC[ROLL]  = X; magADC[PITCH]  = Y; magADC[YAW]  = Z;}

Grazie astro per i preziosi chiarimenti. Provero' subito la ultima release di sviluppo, che ho visto li sul sito. Se attivo il canale per armare i motori, si autodisabilita la possibilita' di armarli con lo stick? Ho visto che in realta' ci sono almeno un paio di modi per armarli con gli stick... (se non erro, minima potenza yaw a destra oppure minima potenza roll a destra)
F

Federico:
Se attivo il canale per armare i motori, si autodisabilita la possibilita' di armarli con lo stick?

Si viene disattivata la modalità tramite stick.
Devo fare alcuni appunti sulla sicurezza quando si armano i motori tramite switch, occorre fare attenzione a non accendere il quadri con la radio con lo switch in posizione armato perché a seconda della posizione del gas i motori possono iniziare a girare immediatamente, oppure rimangono fermi ma non appena spostate il gas iniziano a girare, dipende molto da come ragiona la vostra radio all'accensione.
Sulla mia radio posso predisporre un allarme all'accensione, sia del Tx che del Rx (ha la telemetria e comunica col Tx sempre), che mi avvisa se ho uno, o più, switch in posizione diversa dal previsto e se il gas non è al minimo, questo mi impedisce di trovarmi con i motori armati per errore, però questa funzionalità è presente solo su radio di fascia alta quindi fate molta attenzione a come sono messi il gas e lo switch per armare il motore quando accendete il quadri.
Se non volete problemi di sicurezza perché la vostra radio non ha allarmi per posizioni errate alla accensione lasciate il comando per armare i motori tramite stick, in questo modo anche se accendete la radio con il gas al massimo non succede nulla.
Un "trucco" usato dai piloti esperti è evidenziare i vari switch mettendoci sopra un pezzo di tubo in silicone colorato, si usa quello di grosso diametro per la miscela, in modo da evidenziare otticamente gli switch con funzioni primarie, p.e. rosso quello per armare il motore, verde quello per i modi di volo, tale sistema migliora anche il feedback tattile con lo switch.

La radio turnigy ha una funzione in tal senso. Se all'accensione tutte le leve non sono nella loro posizione diciamo base, non si accende. Consideravo una scocciatura questa cosa ma inizio a capirne il senso...

astrobeed:
Ti consiglio di passare all'ultima mod del 8/10, lo sto usando sul mio quadri e va bene, ti permette di usare il pin 8 o il 12 come sesto canale RC, molto comodo se vuoi armare i motori con un interruttore della radio invece di fare il "giocoliere" con gli stick :slight_smile:

http://code.google.com/p/multiwii/downloads/list
La development, che e' quella del 17/10 ad oggi, e' quella che mi indichi? MultiWii_dev_20111017.zip

EDIT: Ho impostato il canale 6 come motori armati, e funziona. Ultima prova di scarsissimo volo la faro' sabato prima che ci incontriamo, una volta che ottimizzo ancora un po' quello che posso fare per ora...

Federico:
Google Code Archive - Long-term storage for Google Code Project Hosting.
La development, che e' quella del 17/10 ad oggi, e' quella che mi indichi? MultiWii_dev_20111017.zip

Questa è uscita ieri, io sto usando quella precedente rilasciata l'8/11, adesso la scarico e vedo cosa è cambiato.

Un aggiornamento riguardo le ultime dev rilasciate, tutte quante hanno problemi di stabilità, ieri sera ho testato abbastanza a lungo l'ultima del 17/10 e addirittura dopo 20-30 secondi in hovering il quadri comincia a vibrare notevolmente.
Ovviamente le prove le ho fatte in casa e i risultati sono sicuramente affetti dai problemi dovuti all'effetto suolo visto che più di qualche decina di cm non mi sono fidato a sollevarlo, però leggendo sul forum di Multiwii vedo che tutti quanti stanno riscontrando questi problemi sulle dev.
Per il momento sconsiglio di utilizzare le dev, installate la 1.8 p2 che è sicuramente funzionante, molti lamentano un problema di drift della coda, ma credo sia dovuto più al WMP che al software.
Oggi cerco di importare la modifica ufficiale per il sesto canale della ricevente nella 1.8 p2, da quanto ho visto sono solo poche righe di codice da ricopiare che non hanno alcun impatto con le funzioni di volo.

Sarei lieto di compilare questa 1.8_r2-mod_astro :slight_smile:

Eccola, attenzione che la configurazione è quella per il mio quadri, va modificata in accordo con il quadri su cui la userete.
Per impostare il sesto canale RC basta togliere il commento alla relative #define, attualmente è impostato per il PIN8 il cui uso normale è il buzzer allarme batteria, in alternativa si può usare il PIN12, uso primario controllo alimentazione per sensori I2C.
La trovate in allegato o, in alternativa, su Megaupload, c'è solo lo sketch per Arduino, come configuratore usate quello allegato alla 1.8 p2.

MultiWii_1_8_patch3.rar (39 KB)

Piccolo addendum, con questa relase funziona perfettamente anche il configuratore Android che con le ultime dev non andava perché cambia la modalità di invio, oltre al numero, delle informazioni alla GUI.

Ho testato la tua rev3, funziona :slight_smile: (chiaramente)
Tra stasera e domani dedichero' le attenzioni che posso dedicare a sto ammasso di ferraglia!

Federico:
Tra stasera e domani dedichero' le attenzioni che posso dedicare a sto ammasso di ferraglia!

Magari evita di distruggerlo domani così Domenica, al campo, lo sistemiamo per bene :smiley:

astrobeed:

Federico:
Tra stasera e domani dedichero' le attenzioni che posso dedicare a sto ammasso di ferraglia!

Magari evita di distruggerlo domani così Domenica, al campo, lo sistemiamo per bene :smiley:

evita di distruggerlo domani, così puoi distruggerlo domenica :stuck_out_tongue:

a parte gli scherzi, mi raccomando domenica, io non posso venire, perché sto troppo lontano, ma voglio vedere un sacco di video dei vostri multicosi volanti :smiley:

Il mio è ribaltante nel senso che non fà altro che ribaltarsi =(=(

ratto93:
Il mio è ribaltante nel senso che non fà altro che ribaltarsi =(=(

sfigato :-p

MhaHJAhjHAhA

LOVE