基于C8051F单片机的红外轴温探测器零点校正技术
时间:11-15
来源:互联网
点击:
零漂校正过程
首先我们设定在某一环境下,探头输出没有零点漂移,那么根据公式2,我们得到初始状态仪表放大器输出为(V+-V-?)G+VREF。DAC0输出中点电位1.2V,即VREF=1.2V。我们可以调节放大器反相输入端的可调电位器,使放大器输出电压VC,该电压在零到ADC最大采集电压之间,略高于0V即可,这样为的是使ADC可以采集到放大器输出在这个电压上下变化的情况。由于ADC不能采集0V以下的电压,所以该电压不能选择0V。在这里我们选择0.5V,太高了会缩小电压采集的范围。此时
(V+ -V- )G+VREF=VC(VC=0.5) (3)
当环境改变时,设此时传感器产生零点漂移为
![](../img/eec-mcu/mcu-168997gh0vb4bpqmk.gif)
。放大器输出
![](../img/eec-mcu/mcu-168998zwxnmi5rbcr.gif)
,零点漂移
![](../img/eec-mcu/mcu-168999d4xlv5bjsqh.gif)
。此时通过ADC采集放大器输出电压,如果输出大于VC,则减小DAC0的输出,即减小VREF;相反,如果输出小于VC,则增大DAC0的输出,即增大VREF,这样如此采集->调整->采集.......使放大器输出电压稳定在。
![](../img/eec-mcu/mcu-168999d4xlv5bjsqh.gif)
(4)
比较式3和式4可以看出,我们完全是靠DAC0的变化量
![](../img/eec-mcu/mcu-169000nanch0mxqgw.gif)
将
![](../img/eec-mcu/mcu-168999d4xlv5bjsqh.gif)
抵消掉。
消除零点漂移是一个逐渐逼近的过程,每次逼近的步长可以通过软件设定,但由于受到DAC分辨率的影响,最小步长是DAC的1LSB代表的电压,所以我们最小只能将零漂控制在0到最小步长之间。受DAC输出范围的限制,初始时DAC0输出1.2V,若设此时的零漂为VD(通常我们认为是零),那么,我们能够调节的最大零点漂移范围是[VD-1.2/G,VD+1.2/G]。当单片机的系统时钟为16M时,完成一个采集,调整的周期最多用数百uS。列车通过时间一般在十分钟以内,在此时间内完成的数据采集,对缓慢的零点漂移来说影响是不大的。
硬件、软件实现
放大器零点校正的硬件原理图如图1所示。
![](../img/eec-mcu/mcu-169001lxgemllxfl2.gif)
图1 放大器零点校正的硬件原理图
仪表放大器的同相输入端接红外传感器输出电压;反相输入端输入调零电压。放大器1、8脚间接入增益设置电阻。5脚的参考电压输入,连接单片机C8051F007片上DAC0的输出,通过DAC的输出来自动校正放大器的零点。实际电路中VREF也可通过电位器分压来取得调整电压,以提高调整细度。放大器输出电压经AIN0送至单片机片上的ADC转化为数字量。
单片机C语言编程框图如图2所示。
![](../img/eec-mcu/mcu-169002oe5m3ytnnk5.gif)
图2单片机C语言编程框图
系统在不采集传感器输出电压的时候自身进行系统调零,先将放大器参考点电压设置为0.5V,也就是让DAC0输出0.5V。然后采集放大器的输出电压,如果输出电压大于0.5V,可以减小参考电压抵消漂移;相反,如果输出电压小于0.5V,说明有负向零点漂移产生,则要增大参考电压抵消漂移。
结语
根据仪表放大器的输出公式我们可以看出,当放大倍数很高时,零点漂移也会同时被放大。这样,如果零点漂移本身范围过大时,有可能超出DAC的调节范围。通常有效调节零漂的跨度要略小于DAC的输出范围,可在DAC输出范围的两头各划出一段数据区作为超限标志。程序中每次调节DAC0输出后,要随时检测被转化数字量的大小,一旦发现DAC输出值超出调节范围,可以及时对外发出超限警告。
实际设计中,零点的调整只是解决本传感器的一个问题,其它例如不同环温下的非线性问题还需要另行解决,好在采用C8051F007高性能单片机,其功能和速度均可同时满足上述要求。
首先我们设定在某一环境下,探头输出没有零点漂移,那么根据公式2,我们得到初始状态仪表放大器输出为(V+-V-?)G+VREF。DAC0输出中点电位1.2V,即VREF=1.2V。我们可以调节放大器反相输入端的可调电位器,使放大器输出电压VC,该电压在零到ADC最大采集电压之间,略高于0V即可,这样为的是使ADC可以采集到放大器输出在这个电压上下变化的情况。由于ADC不能采集0V以下的电压,所以该电压不能选择0V。在这里我们选择0.5V,太高了会缩小电压采集的范围。此时
(V+ -V- )G+VREF=VC(VC=0.5) (3)
当环境改变时,设此时传感器产生零点漂移为
![](../img/eec-mcu/mcu-168997gh0vb4bpqmk.gif)
。放大器输出
![](../img/eec-mcu/mcu-168998zwxnmi5rbcr.gif)
,零点漂移
![](../img/eec-mcu/mcu-168999d4xlv5bjsqh.gif)
。此时通过ADC采集放大器输出电压,如果输出大于VC,则减小DAC0的输出,即减小VREF;相反,如果输出小于VC,则增大DAC0的输出,即增大VREF,这样如此采集->调整->采集.......使放大器输出电压稳定在。
![](../img/eec-mcu/mcu-168999d4xlv5bjsqh.gif)
(4)
比较式3和式4可以看出,我们完全是靠DAC0的变化量
![](../img/eec-mcu/mcu-169000nanch0mxqgw.gif)
将
![](../img/eec-mcu/mcu-168999d4xlv5bjsqh.gif)
抵消掉。
消除零点漂移是一个逐渐逼近的过程,每次逼近的步长可以通过软件设定,但由于受到DAC分辨率的影响,最小步长是DAC的1LSB代表的电压,所以我们最小只能将零漂控制在0到最小步长之间。受DAC输出范围的限制,初始时DAC0输出1.2V,若设此时的零漂为VD(通常我们认为是零),那么,我们能够调节的最大零点漂移范围是[VD-1.2/G,VD+1.2/G]。当单片机的系统时钟为16M时,完成一个采集,调整的周期最多用数百uS。列车通过时间一般在十分钟以内,在此时间内完成的数据采集,对缓慢的零点漂移来说影响是不大的。
硬件、软件实现
放大器零点校正的硬件原理图如图1所示。
![](../img/eec-mcu/mcu-169001lxgemllxfl2.gif)
图1 放大器零点校正的硬件原理图
仪表放大器的同相输入端接红外传感器输出电压;反相输入端输入调零电压。放大器1、8脚间接入增益设置电阻。5脚的参考电压输入,连接单片机C8051F007片上DAC0的输出,通过DAC的输出来自动校正放大器的零点。实际电路中VREF也可通过电位器分压来取得调整电压,以提高调整细度。放大器输出电压经AIN0送至单片机片上的ADC转化为数字量。
单片机C语言编程框图如图2所示。
![](../img/eec-mcu/mcu-169002oe5m3ytnnk5.gif)
图2单片机C语言编程框图
系统在不采集传感器输出电压的时候自身进行系统调零,先将放大器参考点电压设置为0.5V,也就是让DAC0输出0.5V。然后采集放大器的输出电压,如果输出电压大于0.5V,可以减小参考电压抵消漂移;相反,如果输出电压小于0.5V,说明有负向零点漂移产生,则要增大参考电压抵消漂移。
结语
根据仪表放大器的输出公式我们可以看出,当放大倍数很高时,零点漂移也会同时被放大。这样,如果零点漂移本身范围过大时,有可能超出DAC的调节范围。通常有效调节零漂的跨度要略小于DAC的输出范围,可在DAC输出范围的两头各划出一段数据区作为超限标志。程序中每次调节DAC0输出后,要随时检测被转化数字量的大小,一旦发现DAC输出值超出调节范围,可以及时对外发出超限警告。
实际设计中,零点的调整只是解决本传感器的一个问题,其它例如不同环温下的非线性问题还需要另行解决,好在采用C8051F007高性能单片机,其功能和速度均可同时满足上述要求。
放大器 红外 单片机 DAC 传感器 电压 ADC 电流 电阻 MCU 电路 C语言 相关文章:
- ADI公司双极性四通道运算放大器OP4177及其应用(02-18)
- 运算放大器应用设计的几个技巧(03-29)
- 电子工程师在设计中面临的难题及解决方案(01-23)
- D级放大器如何弥补与高分辨率AB级放大器的差距(04-13)
- 基于MSP430的无极性恒流电刺激器的设计(02-12)
- 基于高分辨率CMOS传感器图像采集系统的实现(04-08)