FreeIMU: designing a free (as in speech) 9 DOM/DOF MARG IMU

Last updated on Wed, 2011-05-25 08:38. Originally submitted by fabio on 2010-12-09 10:53.

UPDATE 2011-02-10: Check out FreeIMU project page for all the informations about FreeIMU!

In the past months I worked a lot on accelerometers, gyroscopes and digital compasses. I'm now pretty intimate with the ADXL345, the ITG3200 and the HMC5843.

I've been able to design and construct homebrew DIY breakout board PCBs for all of them (ADXL345 and ITG3200) and to create a nice library to use them which also implement a great sensor fusion algorithm capable of running on the Arduino without problems.

I'm now making the next step. Let me introduce FreeIMU.


FreeIMU is a 9 DOM/DOF MARG IMU based on the ADXL345, the ITG3200 and the HMC5843. As this is part of my Master of Science Project and that I completely share the openness of projects like Arduino, FreeIMU will be completely open: all the designs will be released under a Creative Commons Attribution-ShareAlike 3.0 Unported while all the software will be release under GNU GPL v3.

As my background is in computer science, I'm quite self-taught in PCB designs and in electronics in general. So, I'm now seeking review for FreeIMU's schematics and PCB designs. If you have experience working with IMUs, designing PCBs or circuits and you would like to contribute to a free project please have a look at the designs and feel free to comment it.

I'm using kicad as schematics and PCB editing software. It's free (as in speech) software and, once you get around its glitches, it works really well. Using non-libre software like EAGLE to design a free hardware like FreeIMU would have been simply senseless.
Note: I'm using a nightly updated version of Kicad, so if you have problems opening the files you might need to update your version of Kicad.

So, you'll find the current Kicad based sources of FreeIMU in the attachments to this page just below. You'll also need a library of components which I also attach here. For your convenience I attach also a pdf version of the schematics.

I plan to submit FreeIMU to DorkbotPDX PCB Order of the 13th December to have it constructed. I currently don't see this as a commercial project but if someone is interested in FreeIMU I could sell a couple of boards.

Ok, so.. looking forward to hear your comments. Thanks!

UPDATE 2010-12-13:

FreeIMU designs have been sent for fabrications. Looking forward to receive the PCBs soon! I have received some interesting advices on the board design so the design sent to production has been slightly modified: there's now space for an optional 10uF tantalum capacitor in package A and there's more clearance for the mounting holes. The original design would have been making almost impossible screw FreeIMU as there were some capacitor just near the mounting holes.

You find the final PCB design in the attachments below. I also attach below the Gerber and drill files sent for production.

I'd like to thanks everyone who helped in reviewing and advising on FreeIMU. I'd like to thank especially Greg Peek from dorkbotpdf-bladder mailing list who convinced me on adding the 10uF cap and adding more clearance on the mounting holes. I'd like also to thank James Neal for suggesting the addition of the mounting holes in the first place and for taking care of organizing the PCB group order.

UPDATE 2010-12-22:

The FreeIMU project is progressing nicely.

Yesterday Laen received FreeIMU's PCBs and they shuold have been
shipped to me today.

I've also been able to find cheap stencils from .. They should have shipped the stencils

Meanwhile I ordered all the components to produce 10 copies of FreeIMU.

The code is now quite stable and I'm using it on my tangible user
interface prototype (basically it's a sphere capable of detecting
taps, double taps and its orientation - more on this on my blog soon).

I should be able to produce the first boards around the first week of
January.. I'm really looking forward to it!

UPDATE 2011-01-02:

The interest this project is getting is huge! Thanks to everybody who contacted me about FreeIMU and to the people who already reserved FreeIMU units.

For those who are interested in buying one or more FreeIMU units here are the prices:

  • Fully assembled FreeIMU v0.1: 80 euro 70 euro with international shipping and pre-soldered female or male headers (at your choice) included. For multiple orders I can offer a discount, just get in touch with me.
  • FreeIMU v0.1 raw PCB: 15 euro with international shipping included and non-soldered female or male headers. Note: You will have to buy the ICs sensors by yourself and be able to reflow solder them.

If you want to buy one or more units please get in touch with me and I'll reserve your units for you. The number of available units is limited and a strict first came first served policy will be followed so reserve your units as soon as you can to be sure to get one.

UPDATE 2011-01-14:

Still no signs of FreeIMU's PCBs. It looks like Lean will need a better shipping option for us in Europe. More than 3 weeks already passed from the shipping of the PCBs from the USA to Italy and still no signs of them. Of course, we had the holidays in the middle, but that's way too much!

UPDATE 2011-01-18:

Just created a FreeIMU project page on Launchpad. Using launchpad for FreeIMU development will give us some great advantages like: an high quality repository with bazaar, code and designs browsing, questions and answers, bug and features suggestions.. Moving the project to a public place was a step to be made.

So, from now on, you can download FreeIMU designs from it's repository using:

bzr co lp:freeimu

UPDATE 2011-01-20:

Still no signs of FreeIMU v0.1 .. fuc**in Italian customs. Anyway, FreeIMU version 0.2 has been sent for fabrication and today it has been shipped to me. This time of course using FedEX which shouldn't be so slow as regular mail. Let's hope so..

Following some picture of FreeIMU v0.2:
FreeIMU v0.2 top view

FreeIMU v0.2 bottom view

UPDATE 2011-01-26:

FreeIMU is alive! First units of FreeIMU have been produced and I'm currently testing everything. Stay tuned!

FreeIMU kicad library2.48 KB
FreeIMU kicad sources (original and outdated version - not sent to production, only for reference)34.41 KB
FreeIMU schematics39.42 KB
FreeIMU kicad sources (final version sent to production)203.22 KB
FreeIMU Gerbers and drill files18.66 KB
FreeIMU_v0.1_gerbers.tar_.gz18.66 KB

did oyu stil have pcb?

Submitted by gregio (not verified) on Mon, 2012-09-17 23:24.

did oyu stil have pcb?

uff.. many of them.. but now

Submitted by fabio on Tue, 2012-09-18 01:21.

uff.. many of them.. but now it's also possible to buy a complete board. See

Instead if you want a bare pcb just get in touch by mail and I'll ship you one.

nice work

Submitted by bereket (not verified) on Tue, 2012-05-01 09:53.

hi nice work
can u tell me how u calibrate the adxl345 & itg3200


Submitted by Darrell (not verified) on Fri, 2011-12-09 10:36.

Hi Fabio,

I am interested in one or 2 blank pcb's.
Are they available now? Can you send me a email
on how to pay with paypal. hdarek [at] hotmail [dot] com

Thank You,

Hi, I don't currently have

Submitted by fabio on Fri, 2011-12-09 11:22.

Hi, I don't currently have any.. but you can get the latest designs from the project page and get the boards directly from .. good luck.

hi I like to buy FreeIMU from

Submitted by frederic (not verified) on Sat, 2011-05-14 12:50.


I like to buy FreeIMU from you, how to do ?

I am from france.



Hi Frederic, I do have spare

Submitted by fabio on Sat, 2011-05-14 13:22.

Hi Frederic, I do have spare prototypes available. Just get in touch with me to arrange it.

Free IMU V0.2 PCB availability

Submitted by Mike (not verified) on Thu, 2011-02-10 23:57.

Hello Fabio,

First off all, congratulations on you project and big thanks for sharing this with all of us.

Would you happen to have spare IMU V0.2 PCBs available ? And if yes what would be cost ?

I would like you build up a board for use in my robotics projects.

And how about Femtoduino - are they available as well ?

Thank you, Mike

Hey Mike, thanks for your

Submitted by fabio on Fri, 2011-02-11 01:09.

Hey Mike, thanks for your interest in my projects.

Unfortunately, I only have 4 PCBs more for FreeIMU v0.2.. I can sell one without problems but keep in mind that the HMC5843 is now unavailable anywhere so it's pretty hard to build a FreeIMU without it. I do have some HMC5843 in stock.

On FreeIMU project page, you'll find all the files needed to create your own FreeIMU PCB, using for example Dorkbot PDX group PCB service.

About the other questions sent me by mail:

Would you be so kind and advice in few simple lines the process one would need to follow to get them manufactured ? What files we need, where to get them, what do we need to send out to DorkbotPCB, etc ?

You mostly need the Gerbers you find on the project page I linked above.

Also, I noticed your bzr links come up empty...not sure it its my browser.

Nope, you don't have to use the bzr links with your browser. You have to install Bazaar and run the commands to download the repositories files. Once you have it installed, open a command line interface and then run:

bzr co lp:freeimu

Let me know if you need assistance doing so, I can help.

Design based on your great work

Submitted by Mike (not verified) on Thu, 2011-03-10 02:26.

Hi Fabio,

Well, I decided it would be more fun if I make my own version based on your work. Since you provided all your files to us free (again much appreciated) I had a good start.
I combined your FreeIMU and Femtduino into a single dual-sided PCB.
All of your jumpers are included - so it's a hybrid design of sorts.
One can use it as a small arduino based board - if no sensors are placed, or you can place sensors only, or of course have both and this thing would become something like FreeAHRS.
I would be happy to share this with all friends here - but of course would need to verify that it works first. Dorkbot is running a batch on March14. I'm hoping to be able to add to it. This is my first 'hobby' PCB with Kicad and first experience with Dorkbot.

Would you be so kind and find some time to review, at least my schematics - I want to make sure the connections between sensors and atmega are correct. If you could have a look at the PCB that would be great too actually...

I don't know how to transfer my files - no idea how to do this through bzr. Perhaps I could just e-mail to you ?

Thanks Fabio, It is really great that you give this design to all of us. This is really what motivated me to contribute.

Great news! Sure I will

Submitted by fabio on Thu, 2011-03-10 10:42.

Great news! Sure I will review it! You can make a zip of all your files and then upload everything to a service like and then simply link it here.

Looking forward having a look at it!

Links to couple of designs

Submitted by Mike (not verified) on Sat, 2011-03-19 21:52.

Hi Fabio,

Here are links to the two designs I submitted to DorkbotPDX for March 14.

"GEN1" design that is based on you feeIMU v0.3

"GEN2", following your suggestions: ADXL346 is substituted with BMA180, smaller package for pac9306 and 0.1" pin headers.

I added the new parts to your library:

If I can get these up and running, I'll probably follow up with yet another design, my goal is minimum size.

Cheers, Mike

Mike, the links to your work

Submitted by fabio on Tue, 2011-05-24 10:27.

Mike, the links to your work above are broken.. would you plese reupload them? Please do not set an "expiration" to the uploaded files. Thanks.

Design re-upload

Submitted by Mike (not verified) on Wed, 2011-05-25 05:47.

Hi Fabio,

Here are the links again. Unfortunately on speedyshare they expire after 7 days of inactivity.

"GEN1" design that is based on you feeIMU v0.3

"GEN2", following your suggestions: ADXL346 is substituted with BMA180, smaller package for pac9306 and 0.1" pin headers.

I added the new parts to your library:

Cheers, Mike

I copied your files to my

Submitted by fabio on Wed, 2011-05-25 08:36.

I copied your files to my website so that they won't expire. Here are the links:

IMU Hybrid -
IMU Hybrid -
fv kicad


Great! Can you add Bluetooth as well?

Submitted by Fernando (not verified) on Wed, 2011-03-30 17:46.

It looks amazing! But I didn´t get wheres the interface for programming... Also, if you could add Bluetooth togheter, you are getting really close to do a PS Move controller. Can you guys imagine that? A opensource/hardware console?

Mike, wow! GEN 2 looks really

Submitted by fabio on Sat, 2011-03-19 23:17.

Mike, wow! GEN 2 looks really awesome! Really a great work!

I see however two possible problems. You route some tracks below the magnetometer.. this may cause noise on its signals, I would have avoided that.. don't worry too much.. it probably work just fine.

The other thing is the RST track from the ATMEGA to its pin.. it looks quite near the PCB edge..

But, a part from this very minor details it's really a great job!

Keep me posted!


Submitted by Mike (not verified) on Sun, 2011-03-20 00:05.

Thanks Fabio

Yeah, there are few things I would've done slightly differently - I rushed a bit to make it for Laen's dorkPCB deadline..

For this design spin my goals are to experiment: be able and power up the hardware, communicate with sensors, it would be great if I could get some accuracy in the orientation estimates. Once I get through these initial steps I'll re-spin the board for sure and make it as tiny as possible.

My weak point is working with software. I need to brush up on the topic...
Would you mind sharing your latest algorithms ? I saw in one of your posts that you managed to improve accuracy recently. I would like to start looking at the code and attemptimg to figure out how to implement the BMA180...

Thanks, Mike

There is a library for the

Submitted by fabio on Sun, 2011-03-20 13:38.

There is a library for the BMA180

My latest version of FreeIMU library is available on FreeIMU project page.

Let me know when you'll redesing your board, I'd like to help out.


Submitted by Mike (not verified) on Sat, 2011-04-16 17:50.

Hi Fabio,

Here is an update on my design.
I got the 4-layer boards 2 weeks ago, but unfortunately they came with no drill holes. The drill file produced by KiCad had an offset, as I learned, produced if a "mirror y axis" flag is set. So it happens that this flag is enabled by default in Kicad. Neither myself or James from dorkbot PCB have caught that. It is a lesson learned. In order to re-make this 4-layer design I need to wait until the next run May 02.

So, I decided to re-design this into a 2 layer, single-sided board, It came to about 2 square inch. It's not very 'polished' - I needed to rush a bit to make it for last week's 2-layer run at dorkbot. But I finished the design in time and expecting boards soon.
This is an intermediate design, made to allow for easy home-SMD and experimentation. I added a BMP085 pressure sensor to it.

I just want to finally see the cube spinning:).

To be honest I still don't know what would be my final application, I'm just loosely experimenting, perhaps try to make a quadrokopter or a installing it into an RC airplane (we have a supercub that we fly from time to time). It is fascinating how precise the fusion algorithm is and how detailed the movement. Mayby start from self-balancing robot ? A lot of opportunites for experimentation...

Cheers, Mike

Update your libraries

Submitted by fabio on Thu, 2011-04-21 12:05.

Hey Mike,

I would suggest updating your copy of my library.. I updated many of the footprints you are using on your board to ease assembling. See

Always remember to verify any footprint before using it to avoid bad surprises.

Take care,


Thanks will do..

Submitted by Mike (not verified) on Fri, 2011-04-22 06:21.

Thanks Fabio,

I'll use these form now on..
Cheers, Mike

Update on the board...

Submitted by Mike (not verified) on Thu, 2011-05-19 04:09.

Hello Fabio,

Finally, I got the 'intermediate' board assembled - see photo linked below.
Using your latest library and a BMA180 library I see outputs from all sensors.

They all seem to be functional and appear to have reasonable outputs that I can capture using serialchart. For now I'm not using the on-board ATMEGA328, but connecting the I2C bus to my Arduino Duemilanove.

I can move the magnetometer and see values change. When I run your HMC58x3_basic and spin the board horizontally heading follows and holds if I stop movement.

So, in general situation looks promising.

The main thing that baffles me at the moment is the heading drift I see when running the FreeIMU_quaternion.pde on Arduino, followed by Processing FreeIMU_yaw_pitch_roll.pde. Roll and Pitch seem to work ok.

Basically, after moving the board, the heading follows, but after leaving the board stationary, heading drifts at a fairly fast rate (maybe 10 deg/2-3sec).

I’m probably missing something fundamental here perhaps an important calibration step ?

Would be able to advise ?

Thank you, Mike

I have solved this issue with the drift

Submitted by (not verified) on Wed, 2011-12-28 13:21.

Hi Guys, I have solved this issue with the drift for most cases. Please see my website :
There is a solution there for non-dynamic use, meaning for relatively static stuff.

Well, if your solution is to

Submitted by fabio on Wed, 2011-12-28 16:20.

Well, if your solution is to completely remove the feedbacks then I'd say that this is just a workaround, not a real solution. If you remove the feedbacks you are only using the gyroscope integration to compute the orientation.

To me, you are experiencing such drift only because you have a magnetometer which needs to be calibrated. See this post.

If you search the web, you'll find some Mathlab code (which you appear to know well) by Sebastian which uses optimization algorithms to make that 3D ellipsoid into a 3D sphere by computing optimal calibration for your magnetometer.

Once your magnetometer is calibrated and your board sensors axis are aligned in software (some Sparkfun boards have the axis not aligned, while my FreeIMU has them aliged) you should see that drifting efffect disappear.

You are right

Submitted by (not verified) on Wed, 2011-12-28 19:41.

You are right, I have changed the post title to only a workaround.

If i'm not wrong, within the

Submitted by Paolo (not verified) on Wed, 2011-12-28 21:06.

If i'm not wrong, within the mahony ahrs algorithm, the gyro information is the main information used as raw initial orientation estimation. This is for improve the algorithm reaction. Then the compass and accelerometer data are used to refine position.

So if you are overestimating gyro values (for example you are not converting data from degrees to radiants, or you are using the wrong constant to convert raw gyro data to degrees or, moreover, you do not take care of gyro offsets) when you move the device the algorithm overestimate initial position then - slowly - compass and accelerometer data move the orientation to the final position. Commenting gyro contribution to the overall ahrs estimation, you just remove this error.

I have a similar problem with two identical boards from pololu ( Both uses a L3G4200D gyro and a LSM303DLM which embeds a compass and an accelerometer within the same package. One board works greatly meanwhile the second suffers of the drift problem you mentioned.

To have a steady behavior you have to perfectly calibrate gyro, compass and accelerometer.

Hope this help.

That's awesome! Very nice

Submitted by fabio on Thu, 2011-05-19 09:33.

That's awesome! Very nice work!

There are 2 things you should do:

  1. keep the board very still during the first 3-4 seconds of running the program.. in that time the sketches is doing a calibration on the gyroscope which will produce wrong readings if you are moving the board. So keep it steady.
  2. verify that when you are leaving the board steady, eg when placing it on a table, you don't cause interences to the magnetometer.. I mean if you place the board on a table with metal inside you may actually confuse the magnetometer.

I'm assuming here that you added your own library for using the BMA180 which isn't currently supported by the FreeIMU library.

Hope this helps,


Working !

Submitted by Mike (not verified) on Wed, 2011-05-25 22:30.

Hi Fabio,

Thanks, that helped, as it turns out I needed to apply an offset to X and Y axis of the HMC5883.
Cube is spinning(and holding) well...see below. Running with the on-board ATMEGA328.
The baro is working fine as well.

To a nice surprise I disovered that my board has pretty much everything to run the basic MultiWii configuration - which looks like just the perfect starting point for quad building. I'm glad I found MultiWii.
It seems to be running just fine with the dev20110516.

Cheers, M.

Great work Mike,

Submitted by fabio on Wed, 2011-05-25 23:32.

Great work Mike, congratulations. Yeah, your board looks perfect for a quad! I guess it's time for you to present yourself and your work at .. Keep me posted on the evolution of your project.

Take care!

Follow up

Submitted by Mike (not verified) on Thu, 2011-05-26 19:14.

Thanks Fabio,

Well, I really just re-shuffled your FreeIMU building blocks, there isn't much new there. With your great baseline this was easy...

Again, thanks for providing your design to us.

I'm thinking where to take this desing next, its just too much fun to leave it alone...
Perhaps going back to the GEN2 board might usefull, adding baro and changing headers to be more suitable for the quad (easy breakout for ESCs and receiver) ?


Well, personally, if I would

Submitted by fabio on Thu, 2011-05-26 20:06.

Well, personally, if I would be into 4copters, I'd surely do a very small quadcopter with the frame and everything integrated into the PCB.. exactly what the Daedalus Project people are doing...

You know, I like small and elegant things..

Very Nice

Submitted by Mike (not verified) on Mon, 2011-05-30 23:07.

You designs are great.

And, the Deadalus project is just very cool..

Oh.. A board without drills

Submitted by fabio on Sat, 2011-04-16 20:18.

Oh.. A board without drills is an awful surprise! Please, tell James to add the "disable mirror y axis" to the Dorkbot PDX instruction so that other people won't be caught in your same error. Btw, I would suggest you to try gerbv which let you see and inspect both Gerbers and drill files. I always check them with it before sending for fabrication and really helps a lot to find out errors.

I'm sure you'll find a cool project to implement your "smart" IMU. If you are into self balancing bots check this video from my friend Danilo. Cool stuff!


Submitted by Ryan (not verified) on Thu, 2011-02-03 15:18.

Regarding the HMC5843 on the FreeIMU...

What size / brand / component number are you using for the two external capacitors on that compass?

The specific models you're using would really help since I cannot get the compass to work correctly!

Thanks in advance!

Hey Ryan! The exact

Submitted by fabio on Thu, 2011-02-03 16:13.

Hey Ryan!

The exact components I'm using in FreeIMU are annotated in the BOM file inserted in the repository on Launchpad. You can have a look at it from .. that's a comma separated file which you can open with Calc from the OpenOffice suite (choose semicolon spaced). If you need the BOM file specific for FreeIMU version 0.2 you find it here:

Regarding your question on opening FreeIMU sources using Eagle you sent me by mail..

FreeIMU has been designed using KiCAD, which is a libre software to design PCB.
That's why you haven't been successful on opening them with Eagle. To open them you need Kicad.
You can download it from here:

So, you did built a FreeIMU clone? Can you share pictures here?

FreeIMU clone

Submitted by Ryan (not verified) on Thu, 2011-02-03 20:05.

I'll post pictures when I get home of the first revision of my hardware. I didn't know FreeIMU existed before I already had PCB in hand. I already had drivers and a PC visualization system finished to display the quaternion estimated by my hardware by the time I found FreeIMU.

Unfortunately for all of us the magnetometer used is now discontinued. The replacement chip (HMC5883) isn't pin compatible either. This means PCBs need to be redone :(

I'm opting for the LSM303 by ST chip which has roughly the same resolution and settings since it's manufactured in the same facilities Honeywell used on the previous chip. Honeywell was using ST's manufacturing plants seemed to be the information available to me.

It's also cheaper (around 5 dollars at Newark, 7 dollars at SparkFun), and includes an accelerometer. It's freeing up valuable PCB space and saving me 35 dollars in components - win, win!

Cool! Looking forward seeing

Submitted by fabio on Fri, 2011-02-04 10:00.

Cool! Looking forward seeing your IMU pictures!

Check out the repository for the upcoming FreeIMU with ADXL346, HMC5883 and ITG3200.
I'll stay with the ADXL346 as I still think that that's the best accelerometer for Humac-computer interaction devices (it's per axis tap and double tap functionalities are great!).

Great!! I would like to buy!!

Submitted by Luís Mauro (not verified) on Sat, 2011-01-29 14:34.

Hello (again) Fabio?!?
It´s was a pleasant suprise for me your project!!
I would like to buy one of FreeIMU version 0.2 with all components populated excep the headers, but I have some questions:
How many US dolars?
Shipping: I´m at São Paulo-Brazil (postal code 02340-001). Fedex is not a good option for me because there is a big amount of custom tax allways.
A good option is the regular Postal Service (from your country to Brazil) with tracking and insurance up to USD$100.00.
If you send me like a "gift" and declare only USD$25.00 for customs, It will have no tax!
Payment method: the best option is pay-pal
Please send you comments about my above issues!!
What is the weight of the board ?


Luís Mauro

btw, have you seen the video

Submitted by fabio on Sat, 2011-01-29 16:10.

btw, have you seen the video about FreeIMU?

Hey Luis, I'm happy to have

Submitted by fabio on Sat, 2011-01-29 16:09.

Hey Luis, I'm happy to have you here and happy to see you interested in FreeIMU.

Right now I'm still in the testing phase of FreeIMU but so far everything went really smooth.. I'm also waiting for a shipping of ITG3200 which will be here in some days.

As soon as I have the IMUs ready and tested I'll contact you. Don't worry, we'll sort out a good solution for the shipping of the boards.

Take care,


ITG3200 resolution

Submitted by L. Mauro (not verified) on Tue, 2011-02-01 03:20.

Hello Fabio
Could you please answer my question:

It's about the resolution of ITG3200 gyros:

The ITG3200 datasheet specifies a "Sensitivity Scale Factor" (with FS_SEL=3, the only option) equals to 14.375 LSB/(º/s).
My understanding is that the minimum angular speed that it can sense
is 1/14.375 = 0.07°/s?!?! Do you agree?
It makes sense because the ITG3200 has a word lenght of 16bits.
As you are experiencing the ITG3200, you have the answer!!
Thanks and don't forget my board!!!
L. Mauro

Yep, that's correct.

Submitted by fabio on Tue, 2011-02-01 11:33.

Yep, that's correct.

However, note that the least significant bits will be affected by noise.. a non formal empirical observation shows the values ranging in a ~ +- 10 integer window when keeping the device steady.. The datasheet should tell you what's the expected noise of the sensor.

So, this means that using the device for detecting 0.07 °/s is quite impossible.

Yes, but noise is a common

Submitted by Luís Mauro (not verified) on Tue, 2011-02-01 22:00.

Yes, but noise is a common issue on every device!!
I'm using at my project analog gyros!!
ITG3200 is much better!!
Thanks and don't forget my board!!

I won't ;-)

Submitted by fabio on Tue, 2011-02-01 22:05.

I won't ;-)

Hello Fabio, I am a French

Submitted by Rob (not verified) on Mon, 2011-01-24 11:56.

Hello Fabio, I am a French neighbor.

Good job for experimentations about accelerometers , gyroscopes,magnétometers and 3D filter.
I am very interested .

I whish to make an autopilot for planes and your work is perhaps good for this.

One question:
In top of your program why did you take a bias only for gyro ?
If I understand , bias utility is to consider the initial position of the module on X/Y/Z when the program start.

For example if you calculate bias of magnetometer you would perhaps not need to place the screen only in the North direction.
Is what I'm wrong? ... If not, can you test this ?

Other quest: does the filter reaches easily correct magnetic disturbances (as magnetics impulses ...).

Yet one : do you tested for all is good before shipping your module?
Defects observed in some components on SparkFun modules make me a little scared.


Hey Rob, yeah FreeIMU should

Submitted by fabio on Tue, 2011-01-25 10:19.

Hey Rob, thanks for your interest in the project and for giving a look at my codes.

yeah FreeIMU should work just fine in an autopilot application! However you could evaluate also .. as it as a barometer on it.

The bias/offset calibration is being done on the gyroscope because that's the only device which you could assume being in the zero position (when it is kept steady).

Calibration of the accelerometer and the magnetometer can be done using the internal testing routines (my HMC5843 library already does something like that) but for best results a more complex math approach is needed. You can read about it on the document Using LSM303DLH for a tilt compensated electronic compass. That's for a different sensor but it gives you the idea.

I still didn't tested the filter in a magnetical environment. Actually, the filter is not responsible for the accuracy.. the sensors are. I see many people using the same sensors I'm using on different flying machines so I guess it should work pretty well.

Yes, the units I sell are tested and checked by me carefully before shipping.

Take care,


Hi Fabio, I try to use your

Submitted by Anonymous (not verified) on Wed, 2011-03-23 11:47.

Hi Fabio,

I try to use your FREEIMU 01 + lib in other system of ARDUINO .

After init ITG3200 + delay , I make a READ I2C at 0x00.
I obtain 0x69 instead of 0x68.
Can you confirm me that this is not normal?

(I think it's not a FREEIMU 01 problem but I2C problem...)



I never tried to read that

Submitted by fabio on Wed, 2011-03-23 12:14.

I never tried to read that address from the gyro, so I can't say what it does returns depending on how the hardware address selection is set (VCC or GND). However, if the gyro does responds you I wouldn't worry much about that, no?

Hi Fabio, Thanks for your

Submitted by Anonymous (not verified) on Wed, 2011-03-23 23:56.

Hi Fabio,

Thanks for your last response.

I continue to search error....My I2C is OK...

For "WHO AM I" it must first write adress in 0x00 before read !!!.

But I have another problem and I would like to have your opinion.

When I Read GYROs axis values I have correct values for X and Z but not for Y.

FreeImu 01 CI is almost in horizontal position.
I Obtain this values in buffRXI2C:


What you think about it ?