多功能数字电子计价秤杨行Word文档下载推荐.docx

上传人:b****5 文档编号:16328373 上传时间:2022-11-22 格式:DOCX 页数:22 大小:790KB
下载 相关 举报
多功能数字电子计价秤杨行Word文档下载推荐.docx_第1页
第1页 / 共22页
多功能数字电子计价秤杨行Word文档下载推荐.docx_第2页
第2页 / 共22页
多功能数字电子计价秤杨行Word文档下载推荐.docx_第3页
第3页 / 共22页
多功能数字电子计价秤杨行Word文档下载推荐.docx_第4页
第4页 / 共22页
多功能数字电子计价秤杨行Word文档下载推荐.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

多功能数字电子计价秤杨行Word文档下载推荐.docx

《多功能数字电子计价秤杨行Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《多功能数字电子计价秤杨行Word文档下载推荐.docx(22页珍藏版)》请在冰豆网上搜索。

多功能数字电子计价秤杨行Word文档下载推荐.docx

附录2AD620的内部等效图-15-

附录3:

应变式电阻传感器相关资料-16-

附录4滤波模块原理图-17-

附录5电源模块原理图-18-

附录6主程序代码-19-

附录7凌阳单片机最小系统-20-

附录8NRF24L01应用电路-21-

附录9语音报价程序代码-22-

1引言

质量是测量领域中的一个重要参数,称重技术自古以来就被人们所重视。

秤是最普遍、最普及的计量设备,电子秤取代机械秤是科学技术发展的必然规律。

低成本、高智能化的电子秤无疑具有极其广阔的市场前景。

本设计就是为了制作这样一种多功能电子秤,它以AVR单片机为核心在实际使用时达到以下要求:

(1)能用键盘设置单价,称重后能同时显示重量、单价和总额;

电子计价秤:

最大称重为15.000公斤,重量误差不大于±

0.1%;

(2)具有数码显示,显示重量、单价、总额等信息。

a.重量显示为5位数码,单位为公斤,最大重量显示值为99.999公斤;

b.单价金额显示为5位数码,单位为元,最大单价金额显示值值为999.99元;

c.总价金额显示为6位数码,单位为元,最大总价金额显示值值为9999.99元,总价金额误差不大于0.01元;

2方案设计

2.1设计思路

为达到设计要求,本系统数据采集模块由电阻应变式称重传感器、仪用放大器、二阶低通滤波器组成。

转换后的数字信号送给控制器处理,由控制器完成对该数字量的处理,驱动显示模块完成人机间的信息交换。

此部分对软件的设计要求比较高,系统的大部分功能都需要软件来控制。

在扩展功能上,本设计增加了万年历、掉电保护和语言播放功能。

系统整体原理图见附录1

以AVR单片机为控制核心,其内部集成10位AD,不需外围扩展AD转换电路,而测量误差又能达到要求。

具体方案简图如下

图(3)

2.2.压力传感器

电阻应变式传感器是一种利用电阻应变效应,将各种力学量转换为电信号的结构型传感器。

电阻应变片式电阻应变式传感器的核心元件,其工作原理是基于材料的电阻应变效应,电阻应变片即可单独作为传感器使用,又能作为敏感元件结合弹性元件构成力学量传感器。

导体的电阻随着机械变形而发生变化的现象叫做电阻应变效应。

电阻应变片把机械应变信号转换为△R/R后,由于应变量及相应电阻变化一般都很微小,难以直接精确测量,且不便处理。

因此,要采用转换电路把应变片的△R/R变化转换成电压或电流变化。

其转换电路常用测量电桥。

直流电桥的特点是信号不会受各元件和导线的分布电感及电容的影响,抗干扰能力强,但因机械应变的输出信号小,要求用高增益和高稳定性的放大器放大。

电阻应变式传感器有如下特点:

(1)应用和测量范围广,应变片可制成各种机械量传感器。

(2)分辨力和灵敏度高,精度较高。

(3)结构轻小,对试件影响小,对复杂环境适应性强,可在高温、高压、强磁场等特殊环境中使用,频率响应好。

(4)商品化,使用方便,便于实现远距离、自动化测量。

综合考虑后,我们选择方案二。

2.2.1A/D转换电路方案的选择

要完成商品的称重,必须要完成被测重量从模拟量向数字量的转换,所以系统需要设计A/D转换电路,A/D转换及单片机部分有以下两个方案可以选择:

方案一:

使用独立的A/D转换集成电路和普通单片机连接,使A/D转换电路可以在单片机的协调控制下工作。

这就需要设计A/D转换电路与电片机的接口电路。

方案二:

采用内部集成A/D转换器的单片机芯片。

由于内部集成了A/D转换器,省去了单片机与A/D转换器接口电路的设计,简化了设计的同时提高了系统的稳定性和可靠性。

基于上述考虑,本设计采用方案二,模拟量转换成数字量由内部集成A/D转换器的单片机来完成。

2.2.2信号处理

采用集成仪用放大器专用芯片AD620

此类芯片内部采用差动输入,共模抑制比高,差模输入阻抗大,增益高,精度也非常好,且外部接口简单。

以AD620为例,内部结构如所示

接口如附录2所示:

图4AD620的接口图

在接口图4中,通过改变可变电阻R3的阻值大小来改变放大器的增益,放大器增益计算公式如下:

采用运放NE5532搭建仪用放大器

被称为“运放之皇”的NE5532具有低零漂、低噪声、高共模抑制比的特性,其内部集成两个运放,是一款性价比很高的运放芯片。

其结构图如下

图5NE5532内部简图

方案一中AD620最大增益为1000倍,在系统设计过程中,我们要求对采集信号放大1333倍,不能达到要求。

方案二中用两个NE5532构成仪用放大器,多出的一个运放可以制作二阶有源低通滤波器。

这样综合比较,我们选择方案二。

2.2.3显示模块

采用七段数码管显示。

根据系统要求,至少需要四组数码管来显示所有数据。

这样硬件结构比较复杂,程序也很繁琐。

并且只能显示数据,无法显示菜单,需要另外标注。

采用LCD12864显示。

12864是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及128×

64全点阵液晶显示器组成。

可完成图形显示,也可以显示8×

4个(16×

16点阵)汉字。

通过软件进行菜单切换,这样就可以完成更多内容的显示,而且操作简便,完全可以达到要求。

基于以上考虑,我们选择了方案二。

2.3硬件模块设计

2.3.1信号处理

据电阻应变式传感器的相关参数(见附录3),知传感器的灵敏度(

)为2.0mV/V。

所以向传感器提供5V(

)电压时其最大输出电压(

)为10mV。

具体计算公式如下:

AD满额采集电压为(

)5V,Av=

/

根据计算,得到Av为500倍。

放大原理图,如下图所示

图6仪用放大器原理图

由上图可知,

=

=22KΩ,

=

=2KΩ,

=20KΩ,

为可调电阻2KΩ

具体计算公式如下

Av=

调节

,当

为900Ω时,Av=500。

放大后经示波器观察,纹波范围为40mV~60mV。

所以需要经过滤波处理,用滤波器设计软件(FilterLab_V2.0)设计以1KHz为上限频率的二阶有源低通滤波器可以有效滤除纹波。

具体原理图见附录4

2.3.2电源模块

设计的电源需提供单片机、显示器、信号处理模块所需的不同电压。

设计的电源原理图如附录5所示,三端稳压芯片7805、7905、LM317和LM337起稳压作用,2200uf电解电容、100uf和0.33uf瓷片电容起滤除纹波作用,输出分别为

提供给各单元电路。

2.4系统软件设计

本软件基于AVR单片机实现,主要负责AD转换和菜单显示功能,其中对AD转换部分进行了相应的数据处理,从而实现了数据去抖动、手动清零和自动校零的功能。

总体流程图见下图

图7主程序流程图

3设计实现

3.1语音报数的实现

凌阳单片机SPCE061A介绍:

SPCE061A是继μ’nSP™系列产品SPCE500A等之后凌阳科技推出的又一个16位结构的微控制器。

与SPCE500A不同的是,在存储器资源方面考虑到用户的较少资源的需求以及便于程序调试等功能,SPCE061A里只内嵌32K字的闪存(FLASH)。

较高的处理速度使μ’nSP™能够非常容易地、快速地处理复杂的数字信号。

因此,与SPCE500A相比,以μ’nSP™为核心的SPCE061A微控制器是适用于数字语音识别应用领域产品的一种经济的选择。

最小系统见附录(7)

24L01介绍:

nRF2401是单片射频收发芯片,工作于2.4~2.5GHzISM频段,芯片内置频率合成器、功率放大器、晶体振荡器和调制器等功能模块,输出功率和通信频道可通过程序进行配置。

芯片能耗非常低,以-5dBm的功率发射时,工作电流只有10.5mA,接收时工作电流只有18mA,多种低功率工作模式,节能设计更方便。

其DuoCeiverTM技术使nRF2401可以使用同一天线,同时接收两个不同频道的数据。

nRF2401适用于多种无线通信的场合,如无线数据传输系统、无线鼠标、遥控开锁、遥控玩具等。

2.1 

芯片结构

  nRF2401内置地址解码器、先入先出堆栈区、解调处理器、时钟处理器、GFSK滤波器、低噪声放大器、频率合成器,功率放大器等功能模块,需要很少的外围元件,因此使用起来非常方便。

QFN24引脚封装,外形尺寸只有5×

5mm。

nRF2401有工作模式有四种:

收发模式、配置模式、空闲模式和关机模式。

nRF2401的工作模式由PWR_UP、CE、TX_EN和CS三个引脚决定,详见附录(8)。

3.2数据去抖和自动校零的实现

以上功能实现见下图所示

图(8)数据去抖原理图

图(9)去毛重原理图

4系统测试

4.1测试条件和测试仪器设备

传感器受较低或较高温度变化时会产生形变,所以测试时必须在室温下进行,并要确保供电电源的稳定性,测试仪器设备如下表1所示:

表1测试使用的仪器设备

序号

名称、型号、规格

数量

备注

出厂编号

1

Tektronix示波器

Tektronix

C039070

2

函数信号发生器EE16428

南京新联电子设备有限公司

001398

3

数字万用表UT58E

UNI-T

3050030633

4.2测试方法和测试结果

(1)掉电保护测试。

系统运行,当显示2012年11月29日10时30分15秒时迅速断电,计时5秒并迅速上电,万年历显示2012年11月29日10时30分21秒。

由于人的反应时间影响,允许误差,说明掉电保护可行。

(2)称重范围测试。

传感器参数显示称重范围为0~100kg,选取磅秤砝码,从最小重量砝码开始,无称重,再逐个往上加,直到有称重时停止,再换小砝码细秤,测出称重下限为100g。

用15kg砝码测试,计价秤能正常工作。

(3)电子计价秤精度测试。

分别将重量为600g,2kg,8kg,12kg的砝码放在电子秤上称重,单价预置为10元/Kg。

根据公式①计算出重量的秤量精度;

总额用公式②计算;

总额的误差用公式来计算,将数据记录于下表2中。

分析得出结论,传感器测量不够灵敏,A/D转换速度也是造成此结果的原因。

①误差=

②总额=重量×

单价

表2单价为10.00元/Kg下不同砝码重量和总额的测量数据记录表

项目

4

重量

实际值(Kg)

0.600

2.000

8.000

12.000

测量值(Kg)

0.562

1.980

7.985

11.955

误差(%)

-6.333%

-1.000%

-0.187%

-0.375%

总额

实际值(元)

6.00

20.00

80.00

120.00

测量值(元)

5.62

19.80

79.85

119.55

误差

-0.38

-0.20

-0.15

-0.45

5结论

经过为期5天的时间,在我们小组的配合下,除发挥部分测量误差不大于±

0.01%没能实现外,其它指标都得以实现。

将压力信号通过传感器转变成电信号,通过放大,滤波,然后AVR单片机将电压信号通过AD转换成数字信号,并且进过一定的数据处理后在LCD12864中显示,同时将重量和总价通过无线模块发射到凌阳单片机中,借助凌阳强大的语音功能,将重量和总价以声音形式发出。

最后进过调试,成功的完成了多功能数字电子计价秤的制作。

该设计具有良好的实用性,基本能够满足所用需求。

6参考文献

【1】郁有文,常健,程继红.传感器原理及工程应用(第二版).西安.西安电子科技大学出版社.2004

【2】康华光.电子技术基础模拟部分(第五版).北京.高等教育出版社.2005

【3】洪志刚.传感器原理及应用.北京.高等教育出版社.2007

【4】张洪润,张亚凡.单片机原理及应用.北京.清华大学出版社.2005

【5】赵亮,侯国锐.单片机C语言编程与实例,北京.人民邮电出版社.2003

系统整体原理图

附录2AD620的内部等效图

应变式电阻传感器相关资料

表2

产品类型

LS80A系列

结构特点

铝合金

额定载荷

0~80Kg

灵敏度

2.0mV/V

附录4滤波模块原理图

附录5电源模块原理图

附录6主程序代码

voidmain()

{

init();

//初始化

while

(1)

{

keyzhi=keyscan();

if(keyzhi>

=3&

&

keyzhi<

=10)

{

fun_flag=0;

EEPROM_write(now_add,fun_flag);

}

switch(fun_flag)

case0:

send_command(0x01);

daytime();

break;

//进入时钟设置模式

case1:

nowmode();

//进入普通模式

case2:

yucunmode();

//进入预存模式

case3:

now_happen();

//进入正在显示重量,单价,总价模式

case4:

jiaoyimode();

//进入交易模式

default:

}

}

}

附录7凌阳单片机最小系统

附录8NRF24L01应用电路

附录9语音报价程序代码

/***********************************************************

函数名称:

PlaySnd

函数功能:

播放语音函数

入口参数:

播放索引号SndIndex,播放通道DAC_Channel

出口参数:

备注:

***********************************************************/

voidPlaySnd(BYTESndIndex,BYTEDAC_Channel)

SACM_A2000_Initial

(1);

//初始化自动播放

SACM_A2000_Play(SndIndex,DAC_Channel);

//开始一段播放语音

while((SACM_A2000_Status()&

0x0001)!

=0)//判断是否播放完毕

SACM_A2000_ServiceLoop();

//解码填充队列

*P_Watchdog_Clear=1;

//清看门狗

SACM_A2000_Stop();

//停止播放

voidPrice

总价语音提示

voidPrice()

Price_Num=(unsignedlongint)rx_buf[3]*10000+(unsignedlongint)rx_buf[4]*100+(unsignedlongint)rx_buf[5];

if(Price_Num==0)

PlaySnd(0,1);

//0

PlaySnd(14,1);

//元

elseif((Price_Num/100000)!

=0)

PlaySnd(Price_Num/100000,1);

PlaySnd(12,1);

//千

if((Price_Num%100000/10000)!

PlaySnd(Price_Num%100000/10000,1);

PlaySnd(11,1);

//百

elseif((Price_Num%100000/10000==0)&

(Price_Num%100000%10000/1000)!

=0)//如果十位不等于0,并且百位等于0.

PlaySnd(0,1);

if((Price_Num%100000%10000/1000)!

PlaySnd(Price_Num%100000%10000/1000,1);

PlaySnd(10,1);

//十

elseif((Price_Num%100000%10000/1000==0)&

(Price_Num%100000%10000%1000/100!

=0))//如果十位=0.并且各位不等于0.

if((Price_Num%100000%10000%1000/100)!

PlaySnd(Price_Num%100000%10000%1000/100,1);

else;

if((Price_Num%100000%10000%1000%100/10)!

PlaySnd(Price_Num%100000%10000%1000%100/10,1);

PlaySnd(15,1);

//角

if((Price_Num%100000%10000%1000%100%10)!

PlaySnd(Price_Num%100000%10000%1000%100%10,1);

PlaySnd(16,1);

//分

elseif((Price_Num/100000==0)&

(Price_Num%100000/10000)!

PlaySnd(Price_Num/10000,1);

PlaySnd(11,1);

if((Price_Num%10000/1000)!

PlaySnd(Price_Num%10000/1000,1);

elseif((Price_Num%10000/1000==0)&

(Price_Num%10000%1000/100)!

=0)//如果十位=0.并且各位不等于0.

if((Price_Num%10000%1000/100)!

PlaySnd(Price_Num%10000%1000/100,1);

PlaySnd(14,1);

if((Price_Num%10000%1000%100/10)!

PlaySnd(Price_Num%10000%1000%100/10,1);

if((Price_Num%10000%1000%100%10)!

PlaySnd(Price_Num%10000%1000%100%10,1);

elseif((Price_Num/100000==0)&

(Price_Num%100000/10000==0)&

PlaySnd(Price_Num/1000,1);

PlaySnd(10,1);

if((Price_Num%1000/100)!

PlaySnd(Price_Num%1000/100,1);

if((Price_Num%1000%100/10)!

PlaySnd(Price_Num%1000%100/10,1);

if((Price_Num%1000%100%10)!

PlaySnd(Price_Num%1000%100%10,1);

(Price_Num%100000%10000/1000==0)&

(Price_Num%100000%10000%1000/100)!

PlaySnd(Price_Num/100,1);

if((Price_Num%100/10)!

PlaySnd(Price_Num%100/1

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

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1