As I was trying to install the new addition to the shop, a 3040 chinese CNC. I bought it second hand, and the previous owner upgraded the stepper motors, driver board and power supply. I hit an apparently minor hurdle while trying to establish a workflow with the new machine. The problem started when I remembered that the workshop computer was a 64-bit Windows setup which basically meant that the parallel port could not be used. At all.

So, with Mach3 out of the picture, I decided to dual-boot LinuxCNC. The problem with this was, mainly, that I also have a laser cutter that comes with RDWorks which only works on Windows. This already meant a loss of productivity because I couldn’t use both machines at the same time. Nevertheless I got LinuxCNC to work, but then after having difficulties getting used to it, and realising that I wouldn’t be able to use Solidworks or Fusion360 to CAD/CAM the parts, I finally decided to convert the machine to USB.

In order to do that, I whipped up a quick USB to parallel port adapter using an arduino nano on a perfboard and installed GRBL on it. You can get it here. The schematic of the board doesn’t exist, because basically it’s just GRBL pinout -> Driver board pinout. All wires.

I’ve used GRBL to drive DIY CNC’s before, and it was nice, but it had one big shortcoming. The feed override during machining wasn’t happening in real-time. So you couldn’t adjust the feed while milling difficult materials except after the current running command was finished. The latest version (1.1f) has this capability and from my point of view, GRBL is now perfect.

You can see it hanging on the left of the picture off the parallel port of the driver board.

It’s still missing limit switch, probing and spindle PWM connections, but it’s a start. By the way, the original spindle controller PCB has PWM input capability so it’s just a question of adding a connector from the arduino adapter board to the spindle controller.

Having converted the machine to GRBL meant that I could now use bCNC to drive it. This is an excellent piece of software, also free, also open source, written in Python. It has a bunch of features including generatic g-code from dxf files, making text engravings, adding tabs to the g-code to keep the cut part from flying away and breaking your mill. You can get it here. The user interface is very friendly and I cannot recommend it enough! Here is a screenshot from the bCNC github:

Here’s a test I was able to make with the Fusion360 – bCNC workflow:

(about 50mm/min, 10.000rpm with a 2mm, 3 flute endmill with WD40 as coolant)

Stay tuned for more CNC related posts!