Sunday, July 19, 2020

CNC3018 Controller Board Repair - Or When Stupidity Strikes


Sometimes bad things happen if you forget to unplug your USB cable

I've been playing away with my CNC3018 router for a little while now with varying degrees of success. I still am learning the ins and outs of the machine but I have been able to make quite a few things with it,

I am definitely nowhere near the level of proficiency that I have seen other people have with the machine but as with any skill, that will come with time.

One thing that I do like about the router is that it's a compact design, making it very easy to move around the workbench whenever I need to make more space. Unfortunately, it was this very portability that got me in trouble.


The other day I needed to move off the router off of the workbench to make room for a larger project that I was working on (OK, it was the Garden Tractor). Normally I would disconnect the power and USB cables from the router before moving it, but this time, in a moment of haste, I forgot to disconnect the cables and I moved the router with the cables trailing behind me.

I suppose it was no surprise when the USB cable got caught on the corner of the workbench and yanked the cable out of the router.

I didn't really think too much about it until I noticed that the end of the USB cable had a little more on it than I was expecting.

What happened was that the USB connector on the control board for the router got ripped off from board when the cable got caught.

This was not good.

I started surveying the damage by removing the dust cover for the control board.

Removing the dust cover

With the cover removed, I noticed that the part that had the USB connector was a separate board that simply plugged into the main control board for the router.  Removing the broken part was simply a matter of unplugging it from the control board.

Unplugging the damaged board

Looking at the damage I saw that the USB connector was a surface mount type connection, meaning that it was secured in place with solder only, as opposed to the traditional "through-hole" mounting (which would have made for a much more secure physical connection to the board).

Looking at the location where the connector was on the board, I believe the data connectors were only contacting the board and not soldered in place. The anchoring pads for the connector were completely destroyed, meaning that I could not just re-solder the USB connector back in place.   

In an attempt to reattach the connector, I tried to attach the connector back onto the board with some superglue, trying my best to make sure that the leads for the data connectors were matching up correctly. 

Once the glue had dried, I reconnected the USB cable to the board and tried to communicate with the board with my computer. 

Sadly all attempts to communicate failed miserably. 

Attempting to reconnect
Trying to reconnect the USB connector
Secured in place with superglue

Fearing that I had effectively bricked my router, I took a closer look at the wrecked board and was greeted with a welcome sight.

The wrecked board was just simply an Adruino Nano.

To the uninitiated, an Adruino is an open source-based mini-computer which, thanks to the open-source community behind it, has a robust support community in place.  Even better, the Arduino Nano is ridiculously cheap.

The 3018 router itself is open-source, making repairs and modifications in general simple.

Arduino Nano

After a quick delivery from Amazon, I had three Nano's for less than 20 dollars.

Three Nano's delivered to my door

In order to prepare the Nano for installation into the controller board, I first needed to solder the rail pins to it.

To install the rails, I inserted the side of the rails that had the smaller length pins into the IO pinout holes on the Nano, and soldered the pins in place taking care to use a minimal amount of solder in order to avoid shorting out the pins.

Individual Nano and pins
Individual Nano and pins
Soldering pins to the Nano
Pins installed

The next step in the process was to program the Nano with the necessary code to drive the router.

In keeping with the open source nature of the router, I found out that the router was controlled by GRBL, which is an open source g-code parser that has been written specifically for the Arduino.

The source code for GRBL is easily assessable and has a fully documented wiki page on how to install and use GRBL.  There are also a lot of CNC applications (like Candle) that work well with it.

To install the code on my Nano, I first downloaded the latest version of GRBL from GITHUB and unzipped it onto my computer.

Next I opened the Arduino IDE editor on my PC (which I need to load code onto the Nano)

I loaded the grbl folder that I had just downloaded into the Arduino IDE as a Library and clicked the Sketch drop-down menu, navigated to Include Library and selected Add .ZIP Library. The Add .ZIP Library command supports both a .ZIP file or a folder. In our case, there is no .ZIP file.


To confirm that the library had been added correctly. I clicked the Sketch drop-down menu again, navigated to Include Library, scrolled to the bottom of the list and confirmed that I saw "grbl" on the list..


Next I navigated to the File menu of the Arduino, clicked on the Examples option and clicked on GrblUpload example.


I then just compiled and uploaded Grbl to the Nano.

GRBL code on my IDE editor 

All that was left to do was plug the Nano back into the controller board on the router and put the dust shield back on.

Reinstaling the Nano
New Nano installed
Replacing the dust cover


Connecting my router to the Candle CNC application on my computer, I was quite happy to see that the router was able to connect successfully and respond to manual commands. 

However when I tried to run a g-code program on the router, I did notice that the cutting distances on the router did not match up at all with what I had designed on CANDLE (in fact the router was only cutting at a third of a size than what I had on my computer screen). 

Investigating the issue on the GRBL wiki, it came to light that I needed to calibrate the Nano so that the stepper motors on the router moved the correct amount in relation to my CNC software.. 

On the CANDLE command console, I needed to set up the X, Y, and Z settings to the correct amounts. 

I did this by typing in these commands in the console:

$100=600
$101=600
$102=800

With that adjustment made, the router was now back to normal. 

If the 3018 was not an open source based tool, I definitely would have had a pretty bad time repairing it. But thanks to the plug and play design utilizing commonly available modules, I was able to recover with little fuss.  The nice thing is that I now also have a couple of spare Arduino Nanos, for other projects or for when I rip the USB connector off again, which ever comes first. 

No comments:

Post a Comment