Hi all, i am new on Arduino and Imu sensors. i connected wires from imu to arduino. i used 0-1-2-3-4 wires for x-acc, y-acc, z-acc, x-rate, y-rate.. ok.. but there is a z-rate pin on the IMU 5DOF. ST is test ok, i understood. Now, i read values from serial. what is that? these values is what? sorry my english. i read a lot of information from google. kalman filter for stabilized values from gyro+accelerometer. but how can i do? i cant understand. i will use it for my biped project, but its enough, or should i use another gyro for biped? thanks [smiley=embarassed.gif] please help
To begin with, I'd recommend just putting the board on a flat firm surface, and just read off the steady-state (stationary) values of the accelerometers and the gyros. Check that the values for two of the accelerometers are around zero (you may have to scale and/or offset the values), and that the other axis indicates +/- 1g (depends on sensor orientation). The gyro readings should be zero.
If the values are reasonably stable, start moving the sensor from side to side rapidly, and you should see one of the axes that was zero before start to vary.
Tell us what you observed, ie range of values.
OK, quick look at the data sheets for the accelerometer says that the device puts out 300mV per g, with the zero g point biased at 1.5V.
Now, it depends what you've got as the analogue reference voltage on the Arduino, but assuming it is 5V, then 0g should read back as about (1.5 / 5) * 1024 = 307. +1g will therefore be around ((1.5 + 0.3) /5) * 1024 = 368 and -1g will be around ((1.5 - 0.3) / 5) * 1024 = 245.
If you're seeing these sorts of values, then you're on the right track. HTH
379 385 446-336 305 first one xAcc, yAcc, zAcc, xRate, yRate its ok, IMU 5DOF on the table,
OK, Xacc and Yacc in the same ballpark, with Zacc looking higher. That's a good start. However, they look a bit high. Are you sure that you're powering the IMU from the 3.3V supply? Do you have a voltmeter you can calibrate the readings with?
Also puzzling is the negative Xrate. My quick read of the gyro datasheet earlier was that it gives 2mV per degree per second, with the zero point biased to 1.5V, and a maximum rate of 500 degrees per second, so a swing of +/- 1V, or from 0.5V to 2.5V. So, a zero rate of turn should give a similar range reading as the accelerometer zero point, but one reads negative.
source is arduinos' 3V3 pin, and i connected a pin (zRate, written on it, but i think its Vref), i connected it to arduinos' analog reference pin. is it right? now i havent multimeter for meauserement, and can you explain what is this values? degrees' ? radians? or other? type of that? sorry my english, and thank you for your interest.
OK, the values Xacc, Yacc, and Zacc are the accelerations experienced by the accelerometer. The Z axis (up/down) is subject to a constant 1g acceleration (9.8 metres per second per second) due to gravity, assuming the device is horizontal. If you turn the device over, then it should read -1g. If the device is flat on a non-moving surface, then the Xacc and Yacc values should be at or close to zero, because they are not subject to any acceleration. Now, the voltage output for each axis is 300mV (0.3 volts) for every g of acceleration. But, because the device doesn't output negative voltages, the zero (no acceleration) point is set to 1.5volts. So, 1g will read 1.5 + 0.3 = 1.8volts, and -1g will read as 1.5 - 0.3 = 1.2volts. If the device is at rest, or moving at constant velocity, it is not experiencing any acceleration, so the outputs will be around the zero point. (apart from the z axis, unless the device is in free-fall.
Now the gyros measure rotational rates, up to 500 degrees per second, or about 80 revs per minute (RPM). For every degree per second, they output 2mV (0.002V). So, 500 degrees per second gives an output of 500 * 0.002 = 1 volt. Again the zero point is biased to 1.5V. However, Vref is only 1,23V. I'd suggest not connecting at this stage.
ok then, i understood a lot, do you have any sample/example for acceleremeter, gyro or imu 5dof? i can understand it clearly with that thanks a lot!!!!
No, sorry, no examples - I've used accelerometers (but not this device, and not with an arduino) and I've never used gyros.
Here's the code I'm using to get accelerometer values (in Gs) from my IMU 5 DOF:
(float(analogRead(axis)) / 1023 * 5 - 1.65) / .33
where "axis" is the analog input pin for the axis to be read.
Note, the accelerometer output is ratiometric, and mine is running off of the 3.3v output so you should need aproximately 1.5 and .3 instead of 1.65 and .33 if you are using a 3v source as in AWOL's examples. These values may also need some independent empirical tuning if you need the zero point and scale to be exact, due to the unique imperfections of each chip.
For the gyro values in degrees/second, I believe you want something like:
(float(analogRead(axis)) / 1023 * 5 - 1.5) * 500
I haven't played around with this as much, but I have noticed that the zero point for these seems to always be off a bit (less than .2 degrees/second) and never seems to be exactly the same twice. It will probably be necessary to add a function to tune the offset programatically, but I haven't gotten that far yet.
Hello....i am using an IMU5DOF with arduino... i used to get a value of 370 for Yacc.... but after a while now it stopped working.....and nw it works again and nw dis tym i get a value of 130 at the same position... does this mean i have ta replace the IMU5DOF...