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

2018-01-29来源: eefocus关键字:MSP430F1121  内置比较器  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相等。

图1 利用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)带来的计算上的麻烦。

图2 用比较器做A/D转换的子程序代码

图2 用比较器做A/D转换的子程序代码


应用实例


上面介绍的低成本A/D转换器方案适用于缓慢变化电信号的采集,如温度、压力、光和电压等。结合芯片的低功耗特点,该方案适合于电池供电的便携式仪器。


用图1所示电路可以构成一个简单的信号测量系统,用HT1621作为液晶显示驱动器,P1.0~P1.3四个I/O口控制HT1621。测量结果直接可以看到,利用该电路可以构成一个具有12位以上分辨率的毫伏表。

      

因此,可以将测量结果放入FLASH存储器中,具有记忆和回放功能。MSP430F1121 还有一个16位定时器,可以与一个I/O端口构成一个UART,用于发送测量结果,上传给PC机,可以构成一个低采样率的简易存储示波器。


关键字:MSP430F1121  内置比较器  A  D变换器

编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/article_2018012937570.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:SAMSUNG S3C9454 示例程序
下一篇:基于MSP430F435的国内血糖仪

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

Nokia LCD 5110 移植(基于MSP430F5529)

头文件nokia_5110.h#ifndef __nokia_5110_h_#define __nokia_5110_h_#include <msp430.h>#define LCD_5110_DIR            P3DIR#define LCD_5110_OUT        P3OUT#define   LCD_RST    2#define   LCD_CE    3#define   
发表于 2019-05-11

SPWM波在单片机上的实现与调节(基于MSP430F5529)

);extern void SPWM_2Way_Init(void);extern void SPWM_2Way_Set_Freq(unsigned int freq);#endif /* PWM_H_ */头文件include.h/* * include.h * *  Created on: 2016-8-18 *      Author: Flyskyr */#include <msp430.h>#include"PWM.h"unsigned int spwm_i,spwm_j;unsigned int
发表于 2019-05-11

按键的长按与短按(基于MSP430F5529)

长按与短按的区别只是加上一个适当的延时然后再去判断引脚状态。定义:#define KEYDIR P2DIR#define KEYIN P2IN#define KEYIFG P2IFG#define KEYIE P2IE#define KEYIES P2IES#define KEYREN P2REN#define S1 BIT0extern unsigned char key_key;在中断中处理长按与短按:#pragma vector=PORT2_VECTOR  //声明中断向量地址__interrupt void GPIOIntHandler(void){unsigned int IntState,vextend,cv
发表于 2019-05-11

MSP430F4250 AD解读

1.关于MSP430F4250:2.关于MSP430F4250 AD:参考MSP430X4XXFamily User’s Guide:关于16位AD采样有两种:2.1 MSP430F4250选的是哪种?其实并不是软件设置哪种,而是型号决定,由上述可知,MSP430F4250使用的是SD16_A2.2 MSP430F4250 AD的输入电压范围是多少?此时参考的手册需要更换为MSP430F42X0手册:2.3 MSP430F4250 AD的转换结果在哪?数据格式是什么?继续参考MSP430X4XX Family User’s Guide手册:AD的转换结果就在SD16MEMx这个寄存器里保存,数据格式和设置有关:其中SD16UNI
发表于 2019-05-07
MSP430F4250 AD解读

MSP430F1232针对ADC10(使用DTC+SA)的内存中采样结果读取

的大小跟具体的器件直接相关。RAM部分可以用来存储数据和指令。MSP430F1232的ADC10转换结果存放在ADC10SA指定的起始地址中,地址是连续的,每个地址中存放多大的数据?ADC10转换结果先放在16位MEM中,那么这16位怎么放在内存中,怎么取出来?第一个问题:每个地址中存放8位数据第二个问题:应该是MEM中的低八位放在sa指定的初始地址a0中,高八位放在下一个地址,也就是a0+1中,到底是不是这么放的,因为手册中并没有明确的写出来,也或者自己没有找到,所以最有效的方法是通过一个例程,单步调试程序,看一下a0和a0+1地址取出的数据到底是什么样的,这是最有效的方式,所以不要嫌麻烦。个人感觉上述来自百度知道的方法应该是有效
发表于 2019-05-07

MSP430F5529 ADC参考

MSP430F5529 ADC参考笔记1.ADC12_A初始化参数typedef struct ADC_MemMap{  union  {    uint16_t CTL0;    struct    {      uint16_t SC             :1;  /* ADC12 Start Conversion */      uint16_t ENC       
发表于 2019-03-14
MSP430F5529 ADC参考

小广播

何立民专栏

单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved