Final version of ArduIMU (Include Video)

After a few more tests, I now have the final version of the ArduIMU. The main problem was the calibration of the gyros: converting the raw data to degrees/s. I had to change the source code, compile it, upload, and repeat it over and over again. Totally waste of time.So i configured Arduino to externally adjust the gyros and the accelerometer jitter filter, using the nunchuck potentiometers (joystick axis). Now it’s working pretty well. =)Please, in the source code, ignore all the lines marked with "//(kalman)", this lines are related to the kalman filter code, those marked by "//(nunchuck) are related to nunchuck accelerometer and axis control, and all marked by "//(gyro)" are code related to the control of the gyroscope.Another tip, all the data is processed in radians, then is converted to degrees (radian*180/PI = radians*57.295779= degrees). If somebody needs any help, please feel free of asking me.Video:-Yellow color = Just Accelerometer read-Red color= Accelerometer+Gyro+KalmanFIiter
Arduino Source Code: Labview (ground station) source code:

To do: -Integrate another Gyro (to make it dual axis) . -Program the SPI altimeter.-And put all the hardware together and make it work (GPS, Altimeter, IMU, Modem).

Done: -Servo control -Gps Waypoint navigation (I’ll post later about it).

The next article I'm going to post all the links to get started with Arduino environment. All you would need to learn: tutorials, examples, references, tips and tricks. If you already know C++ it’s going to be 99% easier. If not, you are going to discover why C/C++ is the most compressive and famous language ever ;-) Then jumping to any AVR, ARM, PIC microcontroller C/C++ language environment, is going to be a lot easier, because they’re all based on the same principles.

E-mail me when people leave their comments –

You need to be a member of diydrones to add comments!

Join diydrones


  • Hi Jordi, I have a question about your code. What is the difference between the q_m and q_bias? Is q_bias the voltage or the digital value the gyro outputs when it's not moving? I'm trying to combine a digital compass and a single axis gyro using a kalman filter, so any help that you can give me would be greatly appreciated.

  • how to convert this code for pitch roll and yaw axis with 6 dof razor imu

  • how to convert this code for pitch roll and yaw axis with 6 dof razor imu


  • Hello sir,
    i have been looking for Kalman filter to use on my Arduino, with 3-axis acclerometer (BMA-180) and 3-axis gyro (ITG-3200)...

    Can you please tell me if your code here works for me?
    Also what circuit connects i have to make?

    I'm a beginner into this so please help..

    thank you..

  • HI, and congratulations for the implementation!
    Am I right when I am saying that this implementation works only when the system doesn't move? I think that when you move, the accelerations will appear either if you are rotating or not.
    Do you have any idea on how I can get a good angle value using gyrometers and accelerometers aswell?
    I need this for a INS/GPS integration, when the system is in a continuous move.
  • hello every body can any one explain me how to use the KALMAN filter if we had 3 axis acelerometer and single axis YAW gyro?
  • Hi, Jordi
    I can't access the link of Arduino Source Code:
    Labview (ground station) source code: Can you send it to my email?
    My email Thanks for ever!!

    Best wishes!
  • Developer
    Hello Jason,

    So sorry but i lost everything. I been unable to find somebody with a copy of the code.

    The are very simple functions of LabView, everything is available even in the student version.

  • Hi Jordi, I know it's been a long time, but I was wondering if you would be able to share your code for your PC application that you're using? It looks like you're using LabView. I've been trying out LabView but haven't been able to get my serial data to turn into a running X/Y graph which is what I really want to test with. Running logs and then graphing just isn't the same :(

    If you could share your LabView testing blocks, or even just a good reference that you used to make it, I would really appreciate it.
  • Hi Jordi, great stuff.

    I was wondering what sort of value joy_x_axis and joy_y_axis are equal to.
    I am using an IMU board from sparkfun, so no joystick attachments!
    I still want to be able o adjust for jitter, but is it really best to have potentiometers for it or should I just adjust the program code?

    Many thanks

This reply was deleted.