使用热敏电阻测量温度时常用分压器电路,即:
它的问题是输出电压对RT 的阻值是非线性的:
V
A
D
C
=
5
R
5
+
R
T
∗
R
T
V_{ADC} = \frac{5}{R5 + RT} * RT
VADC=R5+RT5∗RT
用这种电路测量温度时基本上只能用打表法,也就是预先把ADC 值和温度的对应表存到程序里。如果希望让
R
5
R5
R5 尽量大从而让系数差不多是常数,那又会导致输出的电压太小,分辨力下降。
因此考虑使用运放搭建的恒流源驱动电阻。
这个电路的初衷是用前一级运放作为恒流源驱动电阻RL。RF 是采样反馈电阻,运放的负反馈会令RF 上端的电压等于同相端输入的参考电压VREF。输出的电压即RL 两端的电压差,是个差分信号,不方便直接使用。所以后级运放接成差分放大器,把RL 两端的差分电压信号转换成对地的单端信号,方便后面串联ADC。串联放大器还可以在输出电压不变的情况下降低流过RL 的电流,对精确测量有好处。
当R1 = R3, R2 = R4 时,这个差分放大电路的增益是 R 2 R 1 \frac{R2}{R1} R1R2 。
它的问题在于,这种差分放大电路的输入阻抗很小。同相端输入的对地阻抗是R1 + R2, 分流了初级的输出电流。不过这个问题不大,因为这部分分流不会影响到RL 支路上RF 的电流采样反馈,只会增加运放的功耗。
问题在反相端,这会让次级的输出电压Vo 经过R3 + R4 影响到RF 的电流。当Vo 小于VREF 时,经过RL 的一部分电流被次级sink,于是实际经过RL 的电流要大于经过RF 的电流。而当Vo 大于VREF 时,经过RL 的电流又会小于经过RF 的电流。
简单起见,如果次级放大器的增益是常数,Vo 小于参考电压VREF,则输出电压Vo 可由下式计算:
V
O
=
V
F
N
R
F
R
L
⋅
R
S
R
S
−
R
L
N
V_O = \frac{V_F N}{R_F} R_L \cdot \frac{R_S}{R_S - R_L N}
VO=RFVFNRL⋅RS−RLNRS
其中,
V F V_F VF 是参考电压VREF;
R L R_L RL 是负载电阻,也就是热敏电阻;
N N N 是次级增益,是常数;
R F R_F RF 是采样反馈电阻;
R S R_S RS 等于 R 3 + R 4 R3 + R4 R3+R4。
而在理想情况下,次级的输入阻抗无穷大,增益是常数,则Vo 等于:
V
O
=
V
F
N
R
F
R
L
V_O = \frac{V_F N}{R_F} R_L
VO=RFVFNRL
对比以上两式,可知实际电路增加了一个非线性的因数:
R
S
R
S
−
R
L
N
\frac{R_S}{R_S - R_L N}
RS−RLNRS
要令非线性最小,也就是让这一项尽量接近1。
R
L
R_L
RL 是热敏电阻的参数,不好操作。所以显然,只能让
R
S
R_S
RS 尽量大,放大增益
N
N
N 尽量小。
因此在实际电路中,如上面的电路图所示,令放大增益为1,差分放大电路只起到信号转换的效果。 R S R_S RS 即R3 + R4 接近100KΩ。然后要增大恒流源的输出电流来放大电压信号,这里取约5mA。在仿真环境下,RL 变化范围50 到150Ω 时,输出电压的线性比较满意。
P.S. 这里用的热敏电阻是铂电阻,正温度系数,电阻值比较小。顺便也能推论,无论是用分压器还是这种恒流驱动,热敏电阻的阻值可能的话还是小一点儿比较好。而如果使用两个运放构成的差分放大电路的话,那种电路的输入阻抗大,就不必搞这些了。或者把ADC 的模拟地用上,直接给ADC 输入差分信号。