|
Packit |
0986c0 |
#
|
|
Packit |
0986c0 |
# $Id: electron.dem,v 1.9 2008/04/30 04:16:05 sfeam Exp $
|
|
Packit |
0986c0 |
#
|
|
Packit |
0986c0 |
# Electronics demo
|
|
Packit |
0986c0 |
#
|
|
Packit |
0986c0 |
# Bipolar Transistor (NPN) Mutual Characteristic
|
|
Packit |
0986c0 |
Ie(Vbe)=Ies*exp(Vbe/kT_q)
|
|
Packit |
0986c0 |
Ic(Vbe)=alpha*Ie(Vbe)+Ico
|
|
Packit |
0986c0 |
alpha = 0.99
|
|
Packit |
0986c0 |
Ies = 4e-14
|
|
Packit |
0986c0 |
Ico = 1e-09
|
|
Packit |
0986c0 |
kT_q = 0.025
|
|
Packit |
0986c0 |
set dummy Vbe
|
|
Packit |
0986c0 |
set grid
|
|
Packit |
0986c0 |
set offsets
|
|
Packit |
0986c0 |
unset log
|
|
Packit |
0986c0 |
unset polar
|
|
Packit |
0986c0 |
set samples 160
|
|
Packit |
0986c0 |
set title "Mutual Characteristic of a Transistor"
|
|
Packit |
0986c0 |
set xlabel "Vbe (base emmitter voltage)"
|
|
Packit |
0986c0 |
set xrange [0 : 0.75]
|
|
Packit |
0986c0 |
set ylabel "Ic (collector current)"
|
|
Packit |
0986c0 |
set yrange [0 : 0.005]
|
|
Packit |
0986c0 |
set key box
|
|
Packit |
0986c0 |
set key at .2,.0045
|
|
Packit |
0986c0 |
set format y "%.4f"
|
|
Packit |
0986c0 |
plot Ic(Vbe)
|
|
Packit |
0986c0 |
set format "%g"
|
|
Packit |
0986c0 |
|
|
Packit |
0986c0 |
pause -1 "Hit return to continue"
|
|
Packit |
0986c0 |
|
|
Packit |
0986c0 |
# Junction Field Effect Transistor (JFET) Mutual Characteristic
|
|
Packit |
0986c0 |
# drain current above pinch off
|
|
Packit |
0986c0 |
Ida(Vd)=Ido*(1-Vg/Vp)**2
|
|
Packit |
0986c0 |
# drain current below pinch off
|
|
Packit |
0986c0 |
Idb(Vd)=Ido*(2*Vd*(Vg-Vp)-Vd*Vd)/(Vp*Vp)
|
|
Packit |
0986c0 |
# drain current
|
|
Packit |
0986c0 |
Id(Vd)= (Vd>Vg-Vp) ? Ida(Vd) : Idb(Vd)
|
|
Packit |
0986c0 |
# drain current at zero gate voltage
|
|
Packit |
0986c0 |
Ido = 2.5
|
|
Packit |
0986c0 |
# pinch off voltage
|
|
Packit |
0986c0 |
Vp = -1.25
|
|
Packit |
0986c0 |
# gate voltage
|
|
Packit |
0986c0 |
Vg = 0
|
|
Packit |
0986c0 |
set dummy Vd
|
|
Packit |
0986c0 |
unset grid
|
|
Packit |
0986c0 |
unset key
|
|
Packit |
0986c0 |
#set offsets 0, 1, 0, 0
|
|
Packit |
0986c0 |
set title "JFET Mutual Characteristic"
|
|
Packit |
0986c0 |
set xlabel "Drain voltage Vd (V)"
|
|
Packit |
0986c0 |
set xrange [0 : 4]
|
|
Packit |
0986c0 |
set ylabel "Drain current Id (mA)"
|
|
Packit |
0986c0 |
set yrange [0 : 5]
|
|
Packit |
0986c0 |
set rmargin 12
|
|
Packit |
0986c0 |
set label 1 "-0.5 Vp" at 4.1,0.625
|
|
Packit |
0986c0 |
set label 2 "-0.25 Vp" at 4.1,1.4
|
|
Packit |
0986c0 |
set label 3 "0" at 4.1,2.5
|
|
Packit |
0986c0 |
set label 4 "Vg = 0.5 Vp" at 4.1,3.9
|
|
Packit |
0986c0 |
plot Vg=0.5*Vp,Id(Vd),Vg=0.25*Vp,Id(Vd),Vg=0,Id(Vd),Vg=-0.25*Vp,Id(Vd)
|
|
Packit |
0986c0 |
|
|
Packit |
0986c0 |
pause -1 "Hit return to continue"
|
|
Packit |
0986c0 |
unset label
|
|
Packit |
0986c0 |
unset rmargin
|
|
Packit |
0986c0 |
|
|
Packit |
0986c0 |
# show off double axes
|
|
Packit |
0986c0 |
|
|
Packit |
0986c0 |
# amplitude frequency response
|
|
Packit |
0986c0 |
A(jw) = ({0,1}*jw/({0,1}*jw+p1)) * (1/(1+{0,1}*jw/p2))
|
|
Packit |
0986c0 |
p1 = 10
|
|
Packit |
0986c0 |
p2 = 10000
|
|
Packit |
0986c0 |
set dummy jw
|
|
Packit |
0986c0 |
set grid x y2
|
|
Packit |
0986c0 |
set logscale xy
|
|
Packit |
0986c0 |
set log x2
|
|
Packit |
0986c0 |
unset log y2
|
|
Packit |
0986c0 |
set key default
|
|
Packit |
0986c0 |
set key bottom center box
|
|
Packit |
0986c0 |
set title "Amplitude and Phase Frequency Response"
|
|
Packit |
0986c0 |
set xlabel "jw (radians)"
|
|
Packit |
0986c0 |
set xrange [1.1 : 90000.0]
|
|
Packit |
0986c0 |
set ylabel "magnitude of A(jw)"
|
|
Packit |
0986c0 |
set y2label "Phase of A(jw) (degrees)"
|
|
Packit |
0986c0 |
set ytics nomirror tc lt 1
|
|
Packit |
0986c0 |
set y2tics nomirror tc lt 3
|
|
Packit |
0986c0 |
set xtics mirror
|
|
Packit |
0986c0 |
set tics out
|
|
Packit |
0986c0 |
set autoscale y
|
|
Packit |
0986c0 |
set autoscale y2
|
|
Packit |
0986c0 |
plot abs(A(jw)) lt 1, 180/pi*arg(A(jw)) axes x1y2 lt 3
|
|
Packit |
0986c0 |
|
|
Packit |
0986c0 |
pause -1 "Hit return to continue"
|
|
Packit |
0986c0 |
|
|
Packit |
0986c0 |
# undo what we've done
|
|
Packit |
0986c0 |
reset
|