Show Posts
Pages: [1] 2 3 ... 49
1  International / Software / Re: IMU 10 DOF Drotek - MPU6050 on: March 04, 2014, 03:59:03 am
Ok allora vedrò di trarre spunto dal multiwii perchè con quello funziona.. Anche se devo ancora esattamente capire se l'altezza me la da giusta perchè non saprei che punto di riferimento prendere per valutare quest'ultima!
2  International / Software / Re: IMU 10 DOF Drotek - MPU6050 on: March 03, 2014, 05:58:05 am
Per l'HMC ho provato questo codice con gli indirizzi 1E e 69 ma niente:
Code:
/*
An Arduino code example for interfacing with the HMC5883

by: Jordan McConnell
 SparkFun Electronics
 created on: 6/30/11
 license: OSHW 1.0, http://freedomdefined.org/OSHW

Analog input 4 I2C SDA
Analog input 5 I2C SCL
*/

#include <Wire.h> //I2C Arduino Library

#define address 0x69 //0011110b, I2C 7bit address of HMC5883

void setup(){
  //Initialize Serial and I2C communications
  Serial.begin(9600);
  Wire.begin();
 
  //Put the HMC5883 IC into the correct operating mode
  Wire.beginTransmission(address); //open communication with HMC5883
  Wire.write(0x02); //select mode register
  Wire.write(0x00); //continuous measurement mode
  Wire.endTransmission();
}

void loop(){
 
  int x,y,z; //triple axis data

  //Tell the HMC5883 where to begin reading data
  Wire.beginTransmission(address);
  Wire.write(0x03); //select register 3, X MSB register
  Wire.endTransmission();
 
 
 //Read data from each axis, 2 registers per axis
  Wire.requestFrom(address, 6);
  if(6<=Wire.available()){
    x = Wire.read()<<8; //X msb
    x |= Wire.read(); //X lsb
    z = Wire.read()<<8; //Z msb
    z |= Wire.read(); //Z lsb
    y = Wire.read()<<8; //Y msb
    y |= Wire.read(); //Y lsb
  }
 
  //Print out values of each axis
  Serial.print("x: ");
  Serial.print(x);
  Serial.print("  y: ");
  Serial.print(y);
  Serial.print("  z: ");
  Serial.println(z);
 
  delay(250);
}

Cioè quello che mi pare strano è questo: se è un problema di conversione di livelli i valori non dovrebbero semplicemente essere  un po' anomali ( come nel barometro), piuttosto che fissi come se tutto fosse scollegato?( come nei restanti 2 sensori)
3  International / Software / Re: IMU 10 DOF Drotek - MPU6050 on: March 03, 2014, 05:37:40 am
Allora mi sa che prenderò questosmiley-roll-sweat

Comunque a questo punto non ho capito come usare l'MPU e l'HMC :\
Per l'MPU dovrei poter usare il codice postato sopra? Il suo indirizzo è sempre quello essendo master?
Per l'HMC invere dovrei usare lo stesso indirizzo dell'MPU? Se si, non riesco a trovare la funzione della libreria che specifichi l'indirizzo!



4  International / Software / Re: IMU 10 DOF Drotek - MPU6050 on: February 28, 2014, 09:29:30 am
Quindi da questo schema dovrei togliere i 5v, collegare 3.3 ai 3.3 di arduino e mettere le pull up tra questo ed sda ed scl?

In tal caso non mi spiego i collegamenti, ma mi fiderei perchè non ne so molto  smiley-sweat
5  International / Software / Re: IMU 10 DOF Drotek - MPU6050 on: February 27, 2014, 11:13:03 am
Si l'ho letto, è che credevo la mia spacciata ormai, per questo ho chiesto. Se facessi un partitore con due resistenze come la vedresti?
E per l'mpu quindi dovrei usare lo stesso indiriZo di quello a cui si inrerfaccia?
6  International / Software / Re: IMU 10 DOF Drotek - MPU6050 on: February 27, 2014, 03:53:50 am
Alla drotek non rispondono..  proprio questa settimana libera che avevo non potrò fare niente!
Sapete consigliarmi qualcosa, come detto sopra, che integri i 3 sensori, che vada coi 5v e che abbia materiale e documentazione di facile reperibilità? E' per iniziare a smanettare sui quadri.
7  International / Software / Re: IMU 10 DOF Drotek - MPU6050 on: February 26, 2014, 08:43:07 am
Ah ... non per nulla, sullo schema ... i pin si chiamano SCL_3.3 e SDA_3.3 ... perché vanno fatti lavorare a 3.3V smiley-wink

Guglielmo

Quindi andava messo qualcosa tra i pin scl ed sda e quelli di arduino no?
Un semplice partitore di tensione sarebbe andato bene?

E quindi come la metto con quelli della drotek?  smiley-roll-sweat
Eventualmente avete qualche scheda migliore da consigliarmi che integri tutto?
8  International / Software / Re: IMU 10 DOF Drotek - MPU6050 on: February 26, 2014, 08:31:34 am
Qui se ne parla, ma è un post vecchio e l'utente pare non sia attivo da allora. Inoltre l'unico codice che cita è quello di fabio varesano che mi sa che è uguale al mio..
9  International / Software / Re: IMU 10 DOF Drotek - MPU6050 on: February 26, 2014, 07:00:39 am
Purtroppo ha ragione Guglielmo. La I2C deve lavorare a 3V3 e i pin non sono 5V tolerant.
Sul sito non è ben specificato.
Io contatterei la Drotek per contrattare un cambio della scheda.

EDIT: Con la nuova scheda fatti regalare anche uno di questi --> http://www.drotek.fr/shop/en/home/37-i2c-level-shifter.html  smiley-wink

Ma.. ma..  smiley-cry
Eppure li avevo letti un pochino quelli dei singoli componenti, pensavo che poi la scheda facesse il resto!!

Dite di contattare la drotek? Io l'avevo comprata da ebay..
10  International / Software / Re: IMU 10 DOF Drotek - MPU6050 on: February 26, 2014, 06:55:40 am
Si, ma a parte il fatto che uno dei due non risponde non riesco a comunicarci..

Ricapitolo:
 
Il barometro MS5611 che sta al 0x77 mi sa che mi da dei dati un po' incoerenti:
Code:
#include <Wire.h>
//#include <DebugUtils.h>
#include <MS561101BA.h>

MS561101BA baro = MS561101BA();

void setup() {
  Wire.begin();
  Serial.begin(115200);
  delay(1000);

  // Suppose that the CSB pin is connected to GND.
  // You'll have to check this on your breakout schematics
  baro.init(MS561101BA_ADDR_CSB_LOW);
}

void loop() {
  float temperature = NULL, pression = NULL;
  Serial.print("temp: ");
  while(temperature == NULL) {
    temperature = baro.getTemperature(MS561101BA_OSR_4096);
  }
  Serial.print(temperature);
 
  Serial.print(" degC pres: ");
  while(pression == NULL) {
    pression = baro.getPressure(MS561101BA_OSR_4096);
    //Serial.println(baro.lastTempConv);
    //Serial.println(baro.lastPresConv);
    //Serial.println("aaa");
  }
  Serial.print(pression);
  Serial.println(" mbar");
}

Posizionandolo sul davanzale della finestra dopo un po' (almeno 10 minuti) la temperatura non rimane stabile.. Ora tende ad abbassare, ora tende ad alzare.. Aveva raggiunto i 7° ma ora sta a 9. Mentre la pressione fa la stessa cosa tra i 1660 e 1679 mbar
A torino dovrei avere 5.4°C e 988hPa
La cosa strana è che comunque la differenza di temperatura entrandolo e uscendolo la rileva, quindi comunque funziona..


L'MPU6050 gyro+acc invece non da niente:
Code:
#include "Wire.h"

// I2Cdev and MPU6050 must be installed as libraries, or else the .cpp/.h files
// for both classes must be in the include path of your project
#include "I2Cdev.h"
#include "MPU6050.h"

// class default I2C address is 0x68
// specific I2C addresses may be passed as a parameter here
// AD0 low = 0x68 (default for InvenSense evaluation board)
// AD0 high = 0x69
MPU6050 accelgyro;

int16_t ax, ay, az;
int16_t gx, gy, gz;

#define LED_PIN 13
bool blinkState = false;

void setup() {
    // join I2C bus (I2Cdev library doesn't do this automatically)
    Wire.begin();

    // initialize serial communication
    // (38400 chosen because it works as well at 8MHz as it does at 16MHz, but
    // it's really up to you depending on your project)
    Serial.begin(115200);

    // initialize device
    Serial.println("Initializing I2C devices...");
    accelgyro.initialize();

    // verify connection
    Serial.println("Testing device connections...");
    Serial.println(accelgyro.testConnection() ? "MPU6050 connection successful" : "MPU6050 connection failed");

    // configure Arduino LED for
    pinMode(LED_PIN, OUTPUT);
}

void loop() {
    // read raw accel/gyro measurements from device
    accelgyro.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);

    // these methods (and a few others) are also available
    //accelgyro.getAcceleration(&ax, &ay, &az);
    //accelgyro.getRotation(&gx, &gy, &gz);

    // display tab-separated accel/gyro x/y/z values
    Serial.print("a/g:\t");
    Serial.print(ax); Serial.print("\t");
    Serial.print(ay); Serial.print("\t");
    Serial.print(az); Serial.print("\t");
    Serial.print(gx); Serial.print("\t");
    Serial.print(gy); Serial.print("\t");
    Serial.println(gz);

    // blink LED to indicate activity
    blinkState = !blinkState;
    digitalWrite(LED_PIN, blinkState);
}
Code:
a/g:   0   0   0   0   0   0
11  International / Software / Re: IMU 10 DOF Drotek - MPU6050 on: February 26, 2014, 06:17:45 am
Code:
I2C Scanner
Scanning...
I2C device found at address 0x69  !
I2C device found at address 0x77  !
done

Stessa cosa di prima!
12  International / Software / Re: IMU 10 DOF Drotek - MPU6050 on: February 26, 2014, 05:39:24 am
Nessuno riesce ad aiutarmi? smiley-sad
Ho finito ora la sessione di esami e vorrei usufruire di questa settimana per fare qualcosina !
13  International / Software / Re: IMU 10 DOF Drotek - MPU6050 on: January 21, 2014, 09:12:58 am
ma un semplice
#define MPU6050_ADDRESS 0X69
Già provato, ma rimane uguale.

Ho provato anche l'altimetro con un altro codice:
Code:
#include <Wire.h>
//#include <DebugUtils.h>
#include <MS561101BA.h>

MS561101BA baro = MS561101BA();

void setup() {
  Wire.begin();
  Serial.begin(9600);
  delay(1000);

  // Suppose that the CSB pin is connected to GND.
  // You'll have to check this on your breakout schematics
  baro.init(MS561101BA_ADDR_CSB_LOW);
}

void loop() {
  float temperature = NULL, pression = NULL;
  Serial.print("temp: ");
  while(temperature == NULL) {
    temperature = baro.getTemperature(MS561101BA_OSR_4096);
  }
  Serial.print(temperature);
 
  Serial.print(" degC pres: ");
  while(pression == NULL) {
    pression = baro.getPressure(MS561101BA_OSR_4096);
    //Serial.println(baro.lastTempConv);
    //Serial.println(baro.lastPresConv);
    //Serial.println("aaa");
  }
  Serial.print(pression);
  Serial.println(" mbar");
}

L'output si è ora stabilizzato dopo 15 minuti a temp: 14.28 degC pres: 1634.59 mbar
Il termometro sembra essere coerente con le temperature interne ed esterne. ma i dati della stazione metereologica di torino indicano una pressione di 974.5 hPa.

Non ne vuole sapere neanche il magnetometro, i valori rimangono sempre uguali:
Code:
/*
An Arduino code example for interfacing with the HMC5883

by: Jordan McConnell
 SparkFun Electronics
 created on: 6/30/11
 license: OSHW 1.0, http://freedomdefined.org/OSHW

Analog input 4 I2C SDA
Analog input 5 I2C SCL
*/

#include <Wire.h> //I2C Arduino Library

#define address 0x1E //0011110b, I2C 7bit address of HMC5883

void setup(){
  //Initialize Serial and I2C communications
  Serial.begin(9600);
  Wire.begin();
 
  //Put the HMC5883 IC into the correct operating mode
  Wire.beginTransmission(address); //open communication with HMC5883
  Wire.send(0x02); //select mode register
  Wire.send(0x00); //continuous measurement mode
  Wire.endTransmission();
}

void loop(){
 
  int x,y,z; //triple axis data

  //Tell the HMC5883 where to begin reading data
  Wire.beginTransmission(address);
  Wire.send(0x03); //select register 3, X MSB register
  Wire.endTransmission();
 
 
 //Read data from each axis, 2 registers per axis
  Wire.requestFrom(address, 6);
  if(6<=Wire.available()){
    x = Wire.receive()<<8; //X msb
    x |= Wire.receive(); //X lsb
    z = Wire.receive()<<8; //Z msb
    z |= Wire.receive(); //Z lsb
    y = Wire.receive()<<8; //Y msb
    y |= Wire.receive(); //Y lsb
  }
 
  //Print out values of each axis
  Serial.print("x: ");
  Serial.print(x);
  Serial.print("  y: ");
  Serial.print(y);
  Serial.print("  z: ");
  Serial.println(z);
 
  delay(250);
}
(anche qui ho provato a cambiare gli indirizzi con 30,69,77..)


Insoma non posso prendere nessun dato da questa IMU smiley-sweat
14  International / Software / Re: Come calcolare il valore x elevato a y on: January 21, 2014, 05:09:24 am
Aspetta, devi elevare a potenza con un'esponente negativo ? ... io e la matematica ci odiavamo reciprocamente smiley-razz, ma a quanto ricordo, un numero elevato a potenza con un'esponente negativo era equivalente al reciproco dello stesso numero elevato con lo stesso esponente ma positivo ...

Cioe', se non ricordo male

a^-b = 1/(a^b) ... cioe', a elevato alla meno b, dovrebbe essere lo stesso che uno diviso (a elevato b)

(matematici del forum, correggetemi se dico ca**ate smiley-wink smiley-razz)

Non sono un matematico, ma sto preparando analisi 1 e confermo :p
15  International / Software / Re: IMU 10 DOF Drotek - MPU6050 on: January 21, 2014, 04:46:25 am
Code:
Scanning...
I2C device found at address 0x69  !
I2C device found at address 0x77  !
done
Non dovrei averne 3 di indirizzi?
0x69 suppongo sia quello dell'MPU, nella libreria ho visto infatti che l'indirizzo di defaul è 68 mentre si usa 69 se AD0 è high.
Ho quindi provato ad inserire #define MPU6050_ADDRESS_AD0_HIGH    ma niente, magari sbaglio proprio la sintassi..

I collegamenti dovrebbero essere giusti: 5V e massa a quelli arduino, SDA ed SCL rispettivamente agli analogici 4 e 5. I collegamenti per il potenziale non dovrei mai averli cambiati che io ricordi, quindi mi sentirei di escludere la possibilità di qualche danno legato ad un errore fatto su questi ultimi.

Se può servire, questo è l'output del codice dell'MPU:
Code:
Initializing I2C devices...
Testing device connections...
MPU6050 connection failed
a/g: 0 0 0 0 0 0
a/g: 0 0 0 0 0 0
a/g: 0 0 0 0 0 0
a/g: 0 0 0 0 0 0
a/g: 0 0 0 0 0 0
a/g: 0 0 0 0 0 0
[...]

Pages: [1] 2 3 ... 49