Enabling homing appears to lock up the machine until you home, and that's reasonable when connected with something like Candle. But the offline controller doesn't have a home button. So there doesn't seem to be anyway to use it once homing is enabled.
Anybody been able to get this combination to work? Is there any way to add a home button to the offline controller? Documentation for that little thing seems to be virtually non-existent, but it must be running some sort of firmware. Hackable?
CNC 3018 Pro is a low-cost CNC router that should be used mostly with wood and acrylic plastic. It can also be used to mill PCBs and cut soft metals like aluminum with proper settings. The machine uses both metal and plastic parts. Electronics is based on a custom made ATmega328p board with A4988 stepper drivers. Spindle uses a common DC775 motor fitted with ER11 chuck.
I recently bought one from Banggood (I chose the version with offline controller because it allows me to load gcode from SD card and use the CNC without a computer next to it). To my surprise it came with an old version of GRBL firmware (0.9j) so I started gathering information about how I can update it.
While most people would have sticked with manufacturer recommendations and stop here, I wanted to see what issues appear with GRBL 1.1 on CNC 3018 Pro. I will tell you now: none. The CNC runs... smoothly. Following is a hassle-free method of backing up existing firmware and flashing a new one without any additional hardware.
Precompiled binaries of GRBL firmware do exist (that is what I am going to use too) only for ATmega328p, probably all CNC 3018 boards use this MCU. The update process described here will not work with different hardware. It is still a good thing to inspect the board first. Mine is a custom design with soldered stepper drivers.
avrdude is the tool used to read the old firmware and program the new one. Being used by Arduino IDE, it is free, open-source and available on all platforms. But, to make things even more clear, I used AVRDUDESS, a graphical tool for the command line programmer. If you are trying to make a backup, launch it, start by setting programmer to Arduino, choose the right serial port and set baud rate to 57600. At this point, if you never opened the plastic case of the controller board and you don't know whether it uses ATmega328p or not, click Detect button. If the MCU ID is different than what you see in my screenshot, it's worth looking at the hardware. If the chip is marked as ATmega328p, select it in the combobox and ignore the different ID. If the board has a different MCU, you cannot continue since GRBL is precompiled for ATmega328p.
Attached is my Shark document on how to edit Carbide Create gcode to get it to work with the Shark. Maybe it will help you to edit the commands that the 3018 cannot understand. Carbide_Create_for_Shark_Use.pdf (42.4 KB)
3. In Device Manager, look for the Ports (COM & LPT) entry and click on it to show the active driver being used. For all controllers, this should be CH340, but different COM port numbers may be shown. Write down the COM port number, as it will be needed later.
The CNC 3018 Pro Router (called 3018 pro for the rest of this article) does not come with endstops. While not required for use I wanted to add endstops to enable homing and as a safety for making sure the 3018 pro does not try to go outside of its bounds.
While the parts are printing the 3018 pro needs to be dissembled slightly to make installation of the hardstops easier. Unplug the spindle motor and z stepper from the control board. Disconnect the x leadscrew from the x stepper, turn the x lead screw so that it moves away form the x stepper and pokes out the left side. Keep turning the x lead screw to unthread it from the spindle carriage and remove it from the machine. Remove the M5 bolts holding the 10mm linear rods for the x axis and the spindle carriage should drop out of the machine. Remove the linear rods from the carriage assembly for now.
Solder wires to two of the limit switches on the common (C) and normally open (NO) terminals. I used 24AWG of different colors but anything close to that will work and they can all be the same color. Make sure the wires are long enough that when mounted they can be connected to the controller. The wire on my x_negative switch is about 60cm long and will be cut to length when it is mounted. The wire for the x_positive is the same length (I am cutting up a wiring harness from something I salvaged) but can be much shorter depending on the placement of your controller.
Solder wires to the C and NO pins of two switches. Make sure the wires will be long enough to reach the controller when they are installed. Again 60cm should be more then long enough for the y positive limit switch and the y negative limit switch can be much shorter. We will trim the wire to length after the switches are mounted.
Mount the spindle carriage to the 3018 pro using the same steps you used to remove it but in reverse. Move the spindle to the far left. Trim the limit switch wires to length leaving a little bit of slack and crimp on female header pins. Connect the wires to the Z-Limit header pins on the PCB. Tidy up the wiring.
We need to configure the machine to use the endstops now and this requires sending a few configuration commands to the GRBL controller. Connect the the 3018 pro using your PC and favorite GRBL controller program, I am using bCNC.
Restart the GRBL controller on the 3018 pro and reconnect to the PC. Test all the switches before continuing by manually triggering them. This should trigger an alarm for each of the switches, if not then double check your configuration commands and wiring. Now send the home command $H. It was at about this moment when I realized that the X-Limit and Z-Limit pins were switched, it seems like the silkscreen on the controller is wrong so if when you home you find that your z axis ignores the z limit switch but manually pressing a x limit switch triggers it then swap the pins.
I have narrowed the problem down to the offline controller. I ran the program from my laptop without a bit installed and it ran perfectly. Sorry for wasting your time looking for coding problems, I really appreciate the time and effort you have gone to though.
For others who run into this problem I am running a sainsmart 3018 clone, the controller is pictured below. I have been unable to fix the problem using the controller unfotunately. loading the Gcode into candle and running the code from a computer did work.
When using the offline controller, it will work fine for a while, then mess up the Z-height on some portion of the tool path in a pocket. It screws up the z height in the same xy locations on each pass. Then eventually the machine stops before program complete.
Found another post stating that the arcs overload the 3018 offline controller. I unchecked the allow helical moves in the Fusion G-code post process window. Now all moves are x/y/z commands and it ran with no issues.
df19127ead