Physics for kids using Sun SPOTs
By roger on Sep 24, 2008
I recently had a chance to spend an afternoon with about 100 middle and high school students. I'm always inspired when I get to talk to students, and this was no exception. I spent a while telling them about Sun SPOTs, and then we had a few activities planned for them. We showed them some Sun SPOT-based robots, our Sun SPOT-based dance floor that we built for the MakerFaire, and we did a little physics experiment where we used Sun SPOTs to calculate (quite accurately) how high a ball was thrown by the students.
The physics experiment was quite a bit of fun. We sued Sun SPOTs and a little bit of science magic to give the kids a ball that could tell them how high they could throw it. To achieve this, we embedded a Sun SPOT in a foam football. We set up that Sun SPOT to stream accelerometer data to the base station and then had a host side application that could tell how high the ball was thrown. I've included a picture here of the foam football that I cut open in order to stuff a ball inside. On the Sun SPOT side we just run the Telemetry Demo that comes with every Sun SPOT Development Kit. Ron Goldman then modified his Telemetry Demo on the host side to calculate the height of the Sun SPOT being thrown. The project is of course open source and available here. Its quite fun. A little detail about what it is doing is below.
To calculate how high the ball went, we used an interesting side effect of the fact that gravity is constant. It accelerates everything for by the same amount. This means that if you throw something up in the air, the second that you let it go, gravity will, in a very predictable way, cause the object to slow and eventually change directions and fall back to the ground. Additionally, you can determine this time with the accelerometer quite easily because the throw will cause a spike on the accelerometer reading. Then as the ball is in free fall, the accelerometer will read at or near 0 Gs, then when it lands the shock of landing will cause another spike in the accelerometer readings. The ball will read near 0 Gs while in the air because the accelerometer is being accelerated at the same rate as the Sun SPOT around it, so relative to the Sun SPOT it experiences zero Gs. The zero G section is like the astronaut training where they fly an airplane in a careful parabolic path that allows the astronauts inside to briefly experience zero Gs despite the fact that they are still in the Earth's gravitational field and in fact falling toward the Earth's surface. However, compared to the airplane around them (which is also falling) they experience weightlessness.
Since the acceleration of gravity will slow the rising ball down at a predictable rate the height the achieved in a throw will be proportional to the time it spends in the air. The higher it goes the longer the time spent in the air experiencing zero Gs. This means that for a throw of a given height, the "hang time" will be constant. Or to look at it the other way, given just the time the object spends in the air, one can calculate how high the object went. The equation is where h is the distance the object travelled to the highest point in its trajectory, g is the acceleration due to gravity (9.8 m/sec\^2) and t is one half the time spent in the air. We use one half the time in the air because the ball is traveling up for half the time and then back down for the other half.
Similarly, we can calculate the velocity at which the ball must have left the thrower's hand. The equation , where v is the initial velocity, tells us how fast the object would have to go in order to loft itself into the air for the given amount of time.
There are some notable assumptions in this experiment. First is that wind resistance is not a significant factor in how far the object will travel. While wind resistance will have some effect, a sleek object like a football and the distances and speeds we are talking about should cause this effect to be negligible.
Another assumption of the above equations is that the ball will land at approximately the same height that it was thrown from. This is clearly not the case since a standing adult will release the ball a good 5 - 6 feet above the ground. We've included a variable in GraphView.java called tHeight which can be used to model this difference in height for those of you who are sticklers for details. Simply set that to the difference in height between the release point and the landing point and your numbers should get a bit more accurate.
Another interesting fact to notice is that this will measure only vertical height, no matter how far the ball goes laterally. Because of the way that the motion vectors add, gravity is only effecting the vertical component of the motion. Thus the only downside to a toss that goes a long distance laterally is that the thrower wasted energy moving the ball laterally. The program will still only measure the vertical component of the throw.
If you have a Sun SPOT, you can try this yourself. Run the generic "Telemetry Demo-On SPOT" application that comes in the Sun SPOT Development Kit on a Sun SPOT and embed the Sun SPOT in a LOT of padding. Get the Ball Toss Demo from the curriculum portion of the SPOTs project on java.net. Run the program and away you go! There is even a way to keep track of your throws and save them in a .csv file for later analysis.
WARNING: I first embedded the Sun SPOT in a ball that was not well enough padded and I managed to break two Sun SPOTs. It turns out that students can throw these balls over 50 ft up into the air. At that height, it gets a pretty significant whack when it returns to earth. Padding is important!!!
Below is a video of the talk that preceded the experiment. Near the end of the talk there is a discussion of the accelerometer and how it is used to measure the height.