Cncing made easy

Everyone that used a cnc before knows its quite a hassle. Starting of with a cheap cnc machine. Using free software which usually doesn’t work 100%, or is just user unfriendly.

I’d like to change this. I’ve bought a open builds c beam and combined it with an arduino with the grbl shield. The gcode streamer that comes with it is quite a useful tool but it requires a PC in dusty environment.

I’ve been working with an Ultimaker at work lately and was surprised of the ease of use. At work we also have a stepcraft cnc combined with winpc nc. The cnc software is horrible so I decided to build a Ultimaker like experience in an open source platform for an CNC.

But what is an Ultimaker experience? Well it is easy to select a program which should be printed. With a jogging wheel and a display the contents of an sdcard can be searched to select the program. Hit go and the machine starts. It gives some additional info about the process and does its thing. No PC involved, a fully standalone product.

This will be achieved on the grbl project by adding a couple of features. An Sdcard for gcode storage, a nunchuck as an interface for re-zeroing the machine for the selected program, a display to see some info and menu’s and a final cross laser will be added to show the milling area.

This way a easy milling experience will be created and a lot of the errors w.r.t interfacing and selecting the wrong milling area can be over come.

What’s the status?

Currently gcode loading from an SDcard is possible. For the filesystem support I chose to use FatFS. This library makes it quite easy to access a fat32 filesystem. For zeroing the cnc a nunchuck is used. Currently it is able to set the zero point for each axis individually.

What’s next?

What still has too be implemented is the step size of the axis based on the movement of the nunchuck.
I2C based display to show the menu’s which are currently shown on the serial port.
Get a better nunchuck, currently I use a china clone. Down side is even with 10ms debouncing it detect’s button presses which are not pressed. I’m assuming this is caused by the cheap clone mechanics. An attempt will be made to replace the rubber dome construction with tactile switches to rule this out.

Current findings:
The grbl software is designed as a control loop for handling gcode instructions managing motor control timing.
This makes it incredibly hard to fit in user control during motor movement like the zeroing. This is mainly in issue due to the polling nature off i2c. Meaning that the interaction becomes unresponsive during motor movement. This makes it impossible to control the zeroing with proper user feedback. Same goes for the buttons to control the ui. The user is unable to use them during motor movement which makes the interaction unfriendly.

After getting this all to work I decided to quit the the project and to stick with the serial interface and control the CNC from the universal gcode streamer.
After a while of usage the laser samed a gimmicky feature mainly because you have to calculate the middle zero any ways. As long as you stick with the zeroing in the middle of your object it can’t really go wrong. So this was solving an issue which wasn’t a real issue.