Autofill
This commit is contained in:
parent
dc10849db4
commit
f306185304
|
@ -0,0 +1,286 @@
|
|||
#!/usr/bin/env python3
|
||||
# TODO: make sure it also works in python2
|
||||
|
||||
# version 0.0.2
|
||||
|
||||
# updates:
|
||||
# - allow multiple input files, using the later ones only for component footprint
|
||||
# and distributor
|
||||
# - fix code so it works with Kicad 5
|
||||
|
||||
import argparse
|
||||
|
||||
DISTRIBUTOR_VALUES = ["\"Mouser\""]
|
||||
|
||||
class Component(object):
|
||||
def __init__(self, start):
|
||||
self.designator = None
|
||||
self.value = None
|
||||
self.footprint = None
|
||||
self.footprint_row = None
|
||||
# distributor ids, mapped to (line_num, value, all fields
|
||||
# (to make reconstruction easier)
|
||||
self.distributors = dict()
|
||||
self.cls = None
|
||||
self.last_value = None
|
||||
self.num_fields = 0
|
||||
|
||||
# used mainly for parser debugging
|
||||
self.start = start
|
||||
|
||||
class DistributorData(object):
|
||||
def __init__(self, id):
|
||||
self.id = id
|
||||
|
||||
def quotesplit(line):
|
||||
parts = line.split(" ")
|
||||
ret = []
|
||||
num_quotes = 0
|
||||
incomplete_part = None
|
||||
for part in parts:
|
||||
num_quotes += len([None for c in part if c == '"'])
|
||||
if num_quotes % 2 == 1:
|
||||
if incomplete_part is None:
|
||||
# just started a quoted section
|
||||
incomplete_part = part
|
||||
else:
|
||||
incomplete_part += " " + part
|
||||
else:
|
||||
if incomplete_part is not None:
|
||||
# ending quote is in this part
|
||||
ret.append(incomplete_part + " " + part)
|
||||
incomplete_part = None
|
||||
else:
|
||||
# normal case; pass through
|
||||
ret.append(part)
|
||||
return ret
|
||||
|
||||
def parse_lines(f):
|
||||
lines = []
|
||||
components = []
|
||||
component_start = False
|
||||
component = None
|
||||
|
||||
for i, line in enumerate(f):
|
||||
if component_start:
|
||||
if line.startswith("L"):
|
||||
parts = quotesplit(line)
|
||||
component.designator = parts[2].rstrip()
|
||||
component.cls = component.designator[0]
|
||||
elif line.startswith("F"):
|
||||
parts = quotesplit(line)
|
||||
component.num_fields += 1
|
||||
component.last_value = i
|
||||
if parts[1].isdigit():
|
||||
field_type = int(parts[1])
|
||||
if field_type == 1:
|
||||
component.value = parts[2]
|
||||
elif field_type == 2:
|
||||
component.footprint_row = (i, parts)
|
||||
if len(parts[2]) > 2:
|
||||
component.footprint = parts[2]
|
||||
elif field_type > 3:
|
||||
# TODO: make case insensitive
|
||||
if parts[-1][:-1] in DISTRIBUTOR_VALUES:
|
||||
component.distributors[parts[-1][:-1]] = DistributorData(parts[2])
|
||||
elif line.startswith("$EndComp"):
|
||||
component_start = False
|
||||
# ignore power nodes
|
||||
if component.cls != "#":
|
||||
components.append(component)
|
||||
|
||||
if line.startswith("$Comp"):
|
||||
component_start = True
|
||||
component = Component(i)
|
||||
lines.append(line)
|
||||
return (lines, components)
|
||||
|
||||
def infer_components(components):
|
||||
# dictionaries in dictionaries:
|
||||
# distributor = (distributor_type, id) so that non-unique ids can be captured
|
||||
# filled_values[cls][value] = [(footprint, [designators], [distributors])]
|
||||
filled_values = dict()
|
||||
|
||||
# first pass to infer footprints and distributors, second pass to fill in details
|
||||
for c in components:
|
||||
if c.cls is None or len(c.cls) == 0:
|
||||
print("Component at {} incorrectly parsed; no cls set".format(c.start))
|
||||
else:
|
||||
if c.cls not in filled_values:
|
||||
filled_values[c.cls] = dict()
|
||||
|
||||
if c.value is not None and len(c.value) > 2:
|
||||
if c.value not in filled_values[c.cls]:
|
||||
filled_values[c.cls][c.value] = []
|
||||
|
||||
if c.footprint is not None and len(c.footprint) > 2:
|
||||
# print(c.designator, c.value, c.footprint, c.distributors)
|
||||
tosearch = filled_values[c.cls][c.value]
|
||||
# find element with matching footprint
|
||||
found = None
|
||||
for i, fp in enumerate(tosearch):
|
||||
if fp[0] == c.footprint:
|
||||
found = i
|
||||
break
|
||||
|
||||
if found is None:
|
||||
distributors = []
|
||||
for dist in c.distributors:
|
||||
if len(c.distributors[dist].id) > 2 and len(dist) > 2:
|
||||
distributors.append((dist, c.distributors[dist].id))
|
||||
tosearch.append((c.footprint, [c.designator], distributors))
|
||||
else:
|
||||
tosearch[i][1].append(c.designator)
|
||||
# append any new distributors
|
||||
for dist in c.distributors:
|
||||
if len(c.distributors[dist].id) > 2 and len(dist) > 2:
|
||||
if not any([dist == m[0] and c.distributors[dist].id == m[1]
|
||||
for m in tosearch[i][2]]):
|
||||
tosearch[i][2].append((dist, c.distributors[dist].id))
|
||||
return filled_values
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description="Autofills components in an Eeschema schematic")
|
||||
parser.add_argument("-i", "--include", action="append", help="additional files to read in, for component inference")
|
||||
parser.add_argument("input", help="file to autofill")
|
||||
parser.add_argument("output", help="file to write autofilled schematic to")
|
||||
|
||||
args = parser.parse_args()
|
||||
|
||||
lines = None
|
||||
components = None
|
||||
|
||||
with open(args.input, 'r') as f:
|
||||
(lines, components) = parse_lines(f)
|
||||
|
||||
print("{} lines".format(len(lines)))
|
||||
print("found {} components".format(len(components)))
|
||||
without_footprints = len([None for c in components if c.footprint is None])
|
||||
print("found {} components without footprints".format(without_footprints))
|
||||
|
||||
all_components = []
|
||||
all_components.extend(components)
|
||||
|
||||
if args.include is not None:
|
||||
print("searching additional files: {}".format(" ".join(args.include)))
|
||||
|
||||
for filename in args.include:
|
||||
with open(filename, 'r') as f:
|
||||
(more_lines, more_components) = parse_lines(f)
|
||||
print("{} more lines".format(len(more_lines)))
|
||||
print("found {} more components".format(len(more_components)))
|
||||
more_without_footprints = len([None for c in more_components if c.footprint is None])
|
||||
print("found {} more components without footprints".format(more_without_footprints))
|
||||
all_components.extend(more_components)
|
||||
|
||||
filled_values = infer_components(all_components)
|
||||
|
||||
entry_count = 0
|
||||
conflicts = []
|
||||
for cls in filled_values:
|
||||
for val in filled_values[cls]:
|
||||
for _ in filled_values[cls][val]:
|
||||
# TODO: check for conflicts
|
||||
entry_count += 1
|
||||
print("found {} filled unique component classes".format(entry_count))
|
||||
|
||||
# TODO: allow interactive distributor choice to resolve conflicts
|
||||
while len(conflicts) > 0:
|
||||
print("found conflicting information, cannot autofill")
|
||||
for conflict in conflicts:
|
||||
pass
|
||||
return
|
||||
|
||||
# autofill
|
||||
autofill_fp = 0
|
||||
autofill_dist = 0
|
||||
to_append = []
|
||||
for c in components:
|
||||
if c.cls in filled_values:
|
||||
if c.value in filled_values[c.cls]:
|
||||
matches = []
|
||||
if c.footprint is not None:
|
||||
matches = [t for t in filled_values[c.cls][c.value] if t[0] == c.footprint]
|
||||
else:
|
||||
matches = filled_values[c.cls][c.value]
|
||||
if len(matches) == 1:
|
||||
# autofill
|
||||
match = matches[0]
|
||||
if ((c.footprint is None or len(c.footprint) <= 2) and
|
||||
c.footprint_row is not None):
|
||||
print("matched {} {} with {}".format(c.designator, c.value, match))
|
||||
# rewrite footprint
|
||||
c.footprint = match[0]
|
||||
row = c.footprint_row[1]
|
||||
row[2] = match[0]
|
||||
lines[c.footprint_row[0]] = " ".join(row)
|
||||
autofill_fp += 1
|
||||
# add in distributors
|
||||
dist_added = 0
|
||||
for dist in match[2]:
|
||||
if dist[0] not in c.distributors:
|
||||
c.distributors[dist[0]] = DistributorData(dist[1])
|
||||
# append to the field list
|
||||
template_row = quotesplit(lines[c.last_value][:-1])
|
||||
row = [
|
||||
template_row[0],
|
||||
str(c.num_fields),
|
||||
dist[1]] + template_row[3:11] + [dist[0] + "\n"]
|
||||
c.num_fields += 1
|
||||
to_append.append((c.last_value, row))
|
||||
dist_added += 1
|
||||
# mark as something to do, because appending now would
|
||||
# cause the row numbers to shift for all the components after this one,
|
||||
# invalidating their indices
|
||||
if dist_added > 0:
|
||||
autofill_dist += 1
|
||||
|
||||
# print(c.designator, c.value, c.footprint, c.distributors)
|
||||
for ta in reversed(to_append):
|
||||
idx = ta[0]
|
||||
row = ta[1]
|
||||
lines = lines[0:idx+1] + [" ".join(row)] + lines[idx+1:]
|
||||
|
||||
print("autofilled {} fp, {} dist".format(autofill_fp, autofill_dist))
|
||||
# dictionary of dictionaries of components without footprints
|
||||
# missing[cls][value] = [designators]
|
||||
missing = dict()
|
||||
|
||||
for c in components:
|
||||
if c.cls is not None:
|
||||
if c.cls not in missing:
|
||||
missing[c.cls] = dict()
|
||||
if c.value is not None and c.footprint is None:
|
||||
if c.value not in missing[c.cls]:
|
||||
missing[c.cls][c.value] = []
|
||||
missing[c.cls][c.value].append(c.designator)
|
||||
|
||||
for cls in missing:
|
||||
for value in missing[cls]:
|
||||
print("NOTE: no unique footprint found for {} {}".format(value, missing[cls][value]))
|
||||
|
||||
# repeat for manufacturer info
|
||||
missing = dict()
|
||||
|
||||
for c in components:
|
||||
if c.cls is not None:
|
||||
if c.cls not in missing:
|
||||
missing[c.cls] = dict()
|
||||
if c.value is not None and c.value != "\"DNP\"" and not bool(c.distributors):
|
||||
if c.value not in missing[c.cls]:
|
||||
missing[c.cls][c.value] = []
|
||||
missing[c.cls][c.value].append(c.designator)
|
||||
|
||||
for cls in missing:
|
||||
for value in missing[cls]:
|
||||
print("NOTE: no distributor data found for {} {}".format(value, missing[cls][value]))
|
||||
|
||||
|
||||
output = args.output or args.input
|
||||
print("outputting to {}...".format(output))
|
||||
with open(output, "w+") as f:
|
||||
for line in lines:
|
||||
f.write(line)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
|
@ -292,8 +292,9 @@ U 1 1 5EA77C7D
|
|||
P 3550 4600
|
||||
F 0 "C9" H 3560 4670 50 0000 L CNN
|
||||
F 1 "0.1 uF" H 3560 4520 50 0000 L CNN
|
||||
F 2 "" H 3550 4600 50 0001 C CNN
|
||||
F 2 "Capacitor_SMD:C_0402_1005Metric" H 3550 4600 50 0001 C CNN
|
||||
F 3 "~" H 3550 4600 50 0001 C CNN
|
||||
F 4 "963-EMF105B7104KVHF" H 3550 4600 50 0001 C CNN "Mouser"
|
||||
1 3550 4600
|
||||
0 1 1 0
|
||||
$EndComp
|
||||
|
@ -303,8 +304,9 @@ U 1 1 5EA7891A
|
|||
P 3550 4200
|
||||
F 0 "C8" H 3560 4270 50 0000 L CNN
|
||||
F 1 "0.1 uF" H 3560 4120 50 0000 L CNN
|
||||
F 2 "" H 3550 4200 50 0001 C CNN
|
||||
F 2 "Capacitor_SMD:C_0402_1005Metric" H 3550 4200 50 0001 C CNN
|
||||
F 3 "~" H 3550 4200 50 0001 C CNN
|
||||
F 4 "963-EMF105B7104KVHF" H 3550 4200 50 0001 C CNN "Mouser"
|
||||
1 3550 4200
|
||||
0 1 1 0
|
||||
$EndComp
|
||||
|
@ -325,8 +327,9 @@ U 1 1 5EA78C5A
|
|||
P 3550 3500
|
||||
F 0 "C6" H 3560 3570 50 0000 L CNN
|
||||
F 1 "0.1 uF" H 3560 3420 50 0000 L CNN
|
||||
F 2 "" H 3550 3500 50 0001 C CNN
|
||||
F 2 "Capacitor_SMD:C_0402_1005Metric" H 3550 3500 50 0001 C CNN
|
||||
F 3 "~" H 3550 3500 50 0001 C CNN
|
||||
F 4 "963-EMF105B7104KVHF" H 3550 3500 50 0001 C CNN "Mouser"
|
||||
1 3550 3500
|
||||
0 1 1 0
|
||||
$EndComp
|
||||
|
@ -488,8 +491,9 @@ U 1 1 5EAD073F
|
|||
P 2350 6450
|
||||
F 0 "R1" H 2380 6470 50 0000 L CNN
|
||||
F 1 "100kR" H 2380 6410 50 0000 L CNN
|
||||
F 2 "" H 2350 6450 50 0001 C CNN
|
||||
F 2 "Resistor_SMD:R_0603_1608Metric" H 2350 6450 50 0001 C CNN
|
||||
F 3 "~" H 2350 6450 50 0001 C CNN
|
||||
F 4 "71-CRCW0603100KFKEAC" H 2350 6450 50 0001 C CNN "Mouser"
|
||||
1 2350 6450
|
||||
0 -1 -1 0
|
||||
$EndComp
|
||||
|
@ -1007,8 +1011,9 @@ U 1 1 5EA353DA
|
|||
P 11300 9350
|
||||
F 0 "R15" H 11330 9370 50 0000 L CNN
|
||||
F 1 "100kR" H 11330 9310 50 0000 L CNN
|
||||
F 2 "" H 11300 9350 50 0001 C CNN
|
||||
F 2 "Resistor_SMD:R_0603_1608Metric" H 11300 9350 50 0001 C CNN
|
||||
F 3 "~" H 11300 9350 50 0001 C CNN
|
||||
F 4 "71-CRCW0603100KFKEAC" H 11300 9350 50 0001 C CNN "Mouser"
|
||||
1 11300 9350
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
|
@ -1088,8 +1093,9 @@ U 1 1 5EB1F30C
|
|||
P 6550 5250
|
||||
F 0 "R6" H 6580 5270 50 0000 L CNN
|
||||
F 1 "100kR" H 6580 5210 50 0000 L CNN
|
||||
F 2 "" H 6550 5250 50 0001 C CNN
|
||||
F 2 "Resistor_SMD:R_0603_1608Metric" H 6550 5250 50 0001 C CNN
|
||||
F 3 "~" H 6550 5250 50 0001 C CNN
|
||||
F 4 "71-CRCW0603100KFKEAC" H 6550 5250 50 0001 C CNN "Mouser"
|
||||
1 6550 5250
|
||||
0 -1 1 0
|
||||
$EndComp
|
||||
|
@ -1272,8 +1278,9 @@ U 1 1 5E915E0A
|
|||
P 14650 7550
|
||||
F 0 "J6" H 14650 7750 50 0000 C CNN
|
||||
F 1 "Conn_01x03" H 14650 7350 50 0000 C CNN
|
||||
F 2 "" H 14650 7550 50 0001 C CNN
|
||||
F 2 "Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical" H 14650 7550 50 0001 C CNN
|
||||
F 3 "~" H 14650 7550 50 0001 C CNN
|
||||
F 4 "855-M20-9990346" H 14650 7550 50 0001 C CNN "Mouser"
|
||||
1 14650 7550
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
|
@ -1283,8 +1290,9 @@ U 1 1 5E922FE9
|
|||
P 14650 8050
|
||||
F 0 "J7" H 14650 8250 50 0000 C CNN
|
||||
F 1 "Conn_01x03" H 14650 7850 50 0000 C CNN
|
||||
F 2 "" H 14650 8050 50 0001 C CNN
|
||||
F 2 "Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical" H 14650 8050 50 0001 C CNN
|
||||
F 3 "~" H 14650 8050 50 0001 C CNN
|
||||
F 4 "855-M20-9990346" H 14650 8050 50 0001 C CNN "Mouser"
|
||||
1 14650 8050
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
|
@ -1294,8 +1302,9 @@ U 1 1 5E922FEF
|
|||
P 14650 8550
|
||||
F 0 "J8" H 14650 8750 50 0000 C CNN
|
||||
F 1 "Conn_01x03" H 14650 8350 50 0000 C CNN
|
||||
F 2 "" H 14650 8550 50 0001 C CNN
|
||||
F 2 "Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical" H 14650 8550 50 0001 C CNN
|
||||
F 3 "~" H 14650 8550 50 0001 C CNN
|
||||
F 4 "855-M20-9990346" H 14650 8550 50 0001 C CNN "Mouser"
|
||||
1 14650 8550
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
|
@ -1305,8 +1314,9 @@ U 1 1 5E93E9B3
|
|||
P 15650 7050
|
||||
F 0 "J11" H 15650 7250 50 0000 C CNN
|
||||
F 1 "Conn_01x03" H 15650 6850 50 0000 C CNN
|
||||
F 2 "" H 15650 7050 50 0001 C CNN
|
||||
F 2 "Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical" H 15650 7050 50 0001 C CNN
|
||||
F 3 "~" H 15650 7050 50 0001 C CNN
|
||||
F 4 "855-M20-9990346" H 15650 7050 50 0001 C CNN "Mouser"
|
||||
1 15650 7050
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
|
@ -1316,8 +1326,9 @@ U 1 1 5E93E9B9
|
|||
P 15650 7550
|
||||
F 0 "J12" H 15650 7750 50 0000 C CNN
|
||||
F 1 "Conn_01x03" H 15650 7350 50 0000 C CNN
|
||||
F 2 "" H 15650 7550 50 0001 C CNN
|
||||
F 2 "Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical" H 15650 7550 50 0001 C CNN
|
||||
F 3 "~" H 15650 7550 50 0001 C CNN
|
||||
F 4 "855-M20-9990346" H 15650 7550 50 0001 C CNN "Mouser"
|
||||
1 15650 7550
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
|
@ -1327,8 +1338,9 @@ U 1 1 5E93E9BF
|
|||
P 15650 8050
|
||||
F 0 "J13" H 15650 8250 50 0000 C CNN
|
||||
F 1 "Conn_01x03" H 15650 7850 50 0000 C CNN
|
||||
F 2 "" H 15650 8050 50 0001 C CNN
|
||||
F 2 "Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical" H 15650 8050 50 0001 C CNN
|
||||
F 3 "~" H 15650 8050 50 0001 C CNN
|
||||
F 4 "855-M20-9990346" H 15650 8050 50 0001 C CNN "Mouser"
|
||||
1 15650 8050
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
|
@ -1338,8 +1350,9 @@ U 1 1 5E93E9C5
|
|||
P 15650 8550
|
||||
F 0 "J14" H 15650 8750 50 0000 C CNN
|
||||
F 1 "Conn_01x03" H 15650 8350 50 0000 C CNN
|
||||
F 2 "" H 15650 8550 50 0001 C CNN
|
||||
F 2 "Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical" H 15650 8550 50 0001 C CNN
|
||||
F 3 "~" H 15650 8550 50 0001 C CNN
|
||||
F 4 "855-M20-9990346" H 15650 8550 50 0001 C CNN "Mouser"
|
||||
1 15650 8550
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
|
@ -1349,8 +1362,9 @@ U 1 1 5E94BF10
|
|||
P 14650 9050
|
||||
F 0 "J9" H 14650 9250 50 0000 C CNN
|
||||
F 1 "Conn_01x03" H 14650 8850 50 0000 C CNN
|
||||
F 2 "" H 14650 9050 50 0001 C CNN
|
||||
F 2 "Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical" H 14650 9050 50 0001 C CNN
|
||||
F 3 "~" H 14650 9050 50 0001 C CNN
|
||||
F 4 "855-M20-9990346" H 14650 9050 50 0001 C CNN "Mouser"
|
||||
1 14650 9050
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
|
@ -1360,8 +1374,9 @@ U 1 1 5E94BF16
|
|||
P 14650 9550
|
||||
F 0 "J10" H 14650 9750 50 0000 C CNN
|
||||
F 1 "Conn_01x03" H 14650 9350 50 0000 C CNN
|
||||
F 2 "" H 14650 9550 50 0001 C CNN
|
||||
F 2 "Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical" H 14650 9550 50 0001 C CNN
|
||||
F 3 "~" H 14650 9550 50 0001 C CNN
|
||||
F 4 "855-M20-9990346" H 14650 9550 50 0001 C CNN "Mouser"
|
||||
1 14650 9550
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
|
@ -1371,8 +1386,9 @@ U 1 1 5E958E6F
|
|||
P 15650 9050
|
||||
F 0 "J15" H 15650 9250 50 0000 C CNN
|
||||
F 1 "Conn_01x03" H 15650 8850 50 0000 C CNN
|
||||
F 2 "" H 15650 9050 50 0001 C CNN
|
||||
F 2 "Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical" H 15650 9050 50 0001 C CNN
|
||||
F 3 "~" H 15650 9050 50 0001 C CNN
|
||||
F 4 "855-M20-9990346" H 15650 9050 50 0001 C CNN "Mouser"
|
||||
1 15650 9050
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
|
@ -1382,8 +1398,9 @@ U 1 1 5E958E75
|
|||
P 15650 9550
|
||||
F 0 "J16" H 15650 9750 50 0000 C CNN
|
||||
F 1 "Conn_01x03" H 15650 9350 50 0000 C CNN
|
||||
F 2 "" H 15650 9550 50 0001 C CNN
|
||||
F 2 "Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical" H 15650 9550 50 0001 C CNN
|
||||
F 3 "~" H 15650 9550 50 0001 C CNN
|
||||
F 4 "855-M20-9990346" H 15650 9550 50 0001 C CNN "Mouser"
|
||||
1 15650 9550
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
|
@ -1687,8 +1704,9 @@ U 1 1 5EC06BA5
|
|||
P 9900 2400
|
||||
F 0 "R14" H 9930 2420 50 0000 L CNN
|
||||
F 1 "4k7R" H 9930 2360 50 0000 L CNN
|
||||
F 2 "" H 9900 2400 50 0001 C CNN
|
||||
F 2 "Resistor_SMD:R_0402_1005Metric" H 9900 2400 50 0001 C CNN
|
||||
F 3 "~" H 9900 2400 50 0001 C CNN
|
||||
F 4 "71-CRCW04024K70FKEDC" H 9900 2400 50 0001 C CNN "Mouser"
|
||||
1 9900 2400
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
|
@ -1891,8 +1909,9 @@ U 1 1 5EFDB5F0
|
|||
P 9250 6700
|
||||
F 0 "R12" H 9280 6720 50 0000 L CNN
|
||||
F 1 "4k7R" H 9280 6660 50 0000 L CNN
|
||||
F 2 "" H 9250 6700 50 0001 C CNN
|
||||
F 2 "Resistor_SMD:R_0402_1005Metric" H 9250 6700 50 0001 C CNN
|
||||
F 3 "~" H 9250 6700 50 0001 C CNN
|
||||
F 4 "71-CRCW04024K70FKEDC" H 9250 6700 50 0001 C CNN "Mouser"
|
||||
1 9250 6700
|
||||
0 1 1 0
|
||||
$EndComp
|
||||
|
@ -1916,8 +1935,9 @@ U 1 1 5F0C50A2
|
|||
P 7800 4850
|
||||
F 0 "C16" H 7810 4920 50 0000 L CNN
|
||||
F 1 "0.1 uF" H 7810 4770 50 0000 L CNN
|
||||
F 2 "" H 7800 4850 50 0001 C CNN
|
||||
F 2 "Capacitor_SMD:C_0402_1005Metric" H 7800 4850 50 0001 C CNN
|
||||
F 3 "~" H 7800 4850 50 0001 C CNN
|
||||
F 4 "963-EMF105B7104KVHF" H 7800 4850 50 0001 C CNN "Mouser"
|
||||
1 7800 4850
|
||||
0 -1 -1 0
|
||||
$EndComp
|
||||
|
@ -1927,8 +1947,9 @@ U 1 1 5F0C5AEF
|
|||
P 9200 4850
|
||||
F 0 "C21" H 9210 4920 50 0000 L CNN
|
||||
F 1 "0.1 uF" H 9210 4770 50 0000 L CNN
|
||||
F 2 "" H 9200 4850 50 0001 C CNN
|
||||
F 2 "Capacitor_SMD:C_0402_1005Metric" H 9200 4850 50 0001 C CNN
|
||||
F 3 "~" H 9200 4850 50 0001 C CNN
|
||||
F 4 "963-EMF105B7104KVHF" H 9200 4850 50 0001 C CNN "Mouser"
|
||||
1 9200 4850
|
||||
0 -1 -1 0
|
||||
$EndComp
|
||||
|
@ -1938,8 +1959,9 @@ U 1 1 5F0C60D9
|
|||
P 9300 6050
|
||||
F 0 "C22" H 9310 6120 50 0000 L CNN
|
||||
F 1 "0.1 uF" H 9310 5970 50 0000 L CNN
|
||||
F 2 "" H 9300 6050 50 0001 C CNN
|
||||
F 2 "Capacitor_SMD:C_0402_1005Metric" H 9300 6050 50 0001 C CNN
|
||||
F 3 "~" H 9300 6050 50 0001 C CNN
|
||||
F 4 "963-EMF105B7104KVHF" H 9300 6050 50 0001 C CNN "Mouser"
|
||||
1 9300 6050
|
||||
0 -1 -1 0
|
||||
$EndComp
|
||||
|
@ -1949,8 +1971,9 @@ U 1 1 5F0C6BBB
|
|||
P 7800 6050
|
||||
F 0 "C17" H 7810 6120 50 0000 L CNN
|
||||
F 1 "0.1 uF" H 7810 5970 50 0000 L CNN
|
||||
F 2 "" H 7800 6050 50 0001 C CNN
|
||||
F 2 "Capacitor_SMD:C_0402_1005Metric" H 7800 6050 50 0001 C CNN
|
||||
F 3 "~" H 7800 6050 50 0001 C CNN
|
||||
F 4 "963-EMF105B7104KVHF" H 7800 6050 50 0001 C CNN "Mouser"
|
||||
1 7800 6050
|
||||
0 -1 -1 0
|
||||
$EndComp
|
||||
|
@ -2213,8 +2236,9 @@ U 1 1 5F70E3AA
|
|||
P 5350 8450
|
||||
F 0 "C13" H 5360 8520 50 0000 L CNN
|
||||
F 1 "0.1 uF" H 5360 8370 50 0000 L CNN
|
||||
F 2 "" H 5350 8450 50 0001 C CNN
|
||||
F 2 "Capacitor_SMD:C_0402_1005Metric" H 5350 8450 50 0001 C CNN
|
||||
F 3 "~" H 5350 8450 50 0001 C CNN
|
||||
F 4 "963-EMF105B7104KVHF" H 5350 8450 50 0001 C CNN "Mouser"
|
||||
1 5350 8450
|
||||
0 -1 -1 0
|
||||
$EndComp
|
||||
|
@ -2224,8 +2248,9 @@ U 1 1 5F70EAED
|
|||
P 4700 8400
|
||||
F 0 "C10" H 4710 8470 50 0000 L CNN
|
||||
F 1 "0.1 uF" H 4710 8320 50 0000 L CNN
|
||||
F 2 "" H 4700 8400 50 0001 C CNN
|
||||
F 2 "Capacitor_SMD:C_0402_1005Metric" H 4700 8400 50 0001 C CNN
|
||||
F 3 "~" H 4700 8400 50 0001 C CNN
|
||||
F 4 "963-EMF105B7104KVHF" H 4700 8400 50 0001 C CNN "Mouser"
|
||||
1 4700 8400
|
||||
0 1 -1 0
|
||||
$EndComp
|
||||
|
@ -2295,8 +2320,9 @@ U 1 1 5F8C3573
|
|||
P 3300 9000
|
||||
F 0 "C5" H 3310 9070 50 0000 L CNN
|
||||
F 1 "0.1 uF" H 3310 8920 50 0000 L CNN
|
||||
F 2 "" H 3300 9000 50 0001 C CNN
|
||||
F 2 "Capacitor_SMD:C_0402_1005Metric" H 3300 9000 50 0001 C CNN
|
||||
F 3 "~" H 3300 9000 50 0001 C CNN
|
||||
F 4 "963-EMF105B7104KVHF" H 3300 9000 50 0001 C CNN "Mouser"
|
||||
1 3300 9000
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
|
@ -2347,8 +2373,9 @@ U 1 1 5F9983EB
|
|||
P 1700 9600
|
||||
F 0 "C1" H 1710 9670 50 0000 L CNN
|
||||
F 1 "0.1 uF" H 1710 9520 50 0000 L CNN
|
||||
F 2 "" H 1700 9600 50 0001 C CNN
|
||||
F 2 "Capacitor_SMD:C_0402_1005Metric" H 1700 9600 50 0001 C CNN
|
||||
F 3 "~" H 1700 9600 50 0001 C CNN
|
||||
F 4 "963-EMF105B7104KVHF" H 1700 9600 50 0001 C CNN "Mouser"
|
||||
1 1700 9600
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
|
@ -2415,8 +2442,9 @@ U 1 1 5FC15F98
|
|||
P 11700 3750
|
||||
F 0 "R16" H 11730 3770 50 0000 L CNN
|
||||
F 1 "4k7R" H 11730 3710 50 0000 L CNN
|
||||
F 2 "" H 11700 3750 50 0001 C CNN
|
||||
F 2 "Resistor_SMD:R_0402_1005Metric" H 11700 3750 50 0001 C CNN
|
||||
F 3 "~" H 11700 3750 50 0001 C CNN
|
||||
F 4 "71-CRCW04024K70FKEDC" H 11700 3750 50 0001 C CNN "Mouser"
|
||||
1 11700 3750
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
|
@ -2454,8 +2482,9 @@ U 1 1 5FC42305
|
|||
P 12300 3750
|
||||
F 0 "R17" H 12330 3770 50 0000 L CNN
|
||||
F 1 "4k7R" H 12330 3710 50 0000 L CNN
|
||||
F 2 "" H 12300 3750 50 0001 C CNN
|
||||
F 2 "Resistor_SMD:R_0402_1005Metric" H 12300 3750 50 0001 C CNN
|
||||
F 3 "~" H 12300 3750 50 0001 C CNN
|
||||
F 4 "71-CRCW04024K70FKEDC" H 12300 3750 50 0001 C CNN "Mouser"
|
||||
1 12300 3750
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
|
@ -2482,8 +2511,9 @@ U 1 1 5FCCE312
|
|||
P 10400 5800
|
||||
F 0 "C26" H 10410 5870 50 0000 L CNN
|
||||
F 1 "0.1 uF" H 10410 5720 50 0000 L CNN
|
||||
F 2 "" H 10400 5800 50 0001 C CNN
|
||||
F 2 "Capacitor_SMD:C_0402_1005Metric" H 10400 5800 50 0001 C CNN
|
||||
F 3 "~" H 10400 5800 50 0001 C CNN
|
||||
F 4 "963-EMF105B7104KVHF" H 10400 5800 50 0001 C CNN "Mouser"
|
||||
1 10400 5800
|
||||
0 1 -1 0
|
||||
$EndComp
|
||||
|
@ -2519,8 +2549,9 @@ U 1 1 5FE3BEE8
|
|||
P 6750 8850
|
||||
F 0 "R8" H 6780 8870 50 0000 L CNN
|
||||
F 1 "100kR" H 6780 8810 50 0000 L CNN
|
||||
F 2 "" H 6750 8850 50 0001 C CNN
|
||||
F 2 "Resistor_SMD:R_0603_1608Metric" H 6750 8850 50 0001 C CNN
|
||||
F 3 "~" H 6750 8850 50 0001 C CNN
|
||||
F 4 "71-CRCW0603100KFKEAC" H 6750 8850 50 0001 C CNN "Mouser"
|
||||
1 6750 8850
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
|
@ -2530,8 +2561,9 @@ U 1 1 5FE3C350
|
|||
P 6550 8850
|
||||
F 0 "R7" H 6580 8870 50 0000 L CNN
|
||||
F 1 "100kR" H 6580 8810 50 0000 L CNN
|
||||
F 2 "" H 6550 8850 50 0001 C CNN
|
||||
F 2 "Resistor_SMD:R_0603_1608Metric" H 6550 8850 50 0001 C CNN
|
||||
F 3 "~" H 6550 8850 50 0001 C CNN
|
||||
F 4 "71-CRCW0603100KFKEAC" H 6550 8850 50 0001 C CNN "Mouser"
|
||||
1 6550 8850
|
||||
-1 0 0 -1
|
||||
$EndComp
|
||||
|
@ -2647,8 +2679,9 @@ U 1 1 60457232
|
|||
P 9200 950
|
||||
F 0 "C20" H 9210 1020 50 0000 L CNN
|
||||
F 1 "0.1 uF" H 9210 870 50 0000 L CNN
|
||||
F 2 "" H 9200 950 50 0001 C CNN
|
||||
F 2 "Capacitor_SMD:C_0402_1005Metric" H 9200 950 50 0001 C CNN
|
||||
F 3 "~" H 9200 950 50 0001 C CNN
|
||||
F 4 "963-EMF105B7104KVHF" H 9200 950 50 0001 C CNN "Mouser"
|
||||
1 9200 950
|
||||
0 -1 -1 0
|
||||
$EndComp
|
||||
|
@ -2681,8 +2714,9 @@ U 1 1 60575FD3
|
|||
P 8600 1350
|
||||
F 0 "R10" H 8630 1370 50 0000 L CNN
|
||||
F 1 "4k7R" H 8630 1310 50 0000 L CNN
|
||||
F 2 "" H 8600 1350 50 0001 C CNN
|
||||
F 2 "Resistor_SMD:R_0402_1005Metric" H 8600 1350 50 0001 C CNN
|
||||
F 3 "~" H 8600 1350 50 0001 C CNN
|
||||
F 4 "71-CRCW04024K70FKEDC" H 8600 1350 50 0001 C CNN "Mouser"
|
||||
1 8600 1350
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
|
@ -2721,8 +2755,9 @@ U 1 1 6065D2E6
|
|||
P 12450 1700
|
||||
F 0 "R18" H 12480 1720 50 0000 L CNN
|
||||
F 1 "4k7R" H 12480 1660 50 0000 L CNN
|
||||
F 2 "" H 12450 1700 50 0001 C CNN
|
||||
F 2 "Resistor_SMD:R_0402_1005Metric" H 12450 1700 50 0001 C CNN
|
||||
F 3 "~" H 12450 1700 50 0001 C CNN
|
||||
F 4 "71-CRCW04024K70FKEDC" H 12450 1700 50 0001 C CNN "Mouser"
|
||||
1 12450 1700
|
||||
0 -1 -1 0
|
||||
$EndComp
|
||||
|
@ -2799,8 +2834,9 @@ U 1 1 6065D311
|
|||
P 13900 2400
|
||||
F 0 "R20" H 13930 2420 50 0000 L CNN
|
||||
F 1 "4k7R" H 13930 2360 50 0000 L CNN
|
||||
F 2 "" H 13900 2400 50 0001 C CNN
|
||||
F 2 "Resistor_SMD:R_0402_1005Metric" H 13900 2400 50 0001 C CNN
|
||||
F 3 "~" H 13900 2400 50 0001 C CNN
|
||||
F 4 "71-CRCW04024K70FKEDC" H 13900 2400 50 0001 C CNN "Mouser"
|
||||
1 13900 2400
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
|
@ -2908,8 +2944,9 @@ U 1 1 6065D34D
|
|||
P 13200 950
|
||||
F 0 "C34" H 13210 1020 50 0000 L CNN
|
||||
F 1 "0.1 uF" H 13210 870 50 0000 L CNN
|
||||
F 2 "" H 13200 950 50 0001 C CNN
|
||||
F 2 "Capacitor_SMD:C_0402_1005Metric" H 13200 950 50 0001 C CNN
|
||||
F 3 "~" H 13200 950 50 0001 C CNN
|
||||
F 4 "963-EMF105B7104KVHF" H 13200 950 50 0001 C CNN "Mouser"
|
||||
1 13200 950
|
||||
0 -1 -1 0
|
||||
$EndComp
|
||||
|
@ -2942,8 +2979,9 @@ U 1 1 6065D361
|
|||
P 12600 1350
|
||||
F 0 "R19" H 12630 1370 50 0000 L CNN
|
||||
F 1 "4k7R" H 12630 1310 50 0000 L CNN
|
||||
F 2 "" H 12600 1350 50 0001 C CNN
|
||||
F 2 "Resistor_SMD:R_0402_1005Metric" H 12600 1350 50 0001 C CNN
|
||||
F 3 "~" H 12600 1350 50 0001 C CNN
|
||||
F 4 "71-CRCW04024K70FKEDC" H 12600 1350 50 0001 C CNN "Mouser"
|
||||
1 12600 1350
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
|
@ -3035,8 +3073,9 @@ U 1 1 608DF700
|
|||
P 9650 3400
|
||||
F 0 "R13" H 9680 3420 50 0000 L CNN
|
||||
F 1 "100kR" H 9680 3360 50 0000 L CNN
|
||||
F 2 "" H 9650 3400 50 0001 C CNN
|
||||
F 2 "Resistor_SMD:R_0603_1608Metric" H 9650 3400 50 0001 C CNN
|
||||
F 3 "~" H 9650 3400 50 0001 C CNN
|
||||
F 4 "71-CRCW0603100KFKEAC" H 9650 3400 50 0001 C CNN "Mouser"
|
||||
1 9650 3400
|
||||
1 0 0 -1
|
||||
$EndComp
|
||||
|
|
Loading…
Reference in New Issue