如何使运算放大器比较器在施密特触发模式下工作?

电器工程 运算放大器 扇子 冷却 多熔丝 施密特触发器
2022-01-22 05:56:29

以有问题的方式使用运算放大器进行风扇控制

我想控制一个小型 12V 机箱风扇。我将设置 R 1、 R 2和 R 3的值,以使风扇在 40 o C以上的温度下工作。

我知道在这类系统中,会有一个优柔寡断的区域,比较器输出将在高低之间快速变化。在这种实际情况下,当温度在 40 o C 附近时,会出现不稳定的行为。

有没有办法通过尽可能少地改变它来使这个电路在施密特触发模式下工作(例如,在 38 o C 以下停止,在 42 o C 以上开始,并保持之前的状态在 38 o C 和 42 o C 之间),以及不使用任何施密特触发器逻辑门。

4个回答

要创建施密特触发器,您必须提供从运算放大器输出到同相输入的正反馈。通常这个输入将是阈值电压,它会根据运算放大器的输出取两个值之一(即滞后)。

在您的情况下,您在非反相输入上有信号。你也可以这样工作,但我建议你切换两个输入,并且交换 R1 和 PTC 仍然具有相同的行为:更高的 PTC 电阻会降低反相输入,当它达到阈值时,风扇将切换到。所以让我们这样做,并将输出中的 R5 添加到 R2/R3 节点。

在此处输入图像描述

你提到了以°C为单位的滞后,但我们需要电压。让我们以 \$V_H\$ 和 \$V_L\$ 作为阈值进行理论计算,并假设轨到轨输出运算放大器。然后我们有两种情况:高阈值和低阈值,以及三个变量:R2、R3 和添加的 R5。所以我们可以选择其中一个电阻,让我们修复R2。

现在,对 R2/R3/R5 节点应用 KCL(基尔霍夫电流定律):

\$ \dfrac{12 V - V_L}{R3} + \dfrac{0 V - V_L}{R5} = \dfrac{V_L}{R2} \$

\$ \dfrac{12 V - V_H}{R3} + \dfrac{12 V - V_H}{R5} = \dfrac{V_H}{R2} \$

这是一组包含两个变量的线性方程:R3 和 R5,如果您可以填写 \$V_H\$ 和 \$V_L\$ 的实际电压以及自由选择的 R2,则很容易求解。

让我们为论证起见,假设在 38 °C 时,反相输入端有 6 V,在 42 °C 时,您将有 5 V。让我们为 R2 选择 10 k\$\Omega\$ 值。那么上面的方程就变成了

\$ \begin{cases} \dfrac{12 V - 5 V}{R3} + \dfrac{0 V - 5 V}{R5} = \dfrac{5 V}{10 k\Omega} \\ \\ \ \ \dfrac{12 V - 6 V}{R3} + \dfrac{12 V - 6 V}{R5} = \dfrac{6 V}{10 k\Omega} \end{cases} \$

要么

\$ \begin{cases} \dfrac{7 V}{R3} - \dfrac{5 V}{R5} = \dfrac{5 V}{10 k\Omega} \\ \\ \\ \dfrac{6 V }{R3} + \dfrac{6 V}{R5} = \dfrac{6 V}{10 k\Omega} \end{cases} \$

然后经过一些替换和改组后,我们发现

\$ \begin{cases} R3 = 12 k\Omega \\ R5 = 60 k\Omega \end{cases} \$


我已经说过它不太常见,但你也可以使用当前的原理图,计算类似。同样,在输出和非反相输入之间添加一个 R5 反馈电阻。现在参考输入由比率 R2/R3 固定,并且滞后会使您测量的电压上下移动,这 - 至少对我而言 - 需要一些习惯。

在此处输入图像描述

假设我们通过使 R2 和 R3 相等来将参考电压固定在 6 V。我们再次计算节点 PTC/R1/R5 的电流,其中 PTC\$_L\$ 和 PTC\$_H\$ 分别是 38 °C 和 42 °C 时的 PTC 值,R1 和 R5 是我们的未知数. 然后

\$ \begin{案例} \dfrac{6 V}{PTC_H} = \dfrac{12 V - 6 V}{R1} + \dfrac{0 V - 6 V}{R5} \\ \\ \\ \dfrac {6 V}{PTC_L} = \dfrac{12 V - 6 V}{R1} + \dfrac{12 V - 6 V}{R5} \end{cases} \$

再次求解 R1 和 R5。

您必须添加几个正反馈电阻来为运算放大器增加滞后。

在此处输入图像描述

图片来源

在此处输入图像描述

这是来自基尔霍夫电流定律的 \$V_{in}\$ 节点上最一般的方程:

\$ \dfrac{V_{in} - V_{dd}}{R_1} + \dfrac{V_{in} - V_{ss}}{R_2} + \dfrac{V_{in} - V_{out}}{ R_f} = 0 \$

从运放特性,我们知道:

Vin <= VIL ==> Vout = VOL (Low  State)
Vin >= VIH ==> Vout = VOH (High State)

所以我们可以为这两种状态写出两个独立的方程。

\$ \dfrac{V_{IL} - V_{dd}}{R_1} + \dfrac{V_{IL} - V_{ss}}{R_2} + \dfrac{V_{IL} - V_{OL}}{ R_f} = 0 \\ \dfrac{V_{IL}}{R_1 // R_2 // R_f} = \dfrac{V_{dd}}{R_1} + \dfrac{V_{ss}}{R_2} + \dfrac {V_{OL}}{R_f} \\V_{IL} = (R_1 // R_2 // R_f) \left[ \dfrac{V_{dd}}{R_1} + \dfrac{V_{ss}}{R_2 } + \dfrac{V_{OL}}{R_f} \right] \\ V_{IH} = (R_1 // R_2 // R_f) \left[ \dfrac{V_{dd}}{R_1} + \dfrac{ V_{ss}}{R_2} + \dfrac{V_{OH}}{R_f} \right] \\ \$

例子:

R1  = 100k
R2  = 100k
Vdd = +15V
Vss = -15V
VOH = +13V
VOL = -13V

在此处输入图像描述

% Matlab code for the plotting

R1              = 100000;
R2              = 100000;
Vdd             = +15;
Vss             = -15;
VOH             = +13;
VOL             = -13;

RMIN            = 10000;        % 10k
RMAX            = 10000000;     % 10M
VMIN            = -10.0;
VMAX            = +10.0;
POINTS          = (RMAX - RMIN) / 100;

Rf              = linspace(RMIN, RMAX, POINTS);
VIL             = zeros(1, POINTS);
VIH             = zeros(1, POINTS);

for i = 1 : 1 : POINTS
    VIL(i) = 1 / ((1/R1) + (1/R2) + (1/Rf(i))) * ((Vdd/R1) + (Vss/R2) + (VOL/Rf(i)));
    VIH(i) = 1 / ((1/R1) + (1/R2) + (1/Rf(i))) * ((Vdd/R1) + (Vss/R2) + (VOH/Rf(i)));
end;

close all;
hFig = figure;
hold on;
plot([0 10], [0 0], 'Color', [0.75 0.75 0.75]);
plot(Rf/1000000, VIL, 'Color', [0 0 1]);
plot(Rf/1000000, VIH, 'Color', [1 0 0]);
xlim([RMIN/1000000, RMAX/1000000]);
ylim([VMIN, VMAX]);
xlabel('R_f (M\Omega)');
ylabel('VIL & VIH (V)');
hold off;

如前所述,使用反馈是使用运算放大器实现滞后的关键。

Albert Lee 的这篇文章以实用的方式展示了如何做到这一点,以及如何通过数学计算系统上所需的滞后水平。