I’ve blogged a bit before on my small (300mm x 200mm) milling machine. This was broken, due to a power supply failure, and also, as it used the parallel port for stepper motor control, I needed to use an old legacy machine with a real-time linux kernel. Because of this I have barely been using it for the past couple of years – the laser cutter at my local hackspace (and now my own personal laser cutter) has been my go-to piece of equipment. I really wanted to update the unit with a new controller, limit switches and stepper motor controllers. I’d like the option of being able to quickly test out a PCB design (before sending off for manufacture) and also have times when I need to accurately cut out holes in panels for switches and connectors and I wanted to make that much easier and more accurate.
Hardware updates to the CNC
This turned out to be quite a bit more work than I thought. I found the GRBL controller for the Arduino Uno. This is an amazing bit of work and I highly recommend it. It takes G-code commands sent through the USB to serial converter and controls three axis stepper drivers.It has been developed for CNC milling machines as well as laser cutters and 3D printers.
I bought a GRBL CNC shield from eBay. This came quickly but it turns out the guy who originally design the board made it open-source but many other clones have been made and totally undercut him, so he has stopped work on that design. My board was designed for GRBL version 0.9. The newest version of GRBL is 1.1. This has slightly different pin-outs (the limit switch pin has been changed), which gave me quite a while of head-scratching. I wired this all up in the old enclosure I had built and it worked well for an evening. But when I sent the first cutting job the stepper controllers overheated and failed. This is because they were rated for 1.1A and my steppers take a maximum of 1.9A. Doh!
So I needed higher current stepper drivers. I found the TB6600 which is designed for 4A and 9-42V. These are readily available for around £8 – £10 each. I ordered 3, along with a new power supply for the steppers and a new screw shield to make connections to the Arduino with GRBL installed.
Things were getting a bit bigger than they were before, so they would not fit into the enclosure I had previously used. I got a metal enclosure and fitted everything in. It’s a bit of a squeeze still. Ironically, having a CNC machine would have helped to the switch and connector cut-outs for the CNC machine.
Other problems I also encountered:
- Needing a motor speed controller for the spindle. I added a PWM speed control I had lying around, using a 36V DC power supply.
- Noise of the limit switches – definitely add the 4.7k 100nF filter network. I wish I had done this in the first place, but I retro fitted to the shield on the Arduino.
- Setting the steps per mm for the machine. In my case all three axis are the same at 400 steps per mm.
- I bought a cheap power supply for the 24V for the stepper controllers. This kept tripping out at strange times, causing a load of headaches. I bought a new power supply and the issues all went away. The bad power supply was marked T-360-24V, which was meant to supply 15A. The good supply looks the same, but is marked S-360-24V.
- I added 100uf capacitors to the TB6600 power inputs. This is probably not needed, but seemed to help while I was trying to sort the power supply issues.
This Instructable covers the same things I went through for my CNC upgrade, along with a video.
The end result is not beautiful box, as the space available was really limited. But it does work relatively well. This is a photo from testing, when the power supply was removed!
CAD and CAM packages
There are loads of different CAD and CAM packages now. I was looking for well documented, open-source (if possible) tool chains to go from 2D or 3D design into the G-Code for the CNC machine.
I am using a Linux machine to control the CNC, so any programs must work on Linux (Ubuntu 18.4).
I found chilipeppr.com which is a web based CNC machine controller. This needed to also have a serial port json server installed as well, which added a bit too the hassle as I’m not great at Linux installations. I needed to ensure that the server ran at start up as well. It actually worked very well & it might be the main controller I use, but I’d like it to work stand alone, without needing an internet connection.
My idea for the tool chain for going from CAD to the CNC machine is:
- Convert design files (SVG etc) to G-code: Undecided yet. Need to have a play with different options. Interesting options include:
- jscut
- CAMBAM
- Maker CAM
- gsimple
- bCNC
- Easel
- G-code to CNC machine using Universal G-Code Sender (https://github.com/winder/Universal-G-Code-Sender)
My tool chain for going from PCB design to the CNC machine is:
- Convert Gerber files to G-code using FlatCAM (http://flatcam.org/).
- G-code to CNC machine using Universal G-Code Sender (https://github.com/winder/Universal-G-Code-Sender)
I will try to keep these tool chains updated with my experiences….