This question is not about KiCad in particular but rather about the pick-and-place workflow in general.
I just made a PCB and had it assembled by JLCPCB. The workflow was that I exported a .pos and a .drl file using KiCad’s Fabrication Outputs functionality and uploaded it to them.
However, the rotation (pin 1 alignment) was mostly wrong and there was a production step where they manually fixed the positions.
I was wondering, is this the normal way? Or is there a problem with JLCPCB’s process or with my libraries? Is there no file format that would encode the correct positions so that the process could work automatically?
I believe this has come up before. I think it was a no standardized standard type thing. Probably one of those things you have to check with the assembly people on.
JLCPCB has an article about this. You can read it and see all the trouble, or just let them do it. KiCad libraries use some standards. JLCPCB uses something else, it’s related to the parts in reels. I don’t remember exactly, but it’s possible that you don’t have any more benefit from doing this yourself than seeing the 3D models correctly in their web viewer or something.
There is only one simple rule: Zero orientation for PCB library should match the component orientation in the packaging(tape/reel).
While the klc specifies a default for the upper left corner for pin 1.
So KiCad uses a different convention then jlc does.
I think that the KLC has a better convention. The idea of “Whatever the manufacturer does” is ambiguous. I’ve even seen datasheets where the same parts can be oriented differently from the same manufacturer by just changing a suffix to the ordering code. When I specify some generic diode for placement there is also no guarantee that all manufacturers orient them in the same way in the tape.
For some parts there is not even consensus of where pin 1 is on the footprint. SOT-23 is a notorious example for this, and this has caused many faulty PCB’s, delays and extra costs for manual intervention and checking over the last 30+ years.
This is exactly why one should always verify everything and communicate how things are, even if things are “standard”. We always maintain our own libraries just so they are all under one convention and all the assembly files contain short description of the convention. We follow 0 rotation as in the datasheet/reel orientation. It’s really easy to control in production, harder if one assembles only 5 and don’t bother about exact PN. 3D renderings of PCBs help. I’ve been using PCBGogo/PCBWay and JLCPCB for assembly and never had issues on the assembly levels, only my own mistakes.
I suppose it’s not really convenient to check every little thing all the time, but it guaranties that what you get is what you actually want.
After getting more familiar over some years with gerber format I think the newer formats don’t solve many problems which gerber doesn’t solve, too. The real problem with gerber is that there are old and partial, even buggy, implementations everywhere. The last time I checked, Altium CircuitMaker exports ODB++ and adds net information to copper items, probably because it’s part of that standard. Surprise surprise: gerber spec has that information, too, and KiCad can export it, but Altium CM can’t. On the other hand manufacturers who use ODB++ more probably can actually use that information. Small cheap manufacturers who use old gerber sw probably can’t use that information.
The problem isn’t in the file format or standard, it’s in the implementations. Unfortunately it’s impossible to change that situation, and adding features to gerber doesn’t help when they are not used. It would help immensely if even some of the biggest cheap manufactures would update their systems so that they would use modern gerber features without hiccups.
That is only partially true because the real thing to consider is assembly houses and this is where file format is critical not in its completeness but in its adoption
It really does not matter if latex is a superior way to deal with documents if people will only accept MS-doc.
Same here… If you are dealing with purely fabrication then GERBER is all that is needed and X2 closed the gap with the missing build (layer order etc…)
But assembly ? All that was offered was pos file… That’s great, it provides (hopefully) the centre and the rotation but zero datum for the rotational frame of reference and the result is assembly houses the. Have to line up the orientation of a part from the tape with the orientation that you (as the designer) states. Time consuming and error prone.
GERBER-X3,. ODB++ and IPC-2581 fill this hole
That however is an aside because all that matters is what someone accepts and more assemblers are asking for these
Fab’s won’t but assemblers will…
These rich data formats can cut the setup time by a factor of 8 and significantly reduce human error. To stay competitive with the cheap assemblers in China these will become a pre-req and already are for places like Celestica
There is indeed a lot of talk of IPC-2581, now called DPMX. However, is anybody really using this format in reality? Does anyone know of a PCB fabricated with it, or any fabricator getting it routinely? The vast majority of fabs don’t even accept it.
That document is very much like the KLC. It also has some examples that show that the idea of “whatever is in the tape” as zero rotation does not work.
The only standard for Pick an Place and assembly in general should be the KiCad PCB file itself. Period.
We require for all our customers to provide the KiCad PCB file as it is the only way to obtain all necessary information which are required for the assembly process. I don’t get why KiCad users are forced to use wired export file formats etc. to somehow communicate information which is included in the source file.
On the backend we use a mix of python scripts to gather pin one / orientation, rotation, position, side, MPN and so on. This enabled users to basically have “drag and drop” assembly.
I did consider you guys and the upload of the KiCad files was so much smoother than fiddling with Gerber files. Thanks a lot for that. Unfortunately this time I wanted to try out parts assembly and your quote was 156 € vs $12 in far east. But for boards-only I’ll definitely use you in the future.
First, this is a question of the library and not of CAD. If library does not have unique orientation of components, pick and place machine has to fix the rotations individual for all parts. If there is a unique orientation like the IPC recommendations, it is usually possible to fix the setup by automatic offsets. Formerly we used a Excel script to do this, later we wrote own Qt tool therefore. If orientation is fixed, 0 and 180 degree could fit but not 90 and 270 degree. This comes from mirror and the way the angles count CW or CCW. Some CAD change this from front to back side and others not. Anyway, our selfmade tool also adapts this and can use presets for some widely used cad outputs.
As feeders are usually possible to attach from more than one side of the assembly machine, rotation offsets are typically intrinsic for the software what comes with the machine. Anyway, the tape feed length and feeder position to component assignments needs to be setup manually by the machine operator why this step is probably never completly automatic.
On this note, I find that this Tape and Reel info is not readily available in most datasheets. It must be frustrating to have to adjust after you get the reel delivered!