John Lauer Luca Nervetti Justin Adie Double sided PCB made on the 3040T-DQ(ball screws)

@jlauer @Luca_Nervetti @Justin_Adie
Double sided PCB made on the 3040T-DQ(ball screws) running GRBL 0.9j on Arduino Nano, TB6560 driver board. SPJS on OrangePi.
Engraved with 0.4mm 30deg Ti coated Chinese V-bit, 60000rpm 1400mm/min.
Tinned with plumber’s tinning paste and hot air gun. Large photos taken with phone, details with cheap usb microscope, what you see in the holes is paste leftovers, I should have washed it more carefully :slight_smile:
Thank you Chilipeppr!

By the way the GRBL deadlock bug is dependent on speed, with old spindle at 12000rpm I used 200-240mm/min and I got 3-5 locks/board face, now I got about 30-40 locks, I kept clicking the “~” button for the machine to work.

a53a29c261f7bc7a8bc50d58afbb19eb.jpeg

f91a1c5f4bca1ee9bf60b264af701f89.jpeg

7902fc8f74b86fafb5c0da30bde01da5.jpeg

@Mircea_Russu ​ nice going! How do you plate the holes and vias?

I have now done the new code. I just need to check it compiles ok. Unfortunately my mill is in pieces waiting for some ball screws to arrive and my driver board likewise (I blew a driver and although the new chip has arrived I have to wait for a new heating element for my iron after i dropped it…). If you would be willing to test on an airjob it would be excellent to see whether you got through without having to press pause.

Very nice

@Justin_Adie I’ don’t plate the vias, I just cover the board in plumber’s tinning paste for copper pipes and blow hot air with a cheap gun I’ve bought for 10Euro, larger flow and not stressing my hot air workstation :slight_smile:
I would be more than glad to test it, If only you could just compile it for Linux ARM it would run directly on my Pi so it would save me setting up the toolchain myself :slight_smile:

Beautiful

wow 1400mm/min it’s fast milling!

@Luca_Nervetti The 60k rpm spindle is worth every penny, it mills about eight times faster at 1400-1600mm/min, also water cooled and no fiberglass dust gets in the air so I can use a modified vacuum cleaner to blow it directly outside.

One more thing I want to buy now haha

@Mircea_Russu
I’m struggling to compile for a Pi. It should just be a case of specifying the OS and arch but although the compilation appears to complete with only a warning about http://serial.go (not changed by me) I cannot find any resultant binary.
In case you have more luck the src is at http://github.com/jpadie in the serial port repo.

@Justin_Adie I’ve tried to compile but I get: executivul@ubuntu:~/spjs/serial-port-json-server$ env GOOS=linux GOARCH=arm go build v -o snapshot/serial-port-json-server$1_linux_arm/serial-port-json-server
can’t load package: package .:
bufferflow_grbl.go:11:1: expected ‘STRING’, found ‘<<’
bufferflow_grbl.go:22:1: expected ‘STRING’, found ‘type’
bufferflow_grbl.go:68:1: expected ‘STRING’, found ‘type’
bufferflow_grbl.go:73:1: expected ‘STRING’, found ‘type’
bufferflow_grbl.go:87:1: expected ‘STRING’, found ‘type’
bufferflow_grbl.go:158:2: expected ‘STRING’, found ‘defer’
bufferflow_grbl.go:159:2: expected ‘STRING’, found ‘return’
bufferflow_grbl.go:164:2: expected ‘STRING’, found ‘defer’
bufferflow_grbl.go:172:2: expected ‘STRING’, found ‘defer’
bufferflow_grbl.go:176:2: expected ‘STRING’, found ‘if’
bufferflow_grbl.go:196:2: expected ‘STRING’, found ‘go’

What’s with all the: <<<<<<< HEAD >>>>>>> f34e63ffdebe0be7289db08bac98a193100065f5 in the code?

That’s odd. It compiles fine on the mac. And I don’t have any of those extra data you mentioned. Did perhaps the git download corrupt?

Weird. I can see them on github but not in the version that is on my laptop (achieved by go get). I shut down my cloud 9 IDE so perhaps that injected some oddities? Very annoying.

I will clean it out in the morning.

My apologies.

Never mind, I’ve just deleted everything between HEAD and ==== it’s some sort of versioning I guess. I don’t have C9 because they asked for cc :frowning: Now it’s complaining about missing libraries, I have to fetch them all from git. Will try to compile tonight and I’ll report back tomorrow with results, it’s 1:30AM here and wife is sleeping so no cnc moving allowed! :stuck_out_tongue:

@Justin_Adie FYI you must set a folder eg. “golang” and export GOPATH=/…/golang inside you must have http://golang.org/x/crypto/ssh (go get http://golang.org/x/crypto/ssh) and http://github.com with: facchim/go-serial gorilla/websocket johnlauer/goserial kardianos/osext and finally SPJS. You run ./compile_gol5… 1.99 and it will complain about missing dependencies, you fetch each from github except the ssh and place them inside the correct folder as I’ve written above. Then you get the zip with the executable inside :slight_smile:

And unfortunately the buffer does not work:
2017/01/28 00:53:30 bufferflow_grbl.go:304: Final array of cmds after BreakApartCommands(). finalCmds:[$G
]
2017/01/28 00:53:30 serial.go:252: Done with writeJson method
2017/01/28 00:53:30 serialport.go:233: Got p.sendBuffered. data:$G\n, id:status, pause:0
2017/01/28 00:53:30 bufferflow_grbl.go:385: BlockUntilReady(cmd:$G
, id:status) start
2017/01/28 00:53:30 bufferflow_grbl.go:418: New line length: 3, buffer size increased to:0
2017/01/28 00:53:30 serialport.go:268: Got p.sendNoBuf. id:status, pause:0, data:$G\n
2017/01/28 00:53:30 serialport.go:275: Items In SPJS Queue List:0
2017/01/28 00:53:30 bufferflow_grbl.go:486: Did not find newline yet, so nothing to analyze
2017/01/28 00:53:30 bufferflow_grbl.go:481: We have data lines to analyze. numLines:3
2017/01/28 00:53:30 bufferflow_grbl.go:495: < [G0 G54 G17 G21 G90 G94 M0 M5 M9 T0 F0. S0.]
2017/01/28 00:53:30 bufferflow_grbl.go:495: < ok
2017/01/28 00:53:30 bufferflow_grbl.go:527: We should NEVER get here cuz we should have a command in the queue to dequeue when we get any response. If you see this debug stmt this is BAD!!!
2017/01/28 00:53:33 hub.go:122: sendjson {“P”:"/dev/ttyUSB0",“Data”:[{“D”:"$G\n",“Id”:“status”}]}
2017/01/28 00:53:33 bufferflow_grbl.go:265: Command Before Break-Apart: “$G\n”
2017/01/28 00:53:33 bufferflow_grbl.go:297: Re-adding newline to item:$G
2017/01/28 00:53:33 bufferflow_grbl.go:300: New cmd item:$G

2017/01/28 00:53:33 bufferflow_grbl.go:304: Final array of cmds after BreakApartCommands(). finalCmds:[$G

If you have ANY type of Arduino with a mega328p (uno/nano/pico) you could run it and see if you get virtual movement from CP, it hangs the same way as the machine gives no feedback except when probing.

@Justin_Adie @John_Lauer Ethernal GRBL Bug finally solved!!!
Just add “time.Sleep(1 * time.Millisecond)” in bufferflow_grbl.go before lines 169 and 182 “b.SetPaused(false, 1)” and “b.SetPaused(false, 2)”.
It induces a minimal delay but makes sure the nanosecond race condition never happens! Crude but works :slight_smile:

Please @John_Lauer include it in your github repo since making pull/push requests is not working for me.

I am going to have a look after chores today.

Multi thread race conditions don’t tend to be solvable by adding delay (as you just push the problem to the next cycle). It is better to solve them with logic trees instead.
I think I probably was (1) too slavish in following the tinyg model and (2) missed transposing some of the tinyg at the same time and that’s why you’re seeing bugs.

@Justin_Adie having the tinyg buffer would be great. In the mean time my approach coupled with the Gcode widget set to buffer max (20k lines) of code to the SPJS works. I’ve air milled 5 times the board in the pictures, only one lag point and I guess it was due to my laptop since CP freezed for a sec or two, I moved the mouse WITHOUT clicking anything and the job continued as expected :slight_smile:

PS. for laughs: An old Romanian saying translated says “What a man does by himself is called handjob”

ChiliPeppr strikes again! This time not even one single hickup!

hi - I never followed up on the plating question. if you dont plate the holes/vias how do you get connectivity between the layers for the different signals?

nice board - good to see things are working for you!