Making a 3 axle CNC machine


I am totaly new in this forum and just bought my first Arduino Uno. On Youtube I saw a video made by Joop Brokking where he built a little CNC machine. I happend to have the same mechanical rigg, a PROXXON MF70 that I would like to controll digitally like he did. Joop did it using an Arduino, some stepper motors and drivers, and a few pc softwares. For me the first qustion is about the layers of logics. What must be handled by the Arduino, what is handled by various software in the PC. What software can I download and combine into a system? E-esel(?) I have heard about. G-code looks similiar to HPGL... I have been programming for 40 years in very different environments, microcode, assembler PLM, C etc.. My interest now is to take advantage of existing knowledge, experience and solutions to create my system. I mill lead weights for the locomotives on my modell railroad being retired and having lots of free time. Milling small tools is also done.

Regards, Railroader

For my small router (Dremel) I use Grbl firmare on an Uno for the controller. The firmware receives g code from the PC and translates the G code to stepper movements and control signals. The Uno has a CNC shield that has the stepper drivers and connections for limit switches and other functions.

Hi! Thanks a lot! I just ordered the hardware. Time of delivery is poor, 18 of mars to 5 of maj but the price is good. Checking the software I don't find "Download" on their page but I will dig....

What pc software do You use?

Regards, Railroader

I use my router for carving in wood and PC board isolation routing so my use is different than yours. I can recommend bCNC. It is a G code sender that has many great features. For CAD, I use FreeCAD.

Thanks a lot! Plenty of new stuff to get into.

I still try to understand how things are done. What is downloaded into the Arduiono? Is there a built in G-code interpreter? How does the Arduino know how to rotate the stepper motors? How to get driver routines if not? G-code looks similiar to HPGL, the plotter language, that I used in a project ages ago and it looks useful for simple applications. Of course, using CAD propgrams is at the highest level. G-code sender sonds selfexplaining.

How about libraries for standard functions? The syntax of the G-code itself?

More questions...

Regards, Railroader

The Grbl firmware loads onto the Uno. Grbl receives the gcode and generates the signals to move the steppers in accordance with the gcode commands. The gcode sender (runs on PC) connects to the Uno and therefore Grbl via the serial port. You load a gcode file into the gcode sender and then you send the file to the Uno.

The syntax of the G-code itself?

Thank You very much! I write a kind of system map to remember the name for the Arduino downloading process. Thanks again for the link to the G-code! That is gold for me! G-code feels like a good way to get started, mostly creating various flat surfaces on parts of the object.

Now I feel the need to know how to connect 3 steppers and how to make the software aware of it.

Regards and thanks, Railroader

Information on configuring Grbl for motors, drivers, limits switches, etc.

Whow! Grbl handles that. Thanks a lot! Sends You a hug. Just managed to download APL code and run it but download failed deveral times before working. Ghosts are playing or what? Thanks for Your great help! Noe some sleep and new battles to come. //Railroader

Railroader: Whow! Grbl handles that. Thanks a lot! Sends You a hug. Just managed to download APL code and run it but download failed deveral times before working. Ghosts are playing or what? Thanks for Your great help! Noe some sleep and new battles to come. //Railroader

Gee, I haven't seen APL mentioned since the 1970's. I wanted to try it, but it wanted to be the only system on the IBM 360.


Wrong acronym. It was PL1 I tried to get. APL was available, but not on IBM.

Arduino Programming Language... APL.. You are perfectly right about the old APL. Remember COBOL, FORTRAN etc...? //Railroader

Hi again!

Being new to this environment there are lots to learn. My question is how and where I tell the GRBL environment which Arduino pins to use for x-, y- and z-step resp. direction. I also test Estlcam and but it uses other Arduino pins than my powerboard for the motors so that license was wasted money it feels like.

The info from groundFungus got me close but I still haven't found it.

Does this help? Grbl is set up to use certain pins. The cpu_map.h file has the pin definitions.

Thank You very much! So now I need locate that .h-file, copy it and make the changes and store the file, probably in an Arduino library.

On my machine the cpu_map.h file is in “E:\grbl-1.1f.20170801\grbl-1.1f.20170801\grbl”. I would copy the cpu_map.h file to a safe place, modify the file and put the modified file in the grbl folder (where the original was) so that the main grbl code knows where to find it when it comes time to be #included.

I found a file named cpu_map.h in my computer at location: C:\Users\User\AppData\Local\Packages\Microsoft.MicrosoftEdge_8wekyb3d8bbwe\TempState\Downloads\\grbl-master\grbl\cpu_map

Don't ask me how I found it......... There are plenty of Microsoft.Microsoftxxxx folders on the same depth in the file tree.

Yes. Renaming the original file and store the updated file as cpu_map.h looks like the best.


That cpu_map.h file is inside the zip (installation) file, I don't think that is what you want to modify.

I had a second look and there is a grbl folder in my sketch book libraries folder (C:\Users\DaD\Documents\Arduino\libraries\grbl). If you have grbl installed in your libraries, that is the place that I would put the modified cpu_map.h.

I can start GitHub. I guess it was in that environment I found the h-file. Or it comes from installing Estlcam. Estlcam makes kontakt with my stepper now!

How do I get Grbl properly installed into the Arduino sfear?

Arduino sfear?

What does that mean? To install grbl to an Arduino board, go to the example folder and load the grblUpload.ino sketch into the IDE. Or load the grblUpload through the File menu Examples. Set up, through the Tools menu, your board type and serial port (plus whatever else may be necessary). Then upload to the board.

Sorry thay my questions look strange. I have no knowledge on the system level. I just managed to make Estlcam move my test motor. First I selected Arduino Uno, inside Estlcam, and nothing happened. Then I selected GRBL 0.9- and then things worked. Where is GRBL? I don't see that.

I don't know yet where and how G-code appears. Writing in G-code could be possible as a beginner. GRBL can rework and send G-code to the Arduino Uno I think I learned. Whether the Arduino ATE uses GRBL I don't know. I need like maps showing how different systems are connected to each other.

Installing the wrong software or placing in in the wrong place only brings trouble. Building up the system my qestions are like from a novice.

Thanks a lot for Your answers!