Success!! milling PCB... First PCB is and ARDUINO!!

wlanfox
Posts: 74
Joined: Sat Oct 20, 2012 10:49 am

Success!! milling PCB... First PCB is and ARDUINO!!

Post by wlanfox » Mon Dec 10, 2012 2:41 am

Hello everyone, hope people will find this information useful...

One of the main reasons I got the ShapeOko was to mill my own PCB... I have been tuning and adjusting to get the bets results. See my build log for some of the modifications I have been working on http://www.shapeoko.com/forum/viewtopic.php?f=5&t=1037

So what did I accomplished so far...

Image
Image

How did this happen...



Lessons Learned:

1) if using V-shape bits your height surface is one of the most important parts, if the working surface or your machine height changes as is cutting a way, the V-shape bits cut width will vary resulting on TOO thin, broken traces, too wide, or even not deep enough to cut trough the copper layer.
2) Accuracy micro stepping is not always the bets solution, look at the many information on the subject like http://www.micromo.com/microstepping-my ... ities.aspx, do your own measurements come up with the best solution for you and your machine.
3) If 0.2mm (approx 0.008") clearance is not hard requirement, consider and endmill instead of V-shape bit (engraver bit). I was able to get a 0.5mm (approx 0.020") endmill which solves all the issues with changes in height.

Things that can be improved:

1) Create or get a vacuum surface this will help keep the PCB height even while working on it.
2) Better steppers, controllers, and control (maybe go with ball screws instead of belts)

On the micro-stepping part I am interested to see what others have been using for their settings, here are some of my data on my machine... I am using single stepper drivers TB6560 type (this is not the 4-axis controller or nothing like that, they do have the good fast optos) the steppers motors are the ones form Sparkfun Electronics 400/rev (0.9 degree per step).

Using a digital caliper I run trough a number of test doing segment hop 3.5,7,10.5 (basically 3.5 hops), also run same test but every movement starting from 0, 0-3.5, 0-7, 0-10.5, etc. also run the same measurements with 2.6. interestingly enough the average precision was best at 1/2 micro-stepping and got worse at 1, 1/8 and 1/16. This was at 0.08mm average. some numbers....

Image

The controller I am using:

Image

Really really hope to hear form other on the micro-stepping, I want to get the most I can out of the machine :)
Last edited by wlanfox on Fri Dec 28, 2012 12:06 am, edited 2 times in total.

cvoinescu
Posts: 4442
Joined: Thu Jul 19, 2012 6:50 pm
Location: Camberley, UK
Contact:

Re: Success!! milling PCB... First PCB is and ARDUINO!!

Post by cvoinescu » Mon Dec 10, 2012 12:25 pm

That PCB looks very good! Thank you very much for sharing the tips with us.

A vacuum table would be, indeed, very handy. I was planning to improve the accuracy by making a quick measuring pass with the spindle off, using the V-shape engraving bit as a probe against the surface of the PCB at several points. Then, a program (Python, because it's easy) would use the results and process the PCB milling G-code to adjust the Z movement to compensate. Maybe after I finish rewiring the machine (finally getting rid of the twisted-wire-insulated-with-ordinary-adhesive-tape prototyping method).
Proud owner of ShapeOko #709, eShapeOko #0, and of store.amberspyglass.co.uk

edwardrford
Posts: 1250
Joined: Mon Apr 09, 2012 5:40 pm
Location: Dixon, IL
Contact:

Re: Success!! milling PCB... First PCB is and ARDUINO!!

Post by edwardrford » Mon Dec 10, 2012 1:59 pm

This is unbelievable to me. It's awesome. It's amazing. it's super cool. I could go on all day!

My one suggestion for the PCB-z-heigh-variance-issue: use a piece of MDF large enough to put a sheet of copper on, and essentially face mill the entire piece with your machine. Doing so will true the surface of that piece to your machine's z-axis height.

Once that's done you'll have a piece of perfectly flat material to set your blank PCB boards on.

The only reason that wouldn't work is if the PCB boards themselves vary in thickness, but I doubt that to be the case given the nature of their intended end use.

Also, I saw Kosme wrote a controller that will indeed compensate for the fluctuation in z-axis height. I believe it uses the PCB as a touch sensor and constantly re-zeros the height as the job runs. This is much the same as how a plasma machine utilizes what's known as a 'floating z-axis'.

Regardless of my suggestions, this is an awesome project. I'm going to dive into your micro-stepping data and see if I can run a similar setup to share my own results. I have several different controllers with several different chips, so we may see some variation across brands as well.

Great work!
-Edward
Shapeoko 1 #0 - a couple of upgrades.
Shapeoko 2 #0 - a couple of upgrades.
Shapeoko 3 #2 - Stock

wlanfox
Posts: 74
Joined: Sat Oct 20, 2012 10:49 am

Re: Success!! milling PCB... First PCB is and ARDUINO!!

Post by wlanfox » Tue Dec 11, 2012 6:51 pm

For the folks who might go trough the measurements. The way I measured was to open the caliper rest it on a flat surface (block of HDPE) with (1) from image below (the flat side on the head) against the side of the Y-axis Makerslide and the X-axis pushing against the depth measuring rod (7). This way I am not making reading mistakes by manually measuring a line and making minor visual mistakes as to where it starts or ends specially at 0.0Xmm. Even these digital calipers have a +/- 0.02mm tolerance. Nice getting close to the tolerance of a digital caliper, how cool is that ;-)

Image

levlandau2
Posts: 187
Joined: Tue Apr 17, 2012 1:52 am
Location: Minneapolis, MN, USA

Re: Success!! milling PCB... First PCB is and ARDUINO!!

Post by levlandau2 » Tue Dec 11, 2012 10:32 pm

Great work wlanfox, this is the most complete PCB milled with a ShapeOko I have seen on the forum. Some questions for you. Also great work characterizing the variation due to micro-stepping, this is the kind of analyses which will improve ShapeOko.

1) Isn't the arduino PCB dual-sided? The arduino kit from Sparkfun looks like it has quite a complex PCB.. which version did you use?

2) What software flow did you use? PCB-Gcode? Eagle? I have had good experience with using DipTrace and exporting the PCB shapes as DXF, then importing with Cambam and milling the regular way.

3) Did you have to modify the PCB layout? I have tried to mill several PCB, but they typically require 0.2 - 0.3mm spacings, so it has been challenging. One work-around would be to modify the layout so there is more space between traces, but I have not found an easy way to do this without having to redesign the entire PCB....? Ideally we would be able to mill the generic PCB designs, so that we don't have to spend the time (and potentially screw things up), when modifying the PCB for CNC milling.


My Experience So Far:
So I was trying to mill a PCB with 0.2 - 0.3mm spacing. At first I tried a 0.2mm diameter endmill, but that broke right away. It seems these small endmills are ok for drilling but not for horizontal cutting. After I realized that the tiny endmill won't work, I tried a 30 degree V-cutter bit, but that also produced poor results (either overmilling the trace or not milling deep enough). The conclusion I came to was that the thin (and long) endmills are too fragile, while the v-cutters need precise (more than just eyeballing) measurement of where the PCB surface is with respect to the z-axis.

On the other hand, if the PCB is very simple with wide (>0.5mm) traces and spacings, the endmill solution and v-cutter become a lot easier to use. However, it seems most PCB designs are optimized for minimum spacing and trace width....

wlanfox
Posts: 74
Joined: Sat Oct 20, 2012 10:49 am

Re: Success!! milling PCB... First PCB is and ARDUINO!!

Post by wlanfox » Wed Dec 12, 2012 2:20 am

levlandau2 wrote:Great work wlanfox, this is the most complete PCB milled with a ShapeOko I have seen on the forum. Some questions for you. Also great work characterizing the variation due to micro-stepping, this is the kind of analyses which will improve ShapeOko.

1) Isn't the arduino PCB dual-sided? The arduino kit from Sparkfun looks like it has quite a complex PCB.. which version did you use?

2) What software flow did you use? PCB-Gcode? Eagle? I have had good experience with using DipTrace and exporting the PCB shapes as DXF, then importing with Cambam and milling the regular way.

3) Did you have to modify the PCB layout? I have tried to mill several PCB, but they typically require 0.2 - 0.3mm spacings, so it has been challenging. One work-around would be to modify the layout so there is more space between traces, but I have not found an easy way to do this without having to redesign the entire PCB....? Ideally we would be able to mill the generic PCB designs, so that we don't have to spend the time (and potentially screw things up), when modifying the PCB for CNC milling.


My Experience So Far:
So I was trying to mill a PCB with 0.2 - 0.3mm spacing. At first I tried a 0.2mm diameter endmill, but that broke right away. It seems these small endmills are ok for drilling but not for horizontal cutting. After I realized that the tiny endmill won't work, I tried a 30 degree V-cutter bit, but that also produced poor results (either overmilling the trace or not milling deep enough). The conclusion I came to was that the thin (and long) endmills are too fragile, while the v-cutters need precise (more than just eyeballing) measurement of where the PCB surface is with respect to the z-axis.

On the other hand, if the PCB is very simple with wide (>0.5mm) traces and spacings, the endmill solution and v-cutter become a lot easier to use. However, it seems most PCB designs are optimized for minimum spacing and trace width....
Thanks for your comments, So let me try and answer your questions in order...

1) Yes most Arduino boards are double sided, I am actually learning on how to correctly align the boards when doing double sided bards. Also you could do multi-layer boards too ;-) I was chatting with someone who worked in the PCB industry on the 70s/80s and he mention this was a technique back then... sandwich the boards to make 2+ layer designs. This board you see is the standard 1.5mm thick but you can get PCB boards down to 0.5mm or less. In theory (will soon put it to practice) one can mill multiple single layers boards or one double layer and one single layer to make 3 layers design, even better you could have blind vias on 4+ layers and still have a close to 1.5mm thickness.

Ok back to topic, I did my board from scratch schematic capture, PCB designs (it was a pain to route all those signals in one layer, specially since auto routers don't like to work in less then two layers :-(), PCB Gerber, and finally to gcode. The schematic is based on the V3 Arduion at least for the headers pin-out, Things I removed since I didn't have the room or require SMD parts. 3.3v regulator, USB interface (using the FTDI cable which has the USB to TTL and also provides power https://www.sparkfun.com/products/9718), Voltage source auto-select (used a jumper instead).

Is more closer to an Arduino Pro (http://arduino.cc/en/Guide/ArduinoPro) then a regular Arduino

Now I didn't require these extra features (in retrospect I could also have done without the programming header, all those pins are also present in the headers) because my goal was to have the machine create the controller for itself, not only is the machine making better mechanical parts for itself but also the electronics :)...

2) The tools I used are kiCAD (want to keep it all open-source) this will do schematic capture, PCB layout, Gerber output and drill file and it also has a nice 3D view feature so you can see how your board might look. From here I used pcb2gcode to generate the gcode.

Note: For the drill part, grbl doesn't support G81 gcodes, I had to manually change this to gcode grbl does understand, not hard just tedious, one can probably write a script to do it. The G81 codes basically say for every X,Y coordinate plunge at a specified feed rate and retract before moving to the next X,Y coordinate.

so basically change somethign that look like this:
G81 R0.07874 Z-0.06299 F7.87402
X3.06148 Y0.86402

to this:
G04 P0 ( dwell for no time -- G64 should not smooth over this point )
X3.06148 Y0.86402
G01 Z-0.06299 F7.87402 ( plunge. )
G00 Z0.07874 ( Retract )

for every X,Y coordinate.

3) yes most PCB use 8mil (around 0.2mm) spacing and trace width. Yes I designed my own PCB ;)

I also found endmils less the 0.5 mm to be hard to work with, one must be very delicate and maybe drive the machine at lowers speeds then 100mm/min. Even the 0.1mm v-shape bits would brake easily and often. Probably the bets bet is still v-shape bits but say 10* instead of the regular 30* or 45*, this way the variation in height will not change the cut width too much. FYI all of my issues so far has been the table and material not the Y or X travel of the machine. Edward suggested a good Idea of getting a thick piece of MDF and milling out the surface this way this milled out surface and your machine space will be more accurate.

My next project is making this into a surface mount board using the TQFP package... yes the spacing between the pins will be an issue I think they are 0.2mm :(, then make a multi-layer board.... fun fun.

a old pic...

Image
Last edited by wlanfox on Wed Dec 12, 2012 3:15 am, edited 1 time in total.

wlanfox
Posts: 74
Joined: Sat Oct 20, 2012 10:49 am

Re: Success!! milling PCB... First PCB is and ARDUINO!!

Post by wlanfox » Wed Dec 12, 2012 2:35 am

Here is the KiCAD Project and gcode...

KiCAD http://www.kicad-pcb.org/display/KICAD/ ... ware+Suite
Attachments
ArduinoBasic-Through-hole.tar.gz
(333.92 KiB) Downloaded 558 times

LTMNO
Posts: 172
Joined: Sat Mar 09, 2013 2:56 am

Re: Success!! milling PCB... First PCB is and ARDUINO!!

Post by LTMNO » Mon Mar 11, 2013 8:06 pm

wlanfox wrote:Hello everyone, hope people will find this information useful...

Really really hope to hear form other on the micro-stepping, I want to get the most I can out of the machine :)
wlanfox, I wanted to comment on your table top... could you share information regarding that... it is exactly what i want to do with my future shapeoko build.

Thanks in advance,

Pino.
ShapeOko #1508, TinyG Controller, Dual Y, ACME Z-Axis, MeanWell(S-350-24v), NEMA 23's, 1m Squared t-slot table, OpenRail and the Original Z Makerslide and all Motor Plates...

wlanfox
Posts: 74
Joined: Sat Oct 20, 2012 10:49 am

Re: Success!! milling PCB... First PCB is and ARDUINO!!

Post by wlanfox » Tue Mar 12, 2013 5:00 pm

LTMNO wrote: wlanfox, I wanted to comment on your table top... could you share information regarding that... it is exactly what i want to do with my future shapeoko build.

Thanks in advance,

Pino.
Sure, there is another thread regarding the modifications and information here: http://www.shapeoko.com/forum/viewtopic.php?f=5&t=1037

LTMNO
Posts: 172
Joined: Sat Mar 09, 2013 2:56 am

Re: Success!! milling PCB... First PCB is and ARDUINO!!

Post by LTMNO » Wed Mar 13, 2013 2:05 am

thanks!
ShapeOko #1508, TinyG Controller, Dual Y, ACME Z-Axis, MeanWell(S-350-24v), NEMA 23's, 1m Squared t-slot table, OpenRail and the Original Z Makerslide and all Motor Plates...

Post Reply