Generate BOM

This commit is contained in:
Kelvin Ly 2019-12-19 07:43:52 -05:00
parent 997263b979
commit 660d6e96a0
4 changed files with 2592 additions and 0 deletions

View File

@ -0,0 +1,47 @@
Reference,Quantity,Identifier,Package,Value,Tolerance,Voltage,Current,Power,PN,Mouser
"C1;C2;C3","3","","","470 uF 63V","","","","","","647-UVZ1J471MHD"
"J1","1","","","Conn_01x02","","","","","","NoPart"
"U4","1","","","DRV8353RSRGZ","","","","","","595-DRV8353RSRGZR"
"C33","1","","","1 uF X5R 16V","","","","","","603-CC603KRX5R6BB105"
"C30;C48;C56;C35;C55;C7;C12","7","","","10 uF","","","","","","963-JMK107ABJ106KA-T"
"C27;C47;C44","3","","","0.1 uF X5R 25V","","","","","","81-GRM155R61H104KE9D"
"C32","1","","","47 nF X5R 25V","","","","","","810-CGA2B2X5R1E473KA"
"C45","1","","","1 uF X5R 6.3V","","","","","","603-CC402KRX5R5BB105"
"C29","1","","","1 uF X5R 25V","","","","","","603-CC603KRX5R8BB105"
"C43","1","","","0.47 uF X5R 16V","","","","","","603-CC603KRX5R7BB474"
"C46","1","","","0.01 uF","","","","","","80-C0402C103K5R7411"
"R34;R29;R7;R33;R35;R30;R9;R2;R12","9","","","100kR","","","","","","603-AC0402FR-13100KL"
"D5","1","","","DFLS1100","","","","","","621-DFLS1100-7"
"L1","1","","","220 uH","","","","","","SLF10145T-221MR65-PF"
"R37;R38;R32;R31;R19;R25;R26;R20;R28;R40;R41;R43;R42","13","","","10kR","","","","","","71-CRCW040210K0FKEDC"
"R39;R49","2","","","3R0","","","","","","603-AC0402FR-073RL"
"C49","1","","","22 uF 10V","","","","","","963-LMK212BBJ226MG-T"
"R3","1","","","2.0mR 5W","","","","","","66-OARSXPR002FLF"
"C50","1","","","22 uF","","","","","","963-JMK212ABJ226MG-T"
"C52;C51","2","","","1 uF","","","","","","963-EMK105BJ105KV-F"
"C54;C40;C22;C31;C28;C37;C39;C15;C53;C5;C13;C26;C41;C8;C6","15","","","0.1 uF","","","","","","80-C0402C104M4P"
"J2","1","","","Conn_01x03","","","","","","NoPart"
"R15;R21;R17","3","","","100kR 1%","","","","","","603-AC0402FR-13100KL"
"R16;R22;R18","3","","","10kR 1%","","","","","","71-CRCW040210K0FKEDC"
"C17;C23;C18","3","","","150 pF","","","","","","963-UMK105CG151JV-F"
"U2","1","","","MAX11138","","","","","","700-MAX11138ATI+"
"U3","1","","","ICE40UP5K-SG48","","","","","","842-ICE40UP5K-SG48I"
"C20","1","","","1 nF DNP","","","","","","NoPart"
"C19;C36","2","","","1 nF","","","","","","80-C0402C102K5R7411"
"R27;R44;R45;R46;R47;R48","6","","","100R","","","","","","603-AC0603FR-13100RL"
"C38;C16","2","","","10 nF","","","","","","80-C0402C103K5R7411"
"C42;C34;C21","3","","","10 uF DNP","","","","","","NoPart"
"C57;C58","2","","","47 uF","","","","","","80-T491B476K010"
"U6","1","","","RP111N121D-TR-FE","","","","","","848-RP111N121DTRFE"
"U7","1","","","RP111N331D-TR-FE","","","","","","848-RP111N331DTRFE"
"X1","1","","","ECS-3225MV-250-BN-TR","","","","","","520-3225MV-250-BNT"
"U5","1","","","W25X40CLSNIG","","","","","","454-W25X40CLSNIG"
"J4;J5","2","","","Conn_01x04","","","","","","NoPart"
"J3","1","","","Conn_01x08","","","","","","NoPart"
"D12;D11;D10;D9;D8;D7;D6","7","","","ESD5Z3.3T1G","","","","","","863-ESD5Z3.3T1G"
"D1;D3;D2","3","","","BAS40-04HMFHT116","","","","","","755-BAS40-04HMFHT116"
"Q1;Q2;Q3;Q4;Q5;Q6","6","","","IPC90N04S5L3R3ATMA1","","","","","","726-IPC90N04S5L3R3AT"
"R1","1","","","1kR","","","","","","71-CRCW06031K00FKEAC"
"C4","1","","","1.5 nF","","","","","","710-885012205062"
"H1;H2","2","","","MountingHole","","","","","","NoPart"
"J6","1","","","Conn_01x06","","","","","","NoPart"
1 Reference Quantity Identifier Package Value Tolerance Voltage Current Power PN Mouser
2 C1;C2;C3 3 470 uF 63V 647-UVZ1J471MHD
3 J1 1 Conn_01x02 NoPart
4 U4 1 DRV8353RSRGZ 595-DRV8353RSRGZR
5 C33 1 1 uF X5R 16V 603-CC603KRX5R6BB105
6 C30;C48;C56;C35;C55;C7;C12 7 10 uF 963-JMK107ABJ106KA-T
7 C27;C47;C44 3 0.1 uF X5R 25V 81-GRM155R61H104KE9D
8 C32 1 47 nF X5R 25V 810-CGA2B2X5R1E473KA
9 C45 1 1 uF X5R 6.3V 603-CC402KRX5R5BB105
10 C29 1 1 uF X5R 25V 603-CC603KRX5R8BB105
11 C43 1 0.47 uF X5R 16V 603-CC603KRX5R7BB474
12 C46 1 0.01 uF 80-C0402C103K5R7411
13 R34;R29;R7;R33;R35;R30;R9;R2;R12 9 100kR 603-AC0402FR-13100KL
14 D5 1 DFLS1100 621-DFLS1100-7
15 L1 1 220 uH SLF10145T-221MR65-PF
16 R37;R38;R32;R31;R19;R25;R26;R20;R28;R40;R41;R43;R42 13 10kR 71-CRCW040210K0FKEDC
17 R39;R49 2 3R0 603-AC0402FR-073RL
18 C49 1 22 uF 10V 963-LMK212BBJ226MG-T
19 R3 1 2.0mR 5W 66-OARSXPR002FLF
20 C50 1 22 uF 963-JMK212ABJ226MG-T
21 C52;C51 2 1 uF 963-EMK105BJ105KV-F
22 C54;C40;C22;C31;C28;C37;C39;C15;C53;C5;C13;C26;C41;C8;C6 15 0.1 uF 80-C0402C104M4P
23 J2 1 Conn_01x03 NoPart
24 R15;R21;R17 3 100kR 1% 603-AC0402FR-13100KL
25 R16;R22;R18 3 10kR 1% 71-CRCW040210K0FKEDC
26 C17;C23;C18 3 150 pF 963-UMK105CG151JV-F
27 U2 1 MAX11138 700-MAX11138ATI+
28 U3 1 ICE40UP5K-SG48 842-ICE40UP5K-SG48I
29 C20 1 1 nF DNP NoPart
30 C19;C36 2 1 nF 80-C0402C102K5R7411
31 R27;R44;R45;R46;R47;R48 6 100R 603-AC0603FR-13100RL
32 C38;C16 2 10 nF 80-C0402C103K5R7411
33 C42;C34;C21 3 10 uF DNP NoPart
34 C57;C58 2 47 uF 80-T491B476K010
35 U6 1 RP111N121D-TR-FE 848-RP111N121DTRFE
36 U7 1 RP111N331D-TR-FE 848-RP111N331DTRFE
37 X1 1 ECS-3225MV-250-BN-TR 520-3225MV-250-BNT
38 U5 1 W25X40CLSNIG 454-W25X40CLSNIG
39 J4;J5 2 Conn_01x04 NoPart
40 J3 1 Conn_01x08 NoPart
41 D12;D11;D10;D9;D8;D7;D6 7 ESD5Z3.3T1G 863-ESD5Z3.3T1G
42 D1;D3;D2 3 BAS40-04HMFHT116 755-BAS40-04HMFHT116
43 Q1;Q2;Q3;Q4;Q5;Q6 6 IPC90N04S5L3R3ATMA1 726-IPC90N04S5L3R3AT
44 R1 1 1kR 71-CRCW06031K00FKEAC
45 C4 1 1.5 nF 710-885012205062
46 H1;H2 2 MountingHole NoPart
47 J6 1 Conn_01x06 NoPart

View File

@ -0,0 +1,39 @@
Mouser,Quantity
647-UVZ1J471MHD,3
595-DRV8353RSRGZR,1
603-CC603KRX5R6BB105,1
963-JMK107ABJ106KA-T,7
81-GRM155R61H104KE9D,3
810-CGA2B2X5R1E473KA,1
603-CC402KRX5R5BB105,1
603-CC603KRX5R8BB105,1
603-CC603KRX5R7BB474,1
80-C0402C103K5R7411,1
603-AC0402FR-13100KL,9
621-DFLS1100-7,1
SLF10145T-221MR65-PF,1
71-CRCW040210K0FKEDC,13
603-AC0402FR-073RL,2
963-LMK212BBJ226MG-T,1
66-OARSXPR002FLF,1
963-JMK212ABJ226MG-T,1
963-EMK105BJ105KV-F,2
80-C0402C104M4P,15
603-AC0402FR-13100KL,3
71-CRCW040210K0FKEDC,3
963-UMK105CG151JV-F,3
700-MAX11138ATI+,1
842-ICE40UP5K-SG48I,1
80-C0402C102K5R7411,2
603-AC0603FR-13100RL,6
80-C0402C103K5R7411,2
80-T491B476K010,2
848-RP111N121DTRFE,1
848-RP111N331DTRFE,1
520-3225MV-250-BNT,1
454-W25X40CLSNIG,1
863-ESD5Z3.3T1G,7
755-BAS40-04HMFHT116,3
726-IPC90N04S5L3R3AT,6
71-CRCW06031K00FKEAC,1
710-885012205062,1
1 Mouser Quantity
2 647-UVZ1J471MHD 3
3 595-DRV8353RSRGZR 1
4 603-CC603KRX5R6BB105 1
5 963-JMK107ABJ106KA-T 7
6 81-GRM155R61H104KE9D 3
7 810-CGA2B2X5R1E473KA 1
8 603-CC402KRX5R5BB105 1
9 603-CC603KRX5R8BB105 1
10 603-CC603KRX5R7BB474 1
11 80-C0402C103K5R7411 1
12 603-AC0402FR-13100KL 9
13 621-DFLS1100-7 1
14 SLF10145T-221MR65-PF 1
15 71-CRCW040210K0FKEDC 13
16 603-AC0402FR-073RL 2
17 963-LMK212BBJ226MG-T 1
18 66-OARSXPR002FLF 1
19 963-JMK212ABJ226MG-T 1
20 963-EMK105BJ105KV-F 2
21 80-C0402C104M4P 15
22 603-AC0402FR-13100KL 3
23 71-CRCW040210K0FKEDC 3
24 963-UMK105CG151JV-F 3
25 700-MAX11138ATI+ 1
26 842-ICE40UP5K-SG48I 1
27 80-C0402C102K5R7411 2
28 603-AC0603FR-13100RL 6
29 80-C0402C103K5R7411 2
30 80-T491B476K010 2
31 848-RP111N121DTRFE 1
32 848-RP111N331DTRFE 1
33 520-3225MV-250-BNT 1
34 454-W25X40CLSNIG 1
35 863-ESD5Z3.3T1G 7
36 755-BAS40-04HMFHT116 3
37 726-IPC90N04S5L3R3AT 6
38 71-CRCW06031K00FKEAC 1
39 710-885012205062 1

2452
bldc-controller.xml Normal file

File diff suppressed because it is too large Load Diff

54
gen_mouser.py Normal file
View File

@ -0,0 +1,54 @@
import argparse
import csv
def main():
parser = argparse.ArgumentParser(description="Generates a Mouser BOM from Joost's KiCAD BOM")
parser.add_argument("input", help="input BOM")
parser.add_argument("output", help="output BOM")
parser.add_argument("--m", help="quantity multiplier", default="1")
args = parser.parse_args()
multiplier = 1 if args.m is None else int(args.m)
print("multiplier: {}".format(multiplier))
mouser_idx = None
count_idx = None
components = []
with open(args.input, 'r') as f:
reader = csv.reader(f)
parts = next(reader)
for i, part in enumerate(parts):
if 'Mouser' == part:
mouser_idx = i
elif 'Quantity' == part:
count_idx = i
if mouser_idx is None or count_idx is None:
print("Unable to find headers")
return
for i, parts in enumerate(reader):
if len(parts) < max(mouser_idx, count_idx):
print("[WARN] line {} is missing fields".format(i + 1))
continue
part_num = parts[mouser_idx]
count = parts[count_idx]
if len(part_num) == 0:
print("[WARN] line {} is missing part number".format(i + 1))
print(parts)
continue
if count == 0:
print("[WARN] line {} has zero quantity".format(i + 1))
if part_num == 'NoPart':
continue
components.append((part_num, count))
with open(args.output, 'w') as f:
# header is necessary if you don't want to miss the first part
f.write("Mouser,Quantity\n")
for c in components:
f.write("{},{}\n".format(c[0], multiplier*int(c[1])))
if __name__ == "__main__":
main()