Skip to content

Commit 2d05a1b

Browse files
committed
optimization - zeners not behaving
1 parent 138240f commit 2d05a1b

File tree

3 files changed

+15
-22
lines changed

3 files changed

+15
-22
lines changed

edg/parts/BoostConverter_TexasInstruments.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -228,8 +228,8 @@ def contents(self):
228228
self.connect(self.power_path.pwr_out, self.pwr_out)
229229
self.connect(self.power_path.switch, self.ic.sw)
230230

231-
self.cf = self.Block(Capacitor( # arbitrary 15% target tolerance for zero location
232-
capacitance=(1/(8000*Ohm(tol=0.15))).shrink_multiply(1/(2 * math.pi * self.fb.actual_rtop)),
231+
self.cf = self.Block(Capacitor( # arbitrary target tolerance for zero location for capacitance flexibility
232+
capacitance=(1/(8000*Ohm(tol=0.35))).shrink_multiply(1/(2 * math.pi * self.fb.actual_rtop)),
233233
voltage=self.pwr_out.voltage_out
234234
))
235235
self.connect(self.cf.neg.adapt_to(AnalogSink()), self.ic.fb)

examples/UsbSourceMeasure/SourceMeasureControl.kicad_sch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6011,7 +6011,7 @@
60116011
(justify right)
60126012
)
60136013
)
6014-
(property "Value" "SMA6J5.0A"
6014+
(property "Value" "SMA6J5.0A-TR"
60156015
(at 271.78 96.5199 90)
60166016
(effects
60176017
(font
@@ -9590,7 +9590,7 @@
95909590
(justify left)
95919591
)
95929592
)
9593-
(property "Value" "SMA6J33A"
9593+
(property "Value" "SMA6J33A-TR"
95949594
(at 271.78 88.8999 90)
95959595
(effects
95969596
(font

examples/test_usb_source_measure.py

Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -467,7 +467,7 @@ def contents(self) -> None:
467467
self.usb.pwr,
468468
self.Block(SeriesPowerFuse(trip_current=(7, 8)*Amp)),
469469
self.Block(SeriesPowerFerriteBead()),
470-
imp.Block(ProtectionZenerDiode(voltage=(32, 38)*Volt)), # for parts commonality w/ the Vconv zener
470+
imp.Block(ProtectionZenerDiode(voltage=(32, 40)*Volt)), # for parts commonality w/ the Vconv zener
471471
self.vusb_sense.sense_pos
472472
)
473473
self.vusb = self.connect(self.vusb_sense.sense_neg)
@@ -520,7 +520,7 @@ def contents(self) -> None:
520520
output_ripple_limit=(25*(7/8))*mVolt # fill empty space with caps
521521
)),
522522
imp.Block(ForcedVoltage((2, 30)*Volt)), # at least 2v to allow current sensor to work
523-
imp.Block(ProtectionZenerDiode(voltage=(32, 38)*Volt)), # zener shunt in case the boost converter goes crazy
523+
imp.Block(ProtectionZenerDiode(voltage=(32, 40)*Volt)), # zener shunt in case the boost converter goes crazy
524524
self.Block(VoltageTestPoint())
525525
)
526526
self.connect(self.conv.pwr_logic, self.v5)
@@ -913,7 +913,6 @@ def refinements(self) -> Refinements:
913913
(['reg_v5', 'power_path', 'in_cap', 'cap', 'exact_capacitance'], False),
914914
(['reg_v5', 'power_path', 'in_cap', 'cap', 'voltage_rating_derating'], 0.85),
915915
(['reg_v12', 'cf', 'voltage_rating_derating'], 0.85),
916-
(['reg_v12', 'cf', 'require_basic_part'], False),
917916
(['conv', 'power_path', 'in_cap', 'cap', 'exact_capacitance'], False),
918917
(['conv', 'power_path', 'in_cap', 'cap', 'voltage_rating_derating'], 0.85),
919918
(['conv', 'power_path', 'out_cap', 'cap', 'exact_capacitance'], False),
@@ -924,7 +923,6 @@ def refinements(self) -> Refinements:
924923
(['control', 'driver', 'cap_in3', 'cap', 'voltage_rating_derating'], 0.9),
925924
(['control', 'driver', 'cap_in3', 'cap', 'require_basic_part'], False),
926925
(['reg_vcontrol', 'cf', 'voltage_rating_derating'], 0.85),
927-
(['reg_vcontrol', 'cf', 'require_basic_part'], False),
928926
(['reg_vcontrol', 'power_path', 'out_cap', 'cap', 'exact_capacitance'], False),
929927
(['reg_vcontrol', 'power_path', 'out_cap', 'cap', 'voltage_rating_derating'], 0.85),
930928
(['conv', 'boost_sw', 'high_fet', 'gate_voltage'], ParamValue(
@@ -938,10 +936,6 @@ def refinements(self) -> Refinements:
938936
(['conv', 'buck_sw', 'low_fet', 'part'], ParamValue(['conv', 'boost_sw', 'low_fet', 'actual_part'])),
939937
(['conv', 'buck_sw', 'high_fet', 'part'], ParamValue(['conv', 'boost_sw', 'low_fet', 'actual_part'])),
940938
(['conv', 'boost_sw', 'high_fet', 'part'], ParamValue(['conv', 'boost_sw', 'low_fet', 'actual_part'])),
941-
(['conv', 'boost_sw', 'low_fet', 'manual_gate_charge'], Range.exact(100e-9)), # reasonable worst case estimate
942-
(['conv', 'boost_sw', 'high_fet', 'manual_gate_charge'], ParamValue(['conv', 'boost_sw', 'low_fet', 'manual_gate_charge'])),
943-
(['conv', 'buck_sw', 'low_fet', 'manual_gate_charge'], ParamValue(['conv', 'boost_sw', 'low_fet', 'manual_gate_charge'])),
944-
(['conv', 'buck_sw', 'high_fet', 'manual_gate_charge'], ParamValue(['conv', 'boost_sw', 'low_fet', 'manual_gate_charge'])),
945939
(['conv', 'boost_sw', 'gate_res'], Range.from_tolerance(4.7, 0.05)),
946940
(['conv', 'buck_sw', 'gate_res'], ParamValue(['conv', 'boost_sw', 'gate_res'])),
947941

@@ -957,12 +951,6 @@ def refinements(self) -> Refinements:
957951
(['control', 'driver', 'low_fet', 'footprint_spec'], 'Package_TO_SOT_THT:TO-220-3_Horizontal_TabUp'),
958952
(['control', 'driver', 'low_fet', 'part_spec'], 'IRF9540'), # has a 30V/4A SOA
959953

960-
(['control', 'ifilt', 'c', 'require_basic_part'], False), # no 10nF caps in basic library for some reason
961-
962-
(['control', 'snub_r', 'res', 'footprint_spec'], ParamValue(['control', 'isense', 'ranges[0]', 'isense', 'res', 'res', 'footprint_spec'])),
963-
(['control', 'snub_r', 'res', 'require_basic_part'], False),
964-
(['control', 'snub_c', 'cap', 'require_basic_part'], False),
965-
966954
(['prot_vusb', 'diode', 'footprint_spec'], 'Diode_SMD:D_SMA'),
967955
(['prot_conv', 'diode', 'footprint_spec'], 'Diode_SMD:D_SMA'),
968956
(['prot_3v3', 'diode', 'footprint_spec'], 'Diode_SMD:D_SMA'),
@@ -971,22 +959,27 @@ def refinements(self) -> Refinements:
971959
(['control', 'isense', 'ranges[0]', 'pwr_sw', 'ic', 'led_current_recommendation'], Range(0.002, 0.010)),
972960
(['control', 'isense', 'ranges[1]', 'pwr_sw', 'ic', 'led_current_recommendation'], Range(0.002, 0.010)),
973961
(['control', 'isense', 'ranges[2]', 'pwr_sw', 'ic', 'led_current_recommendation'], Range(0.002, 0.010)),
974-
(['vusb_sense', 'Rs', 'res', 'res', 'require_basic_part'], False),
975-
(['convin_sense', 'Rs', 'res', 'res', 'require_basic_part'], False),
976-
977962
(['spk_drv', 'pwr', 'current_draw'], Range(6.0e-7, 0.25)), # assume speakers will be pretty mild
978963

979-
# user more basic parts
964+
# use more basic parts
965+
(['control', 'snub_c', 'cap', 'voltage_rating_derating'], 0.60), # allow use of a 50V basic part caps
966+
(['control', 'ifilt', 'c', 'voltage_rating_derating'], 0.60),
967+
980968
# note, can't limit 5v reg and 12v reg feedback series, no overlap w/ downstream part supply voltages
981969
(['ramp', 'div', 'series'], 6),
982970
(['oled', 'iref_res', 'resistance'], Range.from_tolerance(1e6, 0.05)), # use 1M resistor, up from 910k
983971
(['ramp', 'drv', 'gate_voltage'], Range(0.0, 10.0)), # gate max isn't parsed, but typically up to 20v
984972

985973
# reduce line items
986974
(['convin_sense', 'Rs', 'res', 'res', 'part'], ParamValue(['vusb_sense', 'Rs', 'res', 'res', 'part'])),
975+
(['vusb_sense', 'Rs', 'res', 'res', 'require_basic_part'], False),
976+
(['convin_sense', 'Rs', 'res', 'res', 'require_basic_part'], False),
987977
(['reg_3v3', 'power_path', 'inductor', 'part'], ParamValue(['reg_v5', 'power_path', 'inductor', 'actual_part'])),
988978
(['reg_vcontrol', 'power_path', 'inductor', 'part'], ParamValue(['reg_v12', 'power_path', 'inductor', 'actual_part'])),
989979
(['filt_vcontroln', 'fb', 'part'], ParamValue(['dac_ferrite', 'fb', 'actual_part'])),
980+
(['prot_vusb', 'diode', 'part'], ParamValue(['control', 'tvs_p', 'kicad_value'])),
981+
(['prot_conv', 'diode', 'part'], ParamValue(['control', 'tvs_p', 'kicad_value'])),
982+
(['prot_3v3', 'diode', 'part'], ParamValue(['control', 'tvs_n', 'kicad_value'])),
990983

991984
# out of stock / unassembleable parts
992985
(['conv', 'power_path', 'out_cap', 'cap', 'part'], "C3216X5R1V226MTJ00E"),

0 commit comments

Comments
 (0)