PS
# Reg723.m4
# see Horowitz and Hill p 600
cct_init
svg_font(sans-serif,10bp__)
R1: resistor(down_ dimen_*3/4)
rlabel(,"R`'svg_sub(1)" rjust "1.15k" rjust)
R2: potentiometer(down_ dimen_) with .Start at Here
rlabel(,"R`'svg_sub(2)" rjust "2.0k" rjust)
"V`'svg_sub(adj)" at R2.T1 below
R3: resistor(down_ dimen_ from R2.End)
rlabel(,"R`'svg_sub(3)" rjust "4.02k" wid 4*textht rjust)
ground
line right_ dimen_*4/3 from R2.T1
A: opamp(,,,,R) with .In1 at Here
line right_ dimen_*3/4 from A.Out
B1: dot
Q2: bi_tr(up_ dimen_) with .B at Here
line right_ dimen_ from Q2.E
Q1: bi_tr(up_ dimen_*3/2) with .B at Here; heatsink(at Q1.e+(dimen_/2,0),,D)
"heat" ljust at last [].e+(dimen_/5,0) "sink" ljust
dot(at Q1.E)
resistor(down_ dimen_*3/2)
llabel(,"0.25`'svg_Omega" ljust "3W" ljust)
P5: dot
Q3: bi_tr(up_ dimen_,R) with .B at (Q2.C.x,Q1.E.y); dot(at Q3.C)
{ line to Q2.B }
resistor(left_ dimen_ from Q1.E); llabel(,"100")
line to Q3.B
line from Q3.E to (Q3.E,P5) then to P5+(dimen_,0)
Out: "+5V" ljust "2A" ljust
dot(at P5+(dimen_/2,0))
capacitor(down_ dimen_,C+); ground(,T)
rlabel(,"10`'svg_micro`'F" rjust "15V" rjust)
Vref: box wid boxwid/2 ht boxht/2 with .w at (A.E.x,A.n.y+dimen_/3) \
"V`'svg_sub(ref)"
Bx: box thick 0.4 wid Q2.C.x-A.w.x+dimen_/2 rad 0.1 \
ht Vref.n.y-Q3.E.y+dimen_/3 with .sw at (A.In1.x-dimen_/7,Q3.E.y) dashed
"723" at Bx.n above
line from Vref.w to (Bx.w,Vref.w)
{ "V`'svg_sub(ref)" above rjust }
continue to ((R1.x+Here.x)/2,Here.y); continue to (Here,R1.start) \
then to R1.start
"+7.15V" above ljust
P6: dot(at P5-(dimen_*2/3,0))
line from Q3.C left_ dimen_/2 then down_ Q3.C.y-Bx.s.y
Cp: capacitor(down_ dimen_*3/2); rlabel(,"100pF"); dot
line from A.In2 left_ dimen_/2 then down_ A.In2.y-Cp.end.y then to Cp.end
R4: resistor(right_ to (P6,Here)); rlabel(,"R`'svg_sub(4) 1.5k"); line to P6
line from A.SE to (A.SE,Bx.s); ground
"COMP" at (Cp,Bx.s) below rjust
"CS" at (Q3.E,Bx.s) below ljust
"CL" at (Bx.e,Q1.E) below ljust
"NI" at (Bx.w,A.In1) rjust above
"V`'svg_sub(out)" at (Bx.e,Q1.B) above ljust
"INV" at (Bx.w,A.In2) rjust above
line from A.NE to (A.NE.x,Bx.n.y+dimen_/2)
{ "V`'svg_sub(+)" at (Here,Bx.n) above rjust }
continue to (Out,Here)
{"+V`'svg_sub(in) (unreg)" wid 8*textht "+9.5V (min)" below}
{dot(at (Q2.C,Here)); line to Q2.C
"V`'svg_sub(C)" at (Here,Bx.n) above rjust }
dot(at (Q1.C,Here)); line to Q1.C
"Q`'svg_sub(1)" ljust "TIP41" ljust