Gravity can be a difficult thing to simulate effectively on a traditional CPU. The amount of calculation required increases exponentially with the number of particles in the simulation. This is an application perfect for parallel processing.

For their final project in ECE5760 at Cornell, [Mark Eiding] and [Brian Curless] decided to use an FPGA to rapidly process gravitational calculations. This allows them to simulate a thousand particles at up to 10 frames per second. With every particle having an attraction to every other, this works out to an astonishing 1 million inverse-square calculations per frame!

The team used an Altera DE2-115 development board to build the project. General operation is run by a Nios II processor, which handles the VGA display, loads initial conditions and controls memory. The FPGA is used as an accelerator for the gravity calculations, and lends the additional benefit of requiring less memory access operations as it runs all operations in parallel.

This project is a great example of how FPGAs can be used to create serious processing muscle for massively parallel tasks. Check out this great article on sorting with FPGAs that delves deeper into the subject. Video after the break.

Practically any combination of motor and gearbox can be mathematically arranged to fit all sorts of problems. You could lift a crane with a pager motor, it just might take a few hundred years. However, figuring out exactly what ratio you need can feel bit backwards the first time you have to do it.

A gear is nothing more than a clever way to make two circles rotate in concert with each other as if they were perfectly joined at their circumferences. Rather than relying on the friction between two rotating disks in contact, the designer instead relies on the strength of a gear tooth as the factor limiting the amount of torque that can be applied to the gear.

Everything is in gearing is neatly proportional. As long as your point of reference is correct, and some other stuff. Uh, it gets easier with practice.

Now as my physics professors taught me to do, let’s skip the semantics and spare ourselves some pedantics. Let us assume that all gears have a constant velocity when you’ve averaged it all out. Sure there is a perceptible difference between a perfect involute and a primitive lantern gear, but for the sake of discussion it doesn’t matter at all. Especially if you’re just going to 3D print the thing. Let’s say that they’re sitting on perfect bearings and friction isn’t a thing unless we make it so. Also we’ll go ahead and make them perfectly aligned, depthed, and toleranced.

Typically, a gearbox is used for two things. You have a smaller torque that you’d like to make into a bigger one or you have one rotational velocity that you’d like to exchange for another. Typically torque is represented with a capital or lowercase Tau (Ττ) and rotational velocity likes to have a lowercase omega (ω). It also doesn’t matter at all; it just makes your equations look cooler.

Now a lot of tutorials like to start with the idea of rolling a smaller circle against a bigger one. If the smaller circle is a third as large as the big one, it will take three rotations of the small circle to make the big one rotate twice. However, it is my opinion that thinking it in terms of the force applied allows a designer to think about the gearing more effectively.

If the friction between the two surfaces of the circle is perfect, then any force applied tangentially to one of the circles will result in a perfectly perpendicular and equal force to the other circle at the point of contact between the two. Midway through writing the preceding sentence I began to understand why textbooks are so abstruse, so I also drew a picture. This results in two equations.

Now, when you have a force perpendicular to the line drawn to describe the radius, the equation for torque becomes really simple.

Multiply the length of the “lever arm”, “radius”, etc. by the force to get the preceding equations. Make sure to include the units.

You should end up force-unit * length-unit. Since I usually work in smaller gears I like to use N * mm. American websites typically use oz-in to rate motors. It is technically ozf-in (ounce-force), but the US customary system has a fetish for obtuseness.

We can make some observations. The smaller gear always sees less torque at its center. This initially seemed a bit counter-intuitive to me. If I’m using a cheater bar to turn a bolt the longer I make the bar the more torque I can put on the bolt. So if I touch the outside of a really large gear I should be seeing a ton of torque at the center of a small gear rotating along with it. However, as we mentioned before, any torque applied on the outside of the larger gear is seen equal and tangential on the smaller. It’s as if you’re touching the outside of the small gear. The torque has to be smaller.

This is why you have to pedal so much harder when the rear sprocket on a bicycle gets smaller. Each time you make the sprocket smaller you shrink the torque input into the wheel. If the perpendicular output where the wheel hits the ground is <input from the small gear> / <radius of the wheel> then it’s obvious why this happens.

It’s also important to note that any time you increase the torque, the speed of the gears slow by the same proportion. If you need 60 N*m out of a motor that can give 20 N*m and you use a 3:1 gearbox to do it. If the motor previously ran at 30 rpm it’s now running at 10 rpm.

Let’s jump right into an example. Let’s say you want to make a device that automatically lifts your window blinds. You’ve got some junk and a 3D printer.

Now you’ve taken a spring scale and pulled until the shutter moves and you know you need 10 lbs. of pull to get the blinds to pull up. To make it easy on yourself you multiply this number by two so you know you need exactly 20 lbs of force to pull the curtain up. Then to make it really easy on yourself convert it all to Newtons. It’s approximately 90 N.

Now you don’t really care how fast the blinds pull up, but you go ahead and pull them up yourself. You get the feeling that the blinds won’t appreciate being lifted faster than the whole range in two seconds. You personally don’t care if takes ten seconds to, but you’d like it not to take too long.

You also measure the length of string pulled out to raise the blinds. It’s 1.2 meters.

Lastly, you only have one spare power supply and a matching motor left in your entire laboratory after you followed the advice in a Hackaday article. Cursing the day the author was born, you sullenly write down the last specifications. You’ve got one of those cheap GM9 gear motors. 5 V, 66 rpm, and 300 N*mm. You damn him as you think fondly of your mountain of windshield washer motors and 80 lb server rack power supplies that you tossed out.

To start with, you do some experiments with a pulley. You arbitrarily pick, 3D print, and find that a 100 mm in diameter pulley seems to wind it up nicely by hand. By the end of the winding the outside diameter of the string is 110 mm. So you use the torque equations above. You find that at the end of the rotation, if you attach the motor directly, there is only 5.45 N of force being applied to the string. Not nearly enough.

So, since you know everything is more or less proportional, you divide 90 N / 5.45 N, and arrive at an answer of 17. So, at a minimum for every turn of the pulley you need 17 turns of the motor to get the torque needed.

That would be okay, but it messes with our other specification. At a 17:1 ratio, it will take our 66 rpm motor pretty close to a minute to wind the blinds up.

This is a moment for some pondering. Make a coffee. Maybe go write a relaxing comment to a Hackaday writer listing their various flaws, perceived and true, in excruciating detail.

What if you wound the string up on a closet rod? Those are only about 30 mm in diameter. You take a bit of rod and wind it up. It seems to work and since it’s wider the string only ends up adding 5 mm to the final diameter. You rework the calculation and find that in this case you only need a ratio of 6! Yes.

Now some of you who have done this before are likely gnashing your teeth, or more likely already down in the comments. Unfortunately it’s all proportional. While you only need a ratio of 6:1 now, nearly a third. You also need to rotate the pulley approximately three times as much to pull the same length of cord.

Sometimes you can’t win. In this case the only solution is to order a new motor. You look online for a bit and realize that one of the 12 V motors you threw away last week would work perfectly for this. You wouldn’t even need a gear box. You could attach it straight to the pulley. You look around your perfectly clean and orderly garage and feel empty.

However, just for fun you build a 6:1 gearbox anyway. It’s a hack after all.

Cover photo of the hilariously complicated Do Nothing Machine credit to the Joe Martin Foundation.