Estlcam firmware + Arduino Uno + Protoneer CNC shield

My MPCNC is being driven by an Arduino UNO (not Mega) with a CNC shield from Protoneer. You can buy an Uno clone with the shield and 3 stepper drivers as a package from a US based seller on eBay here. I’m not associated with either supplier; just saying I did this and it works.

Estlcam will download its own firmware straight onto the Uno and control it directly; no Repetier, no Arduino IDE, and no fiddling with Marlin configuration.h parameters!

If you are looking for a dead-simple approach I recommend it. The downside of course is that you are beholden to Estlcam but I think it’s a fair tradeoff especially if you are new to CAD/CAM as I am. The workflow is greatly simplified as all you need is a CAD tool for design and Estlcam for everything CAM related.

The Pressure is on Joe;o) I just ordered the setup you mentioned above based solely on your recommendation and link. I hope it was right;o) (I did get the 4 driver setup). While I have the RAMPS setup, I would MUCH rather have a streamlined all in one setup as you describe in the above post. I figure its a $35 risk;o) While I am not new to computers, I am new to CAD/CAM so I want as easy entry as possible. Hope we can collaborate together.



Interesting. I can see the appeal of a unified system. I have a few questions.

Does it have the ability to run gcode generated by other sources? Does it use all the same commands as Marlin, or does it have some of its own?

Does the protoneer have a cooling fan output that can be used to drive a laser (or perhaps someone like Leo can tell us if there’s another output that can be repurposed, as he did for his $100 laser project)?

Will the protoneer drive an extruder head for 3d printing?

I’ll be interested to see what you do with your system!

Well, I’ve answered some of my own questions so far, or at least google did.

The protoneer is a pure CNC board that runs GRBL. It doesn’t have the stuff needed to run heaters and such for 3D printing. The gcode command differences between ramps and GRBL are easy to find.

Since it doesn’t have a cooling fan output, some other output would be needed for laser.

Protoneer has a true emergency stop capability. Ramps does not.

If you’re not planning on 3D printing, the protoneer looks like a nifty solution.

Interesting. It would be nice to see a complete write-up for this configuration as it looks like Jon could use it :slight_smile:

Grbl uses the spindle on off for laser control. My last laser engraver was grbl based and in that version of grbl the z endstop pins were mapped to m03 and m05. That may have changed since then but with a quick firmware edit you can map m03 and m05 to any pins you want. Grbl is very nice but as mentioned above there is no support for 3d printing or 4th axis. Two things i plan to do with my mpcnc with marlin and ramps so that’s a deal breaker for me.

Since this post I’ve started using the spindle enable feature of the Protoneer board and ESTLCAM’s GUI. I’m using a homemade plug box with a high quality solid state relay built-in that is toggled by the +5V output of the Protoneer. It won’t control AC motor speed but it does automatically turn my Makita on/off which is handy because the router’s toggle switch is inaccessible when installed facing the Z-axis in the Universal Mount. My next move may be to use the six end-stop inputs on the Protoneer, but so far I’ve really not found much need. If you carefully set the ESTLCAM work area size and simulate the tool run before going live you shouldn’t bump into the limits.

The Uno that comes with the $35 kit on eBay is a Chinese knock-off. You will probably have to carefully straighten the pins before mounting the CNC shield. You may also have to load a driver to get the USB/serial connection going as it uses a less expensive driver chip than the FTDI part on official Arduino/Genuino boards. I got it working on XP and OSX after some fiddling. I strongly suggest you get the basic UNO talking to your PC before you mount the CNC shield. One step at a time. Also, as with all stepper drivers (including RAMPS) be sure you tune each stepper’s (the tiny potentiometer) power level using the instructions here. Not doing this will cause motor skipping, driver overheating, cooked motors, and/or other bad stuff.

Based on my research so far there seem to be three paradigms for driving your MPCNC.

Path 1: ESLCAM + Arduino IDE + Marlin + Repetier Host [on Arduino Mega + RAMPS hardware]

If you want maximum flexibility, if you embrace the RepRap philosophy, or if you plan to do 3D printing (need extruders or heated beds) then the best path is as explained in the main instructions on this site. The downside is a rather complex workflow and a high “fiddle factor” as you tweak and recompile the Marlin firmware and play with Repetier Host. I’m comfortable doing this as I built my own Prusa i3 using a RAMPS clone and later a RAMBo, but the prospect of setting all my parameters in the ESTLCAM GUI in meaningful CNC terms and units and having it configure and load the UNO was pretty attractive. I actually got my MPCNC working with a RAMPS clone first and then decided to try another approach. I figured all those CNC DIYers must have some good stuff so why not try it?

Path 2: Mach3 [with parallel port + CNC controller hardware]

You could use Mach3 (or similar) PC CAM software communicating with a CNC stepper controller (like this) over a legacy parallel port. The host control people (Mach style) are devotes of the parallel port because it is the only way to do millisecond accurate timing directly from a desktop/tower PC. However, IMO, that approach is ultimately a dead-end as the parallel port will inevitably become unavailable (note: most USB to parallel converters do NOT work because the required precise timing gets buffered-out.) If you like tower PCs with PCI slots and plug-in boards with parallel ports then maybe Mach is for you! I’ve never used it but the CNC world still seems to think it offers the most control options. If you get super-serious about 6-axis metal milling it might be the only choice. Maybe one day?

Path 3: ESTLCAM [on Arduino UNO + GRBL compatible CNC shield]

GRBL is Arduino firmware designed to offload the PC from having to deal with the millisecond timing problem and eliminating the parallel port dependency. That’s what GCODE was all about: it’s a motion control language that enables a PC/laptop to send aynchronous commands to firmware running on a micro-controller. The micro-controller regenerates the isochronous timing required to control stepper motors. Remember that Marlin is based on GRBL (read the credits at the top) and DIY CNC machines predate 3D printers by a decade or so! My setup described above is basically “Path 3”. It will only cost $35 to give it a try. If it isn’t what you want, or if you later “upgrade” to the MPCNC “standard approach” that should be no big deal. In fact, flipping back and forth is no big deal either: just put reliable connectors on your wiring. BTW, the Protoneer is just one of several “GRBL compatible” CNC shields that “should” work just the same.

Further clarification on ESTLCAM firmware versus GRBL firmware…

I’m using the ESTLCAM firmware running on the Protoneer “GRBL compatible” CNC shield. I actually have no idea what firmware ESTLCAM loads onto the UNO! That’s the beauty of this approach. The firmware is invisible. It might be GRBL, GRBL derived, or totally ESTLCAM proprietary. You can’t see it, and don’t need to modify it, so who cares?

The other issue is telling ESTLCAM firmware what pin-outs to assume on the UNO/shield. I started with “Arduino PIN layout” set to “GRBL safe” and then moved to “GRBL” as I convinced myself that I wasn’t going to fry any UNO or shield chips. There is also a “GRBL PWM” and “Estlcam” pin-out setting that I have yet to explore. Maybe the ESTLCAM author can help us with this topic?

I am in the process of setting up MPCNC and just about to start the software. Do you know if Estlcam will download its own firmware on to the Arduino Mega with the standard RAMPS setup? Sounds like a lot easier way to go if you are only using CNC.

Not right now. Estlcam firmware is for the uno only. For now.

I’m not sure I’d like my CAM software writing firmware to my MPCNC unless Ryan himself was involved with setting up the parameters . Ramps and Marlin may be a pain with the Config.H set-up but it’s a one time thing and takes minutes. The benefit is the flexibility to configure for any hardware you may be running , a perfect match for a versatile CNC platform like MPCNC, and not just being tied down to one hardware configuration.

On the other hand, it is a simple solution for people who are strictly using their MPCNC for cutting/routing. I see the newer version of Estlcam support trochoidal milling toolpaths. They say it works with their firmware. Anyone know if Marlin can process the gcode fast enough to support this? I’d love to have that option if I ever need to mill soft metals.

just ordered a set… keen on giving this a crack.

any tips/screen dumps of working presets???
thinking 200 for steps per revolution
distance per revolution???
maximum feedrate ???

Marlin section on main page describes the edits recommended for the config.h file.

Post if you have any problems.

just looking through the config.h and we have DEFAULT_MAX_FEEDRATE {195, 195, 8.7, 25} // (mm/sec) so I guess 195 mm/sec
estlcam is asking for ipm for maximum feed rate, I ran this through a online calculator
and got a result of 195 millimeters per second = 460.629921263 inches per minute this seems a tad fast, am I on the correct path, or way off the money…

worked out my silly mistake re inch vs mm… but is 195 correct figure for feed rate???

195 is the correct number. Keep in mind that this is a max travel speed limited by the firmware but your cutting speed will be much slower and defined by you based on the tool and material used and the depth of each cutting pass that you set in your cam software.
The195 is max speed for rapid travel moves and in most cases these moves will be fairly short and your acceleration/jerk settings will not allow any axis to reach full travel speed over a short distance. If you’re just jogging the machine around manually you’ll see that it is very capable of zipping around at a quick pace.

thanks Leo69, starting to make more sense…
would this be correct for distance per revolution???
GT2 Belt 2mm + 16 tooth, 1 revolution = 2 x 16 = 32mm/revolution

Marlin firmware doesn’t care about distance per revolution. It’s generating the pulses that drive the Stepper motors so you need to define the steps per mm. This will depend on a number of things.

Use this calculator to get values or Just look at The page i linked in earlier Post. The values for common setups posted there too.


How can i connect a (solid state) relais to the Shield v3 ?

Kind regards Marc A