“9 Degrees of Freedom” IMU

I’m working on a project that requires full orientation information, so I built an Inertial Measurement Unit from scratch. I really like the 9DOF IMU board that Sparkfun makes the calibration code that comes with it is fantastic – but I wanted to redesign the board so that it could be made at a much lower price using a single-sided PCB mill. I think the electronics come out to about $20 for this project. All the code, schematics, and PCB milling files are up on github (click the cloud-shaped button to download).
(x1) ITG-3200 3 Axis Gyro Component Distributors Inc ITG-3200 Sparkfun SEN-09793 Newark 37T8091
(x2) 4.7K resistor Digikey rP4.7KECT-ND
(x2) 0.1uF capacitor Digikey 1276-1017-1-ND
(x1) 10nF capacitor Digikey 1276-1035-1-ND
(x1) 2.2nF capacitor Digikey 1276-1288-1-ND
(x1) LSM303 3 Axis Accelerometer/Magnetometer Digikey 497-13819-1-ND
(x1) 10uF capacitor Digikey 1276-2876-1-ND
(x1) 0.1uF capacitor Digikey 1276-1017-1-ND
(x1) 4.7uF capacitor Digikey 587-2994-1-ND
(x1) 0.22nF capacitor Digikey 1276-2759-1-ND
(x1) Atmega328P Microcontroller Digikey ATMEGA328P-AURCT-ND
(x1) 10K resistor Digikey P10KECT-ND
(x1) tact switch Digikey SW262CT-ND
(x2) 0.1uF capacitor Digikey 1276-1017-1-ND
(x1) 8MHz resonator Digikey 535-10004-1-ND
(x1) green LED (optional, but will help with debugging) Digikey 160-1404-1-ND
(x1) 1K resistor (optional, but will help with debugging) Digikey P1.0KECT-ND
(x1) 6 pin surface mount ISP header Mouser 649-95278-101A06LF
(x1) 6 pin through hole FTDI header Mouser 571-3-644456-6
(I included two additional rows of through hole headers in my PCB to make mounting the board easier, in this case you will need 3 of the through hole 6 pin headers. This is optional)
“9 Degrees of Freedom” IMU
(x1) 10uF capacitor Digikey 1276-2876-1-ND
(x1) 0.1uF capacitor Digikey 1276-1017-1-ND
(x1) 1K resistor (optional, but will help with debugging) Digikey P1.0KECT-ND
(x1) red LED (optional, but will help with debugging) Digikey 160-1405-1-ND
(x9) 0 Ohm resistor (jumpers) Digikey P0.0ECT-ND
(x1) 10mil carbide end mill Carbide Depot CU 222737 (for the tiniest features on the board)
(x1) 1/64″ end mill Carbide Depot CU 129974 (for milling out most of the traces)
(x1) 1/32″ end mill Carbide Depot CU 129985 (for cutting out the board)
(x1) FR-1 Mach in able single sided PCB blank Inventables 24201-02
I used a Roland Modela for the milling, though I believe this could be done on a Shopbot Desktop or similar machine as well.
Other Supplies
soldering iron
heat gun
flux pen
3.3V FTDI cable Digikey 768-1015-ND or board Sparkfun DEV-09873
(you may be able to use an Arduino as an FTDI connector, but I’m not sure this will work with the 8Mhz clock)
ISP programmer (or use an Arduino or make your own) and 6 pin connector and ribbon cable

Step 1: I2C Communication

All the communication between the components on this board happens through a digital language called I2C. Components connected through I2C are either masters or slaves. A master component will set the clock of the I2C communication and the slaves listen to this clock signal.

All components communicating across I2C are connected through to the same two lines – SDA and SCL; to avoid confusion, each component has a unique address where it can send or receive messages, it will ignore messages going to different addresses. The addresses for I2C components are usually set by the manufacturer, though you may be able to modify some or all of the address bits yourself (check the datasheet).

Read More: “9 Degrees of Freedom” IMU

Leave a Comment

Your email address will not be published. Required fields are marked *