Close

Now grbl controlled - by mistake...

A project log for Sub $200 PCB Mill that doesn't suck!

A PCB mill inspired by open source CNC 3D printers with a custom design to fit standard size copper clad boards (6" x 4" / 160mm x 100mm)

timo-birnscheinTimo Birnschein 06/18/2017 at 06:411 Comment

Today was an interesting day. I Almost completely wasted my Saturday by eliminating the stuttering that some people on the internet thought it was caused by Marlin when running over very small line segments. The internet claimed, Marlin has issues with those super small line segments and can't keep up. But the developer said it was fixed.

Apparently, it was.

I invested the first three hours of today getting grbl for the Cyclone mill to work on my mill. It should have been straight forward if Cyclone would use standard pinouts. But grbl runs to MAX endstops by default, so I wired up my endstops to MAX on the RAMS1.4 board. However, the Cyclone port only uses MIN endstop pins. As soon as I figured that out the machine was ready to be tested.

The grbl for Cyclone seems to be using a different homing pattern in general. Even when the offset from home is set to 0, grbl moves the tool head away from the endstop so that the mechanical endstop turns OFF again. Since these mechanical endstops have a hysteresis, my previous X0, Y0 is now slightly offset. That means I have to recalibrate my bottom layer milling offset again as well. It won't just be Y-162 anymore. But we will see.

And then the actual issue of the day: It wasn't Marlin. It's the gCode sender - AGAIN!

I experienced this issue before when I tried to use my K40 laser cutter for image engraving with a new laser power value every 0.1 mm. I had to write my own gCode sender in order to make that kind of data rate happen. And now, I tried to use CNC-gCode-Controller again, with all its comfort functions, and I see.... it still stutters exactly like Marlin! We're 4.5h in at this point.

So I tried my own gCode sender and voila - it runs buttery smooth. But my version is console based and doesn't offer any other features than sending gCode as fast as possible to grbl.

So I tried to dig into the horrible Java code of CNC-gCode-Controller and tried desperately to identify where the gcode is actually sent to grbl and how it was organized. A hopeless endeavor since there is practically no documentation and (in a classic Java manner) so many classes and helpers and whatever Java construct you can think of that I as C++ developer had to give up. I don't like Java. I only use it when I absolutely have to.

We're 9h in now.

The remaining 3.5h of the day, I restarted my search for some GUI based system that might be fast enough (I'm not laser engraving here) to send a PCB to grbl, so I found grblController again! And best of it is, IT WORKS!

Unfortunately, I still miss a bunch of comfort functions! Here is an example:

To mill the top side of the PCB I have to manually send

Now I can hit start! I would love a button for the first step and another button for the Z probing.

To mill the bottom PCB I have to do even more:

Again, buttons and confirmation would be cool to have to be less prone to user errors.

Right now, I'm trying to install QT the free edition to try and compile grblController from sources. But since the online installer can't finish downloading all the packages I have very low confidence that will be able to compile it and add my buttons to it - or even that nice auto leveling feature from PCB-gCode-Controller... sigh...

EDIT: The offline installer version of QT 5.9.0 for Windows seems to be available as well. We'll see what tomorrow brings.

EDIT 2: I just swapped X and Y axis and updated the gCodes above accordingly.

Discussions

Patrick Knöbel wrote 02/20/2018 at 14:32 point

If ist any help CNC-gCode-Controller has now an option for streaming ahead ;-)

  Are you sure? yes | no