sparkfunX / Desktop-PickAndPlace-CHMT36VA

Tools and conversion scripts for the CHM-T36VA Desktop Pick and Place from SparkFun
GNU General Public License v3.0
66 stars 32 forks source link

Double Sided Fiducials are not correctly handled #30

Open owendelong opened 5 years ago

owendelong commented 5 years ago

I've got a library part (from SparkFun) for a 40 mil fiducial.

A single footprint provides both top and bottom side fiducial marks.

Unfortunately, the script doesn't handle this footprint correctly. In my case, regardless of whether I mirror it or not, it gets treated as a "Bottom" component.

To make matters worse, since it was placed as a top component, the flipping of the coordinates puts them in the opposite position from what is desired on both sides of the board.

Obviously, as a work around, I can convert it to a single-sided foot print and manually place 6 fiducial marks instead of 3, but Ideally, it would be nice if a simple correction to the script were possible.

Full disclosure, I'm actually using the Berniwa fork, but I believe the behavior is still the same.

I've attached an export of the footprint in question to help in the diagnostic process. Unfortunately, to get GitHub to accept it, I had to append a .txt extension. (I'll open an issue on GitHub for that).

Fiducial Example.lbr.txt

nseidle commented 5 years ago

@berniwa should certainly weigh in but I've got some thoughts (my brain is too burned up from the day to offer solutions!):

image

1) At least at SparkFun we ignore all fiducials in the generation of the CharmHigh file creation. 2) (And you allude to this) Having a 2 layered fiducial is very odd to me. I generally need to fit fiducials into weird spots and having it linked to a fiducial on a different layer would make it impossible to use.

berniwa commented 5 years ago

I'll have to say that I find double sided fiducials also a bit odd and therefore didn't expect them.

We could analyze the fiducials in the ULP to see if they contain top and bottom copper or top and bottom stopmask layers to detect weather they are double sided or not. Unfortunately I don't see any quick fix for that other than splitting the fiducials up in one top and one bottom or adding the fiducials manually.

I will employ a software developer starting from mid August, that will mainly focus on ULP development. He will also be working on the ULP, so we can fix some stuff and finally merge it to this repo (I'm unfortunately really busy).

owendelong commented 5 years ago

OK... Thanks for the quick responses. I'm barely beginning to gain the most basic literacy with ULP and this one is quite extensive. I'd be willing to try and tackle it if someone can point me to the right part of the code to look.

From what you've said, I suspect the right thing is to process double-sided SMT devices flagged as fiducials as an exception and split them in the script to produce two rows in the DPV.

For now, I've created a single-sided Fiducial and it's working, so I guess this isn't urgent.

In my case, I'm not trying to produce particularly dense boards, and having the fiducials aligned in a consistent place provides a convenient way to also distinguish top and bottom sides of the board.