Forum: Mikrocontroller und Digitale Elektronik ITG3200 Gyrosensor


von gertrud h. (falron1994)


Lesenswert?

Hi,
ich arbeite zurzeit an einem Schulprojekt. Hierfür versuche ich einen 
9DOF-Sensor von Sparkfun auszuwerten. Beim Beschleunigungssensor hatte 
ich kaum Probleme, jedoch treten diese nun beim Gyrosensor ITG3200 auf.
Das Problem ist, dass ich immer nur 0 als Werte zurückgeliefert bekomme. 
Ich habe auch das von Sparkfun zur Verfügung gestellte Testprogramm 
1-zu-1 auf meinen Microcontroller (Arduino Leonardo, VCC an 3,3 V 
ausgang verbunden) gespielt, aber auch dies liefert mir nur 0en.
Deshalb wollte ich euch bitten mir weiterzuhelfen, wenn ihr mein Problem 
lösen könnt.

Freundliche Grüße

von gertrud h. (falron1994)


Lesenswert?

// Hier mein Quellcode

#include <Wire.h>

#define DLPF_FS (0x16)
#define ITG (0x69)
#define TO_READ_GYRO (8)

byte gyroValues[TO_READ_GYRO];

 //In the setup section of the sketch the serial port will be 
configured, the i2c communication will be initialized, and the itg-3200 
will be configured.
void setup()
{
  //Create a serial connection using a 9600bps baud rate.
  Serial.begin(9600);

  //Initialize the I2C communication. This will set the Arduino up as 
the 'Master' device.
  Wire.begin();

  writeTo(ITG, 0x3E, 80);
  writeTo(ITG, 0x3E, 03);
  writeTo(ITG, 0x15, 07);
  writeTo(ITG, DLPF_FS, 19);
  writeTo(ITG, 0x17, 00);
}

void loop()
{
  //Create variables to hold the output rates.
  int gyroAddress = 0x1B;
  double gyroX, gyroY, gyroZ, temp;

  temp = (((int)gyroValues[0])<< 8) | gyroValues[1];
  gyroX = (((int)gyroValues[2])<< 8) | gyroValues[3];
  gyroY = (((int)gyroValues[4])<< 8) | gyroValues[5];
  gyroZ = (((int)gyroValues[6])<< 8) | gyroValues[7];

  Serial.print("X: ");
  Serial.println(gyroX);
  Serial.print("Y: ");
  Serial.println(gyroY);
  Serial.print("Z: ");
  Serial.println(gyroZ);
  Serial.println(" ");

  delay(1000);
}

//Writes val to address register on device
void writeTo(int device, byte address, byte val) {
  Wire.beginTransmission(device); //start transmission to device
  Wire.write(address);        // send register address
  Wire.write(val);        // send value to write
  Wire.endTransmission(); //end transmission
}

//reads num bytes starting from address register on device in to buff 
array
void readFrom(int device, byte address, int num, byte buff[]) {
  Wire.beginTransmission(device); //start transmission to device
  Wire.write(address);        //sends address to read from
  Wire.endTransmission(); //end transmission

  Wire.beginTransmission(device); //start transmission to device
  Wire.requestFrom(device, num);    // request 6 bytes from device

  int i = 0;
  while(Wire.available())    //device may send less than requested 
(abnormal)
  {
    buff[i] = Wire.read(); // receive a byte
    i++;
  }
  Wire.endTransmission(); //end transmission
}

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.