Pages: 1 [2] 3 4 ... 101   Go Down
Author Topic: [Multicotteri] Elettronica : IMU, MCU, Sensori ed algoritmi di controllo  (Read 117139 times)
0 Members and 2 Guests are viewing this topic.
Tortona
Offline Offline
God Member
*****
Karma: 2
Posts: 601
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Collegare AREF a +3.3V serve solo se usi sensori analogici che funzionano a 3.3V, il WMP comunica tramite I2C pertanto gli ADC non vengono utilizzati.
Non collegare assolutamente il 3.3V ad AREF se da software non prevedi l'uso del riferimento esterno, in caso contrario metti in corto il 3.3V con il 5V attraverso AREF non appena vai a leggere dall'ADC.

ah okok...allora era per questo che mi dava 5v....avevo letto male io
grazie

EDIT: e invece perchè il led non si accende?
« Last Edit: September 27, 2011, 08:17:41 am by cavde » Logged

Se gommo tiene,io vince gara! Se gommo non tiene,io come bomba dentro montagna

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 120
Posts: 9158
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

EDIT: e invece perchè il led non si accende?

Il led si accende all'avvio, o meglio lampeggia, durante la calibrazione del giroscopio, poi rimane spento e lampeggia solo quando muovi la imu, segnala che c'è una correzione in atto.
Logged

Tortona
Offline Offline
God Member
*****
Karma: 2
Posts: 601
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Il led si accende all'avvio, o meglio lampeggia, durante la calibrazione del giroscopio, poi rimane spento e lampeggia solo quando muovi la imu, segnala che c'è una correzione in atto.

scusami, mi sono espresso male, intendevo ho collegato un led allo shield perchè lo shield stesso copre arduino e non si vede il led del pin 13....ho messo una resistenza da 220ohm ma non si accende, mentre quello su arduino si accende e si comporta proprio come hai detto tu
Logged

Se gommo tiene,io vince gara! Se gommo non tiene,io come bomba dentro montagna

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 120
Posts: 9158
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

scusami, mi sono espresso male, intendevo ho collegato un led allo shield perchè lo shield stesso copre arduino e non si vede il led del pin 13....ho messo una resistenza da 220ohm ma non si accende,

Se non ti si accende le possibilità sono queste:
Led collegato al contrario.
Led bruciato.
Led non collegato verso GND.
Saldature che non fanno contatto.
Logged

Tortona
Offline Offline
God Member
*****
Karma: 2
Posts: 601
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Se non ti si accende le possibilità sono queste:
Led collegato al contrario.
Led bruciato.
Led non collegato verso GND.
Saldature che non fanno contatto.

ieri ho fatto tutti questi controlli, oggi li rifaccio...anche se il led è collegato giusto col piede lungo sul pin13 e non è bruciato, le saldature le ho controllate col tester e vanno bene...riprovo magari mi sfugge qualcosa

EDIT: sono un pollo, alla fine avevo risolto già ieri sera, era una saldatura fatta male...tenchiu
« Last Edit: September 27, 2011, 09:04:09 am by cavde » Logged

Se gommo tiene,io vince gara! Se gommo non tiene,io come bomba dentro montagna

0
Offline Offline
Shannon Member
****
Karma: 130
Posts: 10448
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Rieccomi!!
per la serie stira & ammira, vi presento la "mia" IMU, basata sulla DCM di S.O.H. Madgwick (ho semplicemente fatto un porting del codice), fastwire di Francesco Ferrara(copia & incolla brutale), codice WMP da mezzo forum di arduino, google & wiibrew.
l'ho estratta stanotte (è dall'1 che ci lavoro) dal resto del codice del quadricottero, ma finamlente ve la posso presentare.
è ancora in versione molto alfa, diciamo che funziona. Non ho ancora integrato la lettura dei comandi via seriale, quindi vi narro brevemente quello che accade:
collegate un WMP via il classico i2c (attenzione le pull-up interne sono attivate, per disattivarle in WMP.cpp, funzione init(), cambiate Fastwire::setup(300, true); in Fastwire::setup(300, false)smiley-wink
collegate un qualsiasi accelerometro analogico, asse Y al pin 0, X all'1 e Z al 2. A priori dovete sapere il valore medio dell'accelerometro. per la X e la Z è facile, basta leggere il valore analogico a accelerometro pianeggiante. Invece per la Y dovete inclinarlo su un lato di 90°. i valori sono settabili nel file IMUlast.cpp; midA è la Y, midB la X e midC la Z.

ora andate in stabilizzazione.cpp e noterete nella funzione update la riga    float gx=data[2], gy=-data[1], gz=data[0], ax=data[5], ay=-data[4],az=data[3];
i primi 3 valori sono i giroscopi: se state testando l'inclinazione dell'accelerometro, mettete pure questi 3 valori a 0.
ATTENZIONE! gli altri 3 valori sono l'acceleromtro: se volete testare il giroscopio mettete ax e ay = 0 ma AZ=1!!!! è normale vedere l'orientamento che ritorna sui 0 gradi proprio per questo motivo (no, non vale mettere tutti e 3 a 0, incasina l'algoritmo)

Questo codice scrive via seriale il quaternione di rotazione con una frequenza di 50Hz.
già ma chi sa leggere i quaternioni di rotazione, direte voi? semplice, il PC smiley

è presente anche il codice processing di un bellissimo rettangolo colorato che mostra l'orientamento della vostra IMU, e che dunque vi aiuterà enormemente in tutti i passaggi di controllo funzionamento e orientazione dei sensori. Il codice originale l'ho sgraffignato a varesano da qualche parte nel suo sito, ma direi che ormai di originale son rimaste solo le funzioni buildBoxShape() e drawCube().
Se non vedete le scritte, o le vedete male, è colpa dei font di processing, dovreste "compilarne" uno, date un'occhiata al sito processing alla funzione "textFont" (che dovrete modificare in draw() )
noterete alcune strane scritte azzurre con texbox, fregatevene che manca un pezzo di codice arduino.
Le scritte bianche invece sono: a sinistra il quaternione, quelle in alto sono l'orientamento in angoli euleriano (i classici x, y, z), al centro in radianti e a destra in gradi.



per ora funziona così e così ve la dovete tenere, ci voglio lavorare sopra ancora un pò per pulire il codice (ci sono certi obbrobri sintattici, logici, e inenarrabili), calibrazione pseudo automatica dell'accelerometro (da gui), attivazione di solo giro, solo acc o entrambi da gui, nonchè attivazione/disattivazione pull-up interne, reset remoto dei sensori e del quaternione, rendere attive le caselle per settare P e I dell'algoritmo via GUI (ma non credo sia necessario)


SAREBBE MOLTO GRADITO UN TEST DA PARTE VOSTRA, E MAGARI UN PROGRAMMA SIMILE CON FILTRO DI KALLMANN PER FARE UN CONFRONTO OGGETTIVO (ma quì mi sa che devo aspettare astro)

* TestImu.zip (8.77 KB - downloaded 24 times.)
* testIMU.zip (493.31 KB - downloaded 28 times.)
« Last Edit: September 27, 2011, 08:30:30 pm by lesto » Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 120
Posts: 9158
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Rieccomi!!
SAREBBE MOLTO GRADITO UN TEST DA PARTE VOSTRA, E MAGARI UN PROGRAMMA SIMILE CON FILTRO DI KALLMANN PER FARE UN CONFRONTO OGGETTIVO (ma quì mi sa che devo aspettare astro)

Prima di fine settimana non posso mettermi a fare nessun test, però la provo sicuramente e ti faccio sapere, pure io sono curioso di fare un confronto con il Kalman, mi hai appena dato un valido motivo per accelerare i tempi  smiley
Logged

Tortona
Offline Offline
God Member
*****
Karma: 2
Posts: 601
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@lesto: ma il lavoro che stai facendo è un nuovo codice da sostituire al Multiwii??? comunque complimenti per il lavoraccio

Volevo chiedere una delucidazione sul bus I2C: nel concetto di bus non si ragiona sul fatto che c'è il bus e tutti i dispositivi I2C vanno collegati al bus allo stesso modo? cioè posso mettere in comune SDA del WM+ e SDA dell'ADXL345 e poi collegarlo ad arduino? stessa cosa per SCL 3,3V e GND?
Logged

Se gommo tiene,io vince gara! Se gommo non tiene,io come bomba dentro montagna

Monselice PD Italy
Offline Offline
Faraday Member
**
Karma: 26
Posts: 5491
фон Крыса
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Con l'ADXL 345 devi collegarti nei pin che sarebbero destinati al connettore del nunchuk....
Logged

Se corri veloce come un fulmine, ti schianterai come un tuono.

0
Offline Offline
Shannon Member
****
Karma: 130
Posts: 10448
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

@lesto: ma il lavoro che stai facendo è un nuovo codice da sostituire al Multiwii??? comunque complimenti per il lavoraccio
non è da sostituire al multiwi... quando ho iniziato a vedere il quadricoso volevo farmi da solo anche il codice. E già che c'ero ho implementato questo nuovo algoritmo (DCM) al posto del "vecchio" (kallmann). Effettivamente non si sà chi il migliore, so solo che la SQRT mi porta via quasi 1/4 di memoria per lo sketch..
grazie per i complimenti, gira e rigira son ormai 2 anni che ci sto dietro smiley

Volevo chiedere una delucidazione sul bus I2C: nel concetto di bus non si ragiona sul fatto che c'è il bus e tutti i dispositivi I2C vanno collegati al bus allo stesso modo? cioè posso mettere in comune SDA del WM+ e SDA dell'ADXL345 e poi collegarlo ad arduino? stessa cosa per SCL 3,3V e GND?
si, GND è un caso particolare perchè è il valore di riferimento per il voltaggio. Il resto è come dici te, l'importante è che i componenti NON abbiano lo stesso indirizzo I2C. In alcuni può essere settato usando dei jumper, in altri te le davi cavare in altro modo (come per esempio col WMP e il Nunkuck). I sensori da te citati dovrebbero funzionare tranquillamente insieme.

Con l'ADXL 345 devi collegarti nei pin che sarebbero destinati al connettore del nunchuk....
assolutamente no, il nun è un caso a parte che usa un protocollo proprietario della sony
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Monselice PD Italy
Offline Offline
Faraday Member
**
Karma: 26
Posts: 5491
фон Крыса
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

E qundi vanno collegati in parallelo ?
Scusate per la baggianata....
Logged

Se corri veloce come un fulmine, ti schianterai come un tuono.

Riva del Garda, TN / Forlì
Offline Offline
Edison Member
*
Karma: 8
Posts: 2246
Il piu' modesto al mondo
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

vorrei dare un consiglio.

visot che sia astro che lesto stanno facendo il loro software non è meglio creare un altro sotto-topic discutendone e lasciando qui i problemi di collegamento/calibrazione delle IMU?
Logged

Il nuovo forum italiano sull'elettronica: http://www.electroit.tk/ <--- Nuovamente online!

Milano, Italy
Offline Offline
Faraday Member
**
Karma: 11
Posts: 3091
Sideralis Arduino!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

E qundi vanno collegati in parallelo ?
Scusate per la baggianata....
Si vanno in parallelo :-)
Logged

Federico - Sideralis
Arduino &C: http://www.sideralis.org
Foto: http://blackman.amicofigo.com

0
Offline Offline
Shannon Member
****
Karma: 130
Posts: 10448
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

vorrei dare un consiglio.

visot che sia astro che lesto stanno facendo il loro software non è meglio creare un altro sotto-topic discutendone e lasciando qui i problemi di collegamento/calibrazione delle IMU?

in teoria siete voi gli off topic, visto che i vostri problemi sono riguardanti un software specifico, multiwii, e non generici smiley-mr-green

a me fa comodo sentire le vostre lamentele, così so cosa devo implementare a lato GUI per semplificarvi la vita, e magari altri si interessano a cosa succede veramente all'interno del codice, e questi esempi in realtà possono essere visti come tutorial avanzati (ma non troppo)
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Monselice PD Italy
Offline Offline
Faraday Member
**
Karma: 26
Posts: 5491
фон Крыса
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ho appena fatto qualche prova... il risultato è che se acellero piano piano inizia a ballare su un lato allota con le altre leve stabilizzo il tutto continuo ad acellerare e parte di colpo rovesciandosi su di un lato.. risultato ? ho fatto fuori 4 eliche .... ho come l'impressione di doverne ordinare un camion prima di riuscire ad usarlo per bene...
Logged

Se corri veloce come un fulmine, ti schianterai come un tuono.

Pages: 1 [2] 3 4 ... 101   Go Up
Jump to: