Go Back to handibot.com
sign up or log-in

Advanced

Machining PCBs With Handibot

Posted by Denny 
Machining PCBs With Handibot
May 24, 2018 02:28PM
We have an original Handibot from 2103 that is in excellent condition. We are considering using it to machine small prototype PCBs from copper clad fiberglass.

Other research we have done indicates that it is critical to have active Z axis control to compensate for small variations in material thickness.

We are looking at Autoleveler to accomplish this.

AutoLeveler

This software requires the CNC machine to probe the work surface to build a table of Z axis offsets that it uses to modify the input GCode file to produce a corrected output GCode file. Most of their documentation refers to the Mach3 controller.

Is it possible to do Z Axis probing with the Handibot? I read the article about Fabmo probing

Fabmo Probing

It is unclear to me how to make this work.

Any help will be greatly appreciated, thanks,

Denny
Re: Machining PCBs With Handibot
July 18, 2018 03:32AM
Following this. It is one of the main reasons why we bought the Handibot.

Sorry can't help, had it for over a year, haven't even downloaded the software yet.

Hope someone will reply, for you and for us

Best wishes, Carmen
Re: Machining PCBs With Handibot
July 23, 2018 10:30AM
I'm interested in this too. I do know the quick bit app is not what you need. I think you would need to use the already existing probing that comes standard with the Handibot.

At a high level, I think what you need to do is attach the clip to the bit as you normally would. Then run an alligator clip from the metal piece to the PCB board.

I'm just not sure how that would interact with the gcode generated from autolevel. Presumably, you would need to make some modifications of the Gcode to read the correct input from the handibot.

I'm working on a PCB project coming up, so I may give this a shot.
Re: Machining PCBs With Handibot
July 23, 2018 10:49AM
Hmm--So I've been working on a number of applications of what I've been calling a "post-post-processor" which is just taking code output from v-carve and running it through an algorithm to create a modified cut file.

I've been using it to make tangent knife cutting files (breaking up arcs into discrete moves and calculating the tangent angle for the knife--plus adding a z oscillation).
Also using it to make an in-FabMo tiling app (breaks up long lines into a series of points and if they're located in current tile--add them to cut)

Something like this could be used to adjust the height of a file based on a set of coordinates retrieved from a probing routine.

The syntax for probing is P[axis] , [move], [speed], [input] -- so say I want to probe in the z axis, searching downward for 5 inches, at a speed of 1ips and checking for input #1 to close--I would write PZ,-5,1,1

I'm thinking an app like this could have inputs for X, Y dimensions of the PCB--and Z heights for each of the four corners. I may have time to work on it this week--though I'm a bit embroiled in a project with ShopBot to manufacture more of our own parts in house (trying to teach them how we do it at Handibot!)
Re: Machining PCBs With Handibot
July 23, 2018 10:51AM
P.S. Here is my app for oscillating tangent knife on github--I'm definitely not a great coder--so it is a bit of a mess--but anyone who want to could probably create their own app from this framework: [github.com]

It just reads the SBP file line-by-line and runs each line through an algorithm--when it finds an M3 (move) command, it calculates the length and angle of the move, breaks it into chunks (based on the stroke length specified for the oscillating knife) and feeds a new set of commands into an array that will become the new file.



Edited 1 time(s). Last edit at 07/23/2018 10:52AM by Brian Owen, ShopBot.
Re: Machining PCBs With Handibot
July 23, 2018 10:52AM
What does Handibot do in response to the Gcode command "G31"? That seems to be a pretty important one for probing.

If handibot supports g31, I'm wondering if the autoleveler code would just work out of the box since handibot supports gcode natively?

Also can the handibot support gcode file writes?
Re: Machining PCBs With Handibot
July 23, 2018 10:54AM
The FabMo developers actually prefer GCode--I'm the goofy SBP holdout. I'll check with them about G31. One of the developers had added an interpolation function back at the beginning called "rotate" in the configuration menu--but I'm not sure if this is functional anymore.
Re: Machining PCBs With Handibot
July 24, 2018 09:12AM
We do have an autolevel feature that is internal to the FabMo, it is not fully functional yet, so we have not brought it online, but hope to do so soon.

To answer your question, yes, FabMo does support probing internally. I am one of those developers that prefers g-code, but in this particular instance, you may have more luck with the OpenSBP commands for probing. They are PX,PY,PZ,P2,P3

The arguments of these commands are Target,Speed, and Input

Target is the probe target location - it is the position vector towards which the machine will travel while probing.
Speed is the speed to probe at, in the canonical speed units (usually inches or mm per second in OpenSBP)
Input is the input switch number that is triggered when the probe touches off (a high value on this switch causes the probe to stop)

When a probe command is encountered in a shopbot file, the tool moves towards the specified position vector until the input switch is triggered, or until the position is reached. Execution of the program continues at the end of the probe.

Here's a quick example of a program that probes 4 corners of a rectangle, and reports the position each time. It's a bit of a manual process, but we could turn this into an app pretty easily that makes the process a little more painless.

JZ, 0.5 'Pull up to safe Z
J2 0,0
JZ,0.1 ' Get close to surface
GOSUB do_probe
JZ, 0.5 'Pull up to safe Z
J2,4,0
JZ,0.1 ' Get close to surface
GOSUB do_probe
JZ, 0.5 'Pull up to safe Z
J2,4,3
JZ,0.1 ' Get close to surface
GOSUB do_probe
JZ, 0.5 'Pull up to safe Z
J2,0,3
JZ,0.1 ' Get close to surface
GOSUB do_probe

PAUSE "All Done!"
END

do_probe:
   PZ,-0.25,0.5,3  ' Probe towards Z = -0.25, at 0.5ips until input 3 is triggered
   PAUSE "Current Z position is: " + %(3)

Try these codes out (of course you'll need to adjust for your stock size, z-pullup, etc) - I've never used autoleveler, but if there's a way we can make things easier to get it the input it needs to do its work, we can set that up. I'll take a look at the software today if I can.
Re: Machining PCBs With Handibot
July 24, 2018 09:01PM
I looked into autoleveller. I think all it does is create a 3/8 inch grid of touch points. Then I think it just uses bilinear interpolation to figure out each point.
Re: Machining PCBs With Handibot
August 14, 2018 01:02PM
Ok. I'm turning back to this, as I'm getting ready to mill my PCB.

Am I correct that Fabmo uses TinyG for G-code interpretatio?. If so, which version? It would seem that I may need version 435.10 or higher.

From the documentation, it appears TinyG supports a cmd called G38.2, which is tied to the Z Min Switch in TinyG. See [github.com]

Is the probe that comes standard on the Handibot tied to the same Z Min Switch? Is there a way I can associate the digital input of the probe with the G31 or G38.2 command? Is that something that is adjustable in the tool profiles? Incidentally, what do all of the variables mean in those configurations?

With respect to the SBP solution posted above. Is there a way to get the results of the probe through an API of the handibot? It would be nice to develop an App to do this. Drop a g-code/sbp file into the app. And let it do the probing. But I don't know how to get results from g-code probing.

Update: I now realize what the variables mean in the tool configurations. See,e.g., [github.com]. What if I modified the digital input the corresponds to the standard probe in the g2.json file to be 4 or maybe 5. Would that work?

Update2: Is there a way I can get raw serial/usb access to the G2 engine on the Handibot? For example, what does the RJ-45 debug port do? For what I need to do, that would probably just be easiest. Then I could just use ChiliPeppr to do everything for my PCB project



Edited 6 time(s). Last edit at 08/14/2018 03:02PM by Daniel Block.
Re: Machining PCBs With Handibot
August 15, 2018 08:46AM
You probably don't want to use the G38.2 g-code for this, just because of the way things are managed internally in fabmo. The motion system uses G2, which is the next generation of tinyg, which is maintained here: [github.com] We use the tip of the dtmax-release branch currently on handibots.

You absolutely can get the result of the probing operations in opensbp through the API, and you could make a pretty smart app for this. I will get that activity started here, but if you want to play with it in the mean time, the way you'd access the data would be through persistent variables (set the values you want in your sbp program, and then retrieve the values by calling fabmo.getConfig and pulling it out of config.opensbp.variables) - I know this is a little obtuse - but I will work to create an example and post it here.
Re: Machining PCBs With Handibot
August 15, 2018 10:23AM
Ok. That makes sense.

One other question. If I unplugged the USB from the edison, would that give me raw access to the TinyG2 motion controller?

In other words, in the mean time, could I use the Handibot with Chilipeppr if I directly plugged into the USB?
Re: Machining PCBs With Handibot
August 15, 2018 10:32PM
You wouldn't happen to have a G2 setup script that configures all of the sensors, and limits for the handibot?

I've been messing around tonight with using Chillipeppr to connect directly to the G2 controller, as a temporary solution. It works, but the configuration parameters on the Github repository under g2.json seem to be relatively minimal as to what you really need. For example, homing doesn't work because none of those paramaters are in the g2.json file. I figured I'd ask because you might have something for testing purposes.
Re: Machining PCBs With Handibot
September 30, 2018 05:22PM
My daughter managed to machine her own PCBs with the Handibot without any autoprobing/leveling. We did first use a bit to create a level surface, and then placed the copper board in the in-set piece so it would be as level as possible.

She even created a double-sided PCB and it worked great. Lining up both sides required a bit of math and calibration, but that was the harder part -- didn't seem to need the any type of auto-leveling. I'm sure it depends on the complexity of what you are trying to create. In any case, might just want to try out a simple approach before working through all the auto-probe/leveling work.

Pic attached of PCB. She also used some copper "inserts" so that the drilled-thru holes would be correctly copper lined and conductive.
Attachments:
open | download - pcb.jpg (519.3 KB)
Re: Machining PCBs With Handibot
October 01, 2018 11:47AM
Nice work!

I did some tests a while back on pcb milling where I cut thinner and thinner traces until the copper started to peel off the substrate. It definitely helped to have shallower cuts when going for the really thin traces--and shallower cuts mean a perfectly level board.

But for the majority of board work it is probably true that you can cut a little deep just to be sure you remove the copper from all of the targeted areas.

Brian
Re: Machining PCBs With Handibot
November 18, 2018 06:47AM
Hello.... I think what you need to do is attach the clip to the bit as you normally would. Then run an alligator clip from the metal piece to the PCB board.I'm just not sure how that would interact with the gcode generated from autolevel.

complete pcb



Edited 1 time(s). Last edit at 11/28/2018 05:31PM by DaveRodda.
Re: Machining PCBs With Handibot
November 20, 2018 10:51AM
Yes that would work for taking leveling measurements on the PCB.
Sorry, only registered users may post in this forum.