Zum Inhalt springen

PCB CNC: Unterschied zwischen den Versionen

Reox (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
Reox (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
 
(9 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 14: Zeile 14:
Some results are given in the soup of the [http://geilomat.soup.io/ Geilomat]
Some results are given in the soup of the [http://geilomat.soup.io/ Geilomat]


* 0805 SMD resistors work fine, although the solder locations are not visible any more.  
* 0805 SMD resistors work fine, although the solder locations are not visible any more. (you can use options to generate no voronoi patterns)
* It is possible to have one wire between the 2.54mm piched pins.
* It is possible to have one wire between the 2.54mm piched pins.
* Also 1.27mm pitch SMD chips are usually ok.  
* Also 1.27mm pitch SMD chips are usually ok.
* if you are really careful, you can even do HTSSOP (which is pitch 0.65mm) - but this needs proper milling equipment and a very flat surface


== Examples ==
== Examples ==
Zeile 54: Zeile 55:
* Sometimes, flakes of copper short circuit neighboring copper areas. Usually at corners. A knife helps.
* Sometimes, flakes of copper short circuit neighboring copper areas. Usually at corners. A knife helps.
* Dust.
* Dust.
* Loud.
* Capacity between adjacent copper areas.
* Capacity between adjacent copper areas.
* Hotter soldering is required, as there are no thermal pads.
* Hotter soldering is required, as there are no thermal pads.


== Metaboard*.sh ==
Metaboard are some bash shell scripts, that will automatically create cnc-paths in the form of gcode files. The starting point is the eagle .brd file.
Download of the files: [http://kariert.org/files/metaboard3/ Here]


Usage: metaboard3.sh <options> filename
== Workflow Using gEDA pcb and pcb2gcode ==
filename: eagle brd file to process
 
-double: create a double sided gcode
The Workflow using the [https://packages.debian.org/wheezy/geda gEDA] suite and a seperate tool called [https://packages.debian.org/wheezy/pcb2gcode pcb2gcode] is well tested in the Metalab.
-0.8:    use a 0.8mm mill head instead of a 0.6
 
-tight:  only offset by a distance of 0.3 mm
First of all you will create a PCB in a program called pcb. Then you will export gerber files from the pcb and generate ngc files with pcb2gcode. These ngc files can be read by linuxcnc.
-filled: the eagle board file has a filed dimension area instead of lines
 
For a Single Layer PCB you will run Steps 1,2,3,4 and 7 for a dual Layer you will run 1 to 7.


It calls a couple of external programs:
=== 1. Create the PCB ===
* [http://www.cadsoft.de/ Eagle]: to output the gerber files of the top and bottom layer
[[Datei:Pcb layer groups.png|thumb|400px|grouping of layers in pcb]]
* <del>eagle: to call an ulp-program "drillbernhard.ulp" that outputs the drilling and cutting paths.</del>
gEDA's pcb is a complex tool to work with. It might not be as easy to use as other tools in the first place, but can do everything another tool can do.
* [http://www.cadsoft.de/ Eagle]: to output the excellon drill files.
Normaly you will design the PCB as you would do normaly, just remember that you need some extra clearance because of the cutter diameter.  
* <del>[http://www.mit.edu/~vona/Visolate/Visolate-info.html Visolate]: To create the isolation paths. We use an unreleased version, that is scriptable.</del>
* Meanwhile, [http://sourceforge.net/projects/pcb2gcode/ pcb2gcode] was adopted and is used.
* [http://code.google.com/p/grecode/ grecode] To mirror the board for second side. (Grecode was created especially for metaboard.sh by --[[Benutzer:Bkubicek|Bkubicek]] 09:55, 26. Jul. 2010 (CEST))


While these are called, <del>a couple of windows will pop up and hopefully disappear again.</del> only shell output will be produced. you will get some debug images also in the current directory.
There is an extra step you need to do now. You need to group the layerers in a specific way:
* All Bottom Layers go to one group
* All Top Layers go to one group
* Outline is one group


== pcb2metalab ==
=== 2. pcb2metalab.sh ===


is a fork of the metaboard script. while it was stripped down to the very basics, it now only works with gEDA pcb files.
is a fork of the metaboard script. while it was stripped down to the very basics, it now only works with gEDA pcb files.
Zeile 87: Zeile 85:
git clone pcb2metalab from here: https://github.com/reox/pcb2metalab
git clone pcb2metalab from here: https://github.com/reox/pcb2metalab


If you modify the Makefile and run make, it will build all necassary files for you. You can check the output of the gerber files with a tool called gerbv and there are also some png files for debugging.
=== 3. Milling of Bottom Side ===
Now its time to go to the CNC and put in the PCB. Load the backside ngc file. Now you need to touch off the workpiece.
Remember now two things: The coordinates in the pcb2metalab generated files are in inch and the PCB is not super flat!
=== 4. Drilling the Bottom Side ===
The Next step would be to drill. Because the workpiece is already touched-off, it should go smoothly.
=== 5. Switch Sides ===
[[Datei:G10command.jpg|thumb|400px|The math behind the G10 L2 command]]
This step is now crucial for the quality of the dual layer PCB.
linuxcnc gives us a command called G10 L2. This command sets the coordinate system given by offsets of machine home point. If you know now two points in the original coordinate system (= the PCB coordinate system) and write down the coordinates that have these points in machine coordinates, you can effectively calculate the G10 L2 command.
First of all you select two points in gEDA pcb. You probably want to choose two drill holes. Now you need to look up the workspace height (in the picture called <math>A_y</math>). Subtract the y coordinate from the workpiece height, these coordinates will be the original coordinates. You need to do this extra step because a) pcb uses a left-hand coordinate system and b) pcb2gcode calculates the y coordinates based on the workspace bottom line.
Now you enter G10 L2 P1 X0 Y0 R0 into the MDI field in linuxcnc. This will effectivly set the G54 coordinate system to the G53 (machine coordinates). but not the z offset (which is good because then you do not redo this).
Use a tool of your choice to calculate the G10 command and enter it.
=== 6. Mill the Top Side ===
The top side can be milled like the bottom side, but because of the active G10 you do not need to touch of anything!
=== 7. Mill the Outline ===
The outline is also milled like the bottom or top side. No extra step is needed!
== Workflow using eagle and metaboard.sh ==


== Usage ==
The workflow splits into the following points:
The workflow splits into the following points:
* Preperation: create an eagle brd file, copy it
* Preperation: create an eagle brd file, copy it
Zeile 119: Zeile 142:


Removing the boards works best by using a twist motion around the z-axis. A brush should be nearby to clean the grooves.
Removing the boards works best by using a twist motion around the z-axis. A brush should be nearby to clean the grooves.
=== Metaboard*.sh ===
Metaboard are some bash shell scripts, that will automatically create cnc-paths in the form of gcode files. The starting point is the eagle .brd file.
Download of the files: [http://kariert.org/files/metaboard3/ Here]
Usage: metaboard3.sh <options> filename
filename: eagle brd file to process
-double: create a double sided gcode
-0.8:    use a 0.8mm mill head instead of a 0.6
-tight:  only offset by a distance of 0.3 mm
-filled: the eagle board file has a filed dimension area instead of lines
It calls a couple of external programs:
* [http://www.cadsoft.de/ Eagle]: to output the gerber files of the top and bottom layer
* <del>eagle: to call an ulp-program "drillbernhard.ulp" that outputs the drilling and cutting paths.</del>
* [http://www.cadsoft.de/ Eagle]: to output the excellon drill files.
* <del>[http://www.mit.edu/~vona/Visolate/Visolate-info.html Visolate]: To create the isolation paths. We use an unreleased version, that is scriptable.</del>
* Meanwhile, [http://sourceforge.net/projects/pcb2gcode/ pcb2gcode] was adopted and is used.
* [http://code.google.com/p/grecode/ grecode] To mirror the board for second side. (Grecode was created especially for metaboard.sh by --[[Benutzer:Bkubicek|Bkubicek]] 09:55, 26. Jul. 2010 (CEST))
While these are called, <del>a couple of windows will pop up and hopefully disappear again.</del> only shell output will be produced. you will get some debug images also in the current directory.
== Hints ==
== Hints ==


Zeile 152: Zeile 197:


[http://blog.makezine.com/archive/2010/07/voronoi_mapped_pcbs_using_visolate.html Hello, Make Magazine!]
[http://blog.makezine.com/archive/2010/07/voronoi_mapped_pcbs_using_visolate.html Hello, Make Magazine!]
== Further Things and TODO ==
* [http://phk.freebsd.dk/CncPcb/ Z-Height compensation]


[[Kategorie:Howto]]
[[Kategorie:Howto]]
[[Kategorie:Heavy_Machinery]]
[[Kategorie:Heavy_Machinery]]