Add Speed Control To A DIY CNC Machine


[Jesse Merritt] bought a manual speed controller for his router. It’s used in the CNC mill he build and he figured, why not add the ability for the computer to control the speed.

The speed controller is a $20 unit from Harbor Freight. It comes with an On/Off switch and knob which adjusts the power going to the router. [Jesse] pulled off the knob and milled a gear which takes its place. The second gear is attached to the horn of a hobby servo mounted on the side of the speed controller. The video after the break demonstrates an Arduino driving the servo based on a potentiometer input as well as commands from the CNC controller board he’s using.

Design files for the gears and the Arduino code which drives the servo is available from his Github repository.

15 thoughts on “Add Speed Control To A DIY CNC Machine

  1. Neat hack – I was hoping for a solution that provided a PID feedback on RPM though. I’m using a 1000W light dimmer (with a big brass coloured heat sink) to tame the speed of my router. Works well, and this servo addition would allow the computer to control, but without some kind of feed back to keep the RPM up when loading the bit, I’m not sold… yet.

    1. I’ve thought of doing what you are describing – you can tell when the router is getting loaded down by the speed drop of the router (decrease in pitch of the router motor), so you could do a proportional control loop with the “pitch” of the router as the process variable to inversely control a proportional speed signal….you would need a frequency to voltage circuit that could “sample” the router pitch with a microphone (i.e. in the audio frequency domain), then with additional scaling, output a proportional signal to the controller…..I wouldn’t control RPM though, I would change the tangential feed speed of the CNC…..

      1. Not sure if I would rely on the harmonic vibrations as they would likely change from material and maybe even thickness. an IR reflector dot away from the work area would be easier to implement and more reliable in the long run.

        1. I don’t understand your reply at all. That’s the whole point of a closed loop control system, the thickness and material can change, affecting the process, while the closed loop continuosly compensates. Although, I use a 13,000 1 hp router, and I mill hardwoods with a 1/4″ bit, at a stepping depth of 1/8″ inch. The point is to minimize machine cycle time without compromising finish quality of the machined piece. The router makes a very discernable pitch of around 1khz unloaded, dropping proportionately to the feed rate of the CNC…..machining against the grain yields substanstially more drop in pitch (and a very poor finish surface) than with the grain….a low pass filter, set to the max rpm of the router (with a steep roll off) could be used to filter out high frequency harmonics, if that is what you are concerned about..

          1. It would make more sense in my mind to just monitor the RPM of the router using an optical sensor, take this into a PIC and adjust the speed accordingly, via a triac and phase angle control, or via a DAC into an existing speed controller pot input. Rather than listening to frequencies etc. Depends on your opinions of PIC control and stuff I guess. Closed loop PID control is fairly easy to do in XC8.

  2. wow this is terrible, Hodge-podge you would only expect from some arduino fan (or my mom using duct tape):/
    That Harbor Freight controller has a potentiometer inside, after that is an Op Amp working as a comparator – you can directly inject voltage there and bypass all this Victorian steam engine with huge gears mess.

    1. Yes, what a hodge-podge. Must be why I it so much! There’s always somebody telling you there is one right way to solve a problem, and thereby missing out on some other creative or fun solution to a problem. Thanks Jesse for building and sharing it and Mike for posting it!

    2. Yep, have to agree. Sure it’s cute, but, well, REALLY??? As T-Bone says, someone could at least have _mentioned_ the simple way of doing it rather than propagating this “just do the first and dumbest thing that comes into your mind” approach. We all love Rube Goldberg machines but let’s remember they’re not supposed to be taken seriously, kids.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.