Modelica示例——推挽放大器电路

如下图所示的电路,只能在正半周导通。


曲线如下图所示


有一种方法可以使整个周期的信号得到放大,急救室采用两个互补对称的晶体管,如一对匹配的npn/pnp BJT或者一对匹配的n沟道/p沟道FET。这两个晶体管分别在输入信号的正半周期和负半周期导通。

电路


Modelica.Electrical.Analog.Sources.SineVoltage sineVoltage1(V = 5, freqHz = 5)

曲线


当基极电压为零时,输入信号幅值必须大于VBE才能使晶体管导通。结果是在输入信号正负交替的一个时间间隔内,两个晶体管都不导通。此时在输出波形上产生的失真叫交越失真

程序

model ac
  Modelica.Electrical.Analog.Sources.ConstantVoltage constantVoltage1(V = 5) annotation(
    Placement(visible = true, transformation(origin = {8, 16}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
  Modelica.Electrical.Analog.Basic.Ground ground1 annotation(
    Placement(visible = true, transformation(origin = {32, 6}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
  Modelica.Electrical.Analog.Semiconductors.NPN npn1 annotation(
    Placement(visible = true, transformation(origin = {-12, -8}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
  Modelica.Electrical.Analog.Sources.SineVoltage sineVoltage1(V = 5, freqHz = 5) annotation(
    Placement(visible = true, transformation(origin = {-72, -48}, extent = {{-10, -10}, {10, 10}}, rotation = -90)));
  Modelica.Electrical.Analog.Basic.Ground ground2 annotation(
    Placement(visible = true, transformation(origin = {-72, -78}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
  Modelica.Electrical.Analog.Basic.Resistor resistor3(R = 1000) annotation(
    Placement(visible = true, transformation(origin = {44, -46}, extent = {{-10, -10}, {10, 10}}, rotation = -90)));
  Modelica.Electrical.Analog.Sources.ConstantVoltage constantVoltage2(V = -5) annotation(
    Placement(visible = true, transformation(origin = {8, -86}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
  Modelica.Electrical.Analog.Basic.Ground ground3 annotation(
    Placement(visible = true, transformation(origin = {34, -96}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
  Modelica.Electrical.Analog.Semiconductors.PNP pnp1 annotation(
    Placement(visible = true, transformation(origin = {-12, -56}, extent = {{-10, 10}, {10, -10}}, rotation = 0)));
equation
  connect(constantVoltage1.n, ground1.p) annotation(
    Line(points = {{18, 18}, {32, 18}, {32, 18}, {32, 18}}, color = {0, 0, 255}));
  connect(constantVoltage1.p, npn1.C) annotation(
    Line(points = {{-2, 18}, {-2, -5}}, color = {0, 0, 255}));
  connect(sineVoltage1.p, npn1.B) annotation(
    Line(points = {{-72, -38}, {-72, -38}, {-72, -34}, {-22, -34}, {-22, -8}, {-22, -8}}, color = {0, 0, 255}));
  connect(npn1.B, pnp1.B) annotation(
    Line(points = {{-22, -8}, {-22, -8}, {-22, -56}, {-22, -56}}, color = {0, 0, 255}));
  connect(resistor3.p, pnp1.E) annotation(
    Line(points = {{44, -36}, {-2, -36}, {-2, -52}, {-2, -52}}, color = {0, 0, 255}));
  connect(npn1.E, pnp1.E) annotation(
    Line(points = {{-2, -13}, {-2, -52}}, color = {0, 0, 255}));
  connect(pnp1.C, constantVoltage2.p) annotation(
    Line(points = {{-2, -64}, {-2, -64}, {-2, -86}, {-2, -86}}, color = {0, 0, 255}));
  connect(resistor3.n, ground3.p) annotation(
    Line(points = {{44, -56}, {44, -56}, {44, -86}, {34, -86}, {34, -86}}, color = {0, 0, 255}));
  connect(ground3.p, constantVoltage2.n) annotation(
    Line(points = {{34, -86}, {18, -86}, {18, -86}, {18, -86}}, color = {0, 0, 255}));
  connect(sineVoltage1.n, ground2.p) annotation(
    Line(points = {{-72, -58}, {-72, -58}, {-72, -68}, {-72, -68}}, color = {0, 0, 255}));
  annotation(
    uses(Modelica(version = "3.2.2")));
end ac;

猜你喜欢

转载自blog.csdn.net/bear_miao/article/details/80202000