| 收藏本站
全国销售服务热线:400-900-8690

用MSP430F1121内置比较器设计高精度A/D变换器

Σ-ΔA/D技术具有高分辨率、高线性度和低成本的特点。本文基于TI公司的MSP430F1121单片机,介绍了采用内置比较器和外围电路构成类似于∑-△的高精度A/D实现方案,适合用于对温度、压力和电压等缓慢变化信号的采集应用。 在各种A/D转换器中,常用是逐次逼近法(SAR)A/D,该类器件具有转换时间固定且快速的特点,但难以显著提高分辨率;积分型A/D 有较强的抗干扰能力,但转换时间较长;过...

Σ-ΔA/D技术具有高分辨率、高线性度和低成本的特点。本文基于TI公司的MSP430F1121单片机,介绍了采用内置比较器和外围电路构成类似于∑-△的高精度A/D实现方案,适合用于对温度、压力和电压等缓慢变化信号的采集应用。
    在各种A/D转换器中,常用是逐次逼近法(SAR)A/D,该类器件具有转换时间固定且快速的特点,但难以显著提高分辨率;积分型A/D 有较强的抗干扰能力,但转换时间较长;过采样Σ-ΔA/D由于其高分辨率,高线性度及低成本的特点,正得到越来越多的应用。根据这些特点,本文以TI公司的MSP430F1121单片机实现了一种类似于Σ-ΔA/D技术的高精度转换器方案。
    MSP430F1121是16位RISC结构的FLASH型单片机,该芯片有14个双向I/O口并兼有中断功能,一个16位定时器兼有计数和定时功能。I/O口输出高电平时电压接近VCC,低电平时接近Vss,因此,一个I/O口可以看作一位DAC,具有PWM功能。
    该芯片具有一个内置模拟电压比较器,只须外接一只电阻和电容即可构成一个类似于Σ-Δ技术的高精度单斜率A/D。一般而言,比较器在使用过程中会受到两种因素的影响,一种是比较器输入端的偏置电压的积累;另一种是两个输入端电压接近到一程度时,输出端会产生振荡。
    MSP430F1121单片机在比较器两输入端对应的单片机端口与片外输入信号的连接线路保持不变的情况下,可通过软件将比较器两输入端与对应的单片机端口的连接线路交换,并同时将比较器的输出极性变换,这样抵消了比较器的输入端累积的偏置电压。通过在内部将输出连接到低通滤波器后,即使在比较器输入端两比较电压非常接近,经过滤波后也不会出现输出端的振荡现象,从而消除了输出端震荡的问题。

    利用内置比较器实现高精度A/D

    图1是一个可直接使用的A/D转换方案,该方案是一个高精度的积分型A/D转换器。其基本原理是用单一的I/O端口,执行1位的数模转换,以比较器的输出作反馈,来维持Vout与Vin相等。
    用MSP430F1121内置比较器设计高精度A/D变换器
    图1 利用MSP430F1121实现的实用A/D转换器电路
    如图1所示,产生1位DAC的电路为一路通用I/O口、一个串联的电阻和电容。在电容上产生Vout,要维持Vout=Vin,必须通过 I/O口对电容进行充放电,而由比较器的输出来决定是进行充电还是放电(即I/O口输出高低电平),这样A/D形成了一个类似于带负反馈的闭环系统。以图 1的电路为例,当比较器输出为高电平时,说明Vout>Vin,此时应对电容放电,则I/O口输出低电平;当比较器输出为低电平时,说明Vout <Vin,应对电容充电,则I/O口输出高电平。
    充、放电维持的时间确定的方法是每隔一个极短且固定的时间t后,查询比较器的输出状态,如果比较器的输出状态没变,则维持I/O口的输出;当比较器的输出状态发生改变,则I/O口的输出状态也应改变。因此,I/O的某一状态(高/低电平)维持的时间可能是Xt(X为整数),从而在整个A/D转换过程中,形成了一系列的X1、X2、…、Xi、…、 Xn。Xn为一随机数,其值由比较器的输出状态而定。在每个单位时间t后,如果I/O口的输出为高电平,则事先设定的计数加1,当A/D转换完成后,记录下I/O口输出高电平的次数为m。
    而A/D转换完成的时间主要取决于对A/D转换的精度要求。当要求一个12位的A/D,则其时间为4096t,即对比较器输出作 4096次查询,每次查询间隔时间为t(参考后面的程序及说明)。同样16位的A/D的时间为65535t。在此,将对应转换精度要求的4096或 65535设为N,并结合上文所述,N=X1 X2 ……Xn。
    那么结合电容的充放电公式:
    V(t)=V(1-exp(-t/RC))
    可对积分型A/D作以下数学上的推断,从而求出Vin。
    N=X1 X2 ……Xn
    高电平的次数为m
    假设:Vin(t)=Vin
    根据Vout=Vin和电容的充放电的公式可得:
    Vout(t)=Vin m(Vcc-Vin)(1-exp(-t/RC))-(N-m)Vin(1-exp(-t/RC)
    m(Vcc-Vin)(1-exp(-t/RC))为充电过程
    (N-m)Vin(1-exp(-t/RC)为放电过程
    因此:Vin=Vcc×m/N (1)
    上式成立的前提条件是Vin 在短时间内不变,且对确定Vout的电容要预充电,在开始进行A/D转换前使Vout=Vin,即通过I/O口对电容预充电使比较器在发生次翻转后,开始进行积分A/D转换。
    如果对(1)式作一些处理,可使得A/D转换的处理更加方便:如果电源电压Vcc为3.0V,取N=3000,则分辨率为1mV,当m= 1245时, Vin=1.245V;如果N=30000,则分辨率为0.1mV,在m=12456时,则Vin=1.2456V。这样,只要通过对m的确定就可以得到 Vin的值,避免了直接用公式(1)带来的计算上的麻烦。
    用MSP430F1121内置比较器设计高精度A/D变换器
    图2 用比较器做A/D转换的子程序代码
    应用实例
    上面介绍的低成本A/D转换器方案适用于缓慢变化电信号的采集,如温度、压力、光和电压等。结合芯片的低功耗特点,该方案适合于电池供电的便携式仪器。
    用图1所示电路可以构成一个简单的信号测量系统,用HT1621作为液晶显示驱动器,P1.0~P1.3四个I/O口控制HT1621。测量结果直接可以看到,利用该电路可以构成一个具有12位以上分辨率的毫伏表。
    MSP430F1121内部有4K FLASH 存储器,没有被程序占用部分可以作为数据存储器用,因此,可以将测量结果放入FLASH存储器中,具有记忆和回放功能。MSP430F1121 还有一个16位定时器,可以与一个I/O端口构成一个UART,用于发送测量结果,上传给PC机,可以构成一个低采样率的简易存储示波器。