I'm busy learning a bit of electronics, and trying to create an analog gauge replica of a Cessna 172 aircraft altimeter.

I'm using an Arduino Mega 2560 to fiddle with, and thinking of using a stepper motor to drive the two hands on the gauge.

The tricky part of this is, driving two hands, sitting on the same axle on the gauge using one stepper motor. So I'm trying to figure out a way how I can achieve this.

I have an idea to have two shafts inside of each other, an inner shaft driving the one hand, and another shaft around the inner shaft for the other hand. The inner shaft is driven directly by the servo motor, and a few gears attached to it, should transfer the rotation at a ratio of 1:10 (I think), to the outer shaft.

So with each revolution of the long hand, the shorter hand needs to revolve 1/10th of a full rotation.

The question is, where can I buy these kind of shafts that fit snuggly into each other, that will allow me to fit gears to them? Are there kits I can buy for this sort of implementation?

I looked around at sites like http://www.servocity.com/ and http://sdp-si.com/web/html/products.htm, but not really sure what to look for, or what this kind of shaft/axle would even be called.

  • \$\begingroup\$ This is mechanical engineering, not EE. \$\endgroup\$
    – Dave Tweed
    Nov 1, 2012 at 11:42
  • \$\begingroup\$ I guess what I'm looking for is called a coaxial shaft? Like the ones used in RC helicopters with counter rotating blades. \$\endgroup\$ Nov 1, 2012 at 11:42
  • \$\begingroup\$ Indeed it is, but there is no Stack Exchange site for Mechanical Engineering, unless I'm mistaken. ;) \$\endgroup\$ Nov 1, 2012 at 11:46

2 Answers 2


The nested shafts have been addressed by @DaveTweed, this answer addresses another issue you might face if using a stepper motor.

Unless you have a rotary encoder also incorporated, any stepper would miss steps occasionally and your Arduino code would have no way of knowing, so misalignments and return to zero errors will happen if you use steppers.

The simplest alternative approach might be to drive a servo meshed with gearing on the outside of the shaft for the short arm, using Arduino's Servo library, with servo.write(0) for MSL and servo.write(180) for service ceiling. Calculate the gear ratio required for driving the short arm through the angle you need and attach a suitable gear head to the servo horn.

Here is another approach you could try: Open up a hobby servo motor or several different ones, and check whether the last gear stage has teeth all the way around (some don't). If it does, a quick check should tell you the gearing ratio of each gear pair. Drive the shorter arm from the outside of the shaft as above by picking a suitable gear for the required throw, while driving the inner hand from the servo's actual DC motor itself or one of the prior gear stages. That way, coding for it remains simple, at the cost of some mechanical messing around.

A multi-turn sail-winch servo might be a better choice than a regular hobby servo. Say 1.5 full rotations on the short arm (=15k feet, since service ceiling is only 13.5k feet), and use one of the other gears of appropriate ratio for the longer arm.

Edit Look for K&S Thin Wall Brass Tube, 1 mm OD, on eBay and elsewhere.

  • 1
    \$\begingroup\$ I've thought about the "finding zero" issue, and would have to come up with some way to reset the device. Perhaps by means of using a Photo Interrupter GP1A57HRJ00F or something like that. Attaching a rotary encoder might also be an option. Thanks for raising that, I'll look into the pros and cons of using servos vs stepper motors, compare costs as well. \$\endgroup\$ Nov 1, 2012 at 15:22
  • \$\begingroup\$ @josef.van.niekerk - The simplest way to find "zero" with stepper motors is to just have a stop at one end of the travel. Since stepper motors generally have very little torque, you simply run the motor towards the stop for a while upon power up. It'll just run to the stop and then.. stop. At that point, you know where it is. \$\endgroup\$ Apr 2, 2013 at 10:32
  • \$\begingroup\$ @ConnorWolf Since the OP requires to be able to rotate across multiple revolutions, this isn't a regular servo we are talking about, but one modified for multiturn. Therefore, there isn't any end position really. \$\endgroup\$ Apr 2, 2013 at 10:37
  • \$\begingroup\$ @AnindoGhosh - I guess I'm not too familiar with altimeters. I would have thought it wouldn't be able to go below 0' of altitude. \$\endgroup\$ Apr 2, 2013 at 10:41
  • \$\begingroup\$ @ConnorWolf A fair assumption, but aircraft altimeters do support below mean-sea-level indication. Bar Yehuda Airfield, Israel, boasts the world's lowest (I believe) runways, at 1240 ft or 378 m below MSL. Amsterdam's Schiphol has runways a couple of meters below MSL as well. \$\endgroup\$ Apr 2, 2013 at 10:48

A couple of thoughts:

  1. Most hobby shops sell brass tubing in multiple sizes; adjacent sizes usually nest rather snugly.

  2. Hobby shops and woodworking shops also sell battery-operated clock movements (meant for people who build fancy clocks); perhaps one of these could be modified from 12:1 to 10:1 drive.

  3. For best authenticity, try to find a surplus/broken Cessna 172 altimeter and replace its guts with your stepper motor.

  • \$\begingroup\$ I've looked around for some scrap parts for the altimeter, but some folks seem to think their junk is worth a fortune. There are loads of scrap available on eBay, but some folks just want a fortune. I'll keep Googling and hopefully find a hobby shop that can sell tubes. I was also thinking about the clock mechanism, could be a viable option. Thanks for posting. \$\endgroup\$ Nov 1, 2012 at 11:52
  • \$\begingroup\$ Search for K&S Thin Wall Brass Tubes, see edit at end of my answer. \$\endgroup\$ Nov 1, 2012 at 15:28

Not the answer you're looking for? Browse other questions tagged or ask your own question.