LinuxCNC to upgrade old lathes drive train

More
21 Mar 2026 21:17 #344588 by Nik
Hello everyone, I am working on an upgrade for my old lathe. In short, I want to replace the old main motor with its multiple belt stages as well as the change gear system for the lead screw with two servos (more detail below). I am wondering whether or not LinuxCNC is the right way to go about it. I am a mechanical engineer by trade, but have little to no experience with control systems or LinuxCNC, so I do apologize in advance for any potential stupid questions coming up. 

The long version:
I want to upgrade my lathes drive system. It's an old machine, build somewhere around 1945, and it uses an induction motor followed by two v-belt, one flat belt and an optional gear stage to set the spindle speed, giving me a grand total of 12 possible spindle speeds to select from. Changing speeds therefore also isn't the quickest process. Even worse is the feed gearing driving the lead screw; It's set up as a change gear type system, so to set the feed rate I have to disassemble and then reassemble the drive train, which makes for painfully slow changes in feed rate. While the machine is certainly mechanically beautiful, my shop is not a museum and my time is quite precious to me, so I want to change that. The plan is to replace the main spindle motor and drive train with a big servo, and the feed gearing with another, smaller, servo. That would allow for easy changes of my feeds and speeds, as I just need to set whatever value I want on the controller. The feed rate per revolution would then no longer be controlled mechanically through the feed gearing, but electrically, by the smaller servo acting as a virtual reduction gearing if you will.

I already sourced the servos, a 1kW for the spindle and a 400W for the lead screw. They use EtherCAT for communication. For the controller I was thinking about either a Raspberry Pi 4 or a Kunbus RevPi that I have lying around. To run the machine I want to use LinuxCNC and an open source EtherCAT master, as done by Marco Reps for example.

I am however unsure on how to go about it. I don't yet require the full CNC potential of LinuxCNC; That might come at a later point, but for now, all I need are the following two features:
  • Set the spindle's rpm
  • Set the feed rate
Both of those options I would like to have on an easy GUI, ideally with as little unused "clutter" as possible. Depending on how hard that is to pull off, I would not mind learning how to program/code/design that myself, it might however quite likely be far above my current skill level. I am a mechanical engineer after all, not a software wizard. 

For the actual servo control I would like the option of having soft start and stop options by controlling the acceleration and jerk, so that the servo doesn't just violently try to reach the set spindle rpm.
Ideally the feed servo would be set up as a slave, following the main spindles rpm precisely, i.e. perfectly mimicking a mechanical gear train. So if for example the main spindle bogs down during thread cutting, the feed servo should ideally not just run it's course and lose synchronization. That should certainly be possible via EtherCAT, I just don't know how hard that would be to set up with LinuxCNC. It would however also be acceptable to solve that via a maximum allowable tracking error for the servos, if full on synchronization doesn't work.

I have a lot of ideas and things I would at some point like to add/have, from motor load indicators, a DRO via linear encoders, small easily programmable cycles all the way up to full on CNCing the lathe. But for now its baby steps, i.e. getting the lathe functional with its new servo drive train.

Is what im having in mind possible with LinuxCNC? Does anyone have pointers to a similar project? Or any advice or resources on how to set this up in LinuxCNC? How do I go about setting up the big servo as a spindle motor? Can I actually use the smaller servo as a slave synchronized to the main spindle motor? Is it possible to create a simple custom GUI showing only spindle speed and feed rate? Or would you guys recommend an entirely different route to set this up?

Any advice is greatly appreciated. I apologize if the post became a bit "rambly" in places and for any stupid/basic questions contained in it.

Cheers,
Nik

Please Log in or Create an account to join the conversation.

More
24 Mar 2026 12:33 #344668 by andypugh
Replied by andypugh on topic LinuxCNC to upgrade old lathes drive train
This does feel like something that could easily(?) be done with LinuxCNC.
It is basically an ELS (electronic leadscrew) system. There are many options for an ELS, but I don't know if any of those support EtherCAT.

You could start off using a standard LinuxCNC GUI for manual control of spindle speed. Then add a PyVCP box (or a similar GUI element) to set the leadscrew TPI. Later on you might want to look at either making a custom GUI, or going further with the CNC conversion.

You might want to consider fairly early on whether you intend to keep the separate feed-shaft and leadscrew arrangement. Most CNC lathes replace the leadscrew with a ballscrew and use that for both threading and feeding. If you were to retain the leadscrew and the existing half-nut for feeding too, I think you might wear it out. However there were lathes that worked this way (Smart and Brown Model M, for example)

I would suggest keeping the back-gears and possibly the intermediate gearbox, they give a big increase in torque for larger workpieces.
If you do that you would need to add a separate encoder for the spindle to account for losing the fixed ratio between the spindle motor and spindle.

You might find my blog on CNC-converting my Holbrook Minor interesting:
bodgesoc.blogspot.com/2015/08/holbrook1.html

Please Log in or Create an account to join the conversation.

Time to create page: 0.094 seconds
Powered by Kunena Forum