Arduino MPU 6050 - Best IMU Sensor Tutorial - DIY Hacking
Arduino MPU 6050 - Best IMU Sensor Tutorial - DIY Hacking
com
Optimized just now
View original
276
In this post, I will be reviewing a few basic IMU (Inertia Measurement Unit) sensors,
compatible with arduino. I shall also give a short tutorial for interfacing arduino with
the best IMU sensor available. IMU sensors like the MPU 6050 are used in self
balancing robots, UAVs, smartphones, etc.
IMU sensors are one of the most inevitable type of sensors used today in all kinds of
electronic gadgets. They are seen in smartphones, wearables, game controllers, etc.
IMU sensors help us in getting the attitude of an object, attached to the sensor in three
dimensional space. These values usually in angles, thus help us to determine its
attitude. Thus, they are used in smartphones to detect its orientation.And also
inwearable gadgets like the nike fuel band or t bit, whichuse IMU sensors to track
movement.
I was able to work with both accelerometers and gyroscopes separately. However,
they are not as accurate as when they are combined. And among the lot, I found the
Invensense MPU 6050 to be the most reliable and accurate IMU sensor. Apart from
being signicantly cheap from the other sensors, the MPU 6050 performs much better
too.
In this tutorial, I shall give you a basic introduction to the MPU 6050, demonstrate how
it can be interfaced to an arduino. And show you to make a 3D model using the data
from Arduino MPU 6050.
Hardware:
Arduino or an arduino clone board (freeduino). Or make your own custom arduino board with
thistutorial.
MPU 6050 sensor.
Interconnecting wires.
Software:
IMU sensors usually consists of two or more parts. Listing them by priority, they are :
accelerometer, gyroscope, magnetometer and altimeter. The MPU 6050 is a 6 DOF
(Degrees of Freedom) or a six axis IMU sensor, which means that it gives six values as
output. Three values from the accelerometer and three from the gyroscope. The MPU
6050 is a sensor based on MEMS (Micro Electro Mechanical Systems) technology.
Both the accelerometer and the gyroscope is embedded inside a single chip. This chip
uses I2C (Inter Integrated Circuit) protocol for communication.
Gyroscopes work on the principle of Coriolis acceleration. Imagine that there is a fork
like structure, that is in constant back and forth motion. It is held in place using piezo
electric crystals. Whenever, you try to tilt this arrangement, the crystals experience a
force in the direction of inclination. This is caused as a result of the inertia of the
moving fork. The crystals thus produce a current in consensus with the piezo electric
effect, and this current is amplied. The values are then rened by the host
microcontroller. Now check thisshort video that explains, how a MEMS gyroscope
works.
The program we will be running here, also takes advantage of the arduinos interrupt
pin. Therefore, connect arduinos digital pin 2 (interrupt pin 0) to the pin labelled as INT
on the MPU 6050. Next, we need to set up the I2C lines. For this connect the pin
labelled as SDA on the MPU 6050 to the arduinos analog pin 4 (SDA). And the pin
labelled as SCL on the MPU 6050 to the arduinos analog pin 5 (SCL). And thats it, you
have nished wiring up the Arduino MPU 6050.
Step 2: Uploading the code and testing the Arduino MPU 6050
To test the Arduino MPU 6050, rst download the arduino library for MPU 6050,
developed by Jeff Rowberg. You can nd the library here. Next you have to
unzip/extract this library. And then take the folder named MPU6050 and paste it
inside the arduinos library folder. That is, go to the location where you have installed
arduino (Arduino > libraries) and paste it inside the libraries folder. You might also
have to do the same thing to install the I2Cdev library as well, if you dont already have
it for your arduino. Do the same procedure as above for installing it, you can nd the
le here: I2Cdev library.
If you have done this correctly, then when you open the arduino IDE, you can see
MPU6050 in File > Examples. Next, open the example program from: File >
Examples > MPU6050 > Examples > MPU6050_DMP6.
Now, you have to upload this code to arduino. After uploading the code, open up the
serial monitor and set the baud rate as 115200. Next, check if you see stuff like
Initializing I2C devices on the serial monitor. If you dont, just press the reset button.
Now, youll see a line saying Send any character to begin DMP programming and
demo:. So just type in any character on the serial monitor and send it. And you will
start seeing the yaw, pitch and roll values coming in from the MPU 6050. Like so:
Arduino MPU 6050 Serial Monitor
DMP stands for Digital Motion Processing. Here, the Invenses MPU 6050 has an
inbuilt motion processor. It processes the values from the accelerometer and
gyroscope to give us accurate 3D values.
Also, you will need to wait about 10 secs before you get accurate values from the
Arduino MPU 6050. After which, the values will begin to stabilize. Just check out the
video, if you have any doubts:
Arduino MPU 6050 tutorial
Step 3: Modelling the values from Arduino MPU 6050 in 3D using processing
(Optional)
If you want to see the 3D model of the sensor, continue reading. For viewing the 3D
representation of the data from the MPU 6050, you need to install the processing
software, you can do that from here:processing IDE. Processing is almost similar to
arduino, except for a couple of functions. Processing is mainly used for visualizing
data and rendering it in 2D/3D models.
To visualize the 3D model in processing, rst you have to upload the arduino code for
MPU 6050 (MPU6050_DMP6). Before doing that, you need to comment the line in the
arduino MPU6050_DMP6 code which says:
Next, you have to open the processing example for the MPU 6050. Open processing,
then: File > Open. And then navigate to the folder where you had installed the
MPU6050 library for arduino. You can nd the processing example in: MPU6050 >
Examples > MPU6050_DMP6 > Processing > MPUTeapot.
In this code, you have to then check the serial port which is dened in it. By default the
line that denes it for linux/mac users is like:
You need to change ttyUSB1 to the port on which your arduino is connected.
Editing the Processing le for MPU 6050
And for windows users, you need to comment the line which says:
And replace COM4 with the COM port on which your arduino is connected (check this
by going into arduino and Tools > Serial Port).
Now we can test the whole setup. First upload the arduino code (MPU6050_DMP6)
through arduino. And please rememberNOT to open the serial monitor. Next run the
processing code (MPUTeapot) by pressing the button with the play symbol. You will
see a small plane like object. Wait for about 10 secs for the MPU 6050 values to get
stabilized. After, which you can see the 3D model of your MPU 6050, which moves
accordingly with the sensor. Now, check out the demo for the Arduino MPU 6050 3D
model:
Tags: 6 Axis, Accelerometer, Arduino, Arduino Imu Sensor, Gyroscope, Imu Sensor, Mpu 6050,
Self Balancing Robot, Tutorial
RECOMMENDED POSTS