1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274
|
.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 "</g>" # 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
|