模拟比较器的应用(四)
导读:
关键字:
\[编者按\] 全文篇幅较长,分4次连载在本刊第2期至第5期上。第2期:模拟比较器用于超限监测;第3期:模拟比较器用于直流信号的A/D转换;第4期:模拟比较器用于交流信号的A/D转换;第5期:模拟比较器用于参量信号的A/D转换。 模拟比较器的应用(四) 华东地质学院周航慈李跃忠 摘要介绍模拟比较器在超限监测、直流信号的A/D转换、交流信号的A/D转换和传感器参量信号的A/D转换中的使用方法,并结合内含模拟比较器的P87LPC76X系列单片机,介绍相应的硬件电路设计方法和软件设计思路。 关键词模拟比较器A/D转换器参量信号 五、 模拟比较器用于参量信号的A/D转换 1. 电路原理 无源传感器的电气参数随着被测物理量的改变而改变。可以通过检测传感器的电气参数来间接测量该物理量,热敏电阻、湿敏电阻、气敏电阻等传感器就是最常见的例子。以热敏电阻为例,说明用模拟比较器完成温度检测的方法。 图11所示,由R1和R2组成分压电路,生成的参考电压Vref加到模拟比较器的反向输入端;由热敏电阻RT和电容器C组成充电电路,充电电压UC加到模拟比较器的正向输入端,K为放电开关。 图11参量信号A/D转换原理根据电路知识可以得到: Vref=UCCR2/(R1+R2) UC=UCC(1-e-t/RTC) 当比较器输出端出现上升沿时,说明充电电压与参考电压相等,由此得到: 1-e-t/RTC=R2/(R1+R2) 即e-t/RTC=R1/(R1+R2) 等式两边分别取对数,整理后得到: t/RTC=log(1+R2/R1) 从而解出热敏电阻的电阻值: RT=t/Clog(1+R2/R1) 令KRC=1/Clog(1+R2/R1) 即可得到热敏电阻的电阻值: RT=KRCt 式中:t为充电时间;系数KRC只与电路中的3个元件(R1,R2,C)有关,与UCC无关。这是因为参考电压和充电电压取自同一个UCC的结果。这种检测电路适合电源电压不稳定的场合,特别是用电池供电的系统。 我们的目的并不是要检测热敏电阻的电阻值,而是要知道当时的温度值。为此,还必须确定热敏电阻的电阻值RT和当时的检测温度θ之间的关系。当温度变化范围不大时,常用热敏电阻的电阻值与温度之间的近似关系如下: RT=R0e-θ/k 式中:R0为热敏电阻在0℃时的电阻值;k为热敏电阻的材料系数;θ为当时的温度(℃)。由此得到: R0e-θ/k=KRCt 即e-θ/k=KRCt/R0 等式两边分别取对数,整理后得到: θ=klog(R0/KRC)-klog(t) 令:K=klog(R0/KRC)=klog\[R0Clog(1+R2/R1)\] 最后得到温度的近似计算公式为 θ=K-klog(t) 式中系数K和k都是只与电路元件有关的常数。从近似计算公式可以看出,被检测的温度和电容器充电时间的对数近似线性相关:温度越低,热敏电阻的电阻值越大,充电时间越长;反之,温度越高,充电时间越短。 2. A/D转换过程 充电时间t可以使用单片机中的定时器来检测。 (1) 开机上电时首先将K闭合,电容器C进行放电,为第1次检测作好准备。 (2) 当确保电容器放电结束后,将K断开,电容器C通过热敏电阻RT开始充电,同时定时器开始计时。 (3) 当比较器输出端出现下降沿时,立即从定时器中读取充电时间t。然后将K闭合,使电容器C开始放电,给下一次测量作好准备。 (4) 根据检测到的充电时间t,通过数据处理计算出温度值θ。由于这种检测方法的精度不可能很高,通常采用查表和插值运算的方法求得结果。 (5) 由于第3步已经将电容器放电,以后各次检测可以从第(2)步开始。 3. 误差分析 引起检测误差的主要原因: (1) 系统时钟频率。如果使用外部晶体振荡器,其精度自然满足要求。当采用单片机内部的RC振荡器时,其振荡频率误差较大,离散性也较大,充电时间t的准确性也就较低。从计算公式可以看出,充电时间t的误差可以通过调整其他元器件的参数进行补偿,故使用单片机片内RC振荡器必须增加调整电路(见图13)。 (2) 电容器放电残留电压UC0。其影响的机理在前面已经介绍过。为了降低UC0的影响,参考电压Vref不能太低,最好取Vref等于 UCC的一半左右。 (3) 电容器充电终止电压UCC。如果参考电压Vref从UCC分压而来,则UCC对检测结果没有影响;如果参考电压Vref由稳压管产生或者常用单片机内部参考电源,则UCC的波动将直接影响充电时间t,使温度检测结果出现新的误差。 (4) 充电时间的检测。冻结定时器的实际时刻比出现下降沿的时刻延误了2~6μs,导致从定时器中读取的数据比实际充电时间多出几个μs。在温度较低时,热敏电阻的电阻值比较大,充电时间比较长,几个μs的延误可以忽略不计;在温度较高时,热敏电阻的电阻值比较小,充电时间比较短,几个μs的延误引起的误差不可忽略。 (5) 热敏电阻特性的差异。由于材料和制造工艺的问题,热敏电阻的电阻值和温度之间的关系与理论上的关系会有所差异,即使同一批热敏电阻也存在差异,这种差异使公式计算的误差增加。 (6) 计算公式的近似性。当温度变化范围较大时,计算公式将出现较大误差。 (7) 分压电阻R1、R2和电容器C的稳定性。在温度和湿度等环境参数变化时, R1、R2和C的数值多少都会产生一些变化,从而对检测结果的精度产生一定的影响。为此,应该选用稳定性比较好的电阻和电容器,例如聚苯乙烯薄膜电容器(注意:不要把涤纶薄膜电容器当成聚苯乙烯薄膜电容器)和金属膜电阻。 4. 电路参数选择 为了减少电容器放电残留电压UC0的影响,参考电压宜选高一些;为了提高检测速度,充电过程不宜太长,参考电压宜选低一些。两者兼顾,取Vref= 0.5UCC,即取R1=R2=4.7~10kΩ。这时,充电时间约等于0.7RTC。 在温度范围的高端,由于热敏电阻的电阻值最小,充电时间也就最短。为了保证一定的检测精度,充电时间必须大于某个最小值(例如70μs),从而估算出温度范围高端的时间常数约为100μs。然后实测热敏电阻在温度范围高端的电阻值,就可以估算出电容器的电容量。 热敏电阻的选择要根据温度检测范围和成本来考虑。在温度范围的高端,其电阻值不能太低,否则,必须加大电容器的电容量才能保证一定的检测精度。电容器的电容量越大,放电时对单片机端口的冲击也越大,有可能损害单片机。为了保护单片机,在电容器和单片机端口之间应该接入1个100Ω左右的电阻R3。 作为1个例子,用模拟比较器为家用热水器设计1个电子水温温度计。温度检测范围是10~90℃,要求在30~55℃的范围内误差不超过1℃;这个范围之外,误差在2℃左右。按图12(省略显示部件和其他电路)制作了1个电子温度计,图中R1=R2=7.5kΩ,R3=100Ω。根据现有热敏电阻的特性,选定C=0.02μF。 图12P87LPC76X单片机温度计5. 表格设计 为简化程序设计,仍然采用查表和插值运算的方法来得到温度值。有3种方法可以得到表格所需的数据: (1) 完全依靠公式计算。从近似计算公式可以看出,温度是充电时间对数的线性函数。理论上只要在2个不同的温度下实测对应的充电时间,通过解联立方程,就可以求出公式中的2个系数K和k的数值。然后再用计算机依次算出各个充电时间对应的温度值,就可以得到所需的表格。这样得到的表格在实际使用中效果并不好,原因是热敏电阻的电阻值和温度的关系与理论公式有差异,温度与充电时间的对数并不是完全的线性关系。虽然在温度范围的两端被校准,但在温度范围的中段误差超过允许值,而在正常情况下设备都是工作在温度范围的中段。 (2) 完全依靠实际标定。放弃计算公式,利用可调式恒温装置进行实际标定:从低温端到高温端每隔2~3℃标定1个点,从而得到比较完整的温度与充电时间关系表格。用这种方法得到的表格在实际使用中精度比较高,因为这个表格完全反映了真实情况。这种方法的缺点是:必须采用可调恒温设备进行标定,对测试设备要求比较高,否则,数据的精度没有保证。 (3) 实际标定与公式计算相结合。在没有恒温设备的情况下,利用普通的水银温度计和电热水杯来获取热敏电阻的表格数据。 在上面3种方法中:第1种方法最简单,但实际使用效果不好,测温误差较大,不予考虑;第2种方法实际使用效果最好,测温精度最高,在条件许可的情况下,尽可能采用;第3种方法不需要专用设备,标定条件要求最低。下面详细讨论第3种方法的操作过程和表格生成步骤。 由于没有恒温设备,充电时间肯定是测不准确的。为了在简陋的条件下获得尽可能好的结果,采取以下措施: (1) 采用对称测试方案。在进行了1次升温测试和1次降温测试后,每一个温度点都有2个充电时间记录,一个偏大,一个偏小,能起到一定的相互抵消作用。 (2) 控制升温和降温速度。在升温的过程中,用增加水容量,降低加热功率的方法尽可能降低升温速度,使升温不超过每分钟5℃。在降温的过程中,降温速度应尽可能和升温速度相同,如果自然冷却降温的速度偏慢,可以用滴冷水的方法加快降温。当降温速度和升温速度基本相同时,两组数据的误差就能较好地相互补偿。 (3) 非均匀设置测点。以热水器为例,大多数场合下,水温在36~50℃之间。为此,在36~50℃之间增加测试点(间隔2℃左右),在低温区和高温区减少测试点(间隔5~10℃)。 (4) 测点质量的可视化处理。将测试的所有数据填入对数坐标纸中(最好显示在计算机屏幕上),这些测试点应该近似组成1条直线,误差大的数据偏离这条直线就远。通过观察,可以剔除那些质量差的数据。 (5) 线性回归处理。剔除误差太大的数据以后,将剩余的数据进行线性回归处理,就可以得到线性方程的2个系数,求出最终的数学模型。由于热敏电阻的实际特性与理论特性有差异,将整个温度范围用1条直线来拟合难以满足精度要求,故将整个温度范围分为4段,分别进行回归处理,最后用1条折线来表示热敏电阻的数学模型。 (6) 生成表格。利用最终数学模型计算出各种充电时间对应的水温,组成表格。 (7) 调整表格。由于最终数学模型不可能完全准确,应该进行实际标定。对各个温度段的误差进行核实,找出误差规律,再对表格进行修正,使这些误差得到一定程度的补偿,从而得到1个比较满意的表格。 为了实现以上方案,先将测试程序写入图12电路的P87LPC76X单片机中。这个程序会将充电时间以十六进制的方式显示出来,以便实测充电时间与温度的关系,得到基数表格。为了插值运算方便,将表格各个分段增量的绝对值预先计算出来,就可以得到该分段的增量绝对值,由此得到相关的增量表。由于整个表格是由折线组成的,在连接处不够平滑,应该将基数表中的对应项作微量调整,使增量表中的数据严格按递减顺序排列。 6. 程序设计 在程序设计中注意以下几点: (1) 信号输入端口和基准电压输入端口的初始化。必须关闭输入端口的数字I/O功能,使其处于高阻状态。 (2) 系统时钟。对于批量较大、有一定精度要求的产品,为了降低调试成本,应该选用外部晶体振荡器。对于批量较小、精度要求不高的产品,为了降低成本或者节省引脚,也可以采用片内RC振荡器。这时应该对每一台设备单独进行标定。 采用图12的电路,以充电时间测试程序为基础,增加查表插值运算子程序和相关表格,就可以完成程序设计任务。 P87LPC76X片内包含2个模拟比较器,最多可以检测4路参量信号。程序设计和检测单路参量信号基本相同。 7. 系统标定 如果只是制作1台设备,可以根据实际运行中的误差对表格数据进行修改,进一步提高检测精度。如果是大批量生产,不可能为每一台设备单独进行表格调整,只能采用相同的表格数据。由于各台设备的元器件不可能完全一致,尤其是电容器的实际电容量有比较大的离散度,导致各台设备的读数和样机不一样。从计算公式可以看出,最终读数取决于各个元器件的综合效果,某个元器件的误差可以通过其他元器件来进行补偿。因此,在最终产品里采用图13所示电路,增加1个可调电阻RW(电阻值约为1/4图13电子温度计的标定R1)。标定时,将水温稳定在设备典型工作温度上(例如45℃)。通过调节可调电阻RW抽头的位置,使显示的温度值正好为实际温度。经过标定后,基本上可以达到样机的检测精度。 (全文完)
来源:单片机与嵌入式系统应用 作者:华东地质学院 周航慈 李跃忠 2006/2/12 0:00:00