from pylab import *
from scipy import interpolate
rc('text', usetex=True)
rc('text.latex',preamble = \
[
    r'\usepackage[russian]{babel}',
    r'\usepackage{amsmath}',
    r'\usepackage{amssymb}',
])
a4size=21/2.56
rc('font',family='serif',size = 12)
rc('axes',labelsize=14)
rc('figure',figsize=[a4size*0.45,a4size*0.45*3/4])
rc('legend',fontsize=9)
# # Задание 2.1
# # Ток не выше 6 мА
# # Напряжение в В
figure('Задание 2.1')
U = np.array([0.2,0.4,0.6,0.7,0.8,0.9,1,1.2,1.4,1.6,1.8,2,2.1])
I = np.array([0,0,0.0024,0.017,0.062,0.190,0.474,1.75,2.7,3.6,4.6,5.54,6])
plot(U,I,label = 'Входная характеристика')
ylabel(r'$I_{\text{б}}, \text{ мА}$')
xlabel(r'$U_{\text{б}}, \text{ В}$')
savefig('/home/kannab/documents/bipolar/fig/1.pdf',bbox_inches='tight')

# # # Задание 2.2. Измерение переходных характеристик транзистора I_к = f(I_б)
# # # Ток коллектора не выше 6 мА
# # # Напряжение на коллекторе U_к = 0.5 В
R = 1e5
figure('Задание 2.2')
Ib = np.array([1,1.5,2,2.5,3,3.5,4,4.5,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20])/R # А 
Ik = np.array([0.02,0.1,0.25,0.38,0.59,0.8,1,1.23,1.45,1.82,2.08,2.22,2.34,2.41,2.41,2.41,2.41,2.41,2.41,2.41,2.41,2.41,2.41,2.41]) # мА
plot(Ib*10**6,Ik,label=r'$U_{\text{к}}=0.5 \text{ В}$')
# # Напряжение на коллекторе U_к = 1.0 В
Ib = np.array([1,1.5,2,2.5,3,3.5,4,4.5,5,6,7,8,9,10,11,12,12.8,13.6,14.6,15.2,16.3,20])/R # А 
Ik = np.array([0.02,0.13,0.26,0.43,0.62,0.82,1.04,1.26,1.52,2,2.56,3.06,3.63,4.18,4.56,5.12,5.48,6,6.45,6.57,6.57,6.57]) # мА
plot(Ib*10**6,Ik,label=r'$U_{\text{к}}=1.0 \text{ В}$')
# # Напряжение на коллекторе U_к = 1.5 В

Ib = np.array([1,1.5,2,2.5,3,3.5,4,4.5,5,6,7,8,9,10,11,12,13,14,15])/R # А 
Ik = np.array([0.02,0.12,0.25,0.41,0.62,0.82,1.04,1.27,1.51,2.06,2.6,3.14,3.69,4.24,4.62,5.18,5.70,6.28,6.67]) # мА
plot(Ib*10**6,Ik,label=r'$U_{\text{к}}=1.5 \text{ В}$')
legend()
xlabel(r'$I_{\text{б}},\text{ мкА}$')
ylabel(r'$I_{\text{к}},\text{ мА}$')
savefig('/home/kannab/documents/bipolar/fig/2.pdf',bbox_inches='tight')

# # # Задание 2.3. Измерение выходных характеристик транзистора I_к = f(U_к)
# # # Напряжение на коллекторе не более 10 В.
# # # Ток коллектора не более 10 мА.
figure('Задание 2.3')
# Ток базы I_б = 20 мкА
Uk=np.array([0.2 ,0.3 ,0.4 ,1   ,2   ,3   ,4   ,5   ,6   ,7  ,8   ,9   ,10])
Ik=np.array([0.09,0.16,0.24,0.25,0.26,0.27,0.27,0.28,0.29,0.3,0.32,0.35,0.43])
plot(Uk,Ik,label=r'$I_{\text{б}}= 20 \text{ мкА}$')
# Ток базы I_б = 40 мкА
Uk=np.array([0.2 ,0.3 ,0.4 ,0.5,1,2 ,3   ,4  ,5   ,6   ,7  ,8   ,9,   10])
Ik=np.array([0.13,0.48,0.84,1  ,1.03,1.07,1.1,1.12,1.16,1.2,1.25,1.36,1.55,2.02])
plot(Uk,Ik,label= r'$I_{\text{б}}= 40 \text{ мкА}$')
# Ток базы I_б = 60 мкА
Uk=np.array([0.2 ,0.3 ,0.4 ,0.5 ,0.6 , 1, 2, 3, 4, 5,6, 7,8 ,9 ,10])
Ik=np.array([0.26,0.64,1.22,1.81,1.96,2.03,2.1,2.17,2.22,2.28,2.35,2.47,2.67,3.07,3.94])
plot(Uk,Ik,label=r'$I_{\text{б}}= 60 \text{ мкА}$')
# Ток базы I_б = 80 мкА
Uk=np.array([0.2 ,0.3,0.4,0.5 ,0.6 , 1, 2, 3, 4, 5, 6, 7, 8, 9,9.2,9.4 ,9.6 ,9.8 ,10])
Ik=np.array([0.37,0.8,1.6,2.01,2.87,3.07,3.18,3.28,3.36,3.45,3.56,3.72,4  ,4.56,4.76,4.92,5.1,5.36,5.66])
plot(Uk,Ik,label=r'$I_{\text{б}}= 80 \text{ мкА}$')
xlabel(r'$U_{\text{к}},\text{ В}$')
ylabel(r'$I_{\text{к}},\text{ мА}$')
legend()
savefig('/home/kannab/documents/bipolar/fig/3.pdf',bbox_inches='tight')

# #Задание 2.4. Расчёт параметров транзистора
# # 1) Расчет и построение коэффициента передачи тока от напряжения коллектора при токах коллектора 2 мА и 5 мА 
# # 2) Расчет h-параметров транзистора при I_б = 40 мкА, U_к = 5 В.

# #Задание 2.5. Измерение коэффициента усиления однокаскадного усилителя.
figure('Задание 2.5',figsize=[0.7*a4size,0.7*a4size*0.75])
freq = np.array([100,300,600,1000,10000,35000,70000,75000,100000,120000,175000,201000,240000,280000,313000,370000,388000,435000,633000,735000,876000])
U = np.array([1.5,2.7,3.2,3.4,3.4,3.4,3.3,3.25,3.2,3.1,2.9,2.8,2.6,2.4,2.3,2.1,2.0,1.9,1.4,1.3,1.1])/0.05
semilogx(freq,U)
plot([120,5*10**5],[34,34],':')
xlabel(r'$\nu,\text{ Гц}$')
ylabel(r'$K,\text{ a.u.}$')
savefig('/home/kannab/documents/bipolar/fig/5.pdf',bbox_inches='tight')

# # #Задание 2.6. Измерение времени переключения транзистора.
figure('Задание 2.6')
Ib=np.array([0,1,2,3,4,5,6,7,8,9,10])*10
t1=np.array([2.6,1.6,1.4,1.2,1.2,1,1,0.8,0.6,0.4,0.4])
t2=np.array([1.2,1.2,1,1,1,1,1,1,1,1,1])
plot(Ib,t1,label='отсечка-насыщение')
plot(Ib,t2,label='насыщение-отсечка')
ylabel(r'$t,\text{ мкс}$')
xlabel(r'$I_{\text{б}},\text{ мкА}$')
legend()
savefig('/home/kannab/documents/bipolar/fig/6.pdf',bbox_inches='tight')
show()
