关键词:单片机 ADC 电压表 ICL7135
在常用的A/D转换芯片(如ADC0809、ICL7135、ICL7109等)中,ICL7135与其余几种有所不同,它是一种四位半的双积分A/D转换器,具有精度高(精度相当于14位二进制数)、价格低廉、抗干扰能力强等优点。通常情况下,设计者都是用单片机来并行采集ICL7135的数据,本文介绍用单片机串行方式采集ICL7135的数据以实现单片机电压表和小型智能仪表的设计方案。
1 ICL7135的串行工作方式
1.1 ICL7135的测量周期
ICL7135的测量周期包括下列四相(节拍):
(1)AUTO-ZERO(自动调零)相
在该相时,内部IN+和IN-输入与引脚断开,且在内部连接到ANLG-COMMON,基准电容被充电至基准电压,系统接成闭环并为自动调零(AUTOZERO)电容充电以补偿缓冲放大器、积分器和比较器的失调电压。此时,自动调零精度令受系统噪声的限制,以输入为基准的总失调小于10μV。
(2)SINGAL-INTEGRATE(信号积分)相
在该相,自动调零环路被打开,内部的IN+和IN-输入被连接至外部引脚。在固定的时间周期内,这些输入端之间的差分电压被积分。当输入信号相对于转换器电源不反相(NO-RETURN)时,IN-可直接连接至ANJG-COMMON以便输出正确的共模电压。同时,在这一相完成的基础上,输入信号的极性将被系统所记录。
(3)DEINTEGRATE(去积分)相
该相的基准用于完成去积分(DEINTEGRATE)任务,此时内部IN-在内部连接ANLG-COMMON,IN+跨接至先前已充电的基准电容,所记录的输入信号的极性可确保以正确的极性连接至电容以使积分器输出极性回零。输出返回至零所需的时间正比于输入信号的幅度。返回时间显示为数字读数,并由1000(Vid/Vref)确定。满度或最大转换值发生在Vid等于Vref的两倍时。
(4)ZERO-INTEGRATE(积分器返回零)相
内部的IN-连接到ANLG-COMMON,系统接成闭环以使积分器输出返回到零。通常这相需要100~200个时钟脉冲,但是在超范围(OVERRANGE)转换后,则需要6200个脉冲。
1.2 ICL7135时序图
图1所示是Vid为常数时的ICL7135时序图,由图1可知:在Signal-Integrate(即信号积分)相开始时,ICL7135的BUSY信号线跳高并一直保持高电平,直到De integrate(去积分)相结束时才跳回低电平。在满量程情况下,这个区域中的最多脉冲个数为30002个。其中De integrate(去积分)相的脉冲个数反映了转换结果。
图2是不同Vid值时的ICL7135时序。由图2可见:对于不同模拟量输入,ICL7135的BUSY信号的高电平宽度也不同。
2 与单片机系统的串行连接
在ICL7135与单片机系统进行连接时,如果使用ICL7135的并行采集方式,则不但要连接BCD码数据输出线,又要连接BCD码数据的位驱动信号输出端,这样至少需要9根I/O口线。因此,系统的连接比较麻烦,且编程也非常复杂。
而ICL7135的串行接法是通过计脉冲数的方法来获得测量转换结果的。由其时序分析可知,在Deintegrate(去积分)相,其脉冲数与转换结果具有一一对应关系。
实际上,可以通过单片机(例如ATMEL公司的51系列单片机AT89C52)的定时器T0(也可以使用定时器T1)来计脉冲器。由于,定时器T0所用的CLK频率是系统晶振频率的1/12。因此可利用单片机(AT89C52)的ALE信号作为ICL7135的脉冲(CLK)输入。但要注意,在软件设计编程中,若指令中不出现MOVX指令,ALE端产生的脉冲频率将是晶振的1/6。至此,便可找到定时器所使用的频率与单片机系统晶振频率的关系,以及ICL7135所需的频率输入与单片机系统晶振频率的关系。
为了使定时器T0的计数脉冲的ICL7135工作所需的脉冲同步,可以将ICL7135的BUSY信号接至AT89C52的P3.2(INT0)引脚上,并且将定时器T0的选通控制信号GATE倍1。此时定时器T0是否工作将受BUSY信号的控制。由上述时序图可知,当ICL7135开始工作时,即在积分波形的Signal-Integrate相开始时,也就是ICL7135的BUSY信号跳高时,定时器T0才开始工作,且定时器T0的TH0、TL0所记录的数据与ICL7135的测试脉冲(从积分波形的Signal-Integrate相开始时Deintegrate相结束这一区域内的脉冲称为测量脉冲)存在一定的比例关系。其系统连接图如图3所示。
在这种情况下,由于定时器T0和ICL7135所用的时钟不是同一路。因此,应当找到定时器T0所记录的数据和测量脉冲之间的某种比例关系。其比例关系如下:
Ftime=Fosc/12
Fale=Fosc/6
Freal=Fosc/24
Ficl=Fale/N
其中,Fosc为系统晶振频率;Ftime为定时器所用频率;Fale为单片机ALE输出的频率;Freal为ICL7135的测量脉冲频率;Ficl为ICL7135所用的输入频率,该频率可通过Dale分频得到。N为分频比,该系统中N应选为4。
图4 ICL7135A/D转换器与系统的连接图
由上述频率之间的比率关系可知,AT98C52的定时器T0所用的频率是ICL7135的测量脉冲频率的两倍。因此,定时器T0所记录的脉冲数也是ICL7135的测量脉冲的两倍。图中,分频数可根据ICL7135的要求和单片机的时钟频率来选择。在这里,提倡使用四分频,这样可使定时器T0在对测量脉冲计数时不会溢出。若使用4以上的分频数,则需在软件上作一下改进。
要得到测量脉冲的个数,只需将定时器所记录的脉冲个数除以2即可。而要得到A/D转换结果所对应的脉冲数则应用测量脉冲的个数减去10001。这些转换通常可通过软件完成,因此非常简单。通过A/D转换结果所对应的脉冲数可得到被测的模拟量。通过对串行方式的讨论可以看出:使用这种方法可以不再使用8255芯片来扩展口线。其优点是占用口线少,能节省系统的硬件资源,提高系统的抗干扰能力,不用添加任何扩展口线器件,从而使系统的成本得到降低。
3 基于单片机系统的电压表设计
3.1 系统的硬件
图4所示是单片机电压表系统中ICL7135与单片机系统的典型连接示意图。图中,单片机系统的晶振为6MHz,单片机的ALE信号频率为1MHz;考虑到系统连接方面和单片机ALE信号频率范围等因素,笔者取ICL7135的输入频率为ALE信号的四分频,即选用125kHz。这样选用的好处是T0定时器在对测量脉冲计数时不会产生溢出。
3.2 系统的软件设计
ICL7135A/D与单片机连接电路的软件设计系统的程序流程图如图5所示。
该软件流程图由三部分组成。其中转换子程序是在主程序中调用的,目的是为了不占用很长的中断时间。T0计数器设定为方式1、定时状态、选通控制设为“1”。故TMOD控制字设置为“05H”。由于T0计数器用的是系统的晶振频率,因此与设定为计数状态效果一样。
4 结束语
ICL7135的串行方式在实践中的应用效果很好。与并行方式相比,其突出的优点是结构简单、程序简洁、占用单片机的资源少、可提高抗干扰能力,同时可提高仪器的检测可靠性,并且可在不添加任何扩展口线器件的情况下使系统的成本得到降低。