Been using KiCad for a number of years as a hobbiest and have more than a few projects under my belt.
Spent the last few months using and populating inventree (A open source parts database) and am now looking at using the BOM importer to get data from KiCad into Inventree to automate the BOM list.
This leads me to a few queries which I think I’m doing incorrectly in KiCad.
Say I have a simple project with a 4 pin 2.54mm male SIL header, and a 74HC00 chip.
On my schematic I have a conn_01x04 part and a 74HC00 chip. The BOM lists it as
74HC00 Qty:1
Conn_01x04 Qty:1
A few issues I am seeing:
On my PCB I use a DIP socket (which is not a part on the schematic, so doesn’t apprear in the BOM. How can I get this added in the BOM?
The PCB itself is also not on the schematic so also doesn’t appear in the BOM.
In my inventree stock keep I track of the individual pin count, so say I purchase say 10 x 40 pin SIL header strips and have it listed as 400 x 2.54 SIL pieces, rather than cutting it up and them listing like 10pcs x 4 pin header, 10pcs x 3 pin header etc. (i cut the headers up and use as needed)
Guess you can see where this is going. In my BOM I have 1 pcs of 3 pin header, rather than 3 pieces of 1 pin header so BOM will not be accurate.
What’s the correct way of doing this?
In my experience, in professional settings, the answer to this would be that both the socket and the IC should appear on the schematic somehow, so that the BOM will be correct. Typically this would be done by:
Creating a custom version of the IC symbol (74HC00) that has the part number for the socket instead of the IC, because this is what you want soldered on the board. This would get a “normal” reference like IC1.
Creating a “BOM only” symbol that has no pins, and has the part number of the logic chip. This does not impact the PCB layout at all, but ensures that the BOM is accurate. This one would get a different reference – because KiCad requires that references end in a number, something like ICP1 for example. The assembly step of installing this part into the socket can be documented in a drawing if desire by calling out these references (“after final inspection of soldered assembly, install item ICP1 in socket IC1” or something)
The same technique is used for the PCB; we create a symbol called “PCB” which has no pins and which gets set to the internal part number of the PCB associated with the assembly.
For this last detail, I have no good suggestions on how to handle this; in my experience this isn’t how things are done in the professional world – the design would call out a 4 pin header or a 3 pin header as QTY 1 each.
Thanks, makes sense. Will look into creating BOM only symbols and include them on the schematic. Wissh I’d done this from the start
For the pins I guess it’s a lot different in the professional world. You would manage stock for each part and purchase different pin sizes and not have someone cut them up.
I think as a horrible hack I could define a field for example called Pins and set it to 3 for a 3 pin header. Then in the BOM python script if Pins>1, multiply the Pins x Quantity to get the total count.
That’s because in your inventory flow you have not modelled the cutting up of the long strip. Write a shim routine/script to turn those n X m headers into nm X 1 strips. To be more accurate you’d also have to model when you have leftover strips that are too short.
Obviously for serious production, you woudn’t have people whose job is to cut up strips. Maybe machines but that’s a whole new game.