The quality of moral behavior varies in inverse ratio to the number of human beings involved.
— Aldous Huxley

Lathes and their thread-cutting gears.

This small corner of the wondrous world-wide web serves a couple of small routines that I’ve written to calculate gears for the MW210V family of metal lathes.

The gear combinations indicated on the tables on the lathe itself, when not physically impossible (!) are crappy at best. Mostly because the TPI (threads-per-inch) pitches are difficult to achieve with a metric leadscrew, but also because they probably tasked the guy that could be missed the most on the shop-floor with working out the tables…​

There are a few resources on 'tweb (read with a Yorkshire accent), but none that made me particularly happy. These here do, probably because I took a LOT of time writing them. One of the better things available in this regard is Matthias Wandel’s program, here on GitHub, which inspired me to write my own—​much improved if I may say so—​version.

What does this program of yours do?

It takes a list of gears (the ones you have available for your lathe) and a list of pitches or feed-rates that you would like to be able to achieve, it reads these from a data file which you edit; if there’s no data file, run lathe_gears.py with the -e option, and it will create a standard one for you to edit. It then mixes and matches the gears in all possible combinations and permutations (same set, different orders), and comes up with the best sets for your desired pitches.

What are 'the best' sets? Those that either have zero error, or, failing that, the closest ones smaller and larger than the desired pitch. There will be many options for each pitch, and it chooses the one that has the least 'extreme' gears, for example, both sets below achieve 2.0 mm pitch, but the first uses (extremely) large and small gears, the second is much friendlier, using a set of gears that aren’t so widely spread. By the way, this is the 'pretty layout' output format; it’s the default ('H' designates an 'empty' space):

           84   75
  2.0000    H   20  Error: 0.000% or 0.00 mm per thread
            H   50
-- 2.0 MM --------------
           60    H
  2.0000   70   75  Error: 0.000% or 0.00 mm per thread
            H   60

Results are published to a log-file (there is a -o option if you don’t like the default name gear_results), as well as echoed to the console.

If you’re a bit more curious than most, or a control freak like yours truly, there’s the -f list option. It lists all gear combinations that fit and have zero-error. It also lists the nearest smaller and nearest bigger sets for those pitches where zero-error can not be achieved, like so:

.
[2.0, 84, 75, H, 20, H, 50, 28.698141635536846]     <<< A
[2.0, 84, 72, H, 20, ...
.
.
.        ... 60, 75, H, 70, 7.5]
[2.0, 60, H, 70, 75, H, 60, 7.5]                    <<< B
[2.5, 84, 75, H, 20, H, 40, 29.948567021923882]
[2.5, 84, 75, H, 24, H, ...
.

The ones marked 'A' and 'B' are the same ones from the 'pretty layout' format above, the last value in each set is it’s standard deviation, a way to tell the 'spread' of the gears, as discussed earlier. In my not all-that-humble opinion, a set with less spread is better; if you can get the right ratio with 'average' sized gears, that’s to be preferred to using 'extreme' gear sizes.

Well that’s lovely, but inch-threads still suck…​

TPI gears

Which is why I wrote tpi_box_gears.py, included in the download which calculates a nice set of gears that will let you build an additional 'gear-box' that will take your spindle gear’s rotation and 'translate' it from metric to imperial. Now you can cut TPI gears with zero error. Well, after you build the gear box, that is. I’m planning on making a kit available in the future, in case you don’t have a mill, indexing head and gear cutters.

Also included in the download is an OpenSCAD design concept with the TPI gears. It may be useful, or not, or perhaps just eye-candy, or maybe it gets you into 3D solid modelling, in which case you may want to have a peek at my HUGE (no kidding) and very helpful (I think) OpenSCAD library The Ghoul.