基于MSP430G2 553的电子秤设计.docx

上传人:b****1 文档编号:10525601 上传时间:2023-05-26 格式:DOCX 页数:22 大小:756.42KB
下载 相关 举报
基于MSP430G2 553的电子秤设计.docx_第1页
第1页 / 共22页
基于MSP430G2 553的电子秤设计.docx_第2页
第2页 / 共22页
基于MSP430G2 553的电子秤设计.docx_第3页
第3页 / 共22页
基于MSP430G2 553的电子秤设计.docx_第4页
第4页 / 共22页
基于MSP430G2 553的电子秤设计.docx_第5页
第5页 / 共22页
基于MSP430G2 553的电子秤设计.docx_第6页
第6页 / 共22页
基于MSP430G2 553的电子秤设计.docx_第7页
第7页 / 共22页
基于MSP430G2 553的电子秤设计.docx_第8页
第8页 / 共22页
基于MSP430G2 553的电子秤设计.docx_第9页
第9页 / 共22页
基于MSP430G2 553的电子秤设计.docx_第10页
第10页 / 共22页
基于MSP430G2 553的电子秤设计.docx_第11页
第11页 / 共22页
基于MSP430G2 553的电子秤设计.docx_第12页
第12页 / 共22页
基于MSP430G2 553的电子秤设计.docx_第13页
第13页 / 共22页
基于MSP430G2 553的电子秤设计.docx_第14页
第14页 / 共22页
基于MSP430G2 553的电子秤设计.docx_第15页
第15页 / 共22页
基于MSP430G2 553的电子秤设计.docx_第16页
第16页 / 共22页
基于MSP430G2 553的电子秤设计.docx_第17页
第17页 / 共22页
基于MSP430G2 553的电子秤设计.docx_第18页
第18页 / 共22页
基于MSP430G2 553的电子秤设计.docx_第19页
第19页 / 共22页
基于MSP430G2 553的电子秤设计.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于MSP430G2 553的电子秤设计.docx

《基于MSP430G2 553的电子秤设计.docx》由会员分享,可在线阅读,更多相关《基于MSP430G2 553的电子秤设计.docx(22页珍藏版)》请在冰点文库上搜索。

基于MSP430G2 553的电子秤设计.docx

基于MSP430G2553的电子秤设计

MSP430G2系列Launchpad开发板应用实例作品

 

基于MSP430G2553实现的电子秤设计

李弘祖

 

西安邮电大学

2015年12月

第一章作品概述

第一节系统概述

本设计以MSP430G2553作为核心,由压力传感器和数码管显示器共同实现对物体质量的测量显示功能,最小分辨率1克,系统框图和各部分简介如图1.1所示。

 

图1.1系统组成框图

1)压力传感器:

在直流激励下,受到压力形变,产生电压信号。

压力信号以差分电压的形式通过绿色(数据)和白色(数据地)连根引线与PCB上的端子相连。

2)信号调理电路:

传感器信号由于幅度较小,噪音较大,不能直接由AD采集,经过放大(AD623)滤波电路,得到合适频带幅度的信号送往中央控制器(MSP430G2231)。

由接线端子上引入的数据+和数据地差分信号分别接仪表运放的正端输入和负端输入,在反馈电阻的作用下,实现高共模抑制的差分放大。

后接RC滤波电路,将低频可用信号取出,输出至MSP430的ADC10模块入口。

3)中央控制器:

由G2的AD模块通道0采集前级电压信号,转换为数字量后,保存在CPU内存中,然后通过统计算法和传感器线性参数修正,得到被测压力数值参数,再将这些数据发往LED显示电路。

4)显示电路:

由数码管驱动芯片(74LS48)根据CPU发来的显示数据点亮LED,显示出数值。

第二节器件概述

1)MSP430G2553

MSP430是美国德州仪器公司自1996推出以来一直主打的一个低功耗系列,包含1至5五个系列,每个系列都各自有各自的特点,适用于各种不同场合的不同应用。

其中最近2系列添新面孔——G2超值系列。

本设计采用的MSP430G2553就是MSP430超低功耗系列中G2超值子系列的一款16位处理器。

通过引入MSP430G2xx3系列,MSP430超值系列继续扩展了产品系列。

由于具有低成本和超低功耗,G2xx3系列适用于电容触摸应用,并可集成诸如UART、SPI和I2C等通信外设。

MSP430G2xx3系列与8位微处理器相比,具有绝对优势。

G2xx3系列的主要特性包括:

1.与其他430器件相同的超低功耗

2.闪存高达16KB

3.512BSRAM

4.通用串行通信接口(USCI)

5.具有3个捕捉/比较寄存器的2个16位Timer_A

6.10位ADC、比较器外设选项

7.启用创新电容式触摸感应设计的IO在此类应用中可降低系统成本。

8.提供20/28引脚TSSOP、32引脚QFN和20引脚DIP封装

本次设计采用的就是DIP14的封装(如图2.1所示)

图1.2MSP430G2231DIP引脚图

2)AD623

AD623是一个集成单电源仪表放大器,它能在单电源(+3V到+12V)下提供满电源幅度的输出。

它允许使用单个增益设置电阻进行增益编程,以得到更好的灵活性。

符合8引脚的工业标准配置。

在无外接电阻条件下,AD623被设置为单增益(G=1)。

在外接电阻后,AD623可编程设置增益,增益最高可达1000倍。

AD623通过提供极好的随增益增大而增大的交流共模抑制比(ACCMRR)而保持最小的误差。

线路噪声及谐波将由于CMRR在高达200HZ时仍保持恒定。

它有较宽的共模输入范围,可以放大具有低于地电平150mv共模电压信号。

它在双电源(2.5至6V)仍能提供优良性能。

低功耗,宽电源电压范围,满电源幅度输出,使AD623成为电池供电的理想选择。

在低电源电压下工作时,满电源幅度输出级使动态范围达最大。

它可以取代分立的仪表放大器设计,且在最小的空间提供很好的线性度,温度稳定性很可靠性。

图1.3AD623引脚图

3)74LS48

74LS47是一个TTL高电平数码管驱动驱动缓冲器件。

可以将BCD输入数据在LED上显示出来,当BCD输入大于9时,将显示一些特殊字符用以区别不同的输入状态。

可以有效的减少显示电路对数码管IO资源的占用,同时还增加了一定的驱动能力。

图1.474LS47引脚图

第二章硬件设计

第一节MSP430G2/Launchpad

图2.1MSP430G2系列Launchpad开发板实物图

基于名为Launch Pad,MSP-EXP430G2低成本实验板是一款适用于TI最新MSP430G2XXX犀利产品的完整开发解决方案。

基于USB的集成型仿真器可提供全系列MSP430G2XX器件开发应用所必备的所有软件、硬件。

LunchPad具有集成的DIP目标插座,可支持多达20个引脚,从而使MSP430ValueLine器件能够轻松插入LaunchPad实验板电路。

此外,其还可支持板上FLASH仿真工具,以直接连接至PC轻松进行编程、调试和评估。

LunchPad实验板还能够对eZ430-RF2500T目标板、eZ430-Chronos手表模块或eZ430-F2012T/F2013T目标板进行编程。

此外,他还提供了从MSP430G2XX器件到主机PC或者相连目标板的9600波特UART串联连接。

MSP-EXP430G2采用IAREmbeddedWorkbench集成开发环境或者CodeComeposerStudio下编写、下载、调试应用。

调试器是非侵入式的,这使用户能够借助可用的硬件断点和单步操作全速运行应用,而不消耗其他硬件资源。

MSP-EXP430G2LauchPad特性

·USB调试与编程接口无驱动可安装使用,具备9600波特率的UART串行通信速度

·支持所有采用DIP14和DIP20封装的MSP430G2XX和MSP430F20器件

·分别连接到绿光和红光LED的两个通用数字I/O引脚可以提供视觉反馈

·两个按钮可以实现用回反馈和芯片复位

·器件引脚可以通过插座引出,即可方便用于调试,也可用添加定制的扩展板

·该质量的20引脚DIP插座,可以轻松的插入或者拔出目标器件

第二节传感器原理及选型

1)电阻式压力应变传感器

半导体或者金属材料在收到外界压力或拉力作用时发生机械形变,导致其阻值发生变化,这种因为形变造成的阻值变化称为“应变效应”。

根据这一效应制作的,以测量压力为目的传感器称为电阻式应变传感器。

电阻应变片种类繁多,但其基本构造都是覆盖层+敏感栅+基盘的模式(如图2.2),其中敏感栅有引线接出,作为应变片的输出端子。

图2.2电阻式压力应变结构图

2)悬臂梁式压力传感器

悬臂梁式压力传感器一端固定,一端加载,利用臂梁上应变片拉伸的压缩的变化而发生的应变效应,从而测得压力的一种压力传感器。

臂梁上方的应变片

称为工作片,当臂梁受到正向压力时该应变片被拉伸。

臂梁的反面的应变片称为补偿片,当臂梁受到正向压力时该应变片被挤压。

因为臂梁本身一般选择刚性较好的材料,工作片和补偿片的形变引起的电阻变化大小正好等大反向,如果因为温度、气压等环境因素造成应变片灵敏度变化,两个应变片正反两种变化刚好相互补偿。

当然两个应变片一定要是同批次,特性相同的。

3)电桥式传感器

对于电阻式传感器,需要借助适当的电路,将电阻的变化转化为电压或者电流信号,以供后续电路使用。

最常用的办法是惠斯顿电桥(如图2.3)。

图2.3惠斯顿电桥

假定相等的4个电阻分为两组,串联构成两个电阻串,由于是等值电阻,因而两电阻间的节点电压是电阻串电压的一半,电表V上没有变化。

假如一个电阻值增长1%,另一个电阻减小1%,那么两个电阻节点处的电压将改动1%。

假如将两个电阻串实行并联,如图1所示,右边下方的电阻和左边上方的电阻阻值均减小1%,另外两个电阻增长1%,那么两个“中”点间的电压将从零差值变为改动2%。

两个并行分支的这种配置就被称为惠斯顿桥。

其中涉及计算的步骤,已经有无数前人予以证实,这里不庸赘述。

但是,特别提出,这个电路将电阻变化转化为电压信号的同时还能对信号予以4倍放大。

由前例可以看出,R1和R4阻值的增大、与R2、R3的减小会增大V的示数。

若将R1、R4固定在悬臂的工作面,R2、R3固定在补偿面,四个电阻阻值的变化就能全部转化为电压信号,

同时还能完成温度补偿的功能。

图2.4悬臂梁式/电桥式受力示意图

4)浙江三科LDH001型压力传感器

工作原理:

电阻式电桥式悬臂梁式

项目

数值

单位

额定负载

5

kg

输出电压

2.00

mV/V

供电电压

2~15

V

迟滞性

0.02

%F.S

重复性

0.02

%F.S

零点平衡

2.00

%F.S

安全负载

150%

工作温度

-10~40

图2.5LDH001型传感器参数图

 

图2.6传感器实物及支架

第三节信号调理电路

 

图3.1信号调理部分原理图

P1为传感器信号线的正极和地接口。

R3、R2是反馈电阻,用于调节放大倍数,反馈电阻和放大倍数的关系如图3.2,其中R2是一个电位器,用于校准R3本身的误差。

C3、C6作为滤波电容,滤除噪音。

R4和C7构成一个低通滤波器。

图3.2AD623反馈电阻阻值与放大倍数关系

由于电阻型传感器对于供电纹波敏感,所以其输出信号中存在明显的50Hz类似正弦波,在干扰环境较强的时候,正弦波幅度大于20mV,完全淹没了传感器的信号,必须信号调理,后级的低通滤波器可以滤除大部分的纹波,但是剩余的干扰仍然对AD的采样有很大地干扰,在单片机程序中还要通过数学方法消除。

运算放大电路,不仅可以放大信,提高测量精度还能起到阻抗变换的作用,也是信号调理、传感器测量的必要一环。

第四节LED显示电路

图3.3显示电路部分原理图

74LS47中的ABCD分别链接IO口,作为BCD数据输入端,abcdefg分别接数码管对应的段码,对应ADCD输入和abcdefg输出关系如图3.4。

LT、RBI、BL分别为调试功能用,没有用到,LT和BI接电源,RBI接地。

图3.474LS47译码器真值表

 

第四节器件清单

Comment

Designator

Footprint

Quantity

AD623

AD1

DIP-8

1

CAP-TAN

C1,C2,C6

1206

3

RES

R4,R5,RA,RB,RC,RD

0805

6

CAP

C4,C5'C3,C7,

0805

4

 

C6

1206

1

Diode

D1

0805

1

4SegmetDigtalLEDlowcom

D4

SMG4

1

Res2

R1,R3

0805

2

ResAdj2

R2

SFM-T3/A2.4V

1

AMS1117_3.3

U1

SOT-223

1

74HC48

U2

DIP-16

1

74F04

U3

SO-14

1

74HC139

U4

SOL-16

1

第三章软件系统设计

第一节程序流程

本软件实现了将由传感器的发送的模拟信号采集后,通过ADC中断方式,由AD转换的数据读取至单片机内存,然后通过数代数法和统计方法进行电压和压力的比例计算,得出压力值。

同时定时器中断下定时刷新数码管显示器。

程序可以大致分为初始化、ADC和显示三部分。

1)初始化

 

图3.1系统初始化程序流程图

在系统运行以后也就启动了看门狗的计数器,看门狗就开始自动计数,如果到了一定的时间还不去清看门狗,那么看门狗计数器就会溢出从而引起看门狗中断,造成系统复位。

所以在系统正式启动前需要对看门狗进行设置。

MSP单片机内部有着丰富的片上资源,如ADC、定时器、比较器、DMA、FLASH等,如并非全部使用而一直启动着,则造成无谓的电损耗,显然不利于低功耗设计,430特殊寄存器中就设置了相应的寄存器用于控制这些模块的开启和关闭,这些模块默认都是关闭的,所以在初始化系统的时候需要开启这些模块。

ADC开启后还不能直接工作,为了适应不同情况下的测试要求,还要进行一些细化的设置,需要设置采样周期、采样通道、采样方式(单次、或者连续)、正负模式,TIMER模块也是如此,需要设置计数方式、触发方式、计数周期等。

2)ADC中断

图3.2ADC中断流程图

当MSP430ADC模块启动后,ADC定时采样转换出数字信号,每次转换完毕后触发一次ADC中断,进入中断后开始,将转换的数据存入缓存数组,然后数组计数器加一,然后判断数组计数器是否满,若满对整个数组求和换算,送入显示缓存,清空数组计数器,清除中断标志位,方能退出中断。

若计数器没满,则直接清空标志位,退出中断。

3)定时器中断

图3.3定时器流程图

当计数器计时满时(设计为21000即为2ms),进入定时器中断服务子程序。

进入中断后,判断周期数是否满足(设计为周期数达到25个周期,即每50ms刷新一次,数码管刷新频率一般为25至75Hz),如果不满足则周期数加一,中断返回;如果满足刷新条件,则执行刷新显示子程序,然后清零周期数,中断返回。

第二节源程序

#include

#defineVCC5

constunsignedchardecoder_seg7[18]={0xee,0x82,0xdc,0xd6,0xb2,0x76,0x7e,0xc2,0xfe,0xf6,0xde,

0x3e,0x6c,0x9e,0x7c,0x78,0x00,0xff};

voiddelay_1s(void);//延迟1s函数

voidseg7_1ms(unsignedcharseg7_data);//声明驱动一位数码管的驱动函数

voidadc10_begin(void);//声明ADC10配置函数

voidseg7_3ms(unsignedcharseg7_data2,unsignedcharseg7_data1,unsignedcharseg7_data0);//声明三位数码管驱动函数

voidseg7_3ms(unsignedcharseg7_data2,unsignedcharseg7_data1,unsignedcharseg7_data0)

{

seg7_1ms(seg7_data0);//调用一位数码管的同步串行数据接口驱动函数

seg7_1ms(seg7_data1);

seg7_1ms(seg7_data2);

}

voidadc10_begin(void)//ADC10配置函数

{

//配置ADC10模块模拟电压输入管脚

P1SEL|=BIT0;//设置P1.0管脚为外围模块输入/输出管脚

P1SEL2|=BIT0;

P1DIR&=~BIT0;//设置P1.0管脚为输入管脚

//ADC10模块相关寄存器配置

ADC10CTL0&=~ENC;//调整ADC10CTL0和ADC10CTL1位ENC必须清零

ADC10AE0|=BIT0;//使能A0通道转换

ADC10CTL0&=~SREF2;//参考电压选择:

VR+=VCCandVR-=VSS

ADC10CTL0&=~SREF1;

ADC10CTL0&=~SREF0;

ADC10CTL0&=~ADC10SHT1;//采样-保持时间选择:

4ADC10CLK

ADC10CTL0&=~ADC10SHT0;

ADC10CTL0|=ADC10SR;//采样速率选择:

50ksps

ADC10CTL0|=REFOUT;//参考电源输出打开

ADC10CTL0&=~REFBURST;//参考电源连续工作

ADC10CTL0&=~MSC;//每次转换都需要触发

ADC10CTL0|=REF2_5V;//内部参考电压选择:

2.5V

ADC10CTL0|=REFON;//内部参考电源打开

ADC10CTL0|=ADC10ON;//ADC10模块打开

ADC10CTL0&=~ADC10IE;//不使能ADC10模块中断

ADC10CTL1&=~INCH3;//模拟电压输入通道选择:

A0

ADC10CTL1&=~INCH2;

ADC10CTL1&=~INCH1;

ADC10CTL1&=~INCH0;

ADC10CTL1&=~SHS1;//采样触发信号选择:

ADC10SC/ADC10CTL0

ADC10CTL1&=~SHS0;

ADC10CTL1&=~ADC10DF;//ADC10模块输出数据格式选择:

线性二进制

ADC10CTL1&=~ISSH;//采样-保持电路触发信号不反相

ADC10CTL1&=~ADC10DIV2;//ADC10CLK时钟源分频选择:

1

ADC10CTL1&=~ADC10DIV1;

ADC10CTL1&=~ADC10DIV0;

ADC10CTL1|=ADC10SSEL1;//ADC10CLK时钟源选择:

MCLK

ADC10CTL1&=~ADC10SSEL0;

ADC10CTL1&=~CONSEQ1;//转换模式选择:

单通道,单次

ADC10CTL1&=~CONSEQ0;

ADC10CTL0|=ENC;//ADC10模块使能

}

voidseg7_1ms(unsignedcharseg7_data)

{

unsignedcharcode_seg7;//声明显示代码变量

unsignedcharserial_number;//声明循环变量

unsignedcharserial_shift;//声明串行数据位存储变量

code_seg7=decoder_seg7[seg7_data];//显示数据译码

//同步串行接口初始化

P1OUT&=~BIT6;//P1.6输出低电平

P1OUT&=~BIT7;//P1.7输出高电平

serial_shift=0x80;//串行数据指向八位数据的最高位

for(serial_number=0;serial_number<8;serial_number++)

{

if(code_seg7&serial_shift)//判断显示代码位的状态

{

P1OUT|=BIT7;//P1.7输出高电平

}

else

{

P1OUT&=~BIT7;//P1.7输出低电平

}

P1OUT|=BIT6;//P1.6输出高电平

P1OUT&=~BIT6;//P1.6输出低电平

serial_shift>>=1;//串行数据位指向数据位右移位

}

}

voiddelay_1s(void)

{

unsignedlongdata_delay;//声明循环次数变量

for(data_delay=0;data_delay<126654;data_delay++)//利用循环语句实现时间延迟

;

}

voidmain(void)

{

floatdata_adc10;//声明模拟/数字转换结果储存变量

unsignedchardata_seg7_2,data_seg7_1,data_seg7_0;//声明每一位数据显示变量

unsignedcharnumber;//声明循环变量

unsignedchardata_seg7_temp;

WDTCTL=WDTPW+WDTHOLD;//关看门狗

P1SEL&=0x3f;//设置P1.7和P1.6引脚为数字输入/输出引脚

P1DIR|=0xc0;//设置P1.7和P1.6引脚为输出引脚

seg7_3ms(1,1,1);

adc10_begin();//ADC10配置

while

(1)

{

ADC10CTL0|=ADC10SC;//ADC转换软件启动控制位功能

//for(number=0;number<5;number++)//连续采集5次,稳定数据

//{

while((ADC10CTL1&0x01)==1);//等待模拟/数字转换结束

data_adc10=ADC10MEM;//读取转换结果

//}

data_adc10=data_adc10*2.5/1023;//转化为已V为单位的电压量

data_seg7_temp=data_adc10*100;

data_seg7_2=data_seg7_temp/100;

data_seg7_temp%=100;

data_seg7_1=data_seg7_temp/10;

data_seg7_0=data_seg7_temp%10;

seg7_3ms(data_seg7_2,data_seg7_1,data_seg7_0);

delay_1s();

}

}

第四章总结与思考

本次设计旨在完成对压力传感器信号采集处理显示的数据流程简单实现,通过此次设计完成G2系列单片机的一个实例应用。

在本次设计中,主要包括硬件搭建和软件调试,另外还有对传感器的选择上。

在硬件电路方面,我们430作为控制器,通过电源电路、显示电路、放大滤波电路实现了预期目标。

各部分先是逐个调试通过,然后整体联机调试。

软件方面,大概用了一周时间调试程序,主要是对误差信号的处理,以及显示控制方法的编写,同样,各部分也要分模块调试,然后在硬件上运行通过。

作为压力检测来说,模拟前端还有很大的改善空间,电源、放大、滤波任意一个单元电路都可以单独成立一个课题,本设计考量G2单片机精巧简洁的特点,为了突出重点,都选用了最简约的设计,从成本上节省了不少。

本次设计的不足主要有两点:

第一,信号调理电路简单,不能充分发挥10位AD的精度,在显示的末位市场有数字波动;第二,显示电路使用动态刷新,亮度不足而且占用CPU较多的资源。

改进的方案:

第一,采用高阶的滤波电路,有源的滤波电路,以及在算法上分析出存在的噪音将他们取出。

第二,使用专门的数码管管理芯片,将CPU锁存驱动这些工作中解放。

针对这样一个试验系统,在文章的结尾笔者提出了如下几个问题,愿与读者共同思考:

1)对电阻应变片而言,除了工艺上的原因外,影响器输出精度和分辨率的主要因素有哪些?

2)在信号发出到进入AD的过程中,在哪些环节可能引入误差,这些误差的来源是什么,如何减小或者消除它们,消除它们会对系统带来什么其他影响?

3)本系统的动态显示驱动数码管有什么缺陷,尝试设计利用4个以内的IO资源控制四位8段数码管克服动态驱动的缺陷。

4)电子秤除了显示重量这项基本功能外,是否还能附加一些其他功能?

如记录重量,过载报警等。

5)压力检测还能除了作为电子秤的应用之外,还有什么其他的应用领域,试设计一个方案,在对原先硬件较小改动的前提下,实现预期方案。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2