Go Down

Topic: Microcontroller program help ! (Read 487 times) previous topic - next topic


Could anyone help me i was asked to develop a microcontroller program to perform closed loop feedback using an IMU.

Nick Gammon



IMU may refer to:

    Inertial measurement unit
    Initial markup
    Intensive Management Unit - a type of prison in the United States usually practicing solitary confinement
    Interactive Member Universal
    Interactive Marketing Unit
    International Mathematical Union
    International Medical University
    Interurban Multiple Units used by Citytrain
    Islamic Movement of Uzbekistan
    Israel Mathematical Union
    Italian Mathematical Union
    The Irish Medical Union - now renamed the Irish Medical Organisation.
    The Indiana Memorial Union on Indiana University Bloomington campus

Are you planning to interface with a type of prison?
Please post technical questions on the forum, not by personal message. Thanks!

More info:


Mar 08, 2013, 09:31 am Last Edit: Mar 08, 2013, 09:41 am by Erdin Reason: 1
The Arduino is the best microcontroller to do so. Lots of example is code is available, and we are glad to help.

A closed loop is software that controls motion with sensors. For example a balancing robot.
http://en.wikipedia.org/wiki/Closed_loop  (read the 'feedback' and the 'PID controller')

An IMU is a few sensors together, needed to control for example that balancing robot.

I guess you need an IMU, but also a few motors or servo motors.

Search for "arduino balancing" or "arduino self leveling", you will find many projects.
Here are a few:

But I think you don't have to make a robot, but something like this self-leveling project:


For some IMU boards is good code available, and for others not.
Boards at Sparkfun have good code, https://www.sparkfun.com/search/results?term=imu&what=products

The MPU-6050 sensor board is very cheap on Ebay. Jeff Rowberg wrote a good library for that, https://github.com/jrowberg/i2cdevlib/tree/master/Arduino/MPU6050
And this is the 'teapot' example using that:


You also need motors or servo motors. Servo motors can be easily connected to the Arduino, and the Servo library provides an easy way to control them, http://arduino.cc/en/Reference/Servo

It all starts with an Arduino board. I would suggest the Arduino Uno board, that is the most common and easiest board.
Follow the instructions to set it up, see "Getting Started" on the home page, http://www.arduino.cc/
First thing to do is to get the 'Blink' example running on the Arduino.

Go Up

Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

via Egeo 16
Torino, 10131