Picture of Accelerometer Shield for Physics Class and beyond
During a physics class we were preforming a physics experiment to measure the accleration due to graivty - 9.8m/s^2 and while we did not make any new physics discoveries I had an idea for improving the experiment. The way the experiment worked was to drop a NXT with an attached acclerometer off of a balcony and some one below would catch it. The problem was that if they missed it $200 would hit the ground and shatter. After some research I found that for $50 you can build an Arduino with an accelerometer that works just as well and has less signal noise.

A few benefits to the MMA7361 Acceleromter are that it can be set to detect +/- 1.5g or +/-6g. I also have a very low power consumption and its small size even with the breakout board makes it an ideal fit for any project. Not to mention the relatively low cost.

Step 1: Materials

Picture of Materials
1x Arduino Uno (a Mega will allow you to store more data, but it is also bigger and more expensive)
1x MMA7361 Acceleromter - Sparkfun has one with a breakout board
1x Proto shield/perf board

The every project extras:
Push buttons
On/Off switch
Oliverhall1 year ago

Nice project!

Hint: you can find the MMA7361 and other sensors for cheap on this website:


They ship from Canada.

Giedow2 years ago
when I load the rawdata sketch it doesn't upload, it says that in
AcceleroMMA7361 accelero;
'accelero' is invalid
can you help me out?
Hammock Boy (author)  Giedow2 years ago
Have you loaded the library?
[code] #include <AcceleroMMA7361.h> [/code]
[code] AcceleroMMA7361 accelero;
Hammock Boy (author)  Hammock Boy2 years ago
Please let me know if the problem persists.
yes Those lines were included in my sketch
Hammock Boy (author)  Giedow2 years ago
does it give you a line# or any more information for the error?
AcceleroMMA7361.cpp:29: error: 'AcceleroMMA7361' has not been declared
mbraverman2 years ago
Hey Hammock Boy,

Thanks for this tutorial with the MMA7361 Accelerometer from SparkFun. I've order this guy 2 weeks ago and now it's just dusting around under my bed since I can't get it start working :(

I've used the library code example that you are using and nothing worked. Do I have to use some additional resistors when connecting the Accelerometer to my Arduino Uno? Please help. I'll be very grateful to you.

P.S. It'l be great if you would've made a tutorial on how to connect and use the MMA7361 Accelerometer.
Hammock Boy (author)  mbraverman2 years ago
You should not need any resistors. Here is a link that I found very helpful

Please let me know if you have any more questions and I will be glad to help.
Hey, Thanks for the link. I've tried to do everything it said in the Instructions and I finally got something working! After the Calibrating step my Serial Monitor showed x=0 and whenever I move the x axis the number changes in the range of about from -400 to 400. (Is it supposed to go from -100 to 100?) I knew my mistake when i corrected accelero.setARefVoltage(3.3); to accelero.setARefVoltage(5);

The y and z axes however don't respond to the tilts and show numbers way off from 0. (Around 30 for the y and -99 on z axis)

Dis you have the same problems? Or is it me that is considering something wrong?
Oh no! Sorry man, It was my bad! The x and y axis work perfect!! :D I just mixed up with y and z axis. By the way, the reading are from -100 to 100 on both x and y axis.

By the way, in the G-Force example sketch, Does 100 represent 1g? OR not?

I'm not completely sure about the z axis if it operates completely well or not, but if it doesn't I could live with it!! I have 2 axis ready to roll anyway! :D That will last for some projects in my mind.

Thanks for your help Hammock! I really appreciate it! If I would have any questions I hope you wouldn't be against it, since you are the first person that i've actually received feedback regarding the accelerometer. Peace man!
Hammock Boy (author)  mbraverman2 years ago
100 = 1g

To convert to m/s^2 you have to subtract out gravity. So for example if you were trying to determine the acceleration due to free fall you would take the magnitude of the 3 axes [ (x^2+y^2+z^2)^.5 -1 (gravity)] so at rest it should read (0^2+0^2+1^2)^.5 - 1 = 0g * 9.8m/s^2 = 0 m/s^2 (of course nothing is moving its at rest so the acceleration is 0).
Hammock Boy (author)  mbraverman2 years ago
Assuming that the accelerometer is upright and not moving on a table then x and y should = 0 and z should = 100^-2 = 1 because that is the constant force from gravity. When it is in free fall ignoring rotations the board will make z will = 0.

Try changing the speed of the loop - delay(500) - to something like delay(50). Then shake it around and see if the serial monitor displays some results for x,y and z other than 1 and 0. It may be an issue of not reading results until after the change in motion happens. +/- 400 would mean forces of 4g (100 = 1g) which seems to high. The board can be set to read +/-1.5 g or +/-6g, though.

Can you take a picture of the set up? Normally I would think numbers in the range of +/- 100 make sense.

this is a great idea, thanks for sharing! are you in high school or college level physics? I recently got my physics department on the arduino bandwagon too.
Hammock Boy (author)  amandaghassaei2 years ago
I am in high school AP Physics and still trying to convince my teacher to switch all of his labs/experiments from using NXT to Arduino!

Are you in college or high school?
just graduated from college
Hammock Boy (author)  amandaghassaei2 years ago
Congratulations! What did you major in?