K-line compatibility analysis: optocoupler vs 510 ohm pull-up
R2 sweep (47-470 ohm) and CTR grade sweep at ISO 9141 minimum bus impedance. R2<=100 ohm works; BMW's R2=220 does not. Confirms transistor design is better fit for OBD-II K-line.
This commit is contained in:
parent
e78976b979
commit
e6fc5ad4e9
70
reference/opto_vs_kline_510.cir
Normal file
70
reference/opto_vs_kline_510.cir
Normal file
@ -0,0 +1,70 @@
|
||||
* Optocoupler (PC817) vs K-Line: Can it handle 510 ohm pull-up?
|
||||
* Tests BMW opto design against OBD-II K-line worst-case impedance
|
||||
* R2 sweep to find if any value works at 510 ohm + 10400 baud
|
||||
* PC817 pin order: 1=Anode, 2=Cathode, 3=Collector, 4=Emitter
|
||||
|
||||
.param R2val 220
|
||||
|
||||
V_BAT V12 0 12
|
||||
V_MCU VCC 0 3.3
|
||||
|
||||
* === TX Test Signal at 10400 baud (96.15us bit period) ===
|
||||
* Two pulses to show both edges
|
||||
V_TX TX 0 PWL(
|
||||
+ 0u 0
|
||||
+ 99u 0
|
||||
+ 100u 3.3
|
||||
+ 292u 3.3
|
||||
+ 292.5u 0
|
||||
+ 580u 0
|
||||
+ 580.5u 3.3
|
||||
+ 772u 3.3
|
||||
+ 772.5u 0
|
||||
+ 1500u 0)
|
||||
|
||||
* === K-Line Bus Model: 510 ohm pull-up (ISO 9141 minimum spec) ===
|
||||
R_PULL V12 KLINE 510
|
||||
C_BUS KLINE 0 100p
|
||||
|
||||
* === TX Driver: Q1 (BC547B) ===
|
||||
R5 TX R5_R3 470
|
||||
R3 R5_R3 Q1B 10k
|
||||
Q1 Q1C Q1B 0 BC547B
|
||||
|
||||
* === TX Optocoupler (U2) ===
|
||||
R2 VCC U2_A {R2val}
|
||||
XU2 U2_A Q1C KLINE 0 PC817 Igain=1m
|
||||
|
||||
* === RX Optocoupler (U1) on same K-Line wire ===
|
||||
R1_RX KLINE U1_A 2k
|
||||
XU1 U1_A 0 VCC RX PC817 Igain=1m
|
||||
R4_RX RX 0 1k
|
||||
|
||||
* === PC817 Subcircuit ===
|
||||
.subckt PC817 1 2 3 4
|
||||
R1 N003 2 2
|
||||
D1 1 N003 LD
|
||||
G1 3 N004 N003 2 {Igain}
|
||||
C1 1 2 18p
|
||||
Q1 3 N004 4 [4] NP
|
||||
.model LD D(Is=1e-20 Cjo=18p)
|
||||
.model NP NPN(Bf=1200 Vaf=140 Ikf=100m Rc=1 Cjc=19p Cje=7p Cjs=7p C2=3e-15)
|
||||
.ends PC817
|
||||
|
||||
* === BC547B Model ===
|
||||
.model BC547B NPN(IS=2.39E-14 NF=1.008 ISE=3.545E-15 NE=1.541 BF=294.3 IKF=0.1357 VAF=63.2 NR=1.004 ISC=6.272E-14 NC=1.243 BR=7.946 IKR=0.1144 VAR=25.9 RB=1 IRB=1.00E-06 RBM=1 RE=0.4683 RC=0.85 XTB=0 EG=1.11 XTI=3 CJE=1.358E-11 VJE=0.65 MJE=0.3279 TF=4.391E-10 XTF=120 VTF=2.643 ITF=0.7495 PTF=0 CJC=3.728E-12 VJC=0.3997 MJC=0.2955 XCJC=0.6193 TR=1.00E-32 CJS=0 VJS=0.75 MJS=0.333 FC=0.9579 Vceo=45 Icrating=100m mfg=NXP)
|
||||
|
||||
* === Sweep R2 to find what works at 510 ohm bus ===
|
||||
.step param R2val list 47 68 100 150 220 330 470
|
||||
|
||||
.tran 0 1500u 0 0.1u
|
||||
|
||||
* === Measurements ===
|
||||
.meas tran KLINE_HIGH MAX V(KLINE)
|
||||
.meas tran KLINE_LOW MIN V(KLINE)
|
||||
.meas tran KLINE_SWING PP V(KLINE)
|
||||
.meas tran LED_CURRENT MAX I(R2)
|
||||
.meas tran RX_HIGH MAX V(RX)
|
||||
.meas tran RX_LOW MIN V(RX)
|
||||
.backanno
|
||||
.end
|
||||
64
reference/opto_vs_kline_ctr.cir
Normal file
64
reference/opto_vs_kline_ctr.cir
Normal file
@ -0,0 +1,64 @@
|
||||
* Optocoupler vs K-Line: CTR grade sweep at 510 ohm + R2=100
|
||||
* Tests all PC817 grades with aggressive R2 at K-line impedance
|
||||
* PC817 pin order: 1=Anode, 2=Cathode, 3=Collector, 4=Emitter
|
||||
|
||||
.param CTRgain 1m
|
||||
|
||||
V_BAT V12 0 12
|
||||
V_MCU VCC 0 3.3
|
||||
|
||||
* === TX Test Signal at 10400 baud ===
|
||||
V_TX TX 0 PWL(
|
||||
+ 0u 0
|
||||
+ 99u 0
|
||||
+ 100u 3.3
|
||||
+ 292u 3.3
|
||||
+ 292.5u 0
|
||||
+ 580u 0
|
||||
+ 580.5u 3.3
|
||||
+ 772u 3.3
|
||||
+ 772.5u 0
|
||||
+ 1500u 0)
|
||||
|
||||
* === K-Line: 510 ohm pull-up ===
|
||||
R_PULL V12 KLINE 510
|
||||
C_BUS KLINE 0 100p
|
||||
|
||||
* === TX Driver ===
|
||||
R5 TX R5_R3 470
|
||||
R3 R5_R3 Q1B 10k
|
||||
Q1 Q1C Q1B 0 BC547B
|
||||
|
||||
* === TX Optocoupler (R2=100 for maximum LED current) ===
|
||||
R2 VCC U2_A 100
|
||||
XU2 U2_A Q1C KLINE 0 PC817 Igain={CTRgain}
|
||||
|
||||
* === RX Optocoupler on same K-Line ===
|
||||
R1_RX KLINE U1_A 2k
|
||||
XU1 U1_A 0 VCC RX PC817 Igain={CTRgain}
|
||||
R4_RX RX 0 1k
|
||||
|
||||
* === PC817 Subcircuit ===
|
||||
.subckt PC817 1 2 3 4
|
||||
R1 N003 2 2
|
||||
D1 1 N003 LD
|
||||
G1 3 N004 N003 2 {Igain}
|
||||
C1 1 2 18p
|
||||
Q1 3 N004 4 [4] NP
|
||||
.model LD D(Is=1e-20 Cjo=18p)
|
||||
.model NP NPN(Bf=1200 Vaf=140 Ikf=100m Rc=1 Cjc=19p Cje=7p Cjs=7p C2=3e-15)
|
||||
.ends PC817
|
||||
|
||||
* === BC547B Model ===
|
||||
.model BC547B NPN(IS=2.39E-14 NF=1.008 ISE=3.545E-15 NE=1.541 BF=294.3 IKF=0.1357 VAF=63.2 NR=1.004 ISC=6.272E-14 NC=1.243 BR=7.946 IKR=0.1144 VAR=25.9 RB=1 IRB=1.00E-06 RBM=1 RE=0.4683 RC=0.85 XTB=0 EG=1.11 XTI=3 CJE=1.358E-11 VJE=0.65 MJE=0.3279 TF=4.391E-10 XTF=120 VTF=2.643 ITF=0.7495 PTF=0 CJC=3.728E-12 VJC=0.3997 MJC=0.2955 XCJC=0.6193 TR=1.00E-32 CJS=0 VJS=0.75 MJS=0.333 FC=0.9579 Vceo=45 Icrating=100m mfg=NXP)
|
||||
|
||||
.step param CTRgain list 0.5m 1.0m 1.5m 2.3m 3.4m
|
||||
.tran 0 1500u 0 0.1u
|
||||
|
||||
.meas tran KLINE_HIGH MAX V(KLINE)
|
||||
.meas tran KLINE_LOW MIN V(KLINE)
|
||||
.meas tran LED_CURRENT MAX I(R2)
|
||||
.meas tran RX_HIGH MAX V(RX)
|
||||
.meas tran RX_LOW MIN V(RX)
|
||||
.backanno
|
||||
.end
|
||||
Loading…
x
Reference in New Issue
Block a user