Recalculate values for LP8867 and modify schematic and layout accordingly.

This commit is contained in:
Mario Hüttel 2021-03-29 20:10:02 +02:00
parent 7227febbfa
commit ca9ea3c9e8
3 changed files with 4177 additions and 3604 deletions

View File

@ -132,29 +132,29 @@ Wire Wire Line
Wire Wire Line Wire Wire Line
2900 3500 1850 3500 2900 3500 1850 3500
Wire Wire Line Wire Wire Line
1850 3500 1850 3700 1850 3500 1850 4500
$Comp $Comp
L Device:R R12 L Device:R R12
U 1 1 6060F6AC U 1 1 6060F6AC
P 1850 3850 P 1850 4650
F 0 "R12" H 1920 3896 50 0000 L CNN F 0 "R12" H 1920 4696 50 0000 L CNN
F 1 "33k" H 1920 3805 50 0000 L CNN F 1 "39k" H 1920 4605 50 0000 L CNN
F 2 "Resistor_SMD:R_0603_1608Metric" V 1780 3850 50 0001 C CNN F 2 "Resistor_SMD:R_0603_1608Metric" V 1780 4650 50 0001 C CNN
F 3 "~" H 1850 3850 50 0001 C CNN F 3 "~" H 1850 4650 50 0001 C CNN
1 1850 3850 1 1850 4650
1 0 0 -1 1 0 0 -1
$EndComp $EndComp
Wire Wire Line Wire Wire Line
1850 4000 1850 4150 1850 4800 1850 4950
$Comp $Comp
L power:GND #PWR0143 L power:GND #PWR0143
U 1 1 60610BC6 U 1 1 60610BC6
P 1850 4150 P 1850 4950
F 0 "#PWR0143" H 1850 3900 50 0001 C CNN F 0 "#PWR0143" H 1850 4700 50 0001 C CNN
F 1 "GND" H 1855 3977 50 0000 C CNN F 1 "GND" H 1855 4777 50 0000 C CNN
F 2 "" H 1850 4150 50 0001 C CNN F 2 "" H 1850 4950 50 0001 C CNN
F 3 "" H 1850 4150 50 0001 C CNN F 3 "" H 1850 4950 50 0001 C CNN
1 1850 4150 1 1850 4950
1 0 0 -1 1 0 0 -1
$EndComp $EndComp
Wire Wire Line Wire Wire Line
@ -194,7 +194,7 @@ L Device:R R11
U 1 1 6061C45B U 1 1 6061C45B
P 1500 3850 P 1500 3850
F 0 "R11" H 1430 3804 50 0000 R CNN F 0 "R11" H 1430 3804 50 0000 R CNN
F 1 "147k" H 1430 3895 50 0000 R CNN F 1 "56k" H 1430 3895 50 0000 R CNN
F 2 "Resistor_SMD:R_0603_1608Metric" V 1430 3850 50 0001 C CNN F 2 "Resistor_SMD:R_0603_1608Metric" V 1430 3850 50 0001 C CNN
F 3 "~" H 1500 3850 50 0001 C CNN F 3 "~" H 1500 3850 50 0001 C CNN
1 1500 3850 1 1500 3850
@ -223,8 +223,8 @@ L Device:L_Core_Ferrite L2
U 1 1 60625C92 U 1 1 60625C92
P 3350 2400 P 3350 2400
F 0 "L2" V 3575 2400 50 0000 C CNN F 0 "L2" V 3575 2400 50 0000 C CNN
F 1 "DE1205-33" V 3484 2400 50 0000 C CNN F 1 "DE0704-22" V 3484 2400 50 0000 C CNN
F 2 "shimatta_inductor:FerroCore_DE1205" H 3350 2400 50 0001 C CNN F 2 "shimatta_inductor:FerroCore_DE0704" H 3350 2400 50 0001 C CNN
F 3 "https://www.tme.eu/Document/d1f8b47d020ebf11f3b92c6891638dfa/de.pdf" H 3350 2400 50 0001 C CNN F 3 "https://www.tme.eu/Document/d1f8b47d020ebf11f3b92c6891638dfa/de.pdf" H 3350 2400 50 0001 C CNN
1 3350 2400 1 3350 2400
0 -1 -1 0 0 -1 -1 0
@ -345,7 +345,7 @@ L Device:R R10
U 1 1 6064ADF7 U 1 1 6064ADF7
P 5800 3000 P 5800 3000
F 0 "R10" V 5593 3000 50 0000 C CNN F 0 "R10" V 5593 3000 50 0000 C CNN
F 1 "130k" V 5684 3000 50 0000 C CNN F 1 "100k" V 5684 3000 50 0000 C CNN
F 2 "Resistor_SMD:R_0603_1608Metric" V 5730 3000 50 0001 C CNN F 2 "Resistor_SMD:R_0603_1608Metric" V 5730 3000 50 0001 C CNN
F 3 "~" H 5800 3000 50 0001 C CNN F 3 "~" H 5800 3000 50 0001 C CNN
1 5800 3000 1 5800 3000
@ -356,7 +356,7 @@ L Device:R R9
U 1 1 6064B526 U 1 1 6064B526
P 5800 2600 P 5800 2600
F 0 "R9" V 5593 2600 50 0000 C CNN F 0 "R9" V 5593 2600 50 0000 C CNN
F 1 "680k" V 5684 2600 50 0000 C CNN F 1 "560k" V 5684 2600 50 0000 C CNN
F 2 "Resistor_SMD:R_0603_1608Metric" V 5730 2600 50 0001 C CNN F 2 "Resistor_SMD:R_0603_1608Metric" V 5730 2600 50 0001 C CNN
F 3 "~" H 5800 2600 50 0001 C CNN F 3 "~" H 5800 2600 50 0001 C CNN
1 5800 2600 1 5800 2600
@ -389,7 +389,7 @@ L Device:C C57
U 1 1 60654433 U 1 1 60654433
P 6000 2600 P 6000 2600
F 0 "C57" H 6115 2646 50 0000 L CNN F 0 "C57" H 6115 2646 50 0000 L CNN
F 1 "10p" H 6115 2555 50 0000 L CNN F 1 "14p" H 6115 2555 50 0000 L CNN
F 2 "Capacitor_SMD:C_0603_1608Metric" H 6038 2450 50 0001 C CNN F 2 "Capacitor_SMD:C_0603_1608Metric" H 6038 2450 50 0001 C CNN
F 3 "~" H 6000 2600 50 0001 C CNN F 3 "~" H 6000 2600 50 0001 C CNN
1 6000 2600 1 6000 2600
@ -875,7 +875,7 @@ Wire Wire Line
Wire Wire Line Wire Wire Line
4300 5650 7350 5650 4300 5650 7350 5650
Text Notes 7700 2650 0 50 ~ 0 Text Notes 7700 2650 0 50 ~ 0
LEDs: L128-4095HA3500001\nVf: 3V\nIf: ~~70 mA LEDs: L128-4095HA3500001\nVf: 3V\nIf: ~~60 mA
Text Notes 5550 2250 0 50 ~ 0 Text Notes 5550 2250 0 50 ~ 0
V = ~~ 24V V = ~~ 24V
Text Notes 5550 2350 0 50 ~ 0 Text Notes 5550 2350 0 50 ~ 0
@ -926,4 +926,12 @@ F 3 "~" H 6650 2000 50 0001 C CNN
$EndComp $EndComp
Wire Wire Line Wire Wire Line
6450 2000 6450 2400 6450 2000 6450 2400
Text Notes 3250 2100 0 50 ~ 0
22 uH
Text Notes 2150 4650 0 50 ~ 0
Max Current = 60 mA
Text Notes 850 3900 0 50 ~ 0
f = 1.08 MHz
Text Notes 1650 1850 0 50 ~ 0
For the calculation of the component values see 'lp8867-calc.py'
$EndSCHEMATC $EndSCHEMATC

98
pcb/lp8867-calc.py Normal file
View File

@ -0,0 +1,98 @@
#!/bin/python
import numpy as np
import eseries as es
def calc_fsw_from_r_fset(r_fset):
fsw = 67600 / (r_fset / 1e3 + 6.4)
fsw = fsw * 1e3
return fsw
def calc_r_fset_from_fsw(fsw):
fsw = fsw / 1e3
r = 67600 / (fsw) - 6.4
r = r * 1e3
return r
def calc_r_iset_from_i(i):
i = i * 1e3
r = 2000 * 1.2 / i
r = r * 1e3
return r
def calc_i_from_r_iset(r):
r = r * 1e-3
i = 2000 * 1.2 / r
i = i * 1e-3
return i
def calc_vout(r1, r2, k):
r1 = r1 / 1000
r2 = r2 / 1000
v = (1.2 / r2 + k * 0.0387) * r1 + 1.2
return v
switching_freq = 1.1e6
output_voltage_nom = 24 + 0.9
inductor_value = 22e-6
input_voltage = 12
output_current_per_lane = 60e-3
desired_e_series = es.E12
r1 = 560e3
r2 = 100e3
# Calculate the parameters
print('Calculating for the given parameters:')
print(f'{switching_freq = }')
print(f'{output_voltage_nom = } and {input_voltage = }')
print(f'{inductor_value =}')
print(f'{desired_e_series = }')
print('')
rfset = calc_r_fset_from_fsw(switching_freq)
print(f'{rfset = }')
# Find the nearest value in the e series
rfset = es.find_nearest(desired_e_series, rfset)
f_sw = calc_fsw_from_r_fset(rfset)
print(f'The nearest value from the E series is: {rfset = }')
freq_error = (f_sw - switching_freq) / switching_freq * 100
print(f'Resulting switching frequency is {f_sw} (Error: {freq_error:.1f} %)')
print(f"Desired output current per lane is {output_current_per_lane} A")
r_iset = calc_r_iset_from_i(output_current_per_lane)
print(f'Resulting in {r_iset = }')
r_iset = es.find_nearest(desired_e_series, r_iset)
output_current_per_lane = calc_i_from_r_iset(r_iset)
print(f'Nearest e series value {r_iset = } resulting in an LED current of {output_current_per_lane} A')
d = (output_voltage_nom - input_voltage) / output_voltage_nom
d_inv = 1-d
print(f"Expected duty cycle: {d}")
i_ripple = (output_voltage_nom- input_voltage) / (2 * inductor_value * f_sw) * (input_voltage / output_voltage_nom)
print(f'Ripple current: {i_ripple} A')
i_sat_min = output_current_per_lane * 4 / d_inv + i_ripple
print(f'Minimum saturation current of inductor: {i_sat_min:.3f} A')
print(f'Voltage divider {r1 = } | {r2 = }')
print(f'Output voltage initial: {calc_vout(r1, r2, 0.88)} V')
print(f'Output voltage maximum: {calc_vout(r1, r2, 1)} V')
print(f'Output voltage minimum: {calc_vout(r1, r2, 0)} V')
ovp = output_voltage_nom + (r1/r2 + 1)*(2.3 - 1.2)
print(f'Over voltage protection: {ovp} V')
ratio = r1/r2
print(f'Resistance ratio is {ratio}')
if f_sw <= 1150e3:
ratio_range = (5, 10)
else:
ratio_range = (10, 20)
if ratio < ratio_range[0] or ratio > ratio_range[1]:
print('Ratio is outside recommended limits!')
# Loop stability
cfb = 1 / (2 * np.pi * 20e3 * r1 )
print(f'Loop stability capacitor value: {cfb} F')

File diff suppressed because it is too large Load Diff