资料:ADC0809
在日常实验中,经常使用单片机系统实现数据采集功能,即实现实验数据连续精确的数模转换。ADC0809是该类单片机数据采集系统中使用最为频繁的数模转换芯片之一。但是,在许多介绍ADC0809芯片的文献中,该数模转换芯片使用时往往还需要较多的辅助芯片,硬件电路和软件编写都比较复杂,相应成本偏高。因此本文给出一种方法,只需2片ADC0809数模转换芯片、1片741s74触发器芯片,就能实现简洁、快捷、精确的16通道实时数据采集。
1.硬件介绍
ADC0809是一个典型的8位8通道逐次逼近式数模转换芯片,可实现8路模拟信号的分时采集,外接时钟频率一般不高于640KHz,一次数据转换时间大约为100us。ADC0809数据采集方式有3种:延时,查询,中断。它们在电路连接和程序编写中都有所不同。在实验中可以选择其中的一种或多种,本文中的电路连接和程序都采用查询方式。ADC0809为一种输出型芯片,管脚A,B,C为地址,用于选通IN0~IN7上的一路模拟量输入。通常单片机通过A,B,C将二进制的3位地址数据输入到ADC0809中,ADC0809采集相应通道的数据并通过8位数据线传回到单片机中。引脚A,B,C选择通道的二进制地址数据如表1所示 。
741s74是一种上升沿触发的边沿触发器,该芯片中包含2个相同的、相互独立的边沿触发D触发器电路。每一个D触发器的输出信号的频率为输入信号的频率的1/2,如果将2个D触发器串联,就可以形成一个四分频的延时器。
2.系统设计
2.1ADC0809与51单片机
在大多数文献中,ADC0809与51单片机连接方式分为3种,如图1~图3所示 。
图1 连接方式1
图2 连接方式2
图3连接方式3
3种连接方式都为连接1片ADC0809的数据采集电路图,除需要分频芯片外,还需要外加1片~2片其他的芯片,其中,图3只能适合使用1片ADC0809。如要连接多片ADC0809,则外加芯片更多。
图4为本次实验所设计的简单的连接方式,把第1片ADC0809的8位数据线与51单片机的一组I/O直接相连,取该组I/O的低3位为ADC0809采集通道的地址线。同理,第2片ADC0809的8位数据线与地址线同接在另一组I/O13中。这种连接方式可以省去外加的芯片,简化电路,减少了电路板的空间,节省成本。
图4 ADC0809与51单片机的简单连接
2.2采样保持滤波电路
ADC0809对输入模拟量要求如下:信号单极性,电压范围为0~5;若信号太小,则必须进行放大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采样保持;为避免通道之间的信号相互干扰,在模拟电压信号进入ADC0809之前,先进行滤波处理。图5为在信号进入ADC0809之前进行的放大采样保持滤波处理,IN端接待采集的电流信号,OUT端接ADC0809的8个模拟电压信号输入口之一。如果待采集信号为电压信号,电阻R1要略去。
图5 采样保持滤波电路
2.3时钟电路
ADC0809的内部没有时钟电路,所需时钟信号必须由外界提供,其正常工作频率为500kHz-640kHz。通常为ADC0809提供外部时钟信号有2种方式:(1)可以利用外部晶振频率为其单独提供;(2)可以借助单片机的时钟信号。很明显,第2种方式更为简单方便。51系列单片机的ALE脚在不访问片外程序存储器时,可作为对外输出的时钟信号,其提供时钟频率为2MHz。该时钟频率在经由741s74的2个D触发器进行四分频之后,转换为500kHz,符合ADC0809正常工作允许的频率范围。
3.程序设计
在图4的连接方式下,程序设计比较简单,只需按照“选通道一启动采集一等待转换结束一读数据”4个步骤循环进行,就可以依次读取到16个通道采集的数据。以下是以C语言为基础编写的采集程序的核心语句。
for(i=0;i<8;i++)
{
P2=0xf8+i;//通道地址
ST2=0;//启动采集
ST2=I;
ST2=0;
whiIe(EOc2==0);//等待转换完毕
OE2=l;
addata[i]=P2;//ADC0809的l通道~8通道的数据
OE2=0;
}
for(i=8;i<16;i++)
{
P0=0xf8+i;
STI=0;
STI=I;
ST1=0:
while(EOC1==O):
OE1=1;
ad_data[i]=P1;
P2=ad_data[i];//ADC0809的9通道~1O通道的数据
}
上述程序并没有设置采集频率,ADC0809的时钟频率是500kHz,转换一次需要64个时钟脉冲,即进行一次模数转换需要时间0.128ms。命令语句一行用时约2us,与转换时间相比可以忽略不计。由计算可知,1s内约可采集7812个数据。利用定时器或软件延时可以灵活控制数据采集的频率,理论上采样频率的范围可以控制在lHz~78l2Hz。在实际测试时,由于各方面的原因往往达不到理论结果,一般采用的范围为1Hz~50Hz时,采集结果最佳。
4.实验结果与分析
把一个可变电阻的电压输出端接在ADC0809的模拟通道上。在0~5V范围内调节可变电阻的电压输出值,检测采集系统的各个通道的采集结果,16个通道均能正常工作,误差范围为0-4%。根据分析,产生误差的原因有以下几方面:
(1)电源电压输入不稳定,导致ADC0809的供电电压不稳定,即ADC0809数模转换的参考电压值不稳定,影响了转换结果;
(2)电压表测试精度低,存在测试误差;
(3)虽然进行了滤波处理,但是不能完全消除待采集电压信号的干扰。
改进上述问题只能在最大程度上减小误差,不可能根本消除。例如,可以采取在电源输入端、输入电压端增加高精度滤波电路或用软件滤波等方法减小误差。
如果在实际中要用到多片ADC0809,还有一种电路连接方法,如把每一片ADC0809的数据输出线都连接在单片机的同一组I/O口上,并将ADC0809的引脚ST,EOC,OE连接在单片机相同的引脚上,但是每一片ADC0809的地址线A,B,C要分开连接在单片机不同的引脚上。
结束语
本文总结了基于ADC0809与51单片机组成的一套16通道的数据采集系统。该系统采用ADC0809与单片机之间电路相连接的方法,与现有方法相比,其具有电路简单、制作成本低、程序编写简易、信号稳定等优点,可以实现16通道及更多通道的实时数据采集。实验结果表明,该系统采集精度较高,采集频率范围广,采集速度较快。由于采用的芯片等级较低,因此该系统的采集速率有限,这也是下一步需要改进的地方。