.PS
# LT3757DPV.m4
# https://html.alldatasheet.com/html-pdf/349964/LINER/LT3757/1234/8/LT3757.html
# https://en.wikipedia.org/wiki/Single-ended_primary-inductor_converter
# https://www.analog.com/media/en/technical-documentation/data-sheets/lt3757-3757a.pdf
#
# This diagram does not contain much repetitive structure so the code is long
# but straightforward.
cct_init
include(icsDPV.m4)
linethick = 1.2
ifelse(1,1,`
# This draws the symbolic chip with external circuitry
svg_font(sans-serif,9bp__)
define(`pinsep',`svg_baselineskip*2.5')
define(`hght',`9*pinsep')
define(`wdth',`0.6*hght')
Q1: LT3757
resistor(down_ dimen_*3/4 from Q1.VC); llabel(,22 k)
capacitor(down_ dimen_/2); llabel(6.8 nF); GNDL: dot
line from Q1.SS left_ dimen_/2; continue down_ to (Here,Q1.VC)
capacitor(to (Here,GNDL)); llabel(0.1 svg_micro`'F); dot
up_; M1: mosfet(,,TEDSQuB) with .G at Q1.GATE
dot(at (M1.S,Q1.SENSE)); {line to Q1.SENSE}; line from M1.S to (M1.S,Q1.VC)
resistor(down_ to (Here,GNDL)); llabel(,0.01 svg_ohm); dot
line from Q1.GND to (Q1.GND,GNDL); dot
capacitor(down_ from Q1.INTVCC to (Q1.INTVCC,GNDL))
llabel(,"4.7 svg_micro(F)" ljust "10 V" ljust "X5R" ljust); dot
ground
line up_ dimen_/3 from M1.D; DD: dot
diode(right_ dimen_,Z); DE: dot
{ resistor(down_ to (Here,Q1.FBX)); llabel(,"226 k")
line to(Here,Q1.VC); resistor(to (Here,GNDL)); llabel(,"16.2 k"); dot }
dot(at Here+(dimen_,0))
{ capacitor(down_ to (Here,GNDL),C+);
llabel(,"47 svg_micro(F)" ljust "35 V" ljust "x2"); dot }
dot(at Here+(dimen_,0))
{ capacitor(down_ to (Here,GNDL));
llabel(,"10 svg_micro(F)" ljust "25 V" ljust "X5R"); GG: dot; ground }
line from DE to Here+(dimen_/2,0); {line invis right dimen_}
"V`'svg_sub(OUT)" ljust at Here+(2bp__,5bp__) "24 V" ljust "2 A" ljust
line from Q1.RT left_ dimen_; continue down_ to (Here,Q1.VC)
resistor(to (Here,GNDL)); rlabel(,"41.2 k" rjust "300 kHz" rjust)
line to GG
line from Q1.VIN up_ dimen_/3; dot
dot(at (Q1.w,Here)-(dimen_,0))
{resistor(down_ to (Here,Q1.SHU)); llabel(,"200 k"); dot; {line to Q1.SHU}
resistor(down_ to (Here,Q1.SYNC)); llabel(,"43.2 k"); dot
{line to Q1.SYNC}; ground }
dot(at Here-(dimen_,0))
{capacitor(down_ to (Here,Q1.SHU))
llabel(,"10 svg_micro(F)" ljust "25 V" ljust "X5R" ljust); ground }
VIN: Here+(-dimen_/2,0); {line invis left_ 70bp__}
{"V`'svg_sub(IN)" at VIN rjust "8 V TO 16 V" rjust}
line from VIN to (DD,VIN); inductor(down_ to DD); llabel(,"10 svg_micro(H)")
"High efficiency" ljust below at (DE,Q1.n) "boost converter" ljust
command "" # end font
',`
# The operational diagram of the chip interior with external circuitry
maxpswid = 10
textht = 5bp__
lw = dimen_/4
define(`Pin',`P`'in`$1': box wid dimen_/3 ht dimen_/3 "`$1'" fill_(1)')
boardw = 13.5
boardh = 14
Board: box thick 2 wid boardw*dimen_ ht boardh*dimen_
define(`coord',`Board.sw+(`$1',`$2')*dimen_')
A11: opamp at coord(2.5,boardh-5)
LH_symbol(,wdth=0.5) at A11.C; "A11" at A11.NE above ljust
A12: opamp at A11+(0,-A11.ht*5/4); LH_symbol(,wdth=0.5) at A12.C
"A12" at A12.NE above ljust
D1112: dot(at (A11.In2.x-lw,(A11.y+A12.y)/2))
line from A11.In2 to (D1112,A11.In2) then to (D1112,A12.In1) then to A12.In1
G6: OR_gate with .w at (A11.Out.x+3*L_unit,(A11.y+A12.y)/2); {"G6" at G6}
line from G6.In1 left_ lw*5/4 then up A11.Out.y-G6.In1.y then to A11.Out
line from G6.In2 left_ lw*5/4 then up A12.Out.y-G6.In2.y then to A12.Out
line left_ lw from A11.In1; { "1.72 V" rjust }
line left_ lw from A12.In2; { "-0.88 V" rjust }
up_; Q3: bi_tr(,R) with .C at G6.Out+(3*lw,A11.ht*2)
"Q3" at Q3.ne above rjust
ground(at Q3.E); line up_ lw then left_ lw from Q3.C; Q3C: dot
S2: source(down_ elen_ with .end at Q3C,G); "2.5 V" at S2.n above
rlabel(,"S2"); larrow; "10 svg_micro(A)" at last arrow ljust
left_; G4: OR_gate(3) with .Out at Q3.B+(lw,0); line from G4.Out to Q3.B
G3: NAND_gate with .Out at G4.In2+(lw*3/2,0); line from G3.Out to G4.In2
line from G3.In2 right_ lw then up_ A11.Out.y-G6.In1.y # then right_ lw
left_; A9: opamp with .Out at Here
left_; A8: opamp at A9-(0,A9.ht*5/4); LH_symbol(,wdth=0.5) at A8.C
"A8" at A8.SE above rjust
line from G3.In1 to (A8.Out,G3.In1) then to A8.Out
D89: dot(at (A9.In2.x+lw,(A9.y+A8.y)/2))
line from A9.In1 to (D89,A9.In1) then to (D89,A8.In2) then to A8.In2
line from A9.In2 right_ lw; "17.5 V" ljust above at A9.In2
line from A8.In1 right_ lw;"2.7 V UP" ljust "2.6 V DOWN" ljust
line from G4.In1 right_ lw then down_ 3/2*G3.ht then right_ lw
box wid boxwid*2/3 ht boxht*2/3 "TSD" "165 svg_deg`'C"
D8: dot(at D89+(boxwid*1.75,0))
down_; INTVcc: mosfet(,R,TEDSQdB) with .D at D8+(0,lw)
B72: box ht boxht/3 "7.2 V LDO" with .e at INTVcc.G
dot(at (B72,D89)); line to B72.s; line from D8 to INTVcc.D
Pin(8) at (Board.e,D8); "INTV`'svg_sub(CC)" at Pin8.n+(0,2bp__) above rjust
line from D89 to Pin8.w
line from B72.n up_ lw/2
CL: box ht boxht*2/3 "CURRENT" "LIMIT" with .s at Here
line from CL.e to (INTVcc.S,CL); dot
line from G4.In3 right_ lw then up_ CL.n.y-G4.In3.y-boxht/2+lw
UVLO: box "INTERNAL" "REGULATOR" "AND UVLO" with .s at Here
"UVLO" at UVLO.sw below ljust
line from UVLO.e to (D8,UVLO.e); dot
Pin(10) at (Here,Board.n); "V`'svg_sub(IN)" at Pin10.se below ljust
line from INTVcc.S to Pin10.s
line up_ 2*lw from UVLO.n; DUV: dot; left_
A10: opamp(,,,,R) at (UVLO.e,Here); LH_symbol at A10.C
"A10" at A10.SE above rjust
line from A10.In1 right_ lw; "1.22 V" ljust
arrow from A10.Out left A10.Out.x-UVLO.w.x+lw
S1: source(down_ elen_ with .c at Here+(-dimen_/6,0),G)
rarrow; "I`'svg_sub(S1)" rjust at last arrow above "2 svg_micro(A)" rjust
ground(at S1.end,T)
line from A10.In2 right_ lw then up_ S1.start.y-A10.In2.y
dot; { "SHDN/UVLO" at last [].e ljust }
{ line from last [].e+(textoffset,3bp__) right_ 16bp__ }
{ line to S1.start }
{ Pin(9) at (Here,Board.n)}; line to Pin9.s
right_; A7: opamp with .n at (UVLO.x,G6.y-lw); "VC" at A7.nw rjust
line from A7.Out right_ A8.Out.x-A7.Out.x+lw
G5: OR_gate(3) with .In2 at Here
line from G5.In1 left_ lw then up G6.Out.y-G5.In1.y then to G6.Out; right_
G2: opamp(right_ dimen_,"","") with .NE at (D8.x,G5.y+A9.ht/4)
ground(at G2.SE)
Pin(7) at (Board.e,G2); "GATE" at Pin7.n above rjust
line from G2.E to Pin7.w; line from D8 to G2.NE
line from G2.w left_ dimen_*2/3
SR1: box ht G2.ht wid boxwid*2/3; "SR1" at SR1.n above
"R" at SR1.w ljust; "O" at SR1.e rjust; "S" at SR1.s above
line right_ from G5.Out to SR1.w
Pin(3) at (Q3C,Board.s); line from Q3C to Pin3.n; "SS" at Pin3.ne above ljust
D67: dot(at (G6.Out+(lw,0),A7.In1)); line to A7.In1
dot(at (Q3C.x,D67.y-dimen_)); down_
Q2: bi_tr(,R,P) with .B at Here; ground(at Q2.C); "Q2" at Q2.e ljust
line from Q2.E to (Q2.E,A7.In1); dot
A1: opamp(right_ dimen_,,,,R) at A12+(0,-3/2*dimen_); T1: dot(at (D67,A1))
A2: opamp(right_ dimen_,,,,R) at A1+(0,-A1.ht*5/4)
D12: dot(at (A1.w.x-lw,(A1.y+A2.y)/2))
Pin(2) at (Board.w,D12); line from Pin2.e to D12; "FBX" at Pin2.ne above ljust
line from A1.In2 to (D12,A1.In2) then to (D12,A2.In1) then to A2.In1
line from A1.In1 left_ lw; "1.6 V" rjust
line from A2.In2 left_ lw; "-0.8 V" rjust
Pin(1) at (Board.w,Q3C); "V`'svg_sub(CC)" at Pin1.ne above ljust
S3: source(down_ elen_ at ((Board.w+Pin3)/2,S2),G);rlabel(,"S3")
larrow("I`'svg_sub(S3)")
"2.5 V" at S3.start above; line from S3.end to (S3,Pin1); dot
diode(from T1 to A1.Out)
D2: diode(from (T1,A2) to A2.Out)
line from D2.start to (D2.start,Pin1) then to Pin1.e
left_; A6: opamp(,,,,R) with .Out at (SR1,A1)
A5: opamp at (A6,A6+(0,-A6.ht*5/4))
line from A6.In2 right_ lw; "108 mV" ljust
line from A5.In2 right_ lw; { dot; line to (Here,A6.In1) then to A6.In1 }
{Pin(6) at (Board.e,Here)}; line to Pin6.w; "SENSE" at Pin6.n above rjust
line from A5.In1 right_ lw then down_ dimen_
dot; ground; {Pin(11) at (Board.e,Here)}; line to Pin11.w
"GND" at Pin11.n above rjust
line from G5.In3 left_ lw then down G5.In3.y-A6.y then to A6.Out
Summer: circle rad 0.15 "svg_Sigma" with .w at (G5.Out,A5)
line from A7.In2 left lw then down_ A7.In2.y-Summer.y then to Summer.w
line from Summer.e to A5.Out
"V`'svg_sub(ISENSE)" at Summer.ne above ljust; "SLOPE" at Summer.nw above rjust
"RAMP" at Summer.sw below rjust
line down_ 2*lw from Summer.s
box ht boxht*2/3 with .n at Here "RAMP" "GENERATOR"
{[ line for_(1,3,1,`up_ dimen_/4 right_ dimen_/6 then down_ dimen_/4 then') \
up_ dimen_/4 right_ dimen_/6 ] with .sw at last box.n+(lw/2,lw/2)}
line down_ lw*3/2
OSC: box ht boxht*2/3 \
"100 kHZ-1 MHZ" "OSCILLATOR"
{[line right_ dimen_/2; [for_(1,4,1,`line from (m4x*dimen_/10,0) \
up_ dimen_/4')] with .s at last line ] with .sw at OSC.n+(lw/2,2bp__)}
line right_ from OSC.e to (SR1,OSC.e) then to SR1.s
G1: OR_gate with .Out at OSC.w+(-2*lw,0); line from G1.Out to OSC.w
A3: opamp with .Out at G1.In1+(-lw,0); line from A3.Out to G1.In1
line left_ lw from A3.In1; "1.25 V" rjust
line from OSC.s down_ A2.ht*3/4; up_
Q1: bi_tr with .C at Here; right_
A4: opamp(,,,,R) with .E at Q1.B; "+" at A4.w +(4pt__,0)
"FREQ" at A4.SE+(0,-lw) below ljust "PROG" ljust
line from A4.In2 left lw then down_ A4.ht/2; continue to (Q1.E,Here); dot
{Pin(4) at (Here,Board.s); "R`'svg_sub(T)" at Pin4.ne above ljust};
line from Q1.E to Pin4.n
line from A4.In1 left_ lw; "1.25 V " above
Pin(5) at (A4.w.x-3*lw,Board.s.y); "SYNC" at Pin5.ne above ljust
line from Pin5.n to (Pin5,G1.In2) then to G1.In2
line from A3.In2 left_ lw; continue to (Here,A4.w) then to A4.w
"FREQ" at (A3.In2.x-lw,A4.w.y+dimen_/2) ljust above "FOLD" ljust "BACK" ljust
D3: dot(at A3.In2-(lw,0)); right_
FFB: box ht boxht*2/3 "FREQUENCY" "FOLDBACK" at (A2,D3); line to D3
DFFB: dot(at Pin2.e+(2*lw,0))
line from FFB.w to (DFFB,FFB); continue to (Here,D1112) then to D1112
DF: dot(at (DFFB,FFB)); line down_ boxht
resistor(right_ elen_); llabel(,"R5") rlabel(,"8 k")
diode(right_ dimen_/3); llabel(,"D2")
reversed(`diode',right_ dimen_*2/3,Z); llabel(,"D3"); ground
foreach_(`gate',`"gate" at gate.C',A1,A2,A3,A4,A5,A6,A7,A9,G1,G2,G3,G4,G5)
line from Pin9.n up_ dimen_*2/3; dot
{resistor(left_ dimen_); rlabel(,"R4"); ground}
resistor(right_ dimen_); llabel(,"R3"); line up_ dimen_/2; VCC: dot
dot(at Here+(dimen_/2,0)); {capacitor(down_ dimen_/2,C+)
llabel(,"C`'svg_sub(IN)"); ground(,T)}
L1D: dot(at (Pin10,Here)); {line to Pin10.n}; {line to (Board.n,Here)
"V`'svg_sub(IN)" rjust}
line from Pin8.e right_ dimen_/4; capacitor(down_ dimen_/3)
{"C`'svg_sub(VCC)" at Pin8.ne ljust above}; ground
up_; M1: mosfet(,,TEDSQuB) with .G at Pin7.e; "M1" at M1.n above
inductor(right_ from L1D to (Board.e.x+lw,L1D.y),,,M); llabel(,"L1"); DL1: dot
line down_ 3*dimen_; continue to (M1.D,Here) then to M1.D
line from M1.S to (M1.S,Pin6); dot; {line to Pin6.e}
resistor(down_ to (Here,Pin11)); llabel(,"R`'svg_sub(SENSE)"); dot
ground; line to Pin11.e
capacitor(from DL1 right_ dimen_/2); llabel(,"C`'svg_sub(DC)"); T2: dot
diode(right_ dimen_,Z); { line right_ dimen_; "V`'svg_sub(OUT)" above}
dot(at Here+(dimen_/2,0)); line down_ lw; dot;
P3: parallel_(`Sep=dimen_*2/3; capacitor(down_ elen_)
rlabel("C`'svg_sub(OUT2)"); line down_ elen_/3',
`line down_ elen_/3; capacitor(down_ elen_*2/3,C)
llabel("C`'svg_sub(OUT1)")',
`resistor(down_ elen_*2/3); llabel(,"R2"); dot
{ line left_ lw; "FBX" above }
R1: resistor(down_ elen_*2/3); llabel(,"R1"); dot')
dot; ground
inductor(from T2 to (T2,P3.E3.R1.end),,,M); rlabel(,"L2")
line to P3.E3.R1.end
resistor(from Pin4.s down_ dimen_*2/3); llabel(,"R`'svg_sub(T)"); ground(,T)
capacitor(from Pin3.s down_ dimen_*2/3); llabel(,"C`'svg_sub(SS)"); ground(,T)
line from Pin2.w left_ lw; "FBX" rjust
TV: dot(at Pin1-(dimen_/2,0))
resistor(down_ dimen_*2/3); llabel(,"R`'svg_sub(C)")
capacitor(down_ dimen_*2/3); llabel("C`'svg_sub(C1)"); dot; ground
line left_ dimen_*0.6
capacitor(down_ from (Here,TV) to Here); llabel("C`'svg_sub(C2)")
line from Pin1.w to last line.start
move to Board.se+(5bp__,20bp__)
"LT3757 block diagram" ljust "working as a" ljust "SEPIC converter" ljust
')
.PE