--
You received this message because you are subscribed to the Google Groups "FirePick" group.
To unsubscribe from this group and stop receiving emails from it, send an email to firepick+unsubscribe@googlegroups.com.
To post to this group, send email to fire...@googlegroups.com.
Visit this group at https://groups.google.com/group/firepick.
For more options, visit https://groups.google.com/d/optout.
To unsubscribe from this group and stop receiving emails from it, send an email to firepick+u...@googlegroups.com.
Douglas
To unsubscribe from this group and stop receiving emails from it, send an email to firepick+u...@googlegroups.com.
To post to this group, send email to fire...@googlegroups.com.
Visit this group at https://groups.google.com/group/firepick.
For more options, visit https://groups.google.com/d/optout.
--Rich
--
You received this message because you are subscribed to the Google Groups "FirePick" group.
To unsubscribe from this group and stop receiving emails from it, send an email to firepick+u...@googlegroups.com.
To post to this group, send email to fire...@googlegroups.com.
Visit this group at https://groups.google.com/group/firepick.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "FirePick" group.
To unsubscribe from this group and stop receiving emails from it, send an email to firepick+u...@googlegroups.com.
To post to this group, send email to fire...@googlegroups.com.
Visit this group at https://groups.google.com/group/firepick.
For more options, visit https://groups.google.com/d/optout.
Douglas
--Rich
To unsubscribe from this group and stop receiving emails from it, send an email to firepick+unsubscribe@googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to firepick+u...@googlegroups.com.
E.g. jspcb --gtp foo.GTP -o svg
You received this message because you are subscribed to a topic in the Google Groups "FirePick" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/firepick/vL33HqT2XHk/unsubscribe.
To unsubscribe from this group and all its topics, send an email to firepick+u...@googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to firepick+unsubscribe@googlegroups.com.
To post to this group, send email to fire...@googlegroups.com.
Visit this group at https://groups.google.com/group/firepick.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to a topic in the Google Groups "FirePick" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/firepick/vL33HqT2XHk/unsubscribe.
To unsubscribe from this group and all its topics, send an email to firepick+unsubscribe@googlegroups.com.
Hi all,Here's some info on this subject based on what I've learned while working on OpenPnP:The data you need to pick and place a board and paste a board is completely different. No one tries to relate them, and there is no good reason to. For paste you need the paste layer(s) Gerbers as these define the exact shapes that were marked for paste. For pick and place you need, at a minimum, centroids (X, Y centers), side, rotation and part identifiers. Many pick and place shops just accept this as a CSV with the columns identified very simply.
Centroids are not used for paste, and Gerbers are not used for pick and place.In OpenPnP, the board data file contains information able paste pads and pick and place centroid locations. To use OpenPnP for either of these tasks you need to get that data in. There's several ways to do it and they do not have to match for a given board. You can import the pick and place data as CSV, Eagle export, KiCad export and others. You can import the paste data from a Gerber. Since these are separate files, you typically have to import more than one file to get both the pick and place and paste data.The benefit of Douglas' direct Eagle .brd importer is that since the .brd contains all of the data already we can fill out the entire data structure without requiring multiple files. This just saves you a step or two if you happen to have an Eagle file. An Eagle file is not required - it's just one of the several ways to import the data.
As for Gerbers and standards, that's the great thing about standards... there are so many of them :) Yes, there is a standard. Very few of the vendors that output Gerbers follow it to the letter. Your parser has to be hardened based on real world data. The OpenPnP one has had this done. I collected sample Gerbers from many different packages, users and versions of software and worked on the parser until it could import them all. There are still a few mnemonics I don't handle, but all the files parse without error and I generate shapes for something like 98% of the mnemonics encountered.
There was also a question about fiducials. Typically they are included in the centroid (pick and place) data and are given an easy to identify name, like FIDn. It's up to the PnP operator to mark them as fids and define their shape. There is documentation on how this is done in OpenPnP at https://github.com/openpnp/openpnp/wiki/FiducialsFinally, a note on paste patterns: During the design of the solder paste code in OpenPnP, we discussed doing paste based on patterns or known packages. After polling a bunch of EEs we determined this was a bad idea. Many engineers use paste in different ways based on company guidelines, tribal knowledge or personal preference. One EE might want their paste 10% smaller than the pads and another might want it 10% bigger. Sometimes you want paste for a ground pad, sometimes you don't. The Gerber paste layer already contains all this information, so it's the correct way to go for generating the paste data.
The main reason to relate the two would be for partial population. You many not want to paste everything if you are not populating all of the components. That's why the ECM machine I use uses a library of patterns for dispensing paste. Then all you need is the centroid file, and it can skip pasting for some parts if they will not be populated. Once you get the library set up for the parts you use, it is a piece of cake to set up for a new job, and no gerber import is required.
Not necessarily the best way to go for dispensing however, unless you can accurately cover the pad like a stencil would. You may actually want to place dots in a different location than the center of the pad for instance. Also, how are large pads handled? Multiple dots may be better than one big one. The library method would allow all of these to be dealt with easily, but then you have to create the pattern library, but to me this is not much different than creating a library of parts for layout.
Jason
--
You received this message because you are subscribed to the Google Groups "FirePick" group.
To unsubscribe from this group and stop receiving emails from it, send an email to firepick+u...@googlegroups.com.
To post to this group, send email to fire...@googlegroups.com.
Visit this group at https://groups.google.com/group/firepick.
For more options, visit https://groups.google.com/d/optout.
<gtp-ruler-svg.png>
--
You received this message because you are subscribed to the Google Groups "FirePick" group.
To unsubscribe from this group and stop receiving emails from it, send an email to firepick+unsubscribe@googlegroups.com.
To post to this group, send email to fire...@googlegroups.com.
Visit this group at https://groups.google.com/group/firepick.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "FirePick" group.
To unsubscribe from this group and stop receiving emails from it, send an email to firepick+unsubscribe@googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to firepick+u...@googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to firepick+u...@googlegroups.com.
To post to this group, send email to fire...@googlegroups.com.
Visit this group at https://groups.google.com/group/firepick.
For more options, visit https://groups.google.com/d/optout.
--Rich
Altium suggests since they have Absolute and relative grids it is not a limitation on their part but Eagle limitation.When Altium imports an Eagle file they can not bring it into zero as that will potentially leave areas not accessible.So they import to absolute 1,1 to avoid the problem. I usually build my boards at 1,1 with the relative set to 1,1.This places the board at 0,0 for everything.Altium has suggested that maybe when they import they should do just that.Set relative origin to 1,1 and make that the Eagle 0,0 for import.Then the databases would match. Questions?
On Mon, Oct 17, 2016 at 5:40 PM, Karl <ka...@firepick.org> wrote:
Yes (1",1") and Eagle is (0,0).It may, as Michael suggests, be an Altium limitation.
On Monday, October 17, 2016 at 11:17:55 AM UTC-7, Rich Obermeyer wrote:
Karl,Good work.When you say (1,1) are you saying X=1 inch and Y=1 inch and Eagle is 0,0?
On Mon, Oct 17, 2016 at 9:04 AM, Karl <ka...@firepick.org> wrote:
Rich, the Eagle Dimension layer was what I used for the original ruler, which was (0,0) origin. The Altium code arbitrarily moved that origin to (1,1), which took me by surprise. Now that I know how Altium works, I believe that I can write specific code for handling the GKO Gerber, which works much like the Eagle layer 20 and allows for non-rectangular board outlines. I do think the Altium repositioning of the origin is a bit of a bug since it violates the Eagle semantics. I can work around it since the generated Gerbers are self-consistent. Perhaps the bug is in the Altium Eagle importer?Michael, thanks for the polygonal pad explanation. I will summon the energy to slog through that nasty mess that is Gerber macros, although I cannot promise a quick turnaround. The semantics for solder paste syringe dispensing and macro regions precipitate a whole slew of issues to support area paste vs. point-blob paste. Although we will probably aspire to solder paste art in future versions, my own humble boards are much more like the Adafruit ruler in their stark rectangular-pad one-side-smd simplicity. For your pads, I am thinking that we could rasterize the areas and paste parallel lines onto your pad. As it is, we will probably need to paste a line anyhow for long pads, so it is not too much of a stretch. Would the rasterization approach suit your polypad?Douglas, seems like this thorny gerber bushwacking has caused many of us grief. :oSince we are signing up for exceptions galore, I will propose a new solution for jspcb, which is to put all that exceptional configuration into a single JSON file that can be read in to specify arbitrary configuration with a single program argument. For example, such a file could support explicit board outlines with bounds:[line,line,line,line]. The advantage of the data-driven approach is that code would not need to be changed for supporting different gerber conventions. At least, that is a hope...Jason, if OpenPnP has a canonical file format that it prefers for paste or place, jspcb could certainly generate that if you like. Also, if the generated SVGs would be helpful in any way to OpenPnP, let me know...
--
You received this message because you are subscribed to the Google Groups "FirePick" group.
To unsubscribe from this group and stop receiving emails from it, send an email to firepick+u...@googlegroups.com.
To post to this group, send email to fire...@googlegroups.com.
Visit this group at https://groups.google.com/group/firepick.
For more options, visit https://groups.google.com/d/optout.
--Rich
--
You received this message because you are subscribed to the Google Groups "FirePick" group.
To unsubscribe from this group and stop receiving emails from it, send an email to firepick+u...@googlegroups.com.
To post to this group, send email to fire...@googlegroups.com.
Visit this group at https://groups.google.com/group/firepick.
For more options, visit https://groups.google.com/d/optout.
--Rich
To unsubscribe from this group and stop receiving emails from it, send an email to firepick+unsubscribe@googlegroups.com.
To post to this group, send email to fire...@googlegroups.com.
Visit this group at https://groups.google.com/group/firepick.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "FirePick" group.
To unsubscribe from this group and stop receiving emails from it, send an email to firepick+u...@googlegroups.com.
To post to this group, send email to fire...@googlegroups.com.
Visit this group at https://groups.google.com/group/firepick.
For more options, visit https://groups.google.com/d/optout.
<ruler.png>
Impressive!Thanks for thinking and supporting the rest of us not using Eagle.
Not quite ready to release a new version of jspcb, but I'm feeling more comfortable with the Rich's Gerber recommendation.--Currently, jspcb can read in multiple Gerber files and produce CSV, SVG and PNG files.The PNG I had posted previously was created from an online SVG to PNG converter.Now jspcb does that PNG conversion itself natively with the --png command line parameter. ConvertingGerber arcs to SVG arcs was a bit of a mindbendy thingy, but I finally got it to work.Attached is a PNG created from the Rich's Gerber files. I'll be adding a JSON configuration parameterthat will let you control the image size and the colors for various elements (e.g., SMD pads vs. silkscreen).This is shaping up to be a very interesting way to create a PCB image template on the fly for OpenCV...
You received this message because you are subscribed to the Google Groups "FirePick" group.
To unsubscribe from this group and stop receiving emails from it, send an email to firepick+unsubscribe@googlegroups.com.
To post to this group, send email to fire...@googlegroups.com.
Visit this group at https://groups.google.com/group/firepick.
For more options, visit https://groups.google.com/d/optout.
<ruler.png>
--
You received this message because you are subscribed to a topic in the Google Groups "FirePick" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/firepick/vL33HqT2XHk/unsubscribe.
To unsubscribe from this group and all its topics, send an email to firepick+u...@googlegroups.com.
Karl,The big issue with template matching is rotation, and of course, PCBs can (and will) be rotated to any arbitrary angle. Do you have a plan for handling this? The nice thing about round fiducials is that it doesn't matter how they are rotated.Jason
On Thu, Oct 27, 2016 at 3:09 PM Karl <ka...@firepick.org> wrote:
--
You received this message because you are subscribed to a topic in the Google Groups "FirePick" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/firepick/vL33HqT2XHk/unsubscribe.
To unsubscribe from this group and all its topics, send an email to firepick+unsubscribe@googlegroups.com.
Jason, yes, there are a lot of nice things about circles. :DI plan on mounting PCBs to a sliding table. One of the clamps is always fixed,so that reduces the angular possibilites to four. I'd probably just look for each ofthe four possible templates to determine orientation.For OpenPnp, it makes more sense to stick with the circles because those fiducialswould be required in a large PnP production run anyhow. I don't have that need,since I'm just building boards for fun and have no plans for mass production.The template approach is attractive to me because I typically make small boards andam fighting for every mm of space--fiducials take up space.
On Thursday, October 27, 2016 at 1:24:25 PM UTC-7, Jason von Nieda wrote:
Karl,The big issue with template matching is rotation, and of course, PCBs can (and will) be rotated to any arbitrary angle. Do you have a plan for handling this? The nice thing about round fiducials is that it doesn't matter how they are rotated.Jason
On Thu, Oct 27, 2016 at 3:09 PM Karl <ka...@firepick.org> wrote:
--
You received this message because you are subscribed to a topic in the Google Groups "FirePick" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/firepick/vL33HqT2XHk/unsubscribe.
To unsubscribe from this group and all its topics, send an email to firepick+u...@googlegroups.com.
To post to this group, send email to fire...@googlegroups.com.
Visit this group at https://groups.google.com/group/firepick.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to a topic in the Google Groups "FirePick" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/firepick/vL33HqT2XHk/unsubscribe.
To unsubscribe from this group and all its topics, send an email to firepick+u...@googlegroups.com.
Karl,Fair enough! I was secretly hoping you had come up with an amazing new rotate invariant template match! :)Jason
On Thu, Oct 27, 2016 at 3:37 PM Karl <ka...@firepick.org> wrote:
Jason, yes, there are a lot of nice things about circles. :DI plan on mounting PCBs to a sliding table. One of the clamps is always fixed,so that reduces the angular possibilites to four. I'd probably just look for each ofthe four possible templates to determine orientation.For OpenPnp, it makes more sense to stick with the circles because those fiducialswould be required in a large PnP production run anyhow. I don't have that need,since I'm just building boards for fun and have no plans for mass production.The template approach is attractive to me because I typically make small boards andam fighting for every mm of space--fiducials take up space.
On Thursday, October 27, 2016 at 1:24:25 PM UTC-7, Jason von Nieda wrote:
Karl,The big issue with template matching is rotation, and of course, PCBs can (and will) be rotated to any arbitrary angle. Do you have a plan for handling this? The nice thing about round fiducials is that it doesn't matter how they are rotated.Jason
On Thu, Oct 27, 2016 at 3:09 PM Karl <ka...@firepick.org> wrote:
--
You received this message because you are subscribed to a topic in the Google Groups "FirePick" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/firepick/vL33HqT2XHk/unsubscribe.
To unsubscribe from this group and all its topics, send an email to firepick+unsubscribe@googlegroups.com.
To post to this group, send email to fire...@googlegroups.com.
Visit this group at https://groups.google.com/group/firepick.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to a topic in the Google Groups "FirePick" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/firepick/vL33HqT2XHk/unsubscribe.
To unsubscribe from this group and all its topics, send an email to firepick+unsubscribe@googlegroups.com.
Very nice! Very fast turnaround on a feature request too! :)
You received this message because you are subscribed to the Google Groups "FirePick" group.
To unsubscribe from this group and stop receiving emails from it, send an email to firepick+unsubscribe@googlegroups.com.
Stability is just as important! Great job!
--
You received this message because you are subscribed to the Google Groups "FirePick" group.
To unsubscribe from this group and stop receiving emails from it, send an email to firepick+unsubscribe@googlegroups.com.