Arduino Forum

International => Italiano => Megatopic => Topic started by: astrobeed on Feb 27, 2017, 05:20 pm

Title: [Robotica] GyroNav, sensore assetto e orientamento
Post by: astrobeed on Feb 27, 2017, 05:20 pm
GyroNav è un sensore assoluto che permette di ottenere in modo preciso i valori di Pitch e Roll, rispetto ad un piano in bolla, e l'orientamento rispetto al Nord magnetico, se si inserisce il valore locale della declinazione magnetica si ottiene l'orientamento rispetto al Nord geografico.
Il progetto è composto da un Arduino Pro Mini, va bene qualunque altro modello di Arduino 8 bit, una coppia di sensori MPU6050 e HMC5883L oppure un singolo MPU9150( MPU6050 + magnetometro dentro lo stesso chip).
La scelta degli MPUxxxx è obbligatoria in quanto viene sfruttato il loro DMP (Digital Motion Processor) per tutta la parte di calcoli inerenti la IMU, implementa un Kalman, e non solo quello, in grado di fare oltre 100 cicli di calcolo al secondo, senza impegnare tempo CPU di Arduino, che comunque non è assolutamente in grado di gestire la mole di calcoli, tutti in virgola mobile a 64 bit (double), per gestire in modo ottimale una IMU 6 d.o.f. (accelerometro 3 assi e giroscopio 3 assi).
In pratica Arduino provvede al calcolo dell'orientamento, rispetto al Nord magnetico, partendo dalle letture raw del magnetometro a triplo asse ed esegue una compensazione del valore calcolato in base all'inclinazione sul Pitch e Roll, questo perché se il magnetometro non si trova perfettamente in bolla la lettura dell'orientamento varia notevolmente, molti gradi, in funzione dell'inclinazione.
Come dati forniti, tramite porta seriale, volendo anche tramite SPI, non ancora implementato, abbiamo i valori del Pitch e Roll, in gradi con risoluzione al decimo di grado, e dell'orientamento, in gradi con risoluzione al singolo grado.
Tramite il file config.h è possibile modificare il formato dati in uscita tra quattro diverse modalità, attivare/disattivare i messaggi per il debug sul monitor seriale, inserire il valore locale della declinazione magnetica, quest'ultimo prossimamente sarà inserito in EEPROM e modificabile tramite comando sulla seriale, invertire il verso di rotazione dell'orientamento, quest'ultimo dipende da come si montano fisicamente i sensori.
Trovate lo sketch per Arduino, una GUI di test per Processing, alcune foto e una illustrazione dei collegamenti tra Arduino e i sensori su github, link sotto, lo sketch è molto commentato e l'intestazione contiene molte informazioni importanti sul codice.

Repository github (https://github.com/astrobeed/GyroNav)

Screenshot GUI per Processing

(http://forum.arduino.cc/index.php?action=dlattach;topic=458812.0;attach=201303)

Il tutto montato su mille fori e inserito in un box su misura 3D printed.

(http://forum.arduino.cc/index.php?action=dlattach;topic=458812.0;attach=201305)





Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: gpb01 on Feb 27, 2017, 05:26 pm
Grazie Astro, non è il mio settore e quindi ... c'è sicuramente da imparare :D

Guglielmo
Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: nid69ita on Feb 27, 2017, 07:56 pm
+1 Karma per Astro.  :)
Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: menniti on Feb 27, 2017, 08:01 pm
Complimenti, anche se non ho capito niente  :o
Comunque, MOD, i progetti completi li abbiamo sempre messi in MEGATOPIC, temo che qui, considerata la fortissima specificità del lavoro, sarà in breve tempo sommerso da qualche centinaio di nuovi Topic.
Vallo a trovare quando decideremo di costruire il nostro drone per andare a controllare se gli utenti mettono mano all'impianto elettrico di casa e bannarli sulla base dell'art. 15 del Regolamento.  :smiley-mr-green:
Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: gpb01 on Feb 27, 2017, 08:06 pm
Comunque, MOD, i progetti completi li abbiamo sempre messi in MEGATOPIC ....
Si, mi sembra un bel progetto degno del "megatopic "... sposto :D

Guglielmo

P.S.: In "Generale" lascio comunque un link permanente al thread in Megatopic ... così anche dall'area "Generale" ci si arriva.
Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: brunello22 on Feb 27, 2017, 08:41 pm
+1

Mannaggia, mi manca il magnetometro

EDIT:

Quote
MPU9050( MPU6050 + magnetometro dentro lo stesso chip).
intendevi dire MPU9250 ?
Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: doppiozero on Feb 27, 2017, 08:50 pm
Io aspetto la nuova versione con la sensorFusion visto che ho sempre voluto provarci ma non ho mai trovato tempo e voglia di studiarla  :D

La sensorFusion non viene gestita dal DMP giusto Astro?
Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: astrobeed on Feb 27, 2017, 08:58 pm
EDIT:
intendevi dire MPU9250 ?
In realtà MPU9150, il 9250 è la stessa cosa però monta un magnetometro migliore, però per il 9250 non ho tutte informazioni per utilizzare il suo magnetometro, dovrebbero arrivarmi a breve e sicuramente prevederò nel codice sia il 9150 che il 9250.
Attualmente è facile trovare schede IMU per droni che montano il 6050 più l'HMC5883L, spesso abbinati ad un barometro, per meno di 20 Euro, vanno benissimo al posto delle breakout singole con sopra il magnetometro e
l'MPU6050 che ho usato io per il prototipo.

Ho corretto il post inziale con la giusta sigla del MPU.
Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: astrobeed on Feb 27, 2017, 09:05 pm
Io aspetto la nuova versione con la sensorFusion visto che ho sempre voluto provarci ma non ho mai trovato tempo e voglia di studiarla  :D
La sensor fusion è già implementata, per la IMU, accelerometro e gyro, ci pensa il DMP e la fa molto, ma molto, bene, tra IMU e magnetometro la fa il codice, in particolare viene usata questa formulazione per ottenere l'orientamento e la compensazione con pan e tilt, la formula è riportata anche all'interno del codice nei commenti.

Code: [Select]
Yh = XM * sin(Roll) * sin(Pitch) + YM * cos(Roll) - ZM * sin(Roll) * cos(Pitch)
Xh = XM * cos(Pitch) + ZM * sin(Pitch)
Heading = arctan(Yh/Xh)

XM, YM, ZM sono le letture raw dei tre assi del magnetometro.
Roll e Pitch sono i valori, in radianti, delle inclinazioni sugli assi X e Y misurate dalla IMU


Quello che voglio aggiungere in una prossima versione è una ulteriore fusione tra la misura del Yaw (rotazione) fornita dalla IMU con l'orientamento compensato, questo per aumentare la stabilità e la risoluzione, non la precisione perché dipende dal magnetometro e con l'HMC5883L siamo attorno ai 2°.
Domani, se trovo il tempo, faccio un breve video del tutto in funzione.
Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: astrobeed on Feb 27, 2017, 09:11 pm
Vallo a trovare quando decideremo di costruire il nostro drone
Questo progetto non è pensato per l'uso su i droni, serve come sensore di orientamento su un robot mobile, in pratica permette di dirigersi in modo abbastanza preciso verso una direzione, abbinato ad un sistema di misura della distanza percorsa, può bastare un encoder a media risoluzione, permette di spostarsi attraverso dei waypoint tramite coordinate polari, vettore (distanza) e angolo.

Esempio pratico di installazione del sensore su un robot, si trova nel case giallo posto sul supporto, è importante tenere il magnetometro lontano dai motori per evitare interferenze magnetiche.


(http://forum.arduino.cc/index.php?action=dlattach;topic=458812.0;attach=201326)
Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: doppiozero on Feb 27, 2017, 09:13 pm
Si scusa, intendevo la sensorFusion per compensare la deriva dello yaw  :)

Anche la compensazione usando il pitch e il roll non la conoscevo

+1
Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: astrobeed on Feb 27, 2017, 09:20 pm
Mi sono scordato di allegarlo al primo post, questo è lo schema di cablaggio, fatto con Fritzing che per queste cose si presta molto bene, tra la Pro mini e i sensori, attenzione che sia l'MPU che l'HMC lavorano a 3.3V, idem il bus I2C, pertanto se sulla breakout del MPU non è presente un regolatore a 3.3V e le resistenze di pull up collegate al 3.3 V è necessario prevederli esterni.
Lo schema di cablaggio è presente anche nel download da github, si trova nella cartella hardware.

(http://forum.arduino.cc/index.php?action=dlattach;topic=458812.0;attach=201328)

Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: alessanddrob on Feb 27, 2017, 11:41 pm
Mi piace ,ho una domanda , ma come si fa a calcolare l'offset dell'MPU senza un piano realmente tarato , nel senso, io anche nel mio progetto ho inserito una funzione di calibrazione che richiamo con un pulsante , lei calcola tutto , la inserisce in memoria e a successivo riavvio ho gli offset calcolati.
Adesso la mia domanda . Ma che piano usate per essere precisi :(
Il prossimo test lo faccio con un secchio di acqua, un pezzo di polistirolo che galleggia , e sopra il mio sensore che ho inserito in un pezzo di nylon 10x10x2 , aspetto che si calmino le acque e provo a vedere se riesco ad avere un piano
Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: dally on Feb 28, 2017, 12:02 am
Ho visto che hai inserito la media mobile.
Molto golosa questa cosa =)
Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: astrobeed on Feb 28, 2017, 12:15 am
Mi piace ,ho una domanda , ma come si fa a calcolare l'offset dell'MPU senza un piano realmente tarato
Gli MPU6050 e MPU9x50 arrivano già calibrati, non è necessaria una ulteriore calibrazione, è una delle loro caratteristiche principali, inoltre sono in grado di autoricalibrarsi da soli a run time, però è necessario caricare un apposito codice sul DMP per questa funzionalità dato i che registri che contengono i valori di calibrazione non sono accessibili da bus I2C.
Unica accortezza è non muovere il sensore durante l'avvio, circa 1 secondo tenuto conto del tempo per caricare il codice del DMP, in questa fase viene rilevato lo zero per i tre giroscopi, non ha importanza se il sensore non è perfettamente in bolla.
Quello che richiede una calibrazione, se si vuole ottenere la massima precisione possibile, è il magnetometro, però ho verificato che anche lavorando con i valori di default la precisione è accettabile per la destinazione d'uso di questo progetto, a breve rilascerò una GUI, sempre scritta con Processing, che permette la calibrazione del magnetometro e ne memorizza i relativi valori in EEPROM.
Da notare che il sorgente del codice da caricare sul DMP non è open source, invensense ha reso pubblico solo il binario, sotto forma di listato numeri esadecimali, del codice da caricare, va fatto ogni volta che si alimenta l'MPU in quanto non possiede una flash interna, solo ram.
Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: Etemenanki on Feb 28, 2017, 09:46 am
Devo ammettere che, da non programmatore, ancora sto cercando di capirci qualcosa, ma +1 lo stesso per la condivisione di un lavoro che appare molto ben fatto (persino a me che ci capisco poco :D)

Il che mi fa sorgere una domanda: potrei in futuro utilizzarlo per quel famoso progetto di bussola in overlay video per il ROV che al momento e' accantonato per questioni di tempo ? ... la cosa prevedeva una schedina minima con un 328 standalone, con il montaggio delle altre due "a sandwich", e la comunicazione con la scheda dell'overlay era pensata in RS232 ... ma non credo questi siano grossi problemi, giusto ?
Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: astrobeed on Feb 28, 2017, 09:48 am
Stasera esce la v 1.2, aggiungo un controllo "pronto al funzionamento" tramite il led della Pro mini e lo replico su un pin in modo da poterlo portare in esterno all'eventuale case che contiene il tutto.
Il controllo serve per sapere se l'init del MPU è andato a buon fine, può capitare che per problemi legati alla I2C non si riesce a completare l'upload del codice per il DMP, e quando è possibile spostare il sensore dopo aver dato energia, bastano un paio di secondi, per sicurezza imposterò il tempo a 5 secondi.
Attualmente se c'è un problema in fase di init il led rimane spento, se è tutto ok inizia a lampeggiare a 5 Hz, il lampeggio è gestito all'interno del ciclo invio dati che avviene ogni 20 ms, 50 pacchetti al secondo, circa 1.8 ms per l'invio dell'intero pacchetto @115200 bps.
Sto valutando di inserire una ulteriore define che permette se scegliere tra l'invio continuo dei dati oppure l'invio dietro richiesta, p.e. si manda una @ sulla UART del sensore e questo risponde con l'ultima serie disponibile di valori.
Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: astrobeed on Feb 28, 2017, 09:53 am
Il che mi fa sorgere una domanda: potrei in futuro utilizzarlo per quel famoso progetto di bussola in overlay video per il ROV che al momento e' accantonato per questioni di tempo ? ...
Per il ROV è perfetto, hai sia l'assetto che l'orientamento, se non mi ricordo male, devo verificare, occorre inserire una ulteriore compensazione, una cosa simile alla declinazione magnetica, per usare le bussole magnetiche sott'acqua.
Hai disponibile anche un ulteriore dato, per il momento non  usato ma inviabile nel pacchetto, che è il Yaw della IMU, questo è un valore di tipo relativo che puoi azzerare in qualunque momento e usarlo per ruotare in modo molto preciso con una risoluzione al decimo di grado, precisione reale migliore di 0.5°
Magari quando metti mano al ROV questa cosa la vediamo assieme.
Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: Vespucci on Feb 28, 2017, 11:52 am
Che dire +1
Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: gpb01 on Mar 01, 2017, 08:01 am
>alessanddrob:  le tue domande sono state separate QUI (http://forum.arduino.cc/index.php?topic=459217.0).

Guglielmo
Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: astrobeed on Mar 02, 2017, 05:25 pm
Settimana prossima mi arriva un MPU9250, sta prendendo il posto dei 9150 che, sebbene ancora in produzione, sono sconsigliati per i nuovi progetti, così posso integrare anche questo tipo di imu nel codice.
Anche il 9250 è composto da un 6050 con aggiunto un magnetometro nello stesso chip, la differenza nei 9250 è il magnetometro integrato che è migliore rispetto a quelli presenti nel 9150.
Sto facendo alcune piccole modifiche al codice per integrare alcune nuove funzionalità, appena pronte aggiorno il repository su github.
Ho intenzione di realizzare una board dedicata per questo sensore, sopra ci metto un Atmega328PB, così da poter disporre della doppia seriale e la doppia I2C, e l'MPU9250, il tutto sarà di dimensioni molto ridotte, circa 30x30 mm, con alimentazione predisposta sia per 5V che 3.3V.
Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: alessanddrob on Mar 03, 2017, 03:42 pm
santo subito :)
Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: zoomx on Mar 03, 2017, 03:56 pm
+1
Stella e watch su GitHub, per tenermi aggiornato.
Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: aster94 on Mar 03, 2017, 04:00 pm
Useró sicuramente parti di questo codice quando mi faró un astrotracciatore per la fotocamera grazie astro!

Comunque ci sarebbe anche l hmc5983 che sulla carta dovrebbe essere migliore, chissa magari ci vuoi spendere qualche riga di codice xD

Ne approfitto della tua esperienza: la mpu6050 se ben usata con il DMP (come fatto da te) é sicuramente superiore a un adxl345, giusto?

In ogni caso avevo letto, pareri oggettivi da forum non una review ben fatta, che il magnetometro dell 9250 non é buono quanto uno stand alone, ma magari mi sbaglio
Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: Etemenanki on Mar 03, 2017, 04:45 pm
...
Magari quando metti mano al ROV questa cosa la vediamo assieme.
Il tutto procede a rilento, per via di un bel po di problemi di altro genere, quindi lo possiamo vedere con tutta calma, quando ti fa comodo ... e magari in un'altro thread, in modo da non sporcare questo ... nel frattempo ti chiedo solo una cosa al volo ...

Io avevo previsto di collegare i sensori al 328 solo con SDA ed SCL (con un paio di mosfet per traslare i livelli), e di mettere un paio di diodi in serie al 5V per abbassarlo intorno ai 3.3V ... niente di particolare, perche' essendo pensato per un mezzo subacqueo, non serve troppa velocita' di aggiornamento, gia 4 o 5 volte al secondo sarebbero sufficenti ...

Cosi al volo, pensi che un'assemblaggio di questo tipo possa interferire in qualche modo o creare problemi al tuo software ? ... o ti viene in mente qualcosa che dovrei cambiare ?
Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: alessanddrob on Mar 10, 2017, 09:53 pm
Oggi mi è arrivato il magnetometro il GY271 ,montato ma non funziona,
Mpu va perfettemante
Devo fare fare qualche include? Ho dato un occhiata ma mi pare che già così doveva funzionare .
Alimentato a 3.3
Mi era venuto il dubbio dei dati e ho fatto anche la prova a invertirli ma nulla :(
Consigli?
Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: alessanddrob on Mar 10, 2017, 10:27 pm
Domani controllo se l indirizzo è quello solito e se i registri usati per il test connessione  sono giusti
Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: vinsub on Mar 10, 2017, 10:55 pm
Devo ammettere che, da non programmatore, ancora sto cercando di capirci qualcosa, ma +1 lo stesso per la condivisione di un lavoro che appare molto ben fatto (persino a me che ci capisco poco :D)

Il che mi fa sorgere una domanda: potrei in futuro utilizzarlo per quel famoso progetto di bussola in overlay video per il ROV che al momento e' accantonato per questioni di tempo ? ... la cosa prevedeva una schedina minima con un 328 standalone, con il montaggio delle altre due "a sandwich", e la comunicazione con la scheda dell'overlay era pensata in RS232 ... ma non credo questi siano grossi problemi, giusto ?
overlay con max7456 (https://www.youtube.com/watch?v=EfBuItIzvCA)
Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: Etemenanki on Mar 11, 2017, 03:40 pm
overlay con max7456 (https://www.youtube.com/watch?v=EfBuItIzvCA)
Si, il mio prototipo userebbe proprio un MAX7456 :D
Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: alessanddrob on Mar 11, 2017, 04:09 pm
ricominciamo,
ic2scanner mi dice che indirizzo è 0x0D

sostituiti i valori

#define HMC5883L_ADDRESS            0x0D // this device only has one address
#define HMC5883L_DEFAULT_ADDRESS    0x0D

la lettura dei registri

Initializing I2C devices...
Testing device connections...
MPU6050 connection failed
Initializing DMP...
DMP Initialization failed (code 1)
Initializing HMC5883L...
Testing device connections...
HMC5883L connection failed
IDA 0
IDB 0
IDC 1

non mi restituisce H 4 3


per leggerli ho usato questo

Code: [Select]
byte MHC_init(void)
{
  byte stat = 0;
  // initialize HMC5883L

#ifdef debug
  Serial.println("Initializing HMC5883L...");
#endif
  mag.initialize();
  // verify connection
  stat = mag.testConnection();


#ifdef debug
  Serial.println(F("Testing device connections..."));
 
  if (stat) Serial.println(F("HMC5883L connected"));
  else Serial.println(F("HMC5883L connection failed"));

 // ******************** 
Serial.print("IDA ");
  Serial.println( mag.getIDA());
Serial.print("IDB ");
 Serial.println( mag.getIDB());
Serial.print("IDC ");
Serial.println( mag.getIDC());
//************************

#endif
  return stat;
}

giusto o ha sbagliato le letture?

 
Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: astrobeed on Mar 11, 2017, 04:51 pm
L'MPU6050 può usare due differenti address I2C, dipende da come è collegato il suo pin AD0, nello sketch è prevista la relativa define "MPU6050 mpu(0x69);" per usare l'address 0x69, se commentata l'address è 0x68, quale usare dipende dal modulo che stai usando e da come è connesso il pin AD0, se LOW 0x68 se HIGH 0x69.
L'address del HMC5883L è esclusivamente 0x1E, come predefinito nella relativa libreria, pertanto non devi assolutamente modificarlo.
Se non rileva l'MPU e il magnetometro è perché stai usando address errati oppure hai collegato male la I2C, ti rammento che è vitale importanza che SDA e SCL devono essere collegati al +3.3V tramite pullup da non più di 4.7k, solitamente sono già presenti sulle breakout con gli MPU, se non ci sono vanno messe.

Ieri mi è arrivato un MPU9250, domani comincio a giocarci. :)
Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: alessanddrob on Mar 11, 2017, 05:15 pm
MPU lo rileva , e funziona perfettamente
quando facevo le prove l'ho scollegato
pero , se lancio ic2scaanner mi da 0x0D per in magnetometro ,
anche io non capisco ho letto in giro solo address 0x1E

PS ma cosa mi hanno venduto :D
https://www.amazon.it/gp/product/B01N1F2J69/ref=oh_aui_detailpage_o01_s00?ie=UTF8&psc=1
Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: alessanddrob on Mar 11, 2017, 10:07 pm
Rispedito al mittente
Secondo me non funziona , ho provato parecchi esempi e sempre lo stesso problema , l'indirizzo è sbagliato e con l indirizzo giusto 0x0D qualcosa si legge nei registri,con 0x1E niente sono tutti vuoti
Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: brunello22 on Mar 11, 2017, 11:10 pm
(https://i.imgur.com/IUgHbx8.jpg)

Pare essere un problema comune link (https://www.reddit.com/r/AskElectronics/comments/5xo3md/problem_with_hmc5883l_magnetometer/)

Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: astrobeed on Mar 12, 2017, 06:13 am
Pare essere un problema comune link (https://www.reddit.com/r/AskElectronics/comments/5xo3md/problem_with_hmc5883l_magnetometer/)
Sul secondo modulo non c'è un HMC5883L originale, è un qualcosa/clone con lo stesso case e si riconosce dalla marcatura, sull'originale è L583, sull'altro c'è 5883 che non è la marcatura prevista dal produttore.
L'HMC5883L è un prodotto esclusivo di Honeywel.
Sarebbe interessante vedere come è marcato l'HMC5883L di alessanddrob.
Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: alessanddrob on Mar 12, 2017, 12:35 pm
sulla foto del venditore amazon ce quello giusto l883, ma non sono riuscito a leggere bene  quello stampato sul chip
... so cecato , ma cosi a occhio e croce pare quello falso :), intravedo il pallino più marcato , DA, e altre due righe scritte
.. i cinesi si copiano tra di loro e non gli viene bene :D


One more item: When I scan the I2C bus with the good module it returns a hit at 0x1e as expected. On the bad module I get a hit at 0x0d and not at 0x1e. If It change the library test code to 0x0d the waveform changes to this, but I still get no module detected:

https://i.imgur.com/DCW1sOh.png
anche questo mi pare che legge come me 0 0 1

Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: Etemenanki on Mar 12, 2017, 06:49 pm
Nota sui venditori del 5883: uno di essi (http://www.ebay.com/itm/GY-273-HMC5883L-3V-5V-Triple-Axis-Compass-Magnetometer-Sensor-Module-For-Arduino-/201729327756) nella sua inserzione, nonostante il prodotto nelle foto sia quello originale, riporta una frase "sibillina", quantomeno ...

"Note: It is Domestic Chip HMC5883, the program is not compatible with the original imported chip program,  we can provide Matching routine "

Sarebbe a dire che si sono prodotti dei cloni ? ... qualita' a parte, non e' un po una violazione di brevetto ? ... e poi quella parte "we can provide Matching routine" cosa vorrebbe dire, che ci sono routines per far funzionare i cloni come gli altri ? (qualita' a parte, che sarebbe tutta da vedere) ... se si, magari qualcuno che ha quei moduli potrebbe scrivergli, magari con la scusa che tempo prima ha comperato quel prodotto, e chiedergli cosa sono esattamente quelle "matching routines" e dove trovarle ...
Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: astrobeed on Mar 12, 2017, 07:43 pm
"Note: It is Domestic Chip HMC5883, the program is not compatible with the original imported chip program,  we can provide Matching routine "
In pratica si sono parati le terga dalle contestazioni perché il prodotto non funziona. :)

Sempre a proposito di sorprese con le schede cinesi, oggi ho iniziato a "giocare" con l'MPU9250, come previsto c'è molto lavoro da fare per farlo funzionare come si deve, però ho perso oltre due ore di tempo perché all'avvio i vari controlli fornivano un errore di id, 0x73 invece di 0x71, però poi caricando il codice per il DMP, per il momento sto usando quello a 6 d.o.f. per il 6050, il tutto funziona.
Per farla breve sulla mia schedina c'è montato un MPU9255 invece del MPU9250, il primo come id ha 0x73, poco male perché i due sensori sono praticamente identici come hardware e registri, il 9255 ha in più la capacità di lavorare con una libreria molto specifica per l'uso sportivo e medico, in pratica il DMP può fornire alcune info aggiuntive rispetto al DMP presente sul 6050/9250, però si può usare come un normale 9250 senza nessun problema salvo la differenza sul id.
La cosa buffa è che sul pcb ci  sono dei quadratini da marcare con un pallino che identificano il modello di MPU montato, previsti 9250, 9255, 6050, 6055, è marcato il quadratino del 9250.
Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: alessanddrob on Mar 16, 2017, 11:33 am
Un venditore che spedisce in tempi e prezzi umani un hmc , o un modulo completo di mcu ?
Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: zoomx on Mar 17, 2017, 06:28 pm
Ho una board con questo HMC5883L per cui ho provato lo scanner. Oscilla fra 1E e 1C. I collegamenti sono fatti con dupont lunghi 10 cm con cui fino adesso non ho mai avuto problemi. Neanche con quelli da 20.
Sopra c'è un jumper per farlo funzionare anche in SPI.
Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: alessanddrob on Mar 28, 2017, 04:01 pm
mi serve un aiuto
ma il pin int come funziona , a me funziona tutto con e senza , sto usando una mega2560 e non trovo differenze.
quale è il pin usato ?
danke
Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: PaoloP on Mar 29, 2017, 10:25 am
+1

Mannaggia, mi manca il magnetometro
Anche a me  :(
Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: astrobeed on Mar 29, 2017, 11:09 am
mi serve un aiuto
ma il pin int come funziona ,
Il pin INT, del MPU, fornisce un impulso ogni volta che è pronto un nuovo set dati, la frequenza dipende da come setti il sample time del  DMP, nel mio software è settato per 100 samples/sec, ovvero viene fornito un impulso ogni 10 ms.
Su Arduino il pin INT va collegato a INT0 o INT1, nel mio sketch a INT0, e il relativo interrupt determina l'acquisizione dei dati dal MPU senza necessitò di fare un polling continuo.
Se lasci INT0, di Arduino, scollegato il tutto può funzionare, male, come può non funzionare, dipende dal rumore captato da INT0 che va a creare interrupt fantasma che permettono l'acquisizione dei dati dal MPU, però senza nessun sync e con risultati non attendibili.
Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: astrobeed on Mar 29, 2017, 11:13 am
Anche a me  :(
Lascia perdere l'eventuale acquisto del magnetometro, a breve arriva la versione basata sul MPU9250, costa quanto il magnetometro da solo, che permette prestazioni migliori con inclusa la fusion tra IMU e magnetometro fatta dal DMP.
Prima di terminare la nuova release del firmware devo finire lo sbroglio della versione beta della Forumino UNO PB4, la versione alpha l'ho già testata e ci sono alcuni problemi da risolvere, non appena fatto mi concentro nuovamente su questo progetto.
Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: alessanddrob on Mar 29, 2017, 08:43 pm
Ma il pin va messo pullup o down, e dove trovo il settaggio del pin , nel tuo progetto non lo trovo
Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: astrobeed on Mar 29, 2017, 08:57 pm
Ma il pin va messo pullup o down, e dove trovo il settaggio del pin
E' semplicemente un input, non serve nessuna pullup, è attivato nella funzione MPU9250_init(), "attachInterrupt(0, dmpDataReady, RISING);"

Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: giammarco on Sep 23, 2017, 06:22 pm
Ciao Astrobeed , mi sono inbattuto in questa discussione, avendo a disposizione l'hardware necessario  ( MPU6050 e il magnetometro basato su HMC5883L precisamente gy-271) mi sono messo sotto con un arduino nano per provare il tuo fantastico lavoro.

La mia intensione è di crearmi degli strumenti da mettere nella mia barca , e tra questi volevo proprio fare una bussola compensata... e vedere di quanti gradi la mia barca sia sbandata in navigazione,( essendo a vela)

ho collegato come da tuo schema

A.nano<-----> MPU <----->GY271
A4      <-----> sda  <-----> sda
A5      <-----> scl   <-----> scl
5v      <-----> Vcc  <-----> Vcc
gnd    <-----> gnd  <-----> gnd
D2     <-----> int

compilando e mandando in Running senza collegare AD0 e impostando Ad0 lw di default (come da commento sul codice).

vedo che rileva correttamente MPU6050 , ma non HMC5883L (precisamente il gy-271)

ecco l'output su seriale:

Initializing I2C devices...
Testing device connections...
MPU6050 connection successful
Initializing DMP...
Enabling DMP...
Enabling interrupt detection (AVR external interrupt 0)...
DMP ready! Waiting for first interrupt...
FS_SEL = 3
AFS_SEL = 0
Initializing HMC5883L...
Testing device connections...
HMC5883L connection failed
1.45 : 0.01 : -3.06 * 0 : 0 : 0 * 360
1.45 : 0.01 : -3.07 * 0 : 0 : 0 * 360
1.45 : 0.01 : -3.08 * 0 : 0 : 0 * 360
0.03 : 0.09 : 1.96 * 0 : 0 : 0 * 360
 
dove ho sbagliato, oppure quel gy-271 non funziona a dovere?
Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: astrobeed on Sep 23, 2017, 06:38 pm
Mi metti un link alla scheda che stai usando, senza vedere esattamente di che hardware si tratta è difficile fare una diagnosi.
Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: giammarco on Sep 23, 2017, 06:42 pm
grazie Astrobeed

ecco il link:
http://www.robotpark.com/image/data/PRO/91457/GY_271_ELECTRONIC_COMPASS.pdf
Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: astrobeed on Sep 23, 2017, 07:04 pm
Da quanto vedo quella scheda ha un traslatore di livelli per la I2C, da 3.3V a 5V, se il modulo per l'MPU6050 che stai usando non ha anche lui un traslatore di livello questo crea problemi alla I2C.
Magari prova il magnetometro da solo con lo sketch di esempio presente sul data sheet, così ci togliamo subito il dubbio se è lui a non funzionare.
Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: giammarco on Sep 23, 2017, 07:19 pm
Da quanto vedo quella scheda ha un traslatore di livelli per la I2C, da 3.3V a 5V, se il modulo per l'MPU6050 che stai usando non ha anche lui un traslatore di livello questo crea problemi alla I2C.
Magari prova il magnetometro da solo con lo sketch di esempio presente sul data sheet, così ci togliamo subito il dubbio se è lui a non funzionare.

Esatto..... ci avevo pensato e l'ho fatto, con lo sketchdi esempio ricevo l'output
Title: Re: [Robotica] GyroNav, sensore assetto e orientamento
Post by: giammarco on Sep 24, 2017, 08:46 pm
Astrobeed oggi mi sono fatto prestare da un mio amico un HMC5883L come quello che hai utilizzato tu...

effettivamente vedo un output.

ho impostato l'output su Serial ma non avendo esperienze in merito non so come possa utilizzare questi dati per fare una bussola... che dati devo prendere oppure ho paura che i dati che leggo non siano giusti, perche lasciando il circuito fermo vedo i valori riportati nell'output cambiano continuamente....

hai qualche documentazione  sulla quale posso documentarmi in merito?

Grazie mille

P.S:  appena finito il mio progetto magari con la prima versione funzionante posterò tutti il progetto ed il codice.