1 引言
本文给出了基于C8051F020单片机的16位A/D转换器设计思路及实现方法。在设计中,充分利用了C8051F020单片机内部的高速计数器,本文给出的设计与常规的双积分ADC相比,具有转换速率高、可对双极性模拟电压进行转换等显著优点,且实现简单,运行稳定可靠。
2 A/D转换器硬件电路
图1为A/D转换硬件电路。图中,LM336为5V电压基准源,CD4052为2路四选一电子开关。
在正常转换过程中,Vin输入端的开关RY断开,输入待测电压信号(-5V~+5V),此信号经过运放OP07-1构成的电压跟随器后,输入到运放OP07-2的反相输入端,加入电压跟随器的目的是进行阻抗变换。运放OP07-2构成加法器,其输出为:
VOI=-(VI+VCP) (1)
VCP为补偿电压,将双极性输入电压VI转换成单极性电压VO1,以实现与偏移二进制码对应的A/D转换,其值为输入电压VI的上限值。若输入电压VI 取值范围为:-5V<VI<5V,则VCP=5V。输出电压VO1的取值范围为-10V<VO1<0V。
3 A/D转换器程序流程及工作原理
图2为A/D转换过程程序流程图:
A/D转换开始前先将计数器清零。在软件控制下,选通CD4052的2Y管脚,构成放电回路使积分电容C完全放电,然后开始A/D转换,转换操作分两步进行:
第一步,选通CD4052的0X管脚,积分器对VO1进行固定时间T1的积分,积分结束时积分器的输出电压VO2为:
(2)
第二步,选通CD4052的1X管脚,积分器对参考电压VREF向相反方向积分,若积分器的输出电压到零时所经过的积分时间为T2,则有:
(3)
故得到:
(4)
上述三式中VREF为A/D 转换器的基准电压,由C8051F020片内的12位D/A转换器DAC0提供。可见,T2与进行固定时间间隔积分的电压信号VO1成正比,令计数器在这段时间里对固定频率为fc (fc=1/TC)的时钟脉冲计数,计数值即为转换成的数字量,即
(5)
式中D为表示计数结果的数字量,即A/D转换值。
因为T1为计数器计满2n个脉冲的时间,即T1=2nTc,将其代入(5)式得出
(6)
再将(1)式代入(6)式得出
(7)
由(7)式可知:本文给出的双积分式A/D转换器与常规双积分式A/D转换器的主要不同之处在于加入了偏移电压VCP可对双极性电压信号VIN进行转换。
积分器输出电压过零时,比较器LM311输出电平翻转,将比较器LM311输出端与C8051F020单片机内部比较器0输入端CP0+相连,使比较器输出电平的翻转引发程序中断进行A/D转换后的数字量显示。
4 实现不同分辨率下的A/D转换
常规双积分式A/D转换器的主要弊端之一是转换速率低,无法适应要求高速A/D转换的工业现场。本文所论述的双积分式A/D转换器采用C8051F020单片机内部的高速计数器计数,显著提高了A/D转换器的转换速率。
双积分式A/D转换器的转换速率由分辨率与晶振频率决定。在晶振频率一定的情况下,欲提高分辨率,则需降低转换速率。因此,为了提高双积分式A/D转换器的转换速率,可在对分辨率要求不高的应用场合将分辨率适当降低。
根据双积分式A/D转换器的转换原理可知:当进行定时间间隔积分的电压与基准电压幅值VREF相等时,进行一次A/D转换所需时间最长,具体关系见下式:
式中T为一次A/D转换的最长时间,fosc为给单片机外加的晶振频率,n为A/D转换器的分辨率。
通过软件编程控制固定积分时间T1可方便地使A/D转换器具有8位、10位、12位、14位、16位等多种不同的分辨率,以适应不同转换速率的要求。
5 改善性能的主要措施
(1)量程扩展。在待测电压输入端连接放大器和衰减器,即可实现A/D转换器量程的扩展。
(2)零漂校准。每次测量前,通过程控闭合开关RY,使输入量为零,即可测得A/D转换器的零漂,再由单片机对实际的测试进行误差补偿,以实现自动校准的功能。
6 结束语
此A/D转换器线性误差小于0.5%;当给单片机外加的晶振频率为11.0592MHz时,在16位分辨率下转换速率可达168.75次/s;通过软件编程可实现8位、10位、12位、14位、16位等多种分辨率,当分辨率设定为10位时,转换速率可达10800次/s。除此之外,还可进行量程扩展、校零、误差补偿等等。