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

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
<p>Nice project!</p><p>Hint: you can find the MMA7361 and other sensors for cheap on this website:</p><p></p><p><a href="http://voltatek.com/en/sensors/82-mma7361-angle-sensor-accelerometer-inclination-module.html" rel="nofollow">http://voltatek.com/en/sensors/82-mma7361-angle-se...</a></p><p>They ship from Canada.</p>
Hey <br>when I load the rawdata sketch it doesn't upload, it says that in <br>AcceleroMMA7361 accelero; <br>'accelero' is invalid <br>can you help me out? <br>thanks
Have you loaded the library?<br> <code>[code] </code><code>#include &lt;AcceleroMMA7361.h&gt; [/code]<br> [code] AcceleroMMA7361 accelero;</code>&nbsp; [/code]
Please let me know if the problem persists.
yes Those lines were included in my sketch
does it give you a line# or any more information for the error?
AcceleroMMA7361.cpp:29: error: 'AcceleroMMA7361' has not been declared
Hey Hammock Boy, <br> <br>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 :( <br> <br>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. <br> <br>P.S. It'l be great if you would've made a tutorial on how to connect and use the MMA7361 Accelerometer.
You should not need any resistors. Here is a link that I found very helpful <br>http://www.geeetech.com/wiki/index.php/MMA7361_Triple_Axis_Accelerometer_Breakout <br> <br>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); <br> <br>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) <br> <br>Dis you have the same problems? Or is it me that is considering something wrong? <br>
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. <br> <br>By the way, in the G-Force example sketch, Does 100 represent 1g? OR not? <br> <br>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. <br> <br>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!
100 = 1g <br> <br>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). <br>
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. <br> <br>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. <br> <br>Can you take a picture of the set up? Normally I would think numbers in the range of +/- 100 make sense. <br> <br>
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.
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! <br> <br>Are you in college or high school?
just graduated from college
Congratulations! What did you major in?

About This Instructable


10 favorites


Bio: From solder to zip ties, lead acid batteries and LEDs, and especially Legos, putting things together has always fascinated me. The more challenging the better ... More »
More by Hammock Boy: Chipper Board - ATtiny Programming Shield Boxhead recreated with Python with Tkinter Interface Python and Arduino with pySerial
Add instructable to: