Go Down

Topic: [Robotica] GyroNav, sensore assetto e orientamento (Read 8838 times) previous topic - next topic

Etemenanki

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 ?
"Sopravvivere" e' attualmente l'unico lusso che la maggior parte dei Cittadini italiani,
sia pure a costo di enormi sacrifici, riesce ancora a permettersi.

astrobeed

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.
Scientia potentia est

astrobeed

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.
Scientia potentia est


gpb01

>alessanddrob:  le tue domande sono state separate QUI.

Guglielmo
Search is Your friend ... or I am Your enemy !

astrobeed

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.
Scientia potentia est


zoomx

+1
Stella e watch su GitHub, per tenermi aggiornato.

aster94

#23
Mar 03, 2017, 04:00 pm Last Edit: Mar 04, 2017, 12:09 pm by aster94
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

Etemenanki

...
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 ?
"Sopravvivere" e' attualmente l'unico lusso che la maggior parte dei Cittadini italiani,
sia pure a costo di enormi sacrifici, riesce ancora a permettersi.

alessanddrob

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?

alessanddrob

Domani controllo se l indirizzo è quello solito e se i registri usati per il test connessione  sono giusti

vinsub

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

Etemenanki

"Sopravvivere" e' attualmente l'unico lusso che la maggior parte dei Cittadini italiani,
sia pure a costo di enormi sacrifici, riesce ancora a permettersi.

alessanddrob

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?

 

Go Up