Моделирование биполярного NPN транзистора¶
В данном примере будет продемонстрировано моделирование биполярного транзистора при разных значениях тока базы.
Общий вид модели:
Определение функции для загрузки и запуска модели:¶
In [ ]:
function start_model_engee()
try
engee.close("npn_transistor", force=true) # закрытие модели
catch err # в случае, если нет модели, которую нужно закрыть и engee.close() не выполняется, то будет выполнена её загрузка после catch
m = engee.load("/user/start/examples/physmod/npn_transistor/npn_transistor.engee") # загрузка модели
end;
try
engee.run(m, verbose=true) # запуск модели
catch err # в случае, если модель не загружена и engee.run() не выполняется, то будут выполнены две нижние строки после catch
m = engee.load("/user/start/examples/physmod/npn_transistor/npn_transistor.engee") # загрузка модели
engee.run(m, verbose=true) # запуск модели
end
end
Out[0]:
Загрузка, запуск модели и запись результатов¶
Моделирование при токе базы 0,001 А:
In [ ]:
Ib = 0.001 # определение тока базы для расчёта
start_model_engee() # загрузка и запуск модели
sleep(5)
data1 = collect(simout) # выделение из переменной simout данных, описывающих ток коллектора и напряжение коллектор-эмиттер
Vce = collect(data1[2]) # запись данных о напряжении коллектор-эмиттер в переменную
Ic1 = collect(data1[3]); # запись данных о токе коллектора в переменную
Моделирование при токе базы 0,002 А:
In [ ]:
Ib = 0.002 # определение тока базы для расчёта
start_model_engee() # загрузка и запуск модели
sleep(5)
data2 = collect(simout) # выделение из переменной simout данных, описывающих ток коллектора и напряжение коллектор-эмиттер
Ic2 = collect(data2[3]); # запись данных о токе коллектора в переменную
Моделирование при токе базы 0,003 А:
In [ ]:
Ib = 0.003 # определение тока базы для расчёта
start_model_engee() # загрузка и запуск модели
sleep(5)
data3 = collect(simout) # выделение из переменной simout данных, описывающих ток коллектора и напряжение коллектор-эмиттер
Ic3 = collect(data3[3]); # запись данных о токе коллектора в переменную
Моделирование при токе базы 0,004 А:
In [ ]:
Ib = 0.004 # определение тока базы для расчёта
start_model_engee() # загрузка и запуск модели
sleep(5)
data4 = collect(simout) # выделение из переменной simout данных, описывающих ток коллектора и напряжение коллектор-эмиттер
Ic4 = collect(data4[3]); # запись данных о токе коллектора в переменную
Моделирование при токе базы 0,005 А:
In [ ]:
Ib = 0.005 # определение тока базы для расчёта
start_model_engee() # загрузка и запуск модели
sleep(5)
data5 = collect(simout) # выделение из переменной simout данных, описывающих ток коллектора и напряжение коллектор-эмиттер
Ic5 = collect(data5[3]); # запись данных о токе коллектора в переменную
Визуализация результатов¶
In [ ]:
using Plots # запуск библиотеки для построения графиков:
plot(Vce[:,2], Ic1[:,2], label="Ток базы, Ib = 0.001 A", title="График зависимости тока коллектора \n от напряжения коллектор-эмиттер")
plot!(Vce[:,2], Ic2[:,2], label="Ток базы, Ib = 0.002 A", xlabel="Vce, В", ylabel="Ic, А")
plot!(Vce[:,2], Ic3[:,2], label="Ток базы, Ib = 0.003 A")
plot!(Vce[:,2], Ic4[:,2], label="Ток базы, Ib = 0.004 A")
plot!(Vce[:,2], Ic5[:,2], label="Ток базы, Ib = 0.005 A")
Out[0]:
Вывод:¶
В данном примере было продемонстрировано моделирование биполярного транзистора при разных значениях тока базы. Модель также можно использовать для определения характеристик транзистора в отрицательной области значений напряжения ($Vce$).