PCB Manufacture

Shapeoko 2 – PCB Manufacture Review

The Shapeoko 2 from Inventables was my second milling machine (after the Roland iModela, which I blogged about before).

I don’t intend this post to be an extended comparison of the iModela and the Shapeoko 2- they’re different machines aimed at different markets. So I’ll limit my comparison to the two points below:

  • Whereas the iModela is pretty much ready to go out of the box, the Shapeoko 2 arrives unassembled;
  • The iModela has a very small area that can be milled, but the Shapeoko 2 default configuration has a much larger area, about 400x400mm – which can be upgraded to as large as you want by acquiring longer lengths of MakerSlide.

You can swap out bits of the Shapeoko 2- the pack shipped to me had a white-label Dremel clone, which I swapped out for my actual Dremel. This has an imperial collet, which allowed me to use the 3.175mm engraving bits – a huge advantage for me (and my wallet). But the Dremel is loud, and this pretty much limits me to using this in the garage – definitely not something I could have on in the house. It’s possible to purchase a motor which runs much more quietly, but I don’t want to buy this yet.

Assembling the Shapeoko 2 was fairly straight forward, and I spread it over a couple of nights. I had watched a video on YouTube from Inventables a few times, which was helpful (even though the version shipped to me was slightly different from the version used the video). There are also excellent instructions online, which I kept open beside me as i put the kit together.  The package even included the tools necessary for assembly – wrenches, Allen keys, and a tap kit to thread the holes in the MakerSlide.

Initial Tests

I ran through an initial test using a Sharpie and the G-code for writing “Shapeoko 2” on a piece of paper. During this process I went through a bit of confusion over the direction of the Z-axis (leading to a broken pen) – but it’s better to do this with a pen than a Dremel with a very sharp engraving bit at 35,000 revs/min.

I made a jig to hold my copper clad PCB, so a piece of sacrificial wood could sit below the the PCB – I intend to drill holes into the PCB, so I didn’t want my base board to be damaged (although it’s not that big a deal if it is – it’s just a piece of MDF which I could replace).

shapeoko 1

On feeding the first g-code file with a PCB design, I had some pretty positive results. I had been very conservative about how deep I was going to cut into the copper, which is only a few microns deep. MY first cut started showing some of the same signs as the issues I’d had with the iModela – uneven cutting depth. This time I had a few more options – I was able to use a program which measured the height variation across the board, and then used this data to adjust the G-code file. This solved the height variation issue.

shapeoko etching

My initial successes turned out to be…beginner’s luck. The next few attempts were a lot less good, so I’ll share some of the issues I had, and the solutions which helped things start getting better again.

Issue 1 – Engraving bit oscillation

My Z-axis was pretty badly squared up which was obvious because I could see the tip of the engraving bit oscillating from side to side when it should have been only moving vertically. I was able to correct this by doing 3 things:

  • Using a speed-square and adjusting the T-nuts in the vertical MakerSlide to improve the Z-axis alignment.
  • I had to go off-piste a bit and modify the manufacturer’s design – I found that the M8 nuts on either side of the Z-axis bearing didn’t have perfectly parallel faces, so when I tightened them up it caused the threaded rod to no longer be perfectly parallel to the shaft of the Z-axis motor.
  • I used my own M8 die kit on the threaded rod, and added plenty of WD40 oil to the rod. After that, I inserted the rod into a drill and threaded the Delrin nut up and down the rod a few times to eliminate as many causes of friction as I could.

After this, I found the vertical movement of the Dremel to be much more consistent with no discernable side-to-side oscillation, and co-incidentally a lot quieter.

Issue 2 – Stepper motors missing steps

Even after fixing the height variation issue, I found a massively worse height issue – the z-axis cut deeper and deeper into the copper, until eventually on one board it cut the whole way through the plastic and into the wooden board underneath. This was the most disturbing issue for me – the Dremel is a very powerful tool and the sudden and unexpected deep cuts made some very unpleasant noises.

Initially I thought it was that the engraving bit wasn’t being gripped tightly enough and was slipping out of the collet. But actually, the issue was that the Z-axis NEMA motor wasn’t getting enough current from the GRBL. I only discovered this when I did an “air-print”, and heard a lot of clicks coming from the Z-axis, which meant that the motor was being asked to travel faster than it actually could. So when the Z-axis was being lifted between moves, the GRBL asked it to lift 5mm – the software thought it was actually being lifted 5mm – but actually it actually only lifting 3-4mm. However, it was much better at lowering because gravity was helping out, leading to the cuts being much deeper than expected.

The fix was simply turning the variable resistor on the GRBL for the Z-axis, and increasing the current supplied. The problem went away immediately.

Issue 3 – Different start and end positions

I sometimes found that the engraved lines didn’t align perfectly – meaning that the engraving bit didn’t form a closed loop (so it didn’t start and finish in the same place). There wasn’t a single cause for this, I had to change a couple of things to fix this:

  • One problem was backlash – the rubber stepped cable on my machine wasn’t tight enough. I’ve found they need to nearly be as tight as guitar strings. This helped a lot.
  • The other problem was completely of my own making – the engraving process makes quite a lot of dust, and I had been switching on my shop-vacuum every now and again to clean up the dust. When I didn’t switch the vacuum cleaner on, I didn’t experience the problem. I can only guess that switching on the cleaner caused some kind of variation in the current getting to the motors.

Issue 4 – Universal G-code sender crashing

Finally, a really frustrating problem was catastrophic JVM errors – I don’t have words for how gutting it is when you’re almost through a perfect print, and then your computer alerts you that Java has encountered a critical error and has to close – which means that the job aborts and you have to start again on a new board.

I am not 100% sure how to fix this – but I eventually did notice a correlation between me switching on my vacuum cleaner (to hoover up all the dust being generated) and this error occurring shortly afterwards. This didn’t happen every time I put the vacuum cleaner on, and I don’t even want to guess at the science behind what would cause this because it would sound very implausible! But I’d recommend to anyone else encountering this problem that they try to avoid turning on other heavy current machines at the same time as the CNC machine.


The Shapeoko is the best tool I’ve used so far for isolation milling PCBs. There were a bunch of problems starting off – but these were solvable problems, and really just part of finding out how to use the machine.

I wish I could take better photos of the results – I’ve included a couple below. My first attempt is on the left of the photo below – you can see how the copper wasn’t cut uniformly because the bed wasn’t level. After applying the auto-levelling software, the effort on the right is much more uniform.

early attempts 2

I’m able to create PCBs repeatedly using the Shapeoko now – the photo below shows the most recent PCB I’ve milled and drilled.

shapeoko finished PCB