Category Archives: Build Notes

Design process for the CNC Puck Mill

The Puck Mill was designed to be quick and easy to build, and to use generally available components. I was intrigued by the MakerSlide available at, and wanted to see how that could be used. I looked at a number of existing designs using this product, and decided to try for something simpler. I also wanted to make use of some existing hardware I had lying around – some Nema23 motor mounts, and some acme thread rod. I'll put together a list of all the parts I used, as well as those I fabricated. My design uses one 4 foot section of makerslide, which is pretty convenient.

For me, the first part of designing the router is to sit at a table with the components I have, and think about the design – holding pieces together, imagining the design, thinking about clearances, and the range of movement. I think about the sub assemblies, and try to fit each together, with the pieces I have.

I can identify the missing components, decide what to order, and what to fabricate.

The next step is to put together the design using CAD software. I use RhinoCAD for this, since I use this for many of the CNC projects I create. With Rhino, I create each piece, or subassembly, as a separate drawing, and them build a complete drawing by importing all the pieces. Rhino is smart about this, and will update the drawing if any of the component parts change. When using existing components such as MakerSlide, bearings, motor mounts, Nema motors, etc, the drawings are only available as 2D DXF files. Fortunately, these import into Rhino accurately, and are easy to extrude into 3D objects. Over time I'm building a library of components, so it is simpler to build a mockup of the machine.

Next, in Rhino, I design the custom components that are required to connect the “store bought” components together. It is easy to fit these into the design, and adjust the holes to match the existing parts. I can also check clearances and the range of movement of pieces. This is where I miss having a true simulation capability, that understands the constraints of each piece. There was a Rhino plugin for this, but is seems to be abandoned.

Next, I take the custom components and add dimensions to each piece I need to make. This is generally in inches or metric (or a combination) depending on the piece. I try to find a way tousle my existing stock of aluminum plates and angle to build the parts.

Now, comes assembly, where I try to fit the parts together. I'm usually pleasantly surprised how well everything comes together at this point.

One place I've had trouble in both of my CNC designs is the limit switches. I've never included these in the design, so I've had to sort of fit them in as an after thought. Having done this twice, I've learned to try to fit these in at the CAD stage, for my next design.

Once the mechanical design is complete, I have to tackle the electrical components. For the Puck Mill I wanted to use a USB based controller. I chose to use the fairly well regarded XXX controller. I ordered a controller, relay card, stepper drivers, and power supply from the one source. I also ordered a custom jog control keypad. It turns out that this controller doesn't need Mach3 – it is all managed in the controller, and in a custom app that runs on the PC.

For the spindle, I chose a small Chinese spindle, with a ER16 collet, and a variable speed (voltage) power supply.

It always astonishes me how much effort it is to wire up a controller, power supply, and all the wiring for the limit switches and motors. It is quite complicated, with a variety of power supplies, quite a bit of 110V wiring, and a ton of wiring to connectors. The wiring goes very quickly from orderly, to a big mess! It is important to design this, and really think about the routing of the wires, and the design of the controls and panels and cut outs.


Adding an Automation Technologies MPG2 Control Pendant to a CNC Router

I recently ordered a 4 axis control pendant, and a driver board for this device – hoping to add it to my CNC Router.

The package arrived last Friday, and I had a half-hour of free time to try to get it working – no-where near enough time!

What I ordered was:

The pendant is well built, and comes with a nice coiled cable – quite substantial, and a plastic mount for the pendant that can be mounted via the powerful magnets on the back of the holster, or using the supplied screws.

There is an “enable” switch on the left side of the unit – I think you have to depress this switch in order for the control functions to work. Unfortunately, this switch is quite difficult to depress due to the clear plastic dust cover over this button. I think I’ll have to remove this protective covering in order to use the pendant.

The breakout board comes with a male and female DB25 connector, and some screw terminals for wiring up a 5V power supply, and some relay contacts for the emergency stop button. This is nice since it is much safer to have a real electrical disconnect when the emergency stop button is pressed – you don’t want to rely on the mach3 software properly handling the E Stop input, and shutting down the router.

The board comes with a USB cable, with tinned bare cable ends, ready to be wired into the 5V screw connectors on the board. I’m not certain that the 5V input is required in order to make the breakout board function – I’ll check on this when I have more time. My hope was that the USB cable would actually be a sort of USB Keyboard emulator, simply outputting keystrokes to Mach 3, in order to control it. But, this is not the case – the USB cable is for 5V power only.

The instructions and diagrams that come with the Pendant and breakout board are woefully inadequate. They explain, from a purely electrical standpoint, the connections – but they really don’t cover how to make it work with the Mach 3 software. There should be an extra page or two of notes showing how it all works together.

For instance, exactly how do you configure Mach 3 to use the pendant? No mention that the pendant needs a second parallel port – and that the second parallel port can actually have a whole lot more input pins, via a checkbox in Mach 3. No explanation about how the “OEM Inputs” are made to function in Mach3. No mention about whether the 5V power is needed to make the breakout board function or not.

I was testing the board with a third-party dual port parallel port driver board in my PC, and was having nothing but trouble getting the second parallel port to function, and to properly interface with the pendant. I could successfully get the E-Stop button to work, and the X100 button – but no other button seemed to work! I think I may have connected it to Parallel port 1, instead of Parallel port 2.

I made some guesses at how the Mach3 settings should be configured to make the pendant work – but it’s all pretty much guess-work at this point.

I hope to get back to this during the upcoming week – so I’ll have an update, with screen-shots showing how to make the pendant work. Assuming I’m successful!

UPDATE: I FINALLY found a page with a thorough set of instructions. And following the instructions step by step worked. One trick not mentioned is that you need to restart Mach3 between some of the steps. I needed to do this once I had properly enabled the optical encoder. I could see the signals going by in the the diagnostics window, but they didn’t move anything at all on the device. A simple reboot, and the X, Y and Z axis were working under control of the big knob! What fun! This may have been necessary when I enabled the encoder and pins 2 and 3.

So, another cool addition to the CNC Router!

UPDATE: I got this thing working late one night, then the next day, busted again! I have no idea what’s up, and why this pendant is so fragile. I spent 3 hours, playing with settings, changing parallel ports, measuring voltages, all with no success. I’ve finally given up, and ordered a new C22 board, since it’s about the only thing I haven’t swapped out. Quite frustrated. Have since noticed that there are USB pendants, which are starting to look pretty darn good, right about now.

Thinking about wires

There’s quite a lot of wiring in a CNC Router:

  •  A cable from the PC’s parallel port, to the controller board (a Gecko G540 in my case),
  • Motor driver wires,
  • Power supply wiring,
  • Limit switches on each axis – a switch at each end,
  • Home switches,
  • Emergency Stop switch,
  • Possibly a control pendant,
  • Power for the router, with associated relays, and possibly a separate power supply for this relay,
  • And, possibly encoders – to ensure that the stepper motors accurately reflect the commands sent to them.

And, I’m sure there are many more…

Some of these wires contain low voltage control signals – not much current, but still, you don’t want spurious signals interfering… while other wires are actually driving quite a bit of current – the power supply lines, and the motor driver wires.

In my first iteration, I noticed that the Gecko driver uses DB9 connectors, so I simply ordered some 15 foot DB9 Male – DB9 Female cables to drive the motors. What I found in my initial tests is that these cables got very warm – not hot, but warm, as the machine was running, or even sitting idle. And, I’m experiencing some issues where the stepper motors seem to be missing some pulses – getting out of sync with where they should be. This is very obvious for the Y axis drive – which has a motor on each side driving the whole gantry back and forth on rack and pinion gears. Sometimes, the gear appears to skip a step – with a really loud thunk.

I think the DB9 serial cables I’m using actually have very small wires within the cable. The whole cable, with 9 conductors, and the sheath, is no more than1/8 or maybe 3/16 of an inch in diameter! So, the wires inside there must be 28 or 30 gauge! And, I’m trying to drive 3.5 amps of current through here! No wonder the wires are warming up!!

So, to rectify this, I’ve ordered some cable from Digikey – 4 conductor, 20 gauge, stranded wire (A5054C-100-ND). I’m planning to use this wire for the motors, as well as the limit and home switches, Emergency Stop.

Some other things I’m looking at:

  • Shortening the parallel port cable – which currently is 20 feet long,
  • Better grounding and shielding,
  • Better wiring from the power supply to the Gecko G540.

I’ll update this post once I’ve got this wire installed and working – I’m expecting the wire to arrive tomorrow.

Update: After updating all the wiring, all the issues I’ve observed previously have disappeared. The two stepper motors moving each side of the gantry are now in perfect sync, and I’ve seen no “skipping” where the gear drive gets out of sync with a loud clunk. Also, the wires are not warm at all, handling the current properly.


Wiring terminating at the Gecko G540

Building a CNC Router

I’ve decided to build a CNC router – for no particular reason. I’ve always been interested in this sort of robotic device, ever since I programmed an HP plotter, 30 years ago.

At the start of this project, my specs are:

  • 4 foot by 4 foot work area,
  • Full three axis movement,

So, that’s pretty open. We’ll see how things progress…