Developer

First Arduino IMU test

I'm trying to develop an IMU for my Arduino-based UAVS (heli) project. In my first test I just used a three-axis accelerometer, but it didn't work because the motor vibration generated too much noise. I then tried it just with gyros, but of course the the gyros drifted. So I learned through experience what everyone already knows: that the onlyway to make a good IMU is by mixing accelerometers with gyros andKalman Filters, which is eventually what I did ;-)

I ran a test to see how my IMU is responding, and I made a line chart to see the results. The test consists of rotating the device to 70 degrees and then shake it, to see how the filters reduce the "noise". It looks pretty good:


The samples was taken every 20 miliseconds, the blue line is just accelerometer and the red line is Accelerometer+Gyros+KalmanFilters.

Source code here: ArduIMU Beta1

Special thanks to Tom Pycke



E-mail me when people leave their comments –

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

Join diydrones

Comments

  • Hi,
    i can also no access the file.
    Would you please forward the files to my email address,
    pcarlini@freenet.de.
    Thanks, Pablo
  • Hi,
    I can not access http://jordii07.googlepages.com/ArduIMU_infra_beta1.txt, ....I dont know why
    Please can you email me that article? thank you very much!
    rodolphe_ripans@hotmail.com
  • Hey,

    Is the source code available somewhere? I am interested in building on this code to go to 6 DOF, but I wanted to see how this code works.

    Thanks!
  • hi,
    I bought an single axis XV 8100CB gyro.But I can not understand how to detect an angle along to z axis. I have a 3 axis acc.Later on I composed acc. and gyro. but firstly ı want to understand how gyro works.(I know only gyro measurement makes a drift it is not important for me in first step.)Thanks..
  • Thank you very much, i will let you know as my project progresses. (also thank you for such quick replies, that is absolutely amazing!)
  • 3D Robotics
    Serial is the usual method. Using software serial drivers you can use any digital pin. In our applications there is very little data exchanged between the two (one handles stabilization and the other handles navigation). The main function is just the navigation processor sending turn angles to the stabilization processor once or five times a second, depending on which GPS module you're using. It's so simple you can even do it as analog values on an analog pin if you want.

    The actual autopilot is more sophisticated than that, of course, but we're not ready to release the code yet.
  • I have done lots of research into the propeller chip and while it is a superior chip it is a bit above my level. By the way i have become quite good with the basic stamp over the last year or so and have basically maxed out it's abilities that's why i am moving on. Anyhow, i have readthe articles on the ArduPilotPro i just am unsure as to how you go about linking the two chips, how is this accomplished? I have thought of this as a possibility before but have never really known how.
  • 3D Robotics
    I don't know what motor controller would be best (we just use really small blimp motors) but the answer to your second question is that sounds like a bit much for one Atmega. In ArduPilotPro we used dual-core (2 atmegas) Arduinos to do similar work. If you really want a powerful single-chip solution, you might want to consider the Parallax Propeller, which has 8 cores, or if you can handle the toolchain complexity, a higher-end ARM.
  • Okay thanks. What motor drivers do you (or anyone here) reccomend? Something cheap that can handle decent sized motors? Also two other questions is the aurino capable of contolling the kalaman filter ( with gyro and accelerometer), a compass, 3 IR range sensors in chain, 3 motors (with outboarded H-Bridges) and possibly a GPS module? Any help is great!
  • 3D Robotics
    Yes. The Atmega168 does 20MIPS. You'll want to use outboard H-bridge motor driver chips, but reading a compass and sending reference voltage to the motor drivers is very easy.
This reply was deleted.