微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 电源设计 > 基于8OC196的高精度、低成本A/D转换

基于8OC196的高精度、低成本A/D转换

时间:09-07 来源:互联网 点击:

摘要:介绍了一种基于80C196单片机的A/D转换硬件电路和软件实现, 利用80C196自带的10位A/D转换器和PWM输出及简单外围电路,实现了高精度、高速A/D转换。该方法同时具有成本低、实用性强等特点。
关键词:单片机;A/D转换;PWM信号;分辨率

0 引言
在智能化仪表中,A/D转换器直接影响仪表的性能,A/D转换器的性能主要在两个方面,转换精度和转换时间。目前常用的有逐次逼近型转换器、并行转换器、双积分转换器等。其中,双积分A/D转换器因为转换精度高、抗干扰性能强,并且价格相对较低,在数字测温仪表以及工业现场的慢变信号数据采集中得到非常广泛的应用。但是双积分A/D转换器在实际应用中仍有不足之处。由于其工作过程中零点漂移误差、以及电容充放电造成的非线性,使得其如要获得较高的精度,对电路中运放、电阻、电压基准等元件的精确度和温漂系数等指标的要求就非常高,特别是它不适合快变信号的数据采集。而适合快变信号的高精度并行转换器的价格太高,如12位精度的AD7874价格就十分昂贵。因此寻找一种高精度、高速且低成本的A/D转换方法是有实用价值的。本文利用Intel公司单片机80C196自带的10位A/D转换器和PWM输出,外加放大器、滤波器等简单电路配合,实现了高精度(最高可达18位精度)、高速A/D转换,满足快变信号的A/D转换要求。经使用表明,该A/D转换方法的性价比高,效果非常好。

1 80C196简介
80C196是INTEL公司推出的一种准16位单片机系列,常见的型号有80C196KB、80C196KC、80C196KT等,本文选用了80Cl96KB,与其他通用的单片机相比,80C196KB主要有以下特点:(1)片上232字节的寄存器兼有RAM和累加器的功能,克服了面向累加器引起的瓶颈问题,提高了执行效率;(2)具有8通道10位A/D转换器(逐次逼近型),特别适合于智能仪表、控制系统等应用领域;(3)脉宽调制输出器PWM,PWM信号经过积分就可以获得直流输出,可作为D/A转换器使用,D/A转换器的分辨率为8位;(4)高速输入/输出器(HSI/HSC)),HSI/HSO特别适合于测量和产生分辨力高达2us的脉冲;(5)16为监视定时器(WDT),即看门狗,有软硬件故障时,WDT将使系统复位,提供了一种软硬件故障的恢复能力;(6)可动态配置的总线,在运行过程中,80C196KB总线可以动态地配置成8位或16位,以便适应对外部存储器进行字节操作或字操作的不同需求。
80C196的特点决定了它很适合应用于自动化仪表与控制,自带的A/D可以方便的进行数据采集,PWM可以输出D/A信号,WDT保证了运行的可靠性,HIS/HSO方便脉冲信号的测量与产生。80C196KB共有68管脚,采用PLCC型封装,其管脚图如图1所示。

2 A/D转换的硬件实现
利用80C196KB自带的10位A/D转换器和PWM输出,实现高精度A/D转换的原理如下:假设传感器提供的信号为Vs,经放大后提供给A/D转换器信号为As,A/D转换的结果为Rd,A/D转换的舍入误差为Ed,对于逐次逼近式A/D转换有0≤Edlbit,若As对应的真实数字量为Ad,则有:Ad=Rd+Ed,所以有:Ad-Rd=Ed,在此,Rd信号由10位A/D转换结果舍掉后两位后得到,它作为A/D转换结果的高8位,然后由PWM信号输出,经滤波后得到Rd的模拟量RA,取As与RA的差分信号Es=As-RA,放大28倍后再次A/D转换,第二次转换后的数字量作为低10位数字量,两次A/D转换的结果合成后可以达到18位精度,其电路实现如图2所示。该图经实验验证和实际运行证明性能良好,具有实用性和参考价值。

图中,运算放大器H1和H2构成了差分放大器,H1和H2应选用性能较好的运算放大器,该电路具有极高的共模抑制比,传感器信号Vs经过差分放大器放大后得到As,As连接到80C196KB的0号A/D通道输入口ACH0,A/D转换后得到高8位数字量;80C196KB的PWM输出信号经过U2与E2构成的滤波器滤波后,得到直流信号Rd,这就是80C196KB通过PWM进行D/A转换的典型电路;运算放大器H3构成的电路实现Es×28,该信号连接到80C196KB的1号A/D通道输入口ACH1,完成Es的A/D转换,得到低位数字量。通过软件合并高位数字量和低位数字量即可实现高精度A/D转换。

3 A/D转换的软件实现
为保证实时性,A/D转换的软件通过中断方式实现,首先主程序在初始化中设定定时器和A/D中断工作模式,定时器中断到来时启动0通道A/D转换。A/D中断时,判断A/D的通道号,当0通道ACH0中断时,读取并保存A/D结果的高8位,通过PWM输出该结果,然后启动下一次l通道ACHl的A/D转换;当ACHl中断时,读取A/D转换结果并与高8位合并,得到最终结果。
当采用12MHz晶振时,80C196KB的A/D转换时间为22us,PWM输出周期是64us,PWM信号输出后,为使D/A结果稳定后再启动ACHl,延时了3倍PWM周期,整个A/D转换时间(包括A/D转换时间和软件运行时间)可以在1ms内完成。A/D中断服务程序的流程框图如图3所示。初始化程序和定时器中断服务程序较简单,流程图略。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top