Go Down

### Topic: Getting angles from Gyro (Read 1 time)previous topic - next topic

#### matstra

##### Mar 27, 2013, 03:49 pmLast Edit: Mar 27, 2013, 04:05 pm by matstra Reason: 1
I'm trying to get the angles from a gyroscope, and assuming I already have the rate of change (V, degree/s) of the angle Axz, can I calculate the angle Axz_1 with the following:

VAxz = (Axz_1-Axz_0) / (t1-t0)

Which would give us that:

Axz_1 = VAxz*(t1-t0)+Axz_0

When  VAxz = Rate of change of the angle Axz(in deg/s);
Axz_0 = Starting angle; Axz_1 = New angle;
t0 = Starting time; t1 = New time(in seconds)

Is this correct ?

#### pylon

#1
##### Mar 27, 2013, 04:55 pm
Quote
Is this correct ?

The math is correct. If you want to know if you chose the right algorithm, you have to tell us, where you get the values from and what you want to achieve.

#### matstra

#2
##### Mar 27, 2013, 05:36 pm

The math is correct. If you want to know if you chose the right algorithm, you have to tell us, where you get the values from and what you want to achieve.

I'm using a digital sensor called L3G4200D.
So my question is basically, do I get degree/s as a value out as data from this kind of sensor ?

I got the algorithm from this site http://www.starlino.com/imu_guide.html

#### pylon

#3
##### Mar 27, 2013, 06:09 pm
What code are you using?

#### matstra

#4
##### Mar 27, 2013, 06:13 pm

What code are you using?

http://bildr.org/2011/06/l3g4200d-arduino/

#### pylon

#5
##### Mar 27, 2013, 06:38 pm
The units you're getting are 70 millidegrees (per second), so about 14 units make one degree (per second). Datasheet page 10.

#### matstra

#6
##### Mar 27, 2013, 07:08 pm
ok thanks!

I tried to understand why there is 10 bits in the code for CTRL_REG4, and not 8 bits as I asumed there should be when I look on the datasheet, you know why ?

This is from the code:

#### pylon

#7
##### Mar 27, 2013, 07:16 pm
Quote
I tried to understand why there is 10 bits in the code for CTRL_REG4, and not 8 bits as I asumed there should be when I look on the datasheet, you know why ?

In that code there are 8 bits (which are all 0). Did you notice the '0b' at the start which prepends a binary constant?

#### matstra

#8
##### Mar 27, 2013, 07:42 pm
ok, I see. That is strange...
Does it work if I just use hex instead like this ?

#### Erdin

#9
##### Mar 27, 2013, 09:12 pm
"0b00000000" should be B00000000.
http://arduino.cc/en/Reference/IntegerConstants
But I never use binary. So use 0x00.

#### matstra

#10
##### Mar 27, 2013, 10:25 pm
Ok! Thanks a lot!

Go Up