1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title> pcb-rnd - license </title>
<meta http-equiv="Content-Type" content="text/html;charset=us-ascii">
</head>
<body>
<H1> pick and place - origin </H1>
<h2> A. simplest case: rectangular board, implicit outline, implicit P&P origin </h2>
<p>
Assume a <a href="orig_impl.lht">board</a> of 775*725 mils needs to be
created. The P&P fab says coord 0;0 is the lower left corner. The board
fab says they need the centerline of tool-path on the outline layer for
milling.
<p>
By far the simplest way to handle this board is to rely on builtin defaults:
<ul>
<li> board size (width and height) specifies the outline of a rectangular board
<li> if the outline layer exists but is empty, an implicit rectangular outline is drawn, matching board sizes
<li> implicit P&P origin is the lower left corner
</ul>
<p>
Setting it up:
<ul>
<li> 1. start pcb-rnd with no board - this gets the default board template
<li> 2. change board width & height (gtk: file/preferences/user PoV/sizes)
<li> 3. do the layout
<li> 4. when exporting Gerber, enable the 'all layers' option to get the implicit outline layer
<li> 5. export the xy
</ul>
<p>
<table border="1" cellspacing="0">
<tr><th>Pros<th>Cons
<tr>
<td><ul>
<li> easy to set up
<li> no need to draw the outline
</ul>
<td><ul>
<li> limited drawing area - unsuitable for editing small boards
<li> supports rectangular shapes only
</ul>
</table>
<h2> B. rectangular board, explicit outline, explicit P&P origin </h2>
<p>
Assume another <a href="orig_sq.lht">board</a> of 775*725 mils needs to
be created. The P&P fab says coord 0;0 is the lower left corner. The
board fab says they need the centerline of tool-path on the outline layer
for milling.
<p>
This time the virtual board (canvas, drawing area) will be larger and the
board outline of a 775*725 will be manually drawn. Since pcb-rnd won't make
a guess of where the lower-left corner is, an explicit origin mark
needs to be added for the pick&place process.
Setting it up, assuming the GTK HID:
<ul>
<li> 1. start pcb-rnd with no board - this gets the default board template
<li> 2. draw the 775*725 mils box on the outline layer anywhere in the drawing area
<li> 3. do the layout within this box
<li> 4. draw a short line on a random layer - this will be the P&P mark
<li> 5. drag&drop move the endpoint of the unselected mark line to its other endpoint - this will result in a 0 long line, which looks like a filled circle; with 's' increase the size so that it's easily visible
<li> 6. select the mark, drag&drop move it to the lower left corner of the outline box
<li> 7. the mark still selected, press ctrl+e and click on the "add attribute" button in the property editor
<li> 8. type in "pnp-origin" in the "Attribute key" and "yes" in the "Attribute value" field; click ok and close the property editor
<li> 9. export the Gerber and xy files
</ul>
<p>
There is a <a href="https://archive.org/details/pcb-rnd-xy-origin-sq">video tutorial</a> available on steps 4..8.
<p>
Note 1: the mark is not explicitly visible in the XY file. It is not explicitly
passed to the P&P fab. Instead, all subcircuit coordinates are calculated considering
the mark's center as 0;0.
<p>
Note 2: still, the mark is not hidden or suppressed by pcb-rnd from any
of the output. It must be a line, but it can be on any of the layers.
Thus the mark potentially would show up on the board. There are multiple
options to make the mark disappear:
<ul>
<li> make the mark diameter smaller that the router mill bit diameter and place
the mark on a copper layer; the board fab will have the copper dot, but it
will be milled away.
<li> same trick should work with silk as well
<li> or even on the solder mask layer where this object would be a small cutout over void
<li> make a new (copper) layer, place the mark there and don't send this layer's Gerber export
(later on pcb-rnd will support documentation layers which are more dedicated for this sort of use)
</ul>
<p>
<table border="1" cellspacing="0">
<tr><th>Pros<th>Cons
<tr>
<td><ul>
<li> drawing area (canvas) is bigger than the board: easier to edit
<li> can handle slots, cut-outs on the outline layer
<li> if the pick and place fab requires a slight offset on the placement, it is easy to move the mark
</ul>
<td><ul>
<li> requires more steps to set up
</ul>
</table>
<h2> C. round board, explicit outline, explicit P&P origin </h2>
<p>
Assume a third <a href="orig_round.lht">board</a> shaped as a 700 mil
diameter circle. The P&P fab says coord 0;0 is the lower left corner of
the bounding box of the circle. The board fab says they need the
centerline of tool-path on the outline layer for milling.
<p>
The process is the same as in example B. The only extra consideration
is how to find the coords of the P&P origin mark; for this the P&P fab
house needs to be consulted.
<p>
There is a <a href="https://archive.org/details/pcb-rnd-xy-origin-round">video tutorial</a> available on using temporary
lines to aid placing the mark for a round lower-left corner.
<h2> D. different P&P origin for different fabs</h2>
<p>
If the same board is populated by two different fabs who want different
origins, as long as they are also using different file formats, it is possible
to use two marks. The mechanism for finding the relevant mark is this:
<ul>
<li> look for a line that has attribute pnp-origin-<i>FORMAT</i> where <i>FORMAT</i> is the name of the format, e.g. gxyrs or Macrofab
<li> if that's not found, look for a line that has attribute pnp-origin
<li> if that's not found, use the bottom-left corner of the drawing area
</ul>
<p>
This means the origin can be a different mark per format and/or a fallback
mark can be also added.
<h2> E. mark shapes</h2>
<p>
In the above examples we used a zero-length line for the mark, which looked
like a filled circle. The code will find the first line with the right attribute
and use the center point of that line. For a zero-length line the center point
is the same as the two endpoints or the center of the filled circle it produces
on the screen.
<p>
It is possible to use non-zero-length lines for the mark. For example two lines
arranged in a + or x shape, either or both lines having the pnp-origin
attribute. If the mark is symmetrical, the crossing point happens to be the
middle of the line, which is what the code is after.
<p>
Of course it's also possible to use a single, non-zer-length line as mark,
but then it's harder to see the middle point as an user. It may still work
in some simple cases, e.g. a 45 degree short line segment symmetrically placed
on the corner of a 90 degree outline corner.
</body>
</html>
|