Solid State ----------- .. jupyter-execute:: :hide-code: %config InlineBackend.figure_format = 'svg' import schemdraw from schemdraw import elements as elm S-R Latch (Transistors) ^^^^^^^^^^^^^^^^^^^^^^^ .. jupyter-execute:: :code-below: 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 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. jupyter-execute:: :code-below: 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()