Solid State

S-R Latch (Transistors)

../_images/solidstate_1_0.svg
d = schemdraw.Drawing()
Q1 = d.add(elm.BJT_NPN_C, reverse=True, lftlabel='Q1')
Q2 = d.add(elm.BJT_NPN_C, xy=[d.unit*2, 0], label='Q2')
d.add(elm.LINE, xy=Q1.collector, d='up', l=d.unit/2)

R1 = d.add(elm.RES, d='up', label='R1', move_cur=False)
d.add(elm.DOT, lftlabel='V1')
d.add(elm.RES, d='right', botlabel='R3', l=d.unit*.75)
d.add(elm.DOT)
d.push()
d.add(elm.LINE, d='up', l=d.unit/8)
d.add(elm.DOT_OPEN, label='Set')
d.pop()
d.add(elm.LINE, to=Q2.base)

d.add(elm.LINE, xy=Q2.collector, d='up', l=d.unit/2)
d.add(elm.DOT, rgtlabel='V2')
R2 = d.add(elm.RES, d='up', botlabel='R2', move_cur=False)
d.add(elm.RES, d='left', botlabel='R4', l=d.unit*.75)
d.add(elm.DOT)
d.push()
d.add(elm.LINE, d='up', l=d.unit/8)
d.add(elm.DOT_OPEN, label='Reset')
d.pop()
d.add(elm.LINE, to=Q1.base)

d.add(elm.LINE, xy=Q1.emitter, d='down', l=d.unit/4)
BOT = d.add(elm.LINE, d='right', tox=Q2.emitter)
d.add(elm.LINE, to=Q2.emitter)
d.add(elm.DOT, xy=BOT.center)
d.add(elm.GND, xy=BOT.center)

TOP = d.add(elm.LINE, endpts=[R1.end,R2.end])
d.add(elm.DOT, xy=TOP.center)
d.add(elm.LINE, xy=TOP.center, d='up', l=d.unit/8, rgtlabel='Vcc')
d.draw()

741 Opamp Internal Schematic

../_images/solidstate_2_0.svg
d = schemdraw.Drawing(fontsize=12, unit=2.5)
Q1 = d.add(elm.BjtNpn(label='Q1', lftlabel='+IN'))
Q3 = d.add(elm.BjtPnp('l', xy=Q1.emitter, anchor='emitter', lftlabel='Q3', flip=True))
d.add(elm.Line('d', xy=Q3.collector))
d.add(elm.Dot)
d.push()
d.add(elm.Line('r', l=d.unit/4))
Q7 = d.add(elm.BjtNpn(anchor='base', label='Q7'))
d.pop()
d.add(elm.Line('d', l=d.unit*1.25))
Q5 = d.add(elm.BjtNpn('l', anchor='collector', flip=True, lftlabel='Q5'))
d.add(elm.Line('l', xy=Q5.emitter, l=d.unit/2, lftlabel='OFST\nNULL', move_cur=False))
d.add(elm.Resistor('d', xy=Q5.emitter, label='R1\n1K'))
d.add(elm.Line('r', l=d.unit*.75))
d.add(elm.Dot)
R3 = d.add(elm.Resistor('u', label='R3\n50K'))
d.add(elm.Line(toy=Q5.base))
d.add(elm.Dot)
d.push()
d.add(elm.Line('l', to=Q5.base))
d.add(elm.Line('d', xy=Q7.emitter, toy=Q5.base))
d.add(elm.DOT)
d.pop()
d.add(elm.Line('right', l=d.unit/4))
Q6 = d.add(elm.BjtNpn(anchor='base', label='Q6'))
d.add(elm.Line(xy=Q6.emitter, l=d.unit/3, rgtlabel='\nOFST\nNULL', move_cur=False))
d.add(elm.Resistor('d', xy=Q6.emitter, label='R2\n1K'))
d.add(elm.Dot)

d.add(elm.Line('u', xy=Q6.collector, toy=Q3.collector))
Q4 = d.add(elm.BjtPnp('r', anchor='collector', label='Q4'))
d.add(elm.Line('l', xy=Q4.base, tox=Q3.base))
d.add(elm.Line('u', xy=Q4.emitter, toy=Q1.emitter))
Q2 = d.add(elm.BjtNpn('l', anchor='emitter', flip=True, lftlabel='Q2', rgtlabel='$-$IN'))
d.add(elm.Line('u', xy=Q2.collector, l=d.unit/3))
d.add(elm.Dot)
Q8 = d.add(elm.BjtPnp('l', lftlabel='Q8', anchor='base', flip=True))
d.add(elm.Line('d', xy=Q8.collector, toy=Q2.collector))
d.add(elm.Dot)
d.add(elm.Line('l', xy=Q2.collector, tox=Q1.collector))
d.add(elm.Line('u', xy=Q8.emitter, l=d.unit/4))
top = d.add(elm.Line('l', tox=Q7.collector))
d.add(elm.Line('d', toy=Q7.collector))

d.add(elm.Line('r', xy=top.start, l=d.unit*2))
d.add(elm.Line('d', l=d.unit/4))
Q9 = d.add(elm.BjtPnp('r', anchor='emitter', label='Q9', lblofst=-.1))
d.add(elm.Line('l', xy=Q9.base, tox=Q8.base))
d.add(elm.Dot(xy=Q4.base))
d.add(elm.Line('d', xy=Q4.base, l=d.unit/2))
d.add(elm.Line('r', tox=Q9.collector))
d.add(elm.Dot)
d.add(elm.Line('d', xy=Q9.collector, toy=Q6.collector))
Q10 = d.add(elm.BjtNpn('l', anchor='collector', flip=True, lftlabel='Q10'))
d.add(elm.Resistor('d', xy=Q10.emitter, toy=R3.start, label='R4\n5K'))
d.add(elm.Dot)

Q11 = d.add(elm.BjtNpn('r', xy=Q10.base, anchor='base', label='Q11'))
d.add(elm.Dot(xy=Q11.base))
d.add(elm.Line('u', l=d.unit/2))
d.add(elm.Line('r', tox=Q11.collector))
d.add(elm.Dot)
d.add(elm.Line('d', xy=Q11.emitter, toy=R3.start))
d.add(elm.Dot)
d.add(elm.Line('u', xy=Q11.collector, l=d.unit*2))
d.add(elm.Resistor(toy=Q9.collector, botlabel='R5\n39K'))
Q12 = d.add(elm.BjtPnp('l', anchor='collector', flip=True, lftlabel='Q12', lblofst=-.1))
d.add(elm.Line('u', xy=Q12.emitter, l=d.unit/4))
d.add(elm.Dot)
d.add(elm.Line('l', tox=Q9.emitter))
d.add(elm.Dot)
d.add(elm.Line('r', xy=Q12.base, l=d.unit/4))
d.add(elm.Dot)
d.push()
d.add(elm.Line('d', toy=Q12.collector))
d.add(elm.Line('l', tox=Q12.collector))
d.add(elm.Dot)
d.pop()
d.add(elm.Line('r', l=d.unit*1.5))
Q13 = d.add(elm.BjtPnp(anchor='base', label='Q13'))
d.add(elm.Line('u', l=d.unit/4))
d.add(elm.Dot)
d.add(elm.Line('l', tox=Q12.emitter))
K = d.add(elm.Line('d', xy=Q13.collector, l=d.unit/5))
d.add(elm.Dot)
d.add(elm.Line('d'))
Q16 = d.add(elm.BjtNpn('r', anchor='collector', label='Q16', lblofst=-.1))
d.add(elm.Line('l', xy=Q16.base, l=d.unit/3))
d.add(elm.Dot)
R7 = d.add(elm.Resistor('u', toy=K.end, label='R7\n4.5K'))
d.add(elm.Dot)
d.add(elm.Line('r', tox=Q13.collector, move_cur=False))
R8 = d.add(elm.Resistor('d', xy=R7.start, label='R8\n7.5K'))
d.add(elm.Dot)
d.add(elm.Line('r', tox=Q16.emitter))
J = d.add(elm.Dot)
d.add(elm.Line('u', toy=Q16.emitter))
Q15 = d.add(elm.BjtNpn('r', anchor='collector', xy=R8.end, label='Q15'))
d.add(elm.Line('l', xy=Q15.base, l=d.unit/2))
d.add(elm.Dot)
C1 = d.add(elm.Capacitor('u', toy=R7.end, label='C1\n30pF'))
d.add(elm.Line('r', tox=Q13.collector))
d.add(elm.Line('l', xy=C1.start, tox=Q6.collector))
d.add(elm.Dot)
d.add(elm.Line('d', xy=J.center, l=d.unit/2))
Q19 = d.add(elm.BjtNpn('r', anchor='collector', label='Q19'))
d.add(elm.Line('l', xy=Q19.base, tox=Q15.emitter))
d.add(elm.Dot)
d.add(elm.Line('u', toy=Q15.emitter, move_cur=False))
d.add(elm.Line('d', xy=Q19.emitter, l=d.unit/4))
d.add(elm.Dot)
d.add(elm.Line('left'))
Q22 = d.add(elm.BjtNpn('l', anchor='base', flip=True, lftlabel='Q22'))
d.add(elm.Line('u', xy=Q22.collector, toy=Q15.base))
d.add(elm.Dot)
d.add(elm.Line('d', xy=Q22.emitter, toy=R3.start))
d.add(elm.Dot)
d.add(elm.Line('l', tox=R3.start, move_cur=False))
d.add(elm.Line('r', tox=Q15.emitter))
d.add(elm.Dot)
d.push()
d.add(elm.Resistor('u', label='R12\n50K'))
d.add(elm.Line(toy=Q19.base))
d.pop()
d.add(elm.Line(tox=Q19.emitter))
d.add(elm.Dot)
R11 = d.add(elm.Resistor('u', label='R11\n50'))
d.add(elm.Line(toy=Q19.emitter))

d.add(elm.Line('u', xy=Q13.emitter, l=d.unit/4))
d.add(elm.Line('r', l=d.unit*1.5))
d.add(elm.Dot)
d.add(elm.Line(l=d.unit/4, rgtlabel='V+', move_cur=False))
d.add(elm.Line('d', l=d.unit*.75))
Q14 = d.add(elm.BjtNpn('r', anchor='collector', label='Q14'))
d.add(elm.Line('l', xy=Q14.base, l=d.unit/2))
d.push()
d.add(elm.Dot)
d.add(elm.Line('d', l=d.unit/2))
Q17 = d.add(elm.BjtNpn('l', anchor='collector', flip=True, lftlabel='Q17', lblofst=-.1))
d.add(elm.Line('r', xy=Q17.base, tox=Q14.emitter))
d.add(elm.Dot)
J = d.add(elm.Line('u', toy=Q14.emitter))
d.pop()
d.add(elm.Line(tox=Q13.collector))
d.add(elm.Dot)
d.add(elm.Resistor('d', xy=J.start, label='R9\n25'))
d.add(elm.Dot)
d.push()
d.add(elm.Line('l', tox=Q17.emitter))
d.add(elm.Line('u', toy=Q17.emitter))
d.pop()
d.add(elm.Line('d', l=d.unit/4))
d.add(elm.Dot)
d.add(elm.Line('r', l=d.unit/4, rgtlabel='OUT', move_cur=False))
d.add(elm.Resistor('d', label='R10\n50'))
Q20 = d.add(elm.BjtPnp(d='r', anchor='emitter', label='Q20'))
d.add(elm.Line('l', xy=Q20.base, l=d.unit/2))
d.add(elm.Line('u', toy=Q15.collector))
d.add(elm.Line('l', tox=Q15.collector))
d.add(elm.Dot)
d.add(elm.Line('d', xy=Q20.collector, toy=R3.start))
d.add(elm.Dot)
d.add(elm.Line('r', l=d.unit/4, rgtlabel='V-', move_cur=False))
d.add(elm.Line('l', tox=R11.start))
d.draw()