This post is like a scratchpad for documenting for myself the process, but could be helpful to you as well. To mill PCBs, I recommend the following:
Only use FR1 blank boards. FR1 is paper infused with fiberglass resin. This is better to mill than FR-4 fiberglass substrate boards. It is better on bits than FR4 and you won’t have tiny specs of glass dust in the air when you cut PCBs. You can get this at Inventables.com or Bantam (formally Othermill)
I had a bunch of issues generating a usable board. My workflow was originally to use EagleCAD to FlatCAM, then pronterface to control my smoothie board. I have since come across Carbide Copper which seems to be MUCH better.
Since my work are isn’t level, I attempted to level it before milling a PCB. That didn’t work for… well.. reasons.
I then decided to autolevel the board. After MUCH research and trials and tribulations, I discovered that the smoothieboard has this feature built in to it’s CNC firmware. You need to probe the PCB to see where the surface is, and it will automatically record the offset in the Z axis and apply it to your G-code so you’ll have nice boards.
- First, place the PCB blank on the workspace using 2-sided scotch tape.
- Move the CNC to the 0,0 position and make sure this is the MACHINE offset (reset the smoothieboard once in this position).
- Build a probe (simply two wires with alligator clips as ends that plug into the Z stop.
- Scuff up the PCB’s surface with a scotch brite
- Use a piece of aluminum tape affixed to the PCB’s surface in a nondescript spot. Allow some of the tape to overhang enough to clip one lead from the probe to it.
- Clip the other lead of the probe on your endmill
- Make sure there’s good conductivity from the metal tape and the surface of the PCB, or else you’ll be buying new bits and might break your machine.
- Knowing the dimensions of your board, and how resolute you wish to measure the surface, issue the following command:
-
G31 X0 Y0 A75 B50 I7 J7
This starts probing at X0 Y0, and goes to X75mm probing 7 times along the way (I7). It will then move 1/7th (J 7) in the Y dimension towards Y50mm. It makes a zig zag like this across the entire board until it reaches the endpoint X75 Y50. The number of probe points in each dimension (I and J) need to be odd numbers. An example of its results are shown below.
50.0000| -0.0986 -0.0920 -0.1032 -0.1336 -0.1647 -0.2448 -0.3930
41.6667| -0.0966 -0.0860 -0.0906 -0.1032 -0.1475 -0.1833 -0.1727
33.3333| -0.0582 -0.0476 -0.0463 -0.0774 -0.1184 -0.1667 -0.2335
25.0000| -0.0741 -0.0437 -0.0384 -0.0582 -0.1052 -0.1581 -0.2263
16.6667| -0.0364 -0.0099 0.0013 -0.0278 -0.0681 -0.1237 -0.1912
-8.3333| -0.0172 0.0139 0.0218 0.0053 -0.0337 -0.0886 -0.1661
_0.0000| 0.0040 0.0291 0.0404 0.0139 -0.0086 -0.0655 -0.1389
_________—–+———-+———-+———-+———-+———-+———-+—–
_________0.0000 12.5000 25.0000 37.5000 50.0000 62.5000 75.0000(Thanks for the great spacing wordpress… just ignore the underscores) The numbers represent the offset from Z=0 at each point in the grid.
- At this point simply tell the machine to go to (0,0,0), remove the probe clips and tape (Seriously do NOT forget to do this… again).
- Load the gcode into pronterface, turn on the router on its lowest speed and run the file.
- Cuss a lot when something goes wrong.
- Contemplate creating your own all-in-one solution.
Another tip I saw online (Thanks pda3k!) was to use the Z probe in a single spot (this would be for other things, not PCBs.
New Z probe: T. Once it makes contact, it raises the tool to 19mm. G10 L20 Set Coordinate System
G30 Z9.6
G10 L20 P1 Z9.6 ;G10 L20 Set Coordinate System in P1, he touch plate is 9.6mm thick
G0 Z19 ;it raises the tool to 19mm.
Although OpenCNCPilot looks like a very nice project with autolevelling and camera integration… Maybe I’ll use this to help visualize stuff better. Thought it likely won’t work with the smoothieboard. We’ll see in the future post.