您的当前位置:首页正文

基于51单片机的电子秤设计

来源:化拓教育网


毕业设计(论文)

(2015届)

题 目:基于51单片机的电子秤设计 专业名称:应用电子技术 * ***** 学 号:**********

班 级:2012级应用电子技术 指导教师:***

2014年 12 月 30 日

摘要

称重技术是人类生活中不可缺少的部分,自古以来就被人们所重视。作为一种计量手段,被广泛应用于工业、农业、贸易等各个领域。随着现代文明和科学技术的不断进步,人们对称重技术的准确度要求也越来越高,电子秤产品技术水平的高低,直接影响各行各业的现代化水平和社会经济效益的提高。近年来,电子称重技术取得了突飞猛进的发展,电子秤在称重计量领域中也占有越来越重要的地位,其应用领域也在不断地扩大。尤其是商用电子秤,由于其具有准确度高、反应灵敏、结构简单等优点,被广泛应用于工商贸易、轻工食品、医药卫生等领域。目前,机械秤正在逐步被电子秤取代,这就促使电子秤的研究需要进一步的深入。

本设计是以AT89S51为核心的一种高精度电子秤,系统采用模块化设计法,其硬件结构主要包括:数据采集模块、最小系统模块、电源模块、键盘和显示模块。其中,数据采集模块包括称重传感器和A/D转换电路;最小系统部分主要包括AT89S51和扩展的外部数据存储器;键盘由4×4位矩阵键盘组成;显示部分LM4229液晶显示。软件部分由C语言编程,实现对各部分的控制。该电子秤可以能够显示商品的名称、价格、总量、总价等;能够自动完成商品的价格计算;能够储存几种简单商品的价格;能够具有超重提醒功能。其称重范围为0~5Kg,分度值为0.001g。整个系统结构简单,使用方便。

关键词:电子秤;AT89S51单片机;称重传感器;A/D转换电路;液晶显示

II

目录

1 绪论 ........................................................... 1

1.1 选题的背景与意义 ......................................... 1

1.1.1 选题的背景 .......................................... 1 1.1.2 选题的意义 .......................................... 2 1.2 电子秤的研究现状及发展趋势 ............................... 2

1.2.1 电子秤的研究现状 .................................... 2 1.2.2 电子秤的发展趋势 .................................... 3 1.3 本文的结构 ............................................... 4 2 系统总体方案设计 ............................................... 5

2.1 电子秤的基本知识介绍 ..................................... 5

2.1.1 电子秤的基本结构 .................................... 5 2.1.2 电子秤的工作原理 .................................... 5 2.1.3 电子秤的计量参数 .................................... 6 2.2 总体方案设计 ............................................. 7 2.3 系统各部分设计方案论证 ................................... 8

2.3.1 电子秤分度数的设定 .................................. 8 2.3.2 称重传感器的选定 .................................... 8 2.3.3 A/D转换器的选定 .................................... 14 2.3.4 单片机型号的选定 ................................... 16

3 硬件设计 ...................................................... 18

3.1 系统硬件结构图 .......................................... 18 3.2 单片机主控单元的设计 .................................... 18

3.2.1 单片机引脚说明 ..................................... 18 3.2.2 AT89S51最小系统设计 ................................ 20 3.3 数据采集模块设计 ........................................ 22

III

3.3.1 传感器单元设计 ..................................... 22 3.3.2 A/D转换单元设计 .................................... 22 3.4 键盘和显示电路单元设计 .................................. 24

3.4.1 键盘电路设计 ....................................... 24 3.4.2 显示电路设计 ....................................... 25 3.5 系统总体原理图 .......................................... 25 3.6 硬件抗干扰设计 .......................................... 26 4 系统软件设计 .................................................. 29

4.1 主程序设计 .............................................. 29 4.2 LM4229液晶显示驱动程序 .................................. 30 4.3 ADC0832采样程序 ......................................... 31 4.4 键盘程序 ................................................ 31 5 系统仿真 ...................................................... 33

5.1 欢迎界面的仿真 .......................................... 33 5.2 无重物情况仿真 .......................................... 34 5.3 称量物体仿真 ............................................ 35 5.4 最大量程仿真 ............................................ 36 5.5 仿真总结与问题补充 ...................................... 37

5.5.1 仿真总结 ........................................... 37 5.5.2 问题补充 ........................................... 37

6 总结与展望 .................................................... 39 附录程序 ......................................................... 40 参考文献 ......................................................... 49

IV

1 绪论

1.1 选题的背景与意义

1.1.1 选题的背景

(1)电子技术渗入衡器制造业

随着第二次世界大战后的经济繁荣,为了把称重技术引入生产工艺过程中去,对称重技术提出了新的要求,希望称重过程自动化,为此电子技术不断渗入衡器制造业。在1954年使用了带新式打印机的倾斜杠杆式秤,其输出信号能控制商用结算器,并且用电磁铁机构与代替人工操作的按键与办公机器联用。在1960年开发出了与衡器相联的专门称重值打印机。当时的带电子装置的衡器其称量工作是机械式的,但与称量有关的显示、记录、远传式控制器等功能是电子方式的。 (2)电子秤步入社会

电子秤的发展过程与其它事物一样,也经历了由简单到复杂、由粗糙到精密、由机械到机电结合再到全电子化、由单一功能到多功能的过程。特别是近30年以来,工艺流程中的现场称重、配料定量称重、以及产品质量的监测等工作,都离不开能输出电信号的电子衡器。这是由于电子衡器不仅能给出质量或重量信号,而且也能作为总系统中的一个单元承担着控制和检验功能,从而推进工业生产和贸易交往的自动化和合理化。

近年来,电子秤已愈来愈多地参与到数据处理和过程控制中。现代称重技术和数据系统已经成为工艺技术、储运技术、预包装技术、收货业务及商业销售领域中不可缺少的组成部分。随着称重传感器各项性能的不断突破,为电子秤的发展奠定了基础,国外如美国、西欧等一些国家在20世纪60年代就出现了0.1%称量准确度的电子秤,并在70年代中期约对75 %的机械秤进行了机电结合式的电子化改造。

我国的衡器在20世纪40年代以前还全是机械式的,40年代开始发展了机电结合式的衡器。50年代开始出现了以称重传感器为主的电子衡器。80年代以来, 我国通过自行研制、引进消化吸收和技术改造,已由传统的机械式衡器步入集传感器、微电子技术、计算机技术于一体的电子衡器发展阶段。目前,由于电子衡器具有称量快、读数方便、能在恶劣环境下工作、便于与计算机技术相结合而实现称重技术和过程控制的自动化等

1

特点,已被广泛应用于工矿企业、能源交通、商业贸易和科学技术等各个部门。随着称重传感器技术以及超大规模集成电路和微处理器的进一步发展,电子称重技术及其应用范围将更进一步的发展,并被人们越来越重视。

1.1.2 选题的意义

电子秤是日常生活中常用的电子衡器,广泛应用于超市、大中型商场、物流配送中心。电子秤在结构和原理上取代了以杠杆平衡为原理的传统机械式称量工具。相比传统的机械式称量工具,电子秤具有称量精度高、装机体积小、应用范围广、易于操作使用等优点,在外形布局、工作原理、结构和材料上都是全新的计量衡器。目前市场上使用的称量工具,或者是结构复杂,或者运行不可靠,且成本高,精度稳定性不好,调整时间长,易损坏,维修困难,装机容量大,能源消耗大,生产成本高。而且目前市场上电子秤产品的整体水平不高,部分小型企业产品质量差且技术力量薄弱,设备不全,缺乏产品的开发能力,产品质量在低水平徘徊。因此,有针对性地开发出一套有实用价值的电子秤系统,从技术上克服上述诸多缺点,改善电子秤系统在应用中的不足之处,具有现实意义。

1.2 电子秤的研究现状及发展趋势

1.2.1 电子秤的研究现状

近几年,我国的电子称重系统从最初的机电结合型发展到现在的全电子型和数字智能型。电子称重技术逐渐从静态称重向动态称重发展,从模拟测量向数字测量发展,从单参数测量向多参数测量发展。电子称重系统制造技术及其应用得到了新发展。国内电子称重技术基本达到国际上20世纪90年代中期的水平,少数产品的技术已处于国际领先水平。

在研究方法上,电子称重系统的工作原理一般是将作用在承载器上的质量或力的大小,通过压力传感器转换为电信号,并通过控制电路来处理该电信号。其中压力传感器大多数采用电阻应变片压力传感器,由于应变片的体积较小,市场上有多种规格可供选择,而且可以针对弹性敏感元件的形式可以灵活设计来适应各种应用场合的要求,所以

2

应变片式压力传感器得到广泛的应用。但是电阻应变片压力传感器的一个严重缺陷是应变灵敏度、应变片本身的电阻都随温度变化,而且灵敏度随温度变化较大。在不同的环境中,应变片的阻值发生变化,输出零点漂移明显。并且应变片的输出信号很小、线性范围窄,而且动态响应较差,有待进一步开发。

在国际上,一些发达国家在电子称重方面,从技术水平、品种和规模等方面都达到了较高的水平。特别是在准确度和可靠性等方面有了很大的提高。其中梅特勒.托利多公司生产的BBK4系列高精度电子秤精度达到了lmg,速度大约为1次/秒。目前,电子秤在称量速度方面需要进一步的研究。

在称重传感器方面,国外产品的品种和结构又有创新,技术功能和应用范围不断扩大。

1.2.2 电子秤的发展趋势

电子秤的称重功能是基于微处理器这一核心技术来实现的。由于目前在设计电子称重系统时大量地采用集成芯片,因此电子称重系统已经摆脱了以往的电子模式,正向小型化、模块化、智能化、集成化发展;其技术性能趋向于高速率、高准确度、高稳定性、高可靠性;其应用性趋向于综合性、组合性。

小型化:体积小、高度低、重量轻,即小薄轻。为使电子衡器的承载器达到小、薄、轻,开始采用重量轻且刚度大的空心波纹铜板和方形闭合截面的薄壁型材。

模块化:电子衡器的承载器采用模块式一体组合或分体组合,产生新的品种和规格。这种模块化组合不但提高了产品的通用性和可靠性,而且也大大提高了生产效率,降低了成本。

智能化:与电子计算机组合或开发称重用计算机,利用计算机的智能来增加称重显示控制的功能,使其在原有功能的基础上增加推理、判断、自诊断、自适应、自组织等功能。

集成化:对于某些品种和结构的电子衡器,可以实现承载器与称重传感器一体化或承载器、称重传感器与称重显示控制器一体化。

综合性:电子称重技术和电子衡器产品的应用范围不断扩大,它已渗透到一些学科和工业自动控制领域。对某些商用电子计价秤而言,只具备称重、计价、显示、打印功能还远远不够,现代商业系统还要求它能提供各种销售信息,把称重与管理自动化紧密

3

结合,使称重、计价、进库、销售管理一体化,实现管理自动化。这就要求电子计价秤能与电子计算机联网,把称重系统与计算机系统组成一个完整的综合控制系统。

组合性:在工业生产过程或工艺流程中,不少称重系统还应具有可组合性,即:测量范围可以任意设定;硬件能够依据不定的程序进行修改和扩展;输入输出数据与指令可使用不同的语言,并能与外部的控制和数据处理设备进行通信。

今后, 随着电子高科技的飞速发展, 电子秤技术的发展定将日新月异。同时, 功能更加齐全的高精度的先进电子秤将会不断问世, 其应用范围也会更加拓宽。

1.3 本文的结构

本设计是以AT89S51为核心的一种高精度电子秤,系统采用模块化设计法,其硬件结构主要包括:数据采集模块、最小系统模块、电源模块、键盘和显示模块。软件部分由C语言编程,实现对各部分的控制。可以实现称重、去皮、置零、计价和显示等功能。其称重范围为0~5Kg,分度值为0.001g。整个系统结构简单,使用方便。全文共分为五章,各章主要内容如下:

第一章为绪论部分,简要介绍了选题的背景及意义、电子秤的研究现状及发展趋势以及本文的主要内容及结构;

第二章为总体设计部分,简要介绍了电子秤的结构及工作原理,论证了系统总体方案的设计,以及对各种方案的选择做出了比较;

第三章为系统硬件设计部分,主要是通过对各种模块的介绍以及对电路功能的分析,对系统硬件进行了选型和设计,得出系统硬件结构图;

第四章为系统软件设计部分,主要介绍了系统各部分软件的设计流程,给出了简单的程序;

第五章为系统软件仿真;

第六章为总结与展望,主要是对本课题的总结,以及对存在的问题进行归纳和进一步研究的方向。

4

2 系统总体方案设计

2.1 电子秤的基本知识介绍

2.1.1 电子秤的基本结构

电子秤是利用物体的重力作用来确定物体质量(重量)的测量仪器,也可用来确定与质量相关的其它量大小、参数、或特性。不管根据什么原理制成的电子秤均由以下三部分组成:

(1)承重、传力复位系统

它是被称物体与转换元件之间的机械、传力复位系统,又称电子秤的秤体,一般包括接受被称物体载荷的承载器、秤桥结构、吊挂连接部件和限位减振机构等。 (2)称重传感器

即由非电量(质量或重量)转换成电量的转换元件,它是把支承力变换成电的或其它形式的适合于计量求值的信号所用的一种辅助手段。

按照称重传感器的结构型式不同,可以分直接位移传感器(电容式、电感式、电位计式、振弦式、空腔谐振器式等)和应变传感器(电阻应变式、声表面谐振式)或是利用磁弹性、压电和压阻等物理效应的传感器。

对称重传感器的基本要求是:输出电量与输入重量保持单值对应,并有良好的线性关系;有较高的灵敏度;对被称物体的状态的影响要小;能在较差的工作条件下工作;有较好的频响特性;稳定可靠。

(3)测量显示和数据输出的载荷测量装置

即处理称重传感器信号的电子线路(包括放大器、模数转换、电流源或电压源、调节器、补偿元件、保护线路等)和指示部件(如显示、打印、数据传输和存贮器件等)。这部分习惯上称载荷测量装置或二次仪表。在数字式的测量电路中,通常包括前置放大、滤滤、运算、变换、计数、寄存、控制和驱动显示等环节。

2.1.2 电子秤的工作原理

当被称物体放置在秤体的秤台上时,其重量便通过秤体传递到称重传感器,传感器

5

随之产生力-电效应,将物体的重量转换成与被称物体重量成一定函数关系(一般成正比关系)的电信号(电压或电流等)。通常此电压信号很小,需要通过前端信号处理电路进行准确的线性放大,放大后的模拟电压信号经过滤波电路和A/D转换电路转换成数字信

1号被送入到主控电路的单片机中○,单片机不断扫描键盘和各种功能开关,根据键盘输

入内容和各种功能开关的状态进行必要的判断、分析、由仪表的软件来控制各种运算。运算结果送到内存贮器,需要显示时,单片机发出指令,从内存贮器中读出送到显示器显示。

2.1.3 电子秤的计量参数

电子秤的计量性能涉及的主要技术指标有:量程、安全载荷、额定载荷、允许误差、分度值、分度数、准确度等级等。

(1)量程:一台电子秤不计皮重,所能称量的最大的载荷Max,即电子秤在正常工作情况下,所能称量的最大值。

(2)安全载荷:为电子秤正常称量案范围的120%。 (3)额定载荷:电子秤的正常称量范围。 (4)允许误差:等级检定时允许的最大偏差。

(5)分度值:电子秤的测量范围被分成若干等份,每份值即为分度值。用e或d来表示。

(6)分度数:衡器的测量范围被分成若干等份,总份数即为分度数用n表示。电子衡器的最大称量Max可以用总分度数n与分度值d的乘积来表示,即Max=n*d。

(7)准确度等级:国际法制计量组织把电子秤按照不同的分度数分成Ⅰ、Ⅱ、Ⅲ、Ⅳ四类等级,分别对应不同准确度的电子秤和分度数n的范围,如表

1因为本设计采用软件仿真而不能进行实际的称量,故信号的放大滤波电路部分舍去,直接输入模拟电压信号,○

放大滤波部分内容会在第五章仿真总结与问题补充中进行后续介绍。

2-1所示。

表2-1 电子秤等级分类

标志及等级 特种准确度

电子秤种类 基准衡器

分度数范围 n>100,000

6

高准确度 中准确度 普通准确度

精密衡器 商业衡器 粗衡器

10,0002.2 总体方案设计

按照设计的基本要求,可以确定系统共分为五大模块,数据采集模块、最小系统模块、超重报警模块、键盘和显示模块。其中,数据采集模块包括称重传感器和A/D转换电路;最小系统模块由AT89S51单片机及其外围电路组成;键盘由4×4位矩阵键盘组成,可以控制显示商品种类和价钱等信息;显示部分采用LM4229液晶显示,显示当前商品的名称、单价、重量及总价等信息。软件部分由C语言编程,实现对各部分的控制。该电子秤可以实现显示商品的名称、单价、重量、总价等功能。其称重范围为0~5Kg,分度值为0.001g。在扩展功能上,本设计增加了一个超重报警提示。其总体设计的框图如图2-1所示:

数据采集模块单片机最小系统超重报警模块键盘模块显示模块

图2-1 总体设计方框图

系统工作原理:把所称物体放到秤台上,物体的重力通过秤体传给称重传感器,传感器受到压力使电阻发生变化引起电压变化,再将电压值送到A/D转换电路,将模拟量转换成数字量,转换后的数字量送至单片机进行处理,并显示结果。单片机最小系统由AT89S51和外围的时钟电路及复位电路组成。显示电路设计采用LM4229液晶显示,对各部分的控制由采用C语言编程的软件来实现。

7

2.3 系统各部分设计方案论证

2.3.1 电子秤分度数的设定

当前,一些单位为了提高Ⅲ级商贸秤的准确度,尝试改小电子秤的分度值,扩大电子秤的分度数,以便达到高精度称量的目的。这样做非但不能进行高精度称量,还会破坏电子秤原有的计量性能,降低电子秤的准确度,有损电子秤的可靠性,使电子秤出现更多的计量误差。

现在我国已经完全与OIML规定接轨,衡器计量检定规程完全按OIML规定而来。表2-2为Ⅲ级商业秤误差要求。

表2-2 Ⅲ级数字显示商用衡器允差表

m <500e 500e< m≤2000e 2000e< m≤Max

允差e(检定分度值)

检定要求 ±0.5e ±1.0e ±1.5e

使用中要求 ±1.0e ±2.0e ±3.0e

由表2-2可知,它的整个称量范围允差规定是变化的,误差是从大到小再变大,最高准确度在中间。从0~500分度数为低精度称量段,到高于3000个分度数之后的实际称量精度逐渐变低,实际误差不断加大。分度数再高其允差也是不变的。从国外电子秤的准确度和分度数设置、国内原先衡器的检定标准和现在我们统计的电子秤分度数的准确度以及OIML对Ⅲ级秤的允差规定看,说明现有Ⅲ级商业秤的分度数设置为2000~3000是比较理想的,属于最佳分度数。这样设置决定了电子秤的准确度首检为±0.05%,使用中为±0.1%的正确性、合理性与必要性。

2.3.2 称重传感器的选定

称重传感器在电子秤中占有十分重要的位置,被喻为电子秤的心脏部件,它的性能好坏很大程度上决定了电子秤的精确度和稳定性。考虑到不同使用地点的重力加速度和空气浮力对转换的影响,称重传感器的性能指标主要有线性误差、滞后误差、重复性误差、蠕变、零点温度特性和灵敏度温度特性等。在各种衡器和质量计量系统中,通常用

8

综合误差带来综合衡量传感器准确度,并将综合误差带与衡器误差带联系起来,以便选用对应于某一准确度衡器的称重传感器。国际法制计量组织(OIML)规定,传感器的误差带δ占衡器误差带Δ的70%,称重传感器的线性误差、滞后误差以及在规定温度范围内由于温度对灵敏度的影响所引起的误差等的总和不能超过误差带δ。若在环境恶劣的条件下(如高低温、湿热),传感器所占的误差比例就更大,因此,在人们设计电子秤时,正确地选用称重传感器非常重要。 1.常用各种称重传感器

称重传感器按转换方法分为光电式、液压式、电磁力式、电容式、磁极变形式、振动式、陀螺仪式、电阻应变式等8类,以电阻应变式使用最广。

光电式传感器包括光栅式和码盘式两种。光栅式传感器利用光栅形成的莫尔条纹把角位移转换成光电信号。光栅有两块,一为固定光栅,另一为装在表盘轴上的移动光栅。加在承重台上的被测物通过传力杠杆系统使表盘轴旋转,带动移动光栅转动,使莫尔条纹也随之移动。利用光电管、转换电路和显示仪表,即可计算出移过的莫尔条纹数量,测出光栅转动角的大小,从而确定和读出被测物质量。码盘式传感器的码盘是一块装在表盘轴上的透明玻璃,上面带有按一定编码方法编定的黑白相间的代码。加在承重台上的被测物通过传力杠杆使表盘轴旋转时,码盘也随之转过一定角度。光电池将透过码盘接受光信号并转换成电信号,然后由电路进行数字处理,最后在显示器上显示出代表被测质量的数字。光电式传感器曾主要用在机电结合秤上。

液压式传感器:在受被测物重力P作用时,液压油的压力增大,增大的程度与P成正比。测出压力的增大值,即可确定被测物的质量。液压式传感器结构简单而牢固,测量范围大,但准确度一般不超过1/100。

电磁力式传感器:它利用承重台上的负荷与电磁力相平衡的原理工作。当承重台上放有被测物时,杠杆的一端向上倾斜;光电件检测出倾斜度信号,经放大后流入线圈,产生电磁力,使杠杆恢复至平衡状态。对产生电磁平衡力的电流进行数字转换,即可确定被测物质量。电磁力式传感器准确度高,可达1/2000~1/60000,但称量范围仅在几十毫克至10千克之间。

电容式传感器:工作原理是利用电容器振荡电路的振荡频率f与极板间距d成正比的关系。极板有两块,一块是固定不动的,另一块是可移动的。在秤体加载重物时,两

9

极板间的距离发生变化,随之,电路的振荡频率也改变。只要测出频率的变化便可求出被测物的质量。电容式传感器耗电量少,造价低,准确度为1/200~1/500。

磁极变形式传感器:原理为铁磁元件在被测物体重力下发生形变,产生应力引起导磁率的变化,随之,绕在铁磁元件两侧的次级线圈的感应电压也变化。这样测出电压的变化量便可求出加到磁极上的力,从而确定物体的质量。磁极变形式传感器的准确度不高,一般为1/100,称量范围为几十至几万千克。

振动式传感器弹性元件受力后,其固有振动频率与作用力的平方根成正比。测出固有频率的变化,即可求出被测物作用在弹性元件上的力,进而求出其质量。振动式传感器有振弦式和音叉式两种。

振弦式传感器的弹性元件是弦丝。当承重台上加有被测物时,V形弦丝的交点被拉向下,且左弦的拉力增大,右弦的拉力减小。两根弦的固有频率发生不同的变化。求出两根弦的频率之差,即可求出被测物的质量。振弦式传感器的准确度较高,可达1/1000~1/10000,称量范围为100克至几百千克,但结构复杂,加工难度大,造价高。

音叉式传感器的弹性元件是音叉。音叉端部固定有压电元件,它以音叉的固有频率振荡,并可测出振荡频率。当承重台上加有被测物时,音叉拉伸方向受力而固有频率增加,增加的程度与施加力的平方根成正比。测出固有频率的变化,即可求出重物施加于音叉上的力,进而求出重物质量。音叉式传感器耗电量小,计量准确度高达1/10000~1/200000,称量范围为500g~10kg。

陀螺仪式传感器,转子装在内框架中,以角速度ω绕X轴稳定旋转。内框架经轴承与外框架联接,并可绕水平轴Y倾斜转动。外框架经万向联轴节与机座联接,并可绕垂直轴Z旋转。转子轴(X轴)在未受外力作用时保持水平状态。转子轴的一端在受到外力(P/2)作用时,产生倾斜而绕垂直轴Z 转动(进动)。进动角速度ω与外力P/2成正比,通过检测频率的方法测出ω,即可求出外力大小,进而求出产生此外力的被测物的质量。陀螺仪式传感器响应时间快(5秒),无滞后现象,温度特性好(3ppm),振动影响小,频率测量准确精度高,故可得到高的分辨率(1/100000)和高的计量准确度(1/30000~1/60000)。

电阻应变式传感器利用电阻应变片变形时其电阻也随之改变的原理工作。主要由弹性元件、电阻应变片、测量电路和传输电缆4部分组成。电阻应变片贴在弹性元件上,

10

弹性元件受力变形时,其上的应变片随之变形,并导致电阻改变。测量电路测出应变片电阻的变化并变换为与外力大小成比例的电信号输出。电信号经处理后以数字形式显示出被测物的质量。电阻应变式传感器的称量范围为300g至数千Kg,计量准确度达1/1000~1/10000,结构较简单,可靠性较好,大部分电子衡器均使用此传感器。 2.称重传感器的选择

传感器种类繁多,分类方式也千差万别,它们都有各自的特点,但在设计电子秤时,选择一种合适的传感器非常重要,传感器的性能在很大程度上决定了电子秤的精确度和稳定性。称重传感器的选择主要从以下几个方面考虑。 (1)对传感器数量和量程的选择

传感器数量的选择是根据电子秤的用途、秤体需要支撑的点数(支撑点数应根据使秤体几何重心和实际重心重合的原则而确定)而定。一般来说,秤体有几个支撑点就选用几只传感器,但是对于一些特殊的秤体,如电子吊秤,就只能采用一个传感器,一些机电结合秤就应根据实际情况来确定选用传感器的个数。传感器的量程选择可依据秤的最大称量值、选用传感器的个数、秤体自重、可产生的最大偏载及动载因素综合评价来决定。一般来讲,传感器的量程越接近分配到每个传感器的载荷,其称量的准确度就越高。但是在实际的使用当中,由于加在传感器上的载荷除被称物体外,还存在秤体自重、皮重、偏载及振动冲击等载荷,因此选用传感器时,要考虑诸多方面的因素,保证传感器的安全和寿命。公式2-1给出了传感器量程选择的计算公式。

K0K1K2K3WmaxW CN(2-1)

式中C—单个传感器的额定量程;W—秤体自重;Wmax一被称物体净重的最大值;N—秤体所采用支撑点的数量;K0—保险系数,一般取1.2~1.3之间;K1—冲击系数;K2—秤体的重心偏移系数;K3—风压系数 (2)传感器准确度等级的选择

传感器的准确度等级概括了传感器的非线性、蠕变、蠕变恢复、滞后、重复性、灵敏度等技术指标。称重传感器已按准确度等级划分,且已考虑了0.7倍误差因子,非自动衡器称重传感器的准确度等级要选择与电子秤相对应的准确度等级。称重传感器按综合性能分为A、B、C、D四个准确度等级,分别对应于衡器Ⅰ、Ⅱ、Ⅲ、Ⅳ四个准确度等级。

11

(3)各种类型传感器的使用范围

称重传感器形式的选择主要取决于称重的类型和安装空间,保证安装合适,称重安全可靠;另一方面要考虑厂家的建议。对于传感器制造厂家来讲,它一般规定了传感器的受力情况、性能指标、安装形式、结构形式、弹性体的材质等。譬如铝合金悬臂梁传感器适合于电子计价秤、平台秤、案秤等;钢式悬臂梁传感器适用于电子皮带秤、分选秤等;钢质桥式传感器适用于轨道衡、汽车衡等;柱式传感器适用于汽车衡、动态轨道衡、大吨位料斗秤等。 (4)使用环境

称重传感器实际上是一种将质量信号转换成可测量的电信号输出装置。用传感器首先要考虑传感器所处的实际工作环境,这点对于正确选用传感器至关重要,它关系到传感器能否正常工作以及它的安全和使用寿命,乃至整个衡器的可靠性和安全性。一般情况下,高温环境对传感器造成涂覆材料融化、焊点开化、弹性体内应力发生结构变化等问题;粉尘、潮湿对传感器造成短路的影响;在腐蚀性较高的环境下会造成传感器弹性体受损或产生短路现象;电磁场对传感器输出会产生干扰。相应的环境因素下我们必须选择对应的称重传感器才能满足必要的称重要求。 3.电阻应变式称重传感器

按照称重传感器选择的指标要求,以及对各种传感器的比较,本设计选定电阻应变片式传感器,下面对此类传感器做详细介绍。

电阻应变式称重传感器是把电阻应变计粘贴在弹性敏感元件上,弹性体(弹性元件,敏感梁)在外力作用下产生弹性变形,使粘贴在他表面的电阻应变片(转换元件)也随同产生变形,电阻应变片变形后,它的阻值将发生变化(增大或减小),再经相应的测量电路把这一电阻变化转换为电信号(电压或电流),从而完成了将外力变换为电信号的过程。

电阻应变式称重传感器包括两个主要部分,一个是弹性敏感元件:利用它将被测的重量转换为弹性体的应变值;另一个是电阻应变计:它作为传感元件将弹性体的应变,同步地转换为电阻值的变化。电阻应变片所感受的机械应变量一般为10-6~10-2,随之而产生的电阻变化率也大约在10-6~10-2数量级之间。这样小的电阻变化用一般测量电阻的仪表很难测出,必须采用一定形式的测量电路将微小的电阻变化率转变成电压或电流的

12

变化,才能用二次仪表显示出来。在电阻应变式称重传感器中通过桥式电路将电阻的变化转换为电压变化。当传感器不受载荷时,弹性敏感元件不产生应变,粘贴在其上的应变片不发生变形,阻值不变,电桥平衡,输出电压为零;当传感器受力时,即弹性敏感元件受载荷P时,应变片就会发生变形,阻值发生变化,电桥失去平衡,有输出电压。图2-2为电阻应变式称重传感器桥式测量电路。

图2-2 电阻应变式称重传感器桥式测量电路

R1、R2、R3、R4为4个应变片电阻,组成了桥式测量电路,Rm为温度补偿电阻,e为激励电压,V为输出电压。若不考虑Rm,在应变片电阻变化以前,电桥的输出电压为:

R4R1Ve

R1R2R3R4(2-2)

由于桥臂的起始电阻全等,即R1=R2=R3=R4=R,所以V=0。当应变片的电阻R1、R2、R3、R4变成R+△R1、R+△R2、R+△R3、R+△R4时,电桥的输出电压变为:

RR1RR4Ve

RR1RR2RR3RR4(2-3)

通过化简,上式则变为:

VeR1R2R3R4

4RRRR(2-4)

也就是说,电桥输出电压的变化与各桥臂电阻变化率的代数和成正比。如果四个桥臂应R变片的灵敏系数相同,且=Kε,则上式又可写成:

R 13

VeK1234 4(2-5)

式中K为应变片灵敏系数,ε为应变量。式2-5表明,电桥的输出电压和四个轿臂的应变片所感受的应变量的代数和成正比。在电阻应变式称重传感器中,4个应变片分别贴在弹性梁的4个敏感部位,传感器受力作用后发生变形。在力的作用下,R1、R3被拉伸,阻值增大,△R1、△R3正值,R2、R4被压缩,阻值减小,△R2、△R4为负值。再加之应变片阻值变化的绝对值相同,即 因此

VeK4eK 4R1R3R或13 R2R4-R或24

(2-6) (2-7)

(2-8)

若考虑Rm,则电桥的输出电压变成: 令Su

V,则 eSuRK

R2RmRRRRRRVeKe 2RR2RmR2Rm2R(2-9)

(2-10)

Su称为传感器系数或传感器输出灵敏度。

对于一个高精度的应变传感器来说,仅仅靠4个应变片组成桥式测量电路还是远远不够的。由于弹性梁材料金相组织的不均匀性及热处理工艺、应变片性能及粘贴工艺、温度变化等因素的影响,传感器势必产生一定的误差。为了减少传感器随温度变化产生的误差,提高其精度和稳定性,需要在桥路两端和桥臂中串入一些补偿元件。如:初始不平衡值的补偿、零载输出温度补偿、输出灵敏度温度补偿等。

2.3.3 A/D转换器的选定

在实际的测量和控制系统中检测到的常是时间、数值都连续变化的模拟量,模拟量要输入到单片机中进行处理,首先要经过模拟量到数字量的转换,单片机才能接收、处理。目前有多种类型的A/D转换器,其类型有积分型、逐次逼近型、并行比较型、Σ- 14

Δ调制型、压频变换型等。多种类型的ADC各有其优缺点,并能满足不同的具体要求。 1.A/D转换器的分类: (1)积分型

积分型ADC工作原理是将输入电压转换成时间(脉冲宽度信号)或频率(脉冲频率),然后由定时器/计数器获得数字值。其优点是用简单电路就能获得高分辨率,但缺点是由于转换精度依赖于积分时间,因此转换速率极低。初期的单片AD转换器大多采用积分型,现在逐次比较型已逐步成为主流。 (2)逐次逼近型

逐次逼近型ADC由一个比较器和D/A转换器通过逐次比较逻辑构成,从MSB开始,顺序地对每一位将输入电压与内置D/A转换器输出进行比较,经n次比较而输出数字值。其电路规模属于中等。其优点是速度较高、功耗低,在低分辩率(<12位)时价格便宜,但高精度(>12位)时价格很高。 (3)并行比较型/串并行比较型

并行比较型ADC采用多个比较器,仅作一次比较而实行转换,又称Flash(快速)型。由于转换速率极高,n位的转换需要2n-1个比较器,因此电路规模也极大,价格也高,只适用于视频AD转换器等速度特别高的领域。串并行比较型AD结构上介于并行型和逐次比较型之间,最典型的是由2个n/2位的并行型AD转换器配合DA转换器组成,用两次比较实行转换,所以称为 Half flash(半快速)型。还有分成三步或多步实现AD转换的叫做分级型ADC,而从转换时序角度又可称为流水线型ADC,现代的分级型AD中还加入了对多次转换结果作数字运算而修正特性等功能。这类AD速度比逐次比较型高,电路规模比并行型小。 (4)Σ-Δ调制型

Σ-Δ型AD由积分器、比较器、1位DA转换器和数字滤波器等组成。原理上近似于积分型,将输入电压转换成时间(脉冲宽度)信号,用数字滤波器处理后得到数字值。电路的数字部分基本上容易单片化,因此容易做到高分辨率。主要用于音频和测量。 (5)压频变换型

压频变换型是通过间接转换方式实现模数转换的。其原理是首先将输入的模拟信号转换成频率,然后用计数器将频率转换成数字量。从理论上讲这种AD的分辨率几乎可

15

以无限增加,只要采样的时间能够满足输出频率分辨率要求的累积脉冲个数的宽度。其优点是分辩率高、功耗低、价格低,但是需要外部计数电路共同完成AD转换。 2.A/D转换器选用的原则:

(1)A/D转换器的位数。A/D转换器决定分辨率的高低,在系统中,A/D转换器的分辨率应比系统允许引用误差高一倍以上。

(2)A/D转换器的转换速率。不同类型的A/D转换器的转换速率大不相同。积分型的转换速率低,转换时间从几豪秒到几十毫秒,只能构成低速A/D转换器,一般用于压力、温度及流量等缓慢变化的参数测试。逐次逼近型属于中速A/D转换器,转换时间为纳秒级,用于个通道过程控制和声频数字转换系统。

(3)是否加采样/保持器。

(4)A/D转换器的有关量程引脚。有的A/D转换器提供两个输入引脚,不同量程范围内的模拟量可从不同引脚输入。

(5)A/D转换器的启动转换和转换结束。一般A/D转换器可由外部控制信号启动转换,这一启动信号可由CPU提供。转换结束后A/D转换器内部转换结束信号触发器置位,并输出转换结束标志电平,通知微处理器读取转换结果。

(6)A/D转换器的晶闸管现象。其现象是在正常使用时,A/D转换器芯片电流骤增,时间一长就会烧坏芯片。

2.3.4 单片机型号的选定

1.单片机选定准则

市场上的单片机型号很多,功能也有差异,在选择单片机型号的时候主要应该注意以下几个方面: (1)市场货源

系统设计者只能在市场上能够提供的单片机中选择,特别是作为产品大批量生产的应用系统,所选的单片机型号必须有稳定、充足的货源。 (2)单片机性能

应根据系统的功能要求和各种单片机的性能,选择最容易实现系统技术指标的型号,而且能达到较高的性能价格比。单片机性能包括片内硬件资源、运行速度、可靠性、

16

指令系统功能、体积和封装形式等方面。影响性能价格比的因素除单片机的性能价格外,还包括硬件和软件设计的容易程度、相应的工作量大小,以及开发工具的性能价格比。 (3)研制周期

在研制任务重、时间紧的情况下,还要考虑所选的单片机型号是否熟悉,是否能马上着手进行系统的设计。与研制周期有关的另一个重要因素是开发工具,性能优良的开发工具能加快系统地研制进程。 2.AT89S51单片机介绍

根据以上对单片机选型知识的介绍,本设计选用AT89S51单片机,下面对此型号单片机进行简介。

AT89S51是美国ATMEL公司生产的低电压、高性能CMOS 8位单片机。AT89S51是一种带4K字节闪烁可编程可擦除只读存储器的单片机,其指令集和传统的51单片机指令集是一样的。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89S51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

AT89S51具有如下特点:40个引脚,4k Bytes Flash片内程序存储器,128 bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。

此外,AT89S51设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。

17

3 硬件设计

3.1 系统硬件结构图

图3-1为系统总体硬件结构方框图,系统共分为三大部分:数据采集模块、单片机控制模块以及键盘和显示模块。各模块所采用的主要芯片型号已于图中有所标示。

AD转换ADC0832AT89S51单片机最小系统超重报警模块4*4矩阵键盘LM4229液晶显示

图3-1 系统总体硬件设计方框图

3.2 单片机主控单元的设计

3.2.1 单片机引脚说明

AT89S51单片机芯片为40个引脚,图3-2为单片机AT89S51引脚图。下面简单叙述各引脚的功能。

VCC/GND:电源/接地引脚;

P0口:P0是一个8位漏极开路型双向I/O端口,端口置1(对端口写1)时作高阻抗输入端;P0还可以用作总线方式下的地址数据复用管脚,用来操作外部存储器。在这种工作模式下,P0口具有内部上拉作用。对内部Flash程序存储器编程时,接收指令字节、校验程序、输出指令字节时,要求外接上拉电阻;

P1口:P1是一个带有内部上拉电阻的8位双向I/0端口,输出时可驱动4个TTL。端口置1时,内部上拉电阻将端口拉到高电平,作输入用; 另外,P1.0、P1.1可以分别被用作定时器/计数器2的外部计数输入(P1.0/T2)和触发输入(P1.1/T2EX);对内部Flash程序存储器编程时,接收低8位地址信息;

18

P2口:P2是一个带有内部上拉电阻的8位双向I/0端口;输出时可驱动4个TTL。端口置1时,内部上拉电阻将端口拉到高电平,作输入用; P2口在存取外部存储器时,可作为高位地址输出;内部Flash程序存储器编程时,接收高8位地址和控制信息;

P3口:P3是一个带有内部上拉电阻的8位双向I/0端口,输出时可驱动4个TTL。端口置1时,内部上拉电阻将端口拉到高电平,作输入用。P3引脚功能复用见表3-1所示:

表3-1 P3口引脚功能复用

P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7

串行通讯输入(RXD) 串行通讯输出(TXD) 外部中断0( INT0) 外部中断1(INT1) 定时器0输入(T0) 定时器1输入(T1) 外部数据存储器写选通WR 外部数据存储器写选通RD

RST:在振荡器运行时,有两个机器周期(24个振荡周期)以上的高电平出现在此管脚时,将使单片机复位。只要这个管脚保持高电平,51芯片便循环复位。复位后P0—P3口均置1,管脚表现为高电平,程序计数器和特殊功能寄存器SFR全部清零。当复位脚由高电平变为低电平时,芯片为ROM的00H处开始运行程序;

XTAL1、XTAL2:XTAL1是片内振荡器的反相放大器输入端,XTAL2则是输出端,使用外部振荡器时,外部振荡信号应直接加到XTAL1,而XTAL2悬空。内部方式时,时钟发生器对振荡脉冲二分频,如晶振为12MHz,时钟频率就为6MHz。晶振的频率可以在1MHz至24MHz内选择,电容取30PF左右。

ALE/PROG:访问外部存储器时,ALE(地址锁存允许)的输出用于锁存地址的低位字节,即使不访问外部存储器,ALE端仍以不变的频率输出脉冲信号(此频率是振荡器频率的1/6),在访问外部数据存储器时,出现一个ALE脉冲;

PSEN:外部程序存储器的选通信号输出端。当AT89S51由外部程序存储器取指令或常数时,每个机器周期输出2个脉冲,即两次有效。但访问外部数据存储器时,将不

19

会有脉冲输出;

EA/Vpp:外部访问允许端。当该引脚访问外部程序存储器时,应输入低电平。要使AT89S51只访问外部程序存储器(地址为0000H-FFFFH), 这时该引脚必须保持低电平。

图3-2单片机AT89S51引脚图

3.2.2 AT89S51最小系统设计

单片机最小系统,或者称为最小应用系统,是指用最少的元件组成的单片机可以工作的系统。对51系列单片机来说,最小系统包括:单片机、晶振电路、复位电路。其中复位电路采用上电复位。其最小系统电路图见图3-3所示:

20

图3-3 单片机最小系统图

对于AT89S51单片机,其最小系统只需要电源、复位电路、时钟电路就能工作。由于我们的程序存储器(ROM)采用内部Flash存储单元,所以单片机上的EA接高。

微处理器系统在开始工作时必须对微处理器内部的寄存器等进行复位,使各个寄存器的值设为预定状态才能顺利开始工作。复位电路的好坏决定着单片机能否正常工作。复位电路基本功能是在系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。复位电路可以使用专用复位芯片,也可以用电阻电容搭建。本文从可靠性和成本考虑最终选用电阻电容来搭建复位电路。对于51内核的单片机,RST是复位信号输入端,高电平有效。当此输入端保持两个机器周期(24个时钟振荡周期)的高电平时,可以完成复位操作。

21

3.3 数据采集模块设计

3.3.1 传感器单元设计

根据第二章对各种类型传感器特性的介绍,本设计决定采用L-psⅢ型称重传感器,该传感器为双孔平衡梁形式,是制作电子计价秤的专用产品,也可用于制造由单只传感器构成的电子案秤、台秤及专用衡器等。其主要技术指如表3-2所示:

表3-2 L-psⅢ型称重传感器技术指标

额定载荷 灵敏度 准确度等级 最大分度数 最小检定分度值 综合误差 重复性 蠕变 最小静载荷 最大安全载荷 极限过载荷 输入电阻 输出电阻 温度补偿范围 使用温度范围 接线方式

Kg mV/V %F.S. %F.S. %F.S./30min %Fmax %Fmax %Fmax

3,6,10,20,30,50 1.8±0.08 C3 3000 Fmax/10000

0.02 0.01 ±0.017 1 150 200 415~445 349~355 -10~+50 -20~+60

 ℃ ℃

输入(+):红,输入(-):白,输出(+):绿

输出(-):蓝,屏蔽:黄

3.3.2 A/D转换单元设计

根据对各种A/D转换器的介绍与分析,本设计选定ADC0832作为本设计的A/D转

22

换模块。下面对该芯片的情况进行简要的介绍。

ADC0832是美国国家半导体公司生产的一种8位分辨率、双通道A/D转换芯片。具有体积小,兼容性强,性价比高的特点,具体参数如下:  8位分辨率;  双通道A/D转换;

 输入输出电平与TTL/CMOS相兼容;  5V电源供电时输入电压在0~5V之间;  工作频率为250KHZ,转换时间为32uS;  一般功耗仅为15mW;

 8P、14P-DIP(双列直插)、PICC多种封装;

 商用级芯片温宽为0℃~70℃,工业级芯片温宽为-40℃~85℃; 1、下面对ADC0832的引脚进行说明,图3-4为该芯片的引脚图:

图3-4 ADC0832引脚图

 CS—

:片选端,低电平芯片使能;

 CH0:模拟输入通道0,或作为IN+/-使用;  CH1:模拟输入通道1,或作为IN+/-使用;  GND:芯片参考零点位(地);  DI:数据信号输入,选择通道控制;  DO:数据信号输出,转换数据输出;  CLK:芯片时钟输入;

 Vcc/REF:电源输入及参考电压输入(复用)。

23

2、ADC0832的接口电路

正常情况下,ADC0832与单片机的接口应为4条数据线,分别是CS、CLK、DO、DI,但由于DO端与DI端在通信时并未同时有效并与单片机的接口是双向的,所以电路设计时可以将DO与DI并联在一根数据线上使用。单片机与ADC0832的接口电路如图3-5所示。

图3-5 单片机与ADC0832连接图

当ADC0832未工作时其CS输入端应为高电平,此时芯片禁用,CLK和DO/DI的电平可以任意,当要进行A/D转换时,须先将CS使能端置于低电平并保持低电平直到转换完全结束。此时芯片开始转换工作,同时由处理器向芯片时钟输入端CLK输入时钟脉冲,DO/DI端则使用DI端输入通道功能选择的数据信号。

3.4 键盘和显示电路单元设计

3.4.1 键盘电路设计

在本设计中,采用的是4×4的矩阵式键盘,将单片机的P1.0-P1.3作为键盘的行线接口,P1.4-P1.7作为列线接口,列线通过电阻接+5V。商品的单价已由程序设定好,并

24

号连接。

3.4.2 显示电路设计

3.5 系统总体原理图

可由键盘选择各种商品的价格。

图3-6所示,为完善其功能,电路中添加了上拉电阻。

图3-6 液晶显示模块LM4229与单片机接线图

25

在系统各部分的设计完成后,把各模块根据其功能和信号处理的流程连接起来,便

得到系统总体设计的原理图,如图3-7所示,为简洁起见,其中的接线部分采用网络标

本设计中显示部分采用了当今常用的LM4229液晶显示模块。其与单片机的接线如

措施。

3.6 硬件抗干扰设计

图3-7 系统总体原理图

方面,但更重要的方面是外界干扰和接地引起的异常。

度。就单片机测控系统来讲,其主要干扰是来自电源和信号传输通道的干扰。

26

用到称重传感器,所采用的应变式传感器是高阻抗器件,其绝缘性能、机械结构的稳定

性等,直接影响工作特性的稳定。因此,应变片传感器的绝缘材料必须有很高的绝缘性

统的可靠性更倍受人们的关注,这是因为系统的可靠性决定了系统能否达到所需要的精

能、足够的机械强度、高形状稳定性及良好的抗湿性能。下面重点介绍单片机的抗干扰

随着科学技术的迅速发展,人们对单片机测控系统的各种性能要求越来越高。而系

本电子称重器的核心部件是单片机,所以我们的抗干扰措施主要是针对单片机。还

电子秤在使用中,常常会出现各种各样的异常现象,电子秤本身的质量问题是一个

1、电源的抗干扰措施

普通用电中含有多种高次谐波,它们很容易经电源进入单片机系统,还有一些射频发射、电磁波等也会由电源线感应反馈进入单片机系统造成干扰。因此,在电源电路中必需采取有效地滤波措施,来抑制这些高频干扰的侵入。电源滤波的一般方法是在电源变压器初、次级分别设置低通滤波器和线间电容滤波器,使50Hz市电基波通过,而抑制掉高频信号。此外在变压器的初、次级之间均采用屏蔽层隔离,其中初级屏蔽层接大地,次级屏蔽层接系统逻辑地,以减少其分布电容,提高抗共模干扰的能力。 2、信号传输通道的抗干扰措施

信号传输通道包括系统的前向通道和后向通道,其主要干扰有:杂散电磁场通过感应和辐射方式进入通道的干扰;由于地阻抗耦合、漏电流等因素产生的加性干扰;以及因传输线衰减、阻抗失配等因素引起的乘性干扰。对于这三类干扰,可以采用以下几种措施加以排除。 (1)光电隔离技术

光电耦合器对干扰信号具有良好的隔离性能,一是它的输入阻抗很小,约为100fl-lldl,而干扰源内阻则很大,通常为105Q~108Q,因此能分压到光电耦合器输入端的噪声很小;二是光电耦合器输入部分的发光二极管是在电流状态下工作的,即使干扰噪声有较高的电压幅度,但由于能量小,不能提供足够的电流使发光二极管发光而被抑制掉;三是光电耦合器的输入回路与输出回路之间分布电容极小,绝缘电阻很大,回路一边的干扰很难通过光电耦合器馈送到另一边去。因此,采用光电耦合器可将单片机与前向通道、后向通道及其他部分从电气上隔离开来,能有效地防止干扰信号的侵入。 (2)接地技术

本系统既有模拟电路又有数字电路,因此数字地与模拟地要分开,最后只在一点相连,如果两者不分,则会互相干扰。 (3)输入输出信号线采用屏蔽双绞线

屏蔽双绞线对于静电干扰和电磁干扰有很好的抑制作用,有条件的话应尽量采用。但使用中应注意:

 线缆敷设时不要过分用力或使电缆打结、避免弯曲超过900、避免过紧地缠绕电缆,

以保护双绞47线的扭绞状态;

27

 做线时,避免损坏线缆的外皮、不要切坏线缆内的导线;  接线时,双绞线的开绞长度尽量小,不要超过20mm;  双绞线的屏蔽层采用设备端单端接地方式。

28

4 系统软件设计

本系统程序使用模块化的程序设计思想,主程序通过调用子程序以实现各部分功能。先进行软件的总体设计,然后进行各功能模块设计。

4.1 主程序设计

电子秤需要有数据采集、处理、存结果、送显示的运行过程。根据这一要求,电子秤的信息采集与处理分三个阶段:在微处理器的控制下,经传感器转换的电压信号通过输入电路送入A/D转换器处理,存入到数据存储器中;微处理器对采集的测量数据进行必要的数据处理,把数据信号处理为显示所要求的信号格式,通过输出接口电路输出并显示。主流程图见图4-1所示:

开始单片机初始化、LM4229进入欢迎界面、ADC0832初始化载物台是否有重物Y单片机存储ADC0832采样值N是否输入商品代码按键Y单片机执行计算并将结果送LM4229显示N测量结束键是否按下Y结束N

图4-1 主程序流程图

29

4.2 LM4229液晶显示驱动程序

开始写入控制字写入初始行Y是否换行?N全部数据已写完?Y结束N

图4-2 LM4229液晶显示驱动程序流程图

LM4229液晶能够显示比较复杂的汉字和图形,首先必须对其写入控制操作字,包括图形的显示方式,字体的模式。然后写入初始行地址,指针自动左移,直到写完全部数据为止。

write_data(place&0xff); //写入地址高位 write_data(place/256); //写入地址低位 write_com(0x24); //地址设置 write_com(0xb0); //设置数据自动写

write_data(ASC_MSK[(c1-0x20)*16+k]); /*---例如:0的ASCII码为0x30, 在ASC_MSK中的位置为0x10*16 ---16字节字码依次写入LCD---*/ write_com(0xb2); //自动复位 place=place+30;

30

4.3 ADC0832采样程序

开始拉低CS、拉高CLKDATA右移八位?Y拉高CS、拉低CLK,返回数据N结束

图4-3 ADC0823采样程序流程图

单片机通过拉低CS、拉高CLK来启动ADC0832进行外部压力传感转换后的电压信号进行采样,每产生8个CLK脉冲,DATA获得一位完整的8bit数据,此时MCU发送中断请求,拉高CS,拉低CLK,并将数据DAT返回。

4.4 键盘程序

本设计中采用了4×4矩阵式键盘,单片机定时进行查询。首先单片机发送行扫描代码,然后进行列扫描,当发现某一列出现了低电平时,即返回相应的键盘值。若没有发现则说明当前行没有键按下,行扫描右移一位,继续执行列扫描。

31

开始发送行扫描码发送列扫描码右移一位右移一位列扫描完毕?NYN行扫描完毕?Y返回键值结束图4-4 键盘程序流程图

32

5 系统仿真

在系统硬件与软件全部设计完成的情况下,将系统在protues7.5环境下进行了软件仿真,以确保本设计方案的可行性与准确性。因为在仿真时不能实际的把物体放到称重台上,所以在仿真时采用直接输入模拟电压信号的方法,来代替信号的采集。

5.1 欢迎界面的仿真

开始仿真时,先将用C语言编写的程序用Keil软件进行编译,生成可执行程序,然后装入单片机中进行仿真,按开始按钮,单片机及其他各部分电路开始工作,单片机调用内部存储数据对各部分接口电路初始化。200ms后LM4229进入欢迎界面,如图5-1所示。

图5-1 电子秤欢迎界面仿真

33

5.2 无重物情况仿真

欢迎界面过后,电子秤进入称重界面。此时,ADC0832不断对外部数据进行采样交给单片机进行处理,一旦有物品放入载物台,ADC0832立即发送中断请求,并将本次采集数据交给单片机进行处理。调节压力传感模拟电路电压,将电压设为0.00表示此时载物台上没有物体。此时LM4229显示指示“实用电子秤,名称······单价:0.000元/千克,总重量:0.000千克,总价:00.000元”。如图5-2所示。

图5-2 无重物称重界面仿真

34

5.3 称量物体仿真

上调压力传感电压,表示已有商品放在载物台上,ADC0832立即发送中断请求,并将本次采集的数据交给单片机进行处理,之后送入LM4229显示相应数据量。在此过程中,键盘不断进行扫描,一旦有键按下,单片机便对其数据进行相应处理,然后将对LM4229进行写操作。此时,按下键盘,选择相应的商品。如按下3号键,选择草莓,此时LM4229上显示“名称:草莓,单价:3.6元/千克,总重量:2.499千克,总价:“8.999元”(实际3.6×2.499=8.999元)。达到基本要求。如图5-3所示。当要称量下一种不同商品的时候,只需按下0键,选择商品代码,再按下相应商品键。

图5-3 称重情况仿真

35

5.4 最大量程仿真

将称重传感器调节到最大,显示最大称量,其结果如图5-4所示。由于元件及系统的误差,使得最大量程不能达到预定的5Kg,而是4.980Kg,这是在误差允许范围内的,符合要求。因为本设计添加了超重报警模块,所以在称量的过程中,一旦物体自身的重量超出电子秤的称量范围,蜂鸣器立即会发出“滴滴····”,警报声告诉工作人员,所称量物品超重。

图5-4 最大量程仿真

36

5.5 仿真总结与问题补充

5.5.1 仿真总结

以上,我们进行了几种基本情况的仿真,总结仿真的过程,我们可以得出以下结论: 1、该电子秤设计简单,操作方便,可以很容易的进行称量; 2、由于元件设置的原因,使电子秤的量程未达到预设的范围;

3、各商品的价格已在程序中设定好,既给称量带来了方便,也带来了麻烦,使得称量其他物品时需要修改程序。

5.5.2 问题补充

因为本设计采用软件仿真的方法,而不能进行实际的称量,所以采用了直接输入电压信号的方式代替了传感器采集的信号。但是经传感器采集的信号通常很小,需要通过前端信号处理电路进行准确的线性放大。放大后的模拟电压信号经过滤波电路和A/D转换电路转换成数字信号才被送入到主控电路的单片机中进行处理。在实际称量中,可以加入放大滤波电路如图5-5所示。

图5-5 放大滤波电路

图5-5为放大滤波电路的设计。放大器采用放大芯片AD620电容C1、C3用来滤除

37

采样信号电压中的低频噪声,选用22uF的普通独石电容;电容C2、C4用来滤除采样信号电压中的高频噪声,选用0.1uF的普通独石电容。因为采样信号电压值只有毫伏级,所以电阻R1、R2选用较小的阻值,否则导致放大器由于输入电流太小而放大效果不明显。微弱信号Vi1和Vi2被分别放大后从AD620的第6脚输出。

38

6 总结与展望

电子称重器是贸易市场中的常见的称重计量仪器。本文先说明了称重器的设计思路,并介绍了几种设计方案,选择了其中一种简单可行的方案。然后从电子秤的核心部件称重传感器的介绍开始,逐个进行各个模块器件的论证与选择。后面详细介绍了电子秤的硬件以及软件设计。

本设计为小量程(0~5Kg)称量器件,可以广泛应用于商店、菜市场等场合。在硬件部分设计过程中选用了A/D转换芯片ADC0832和LM4229液晶显示,大大简化了硬件电路及软件编程,并提高了系统的准确性和稳定性。人机界面部分由液晶显示与4×4位矩阵键盘组成,可以由键盘控制显示商品名称、重量和价格等信息,操作简单方便。软件设计中使用了C语言编程,便于修改和应用。

本次设计的电子称重器还存在一些缺点与不足,主要以下这两点:一是量程仅是5Kg,从而限制了该电子秤的使用范围。可采用大量程的称重传感器,但同时需要提高A/D转换芯片的位数,以保持精度。二是商品的种类与价格已编入程序,给称量其它的商品带来不便。三是本次设计没有完成实物的制作,从而不能预见商业产品开发中的所有问题,需要进一步研究。

通过这次电子秤的设计,我对所学的专业课知识有了更深的理解,尤其是单片机方面。在设计过程中,查阅了大量的中外文资料,解决了不少难题。另外本次设计提升了我分析问题解决问题的能力,增强了对学习的信心,相信这对我以后的工作和学习有重要的帮助。

39

附录程序

#include #include #include #include #include

#define uchar unsigned char #define uint unsigned int sbit ADCS =P3^5; sbit ADDI =P3^7; sbit ADDO =P3^7; sbit ADCLK =P3^6; uint x1,y1,z1=0,w1;

uchar ad_data,k,n,m,e,num,s; //采样值存储 uint temp1;

sbit beep =P3^0;

char press_data; //标度变换存储单元 float press;

unsigned char ad_alarm,temp; //报警值存储单元unsigned char abc[5]={48,46,48,48,48};

unsigned char price_all[6]={48,48,46,48,48,48};

float price_unit[10]={5.5,2.8,3.6,4.5,2.4,4.2,3.8,6.0,1.5,0}; //商品初始单价 uchar price_danjia[5]={48,46,48,48,48}; float price;

uint price_temp1,price_temp2; //商品总价 uchar Adc0832(unsigned char channel);

void alarm(void); void data_pro(void); void delay(uint k); void keyscan();

40

void disp_init();

void price_jisuan(); /************ 主函数

************/ void main(void) {

delay(500); //系统延时500ms启动

//ad_data=0; //采样值存储单元初始化为0 lcd_init(); //显示初始化 disp_init(); //开始进入欢迎界面 delay(1000); //延时进入称量画面 clear_lcd(0,4,40); clear_lcd(16,0,100); clear_lcd(28,0,40); clear_lcd(44,0,100); clear_lcd(56,0,40); clear_lcd(72,0,100); clear_lcd(84,0,40); clear_lcd(100,0,100); clear_lcd(112,0,40);

write_lcd(0,8,\"实用电子秤\"); while(1) { ad_data =Adc0832(0); //采样值存储单元初始化为0 alarm(); data_pro(); //读取重量 keyscan(); //查询商品种类 write_lcd(40,0,\"------------------------------\"); write_lcd(56,0,\"单 价:\"); write_lcd(56,11,price_danjia); write_lcd(56,20,\"元/千克\"); write_lcd(72,0,\"总重量:\"); write_lcd(72,11,abc); write_lcd(72,20,\"千克\"); write_lcd(88,0,\"总 价:\"); price_jisuan(); //计算出价格 write_lcd(88,10,price_all); write_lcd(88,20,\"元\");

41

write_lcd(112,0,\"设计学生:1210401038 谢玉夏\"); }

}

/************ 读ADC0832函数 ************/

//采集并返回

uchar Adc0832(unsigned char channel) //AD转换,返回结果 {

uchar i=0; uchar j; uint dat=0; uchar ndat=0;

if(channel==0)channel=2; if(channel==1)channel=3; ADDI=1; _nop_(); _nop_();

ADCS=0;//拉低CS端 _nop_(); _nop_();

ADCLK=1;//拉高CLK端 _nop_(); _nop_();

ADCLK=0;//拉低CLK端,形成下降沿1 _nop_(); _nop_();

ADCLK=1;//拉高CLK端 ADDI=channel&0x1; _nop_(); _nop_();

ADCLK=0;//拉低CLK端,形成下降沿2 _nop_(); _nop_();

ADCLK=1;//拉高CLK端 ADDI=(channel>>1)&0x1; _nop_(); _nop_();

42

ADCLK=0;//拉低CLK端,形成下降沿3 ADDI=1;//控制命令结束 _nop_(); _nop_(); dat=0;

for(i=0;i<8;i++) {

dat|=ADDO;//收数据 ADCLK=1; _nop_(); _nop_();

ADCLK=0;//形成一次时钟脉冲 _nop_(); _nop_(); dat<<=1;

if(i==7)dat|=ADDO; }

for(i=0;i<8;i++) {

j=0;

j=j|ADDO;//收数据 ADCLK=1; _nop_(); _nop_();

ADCLK=0;//形成一次时钟脉冲 _nop_(); _nop_(); j=j<<7; ndat=ndat|j;

if(i<7)ndat>>=1; }

ADCS=1;//拉搞CS端 ADCLK=0;//拉低CLK端

ADDO=1;//拉高数据端,回到初始状态 dat<<=8; dat|=ndat;

return(dat); //return ad k }

43

void data_pro(void) {

unsigned int; if(0/*****************报警子函数*******************/

void alarm(void) { if(ad_data>=256)

beep=0; //则启动报警 else beep=1; }

void delay(uint k) {

uint i,j;

for(i=0;i//开机欢迎界面 void disp_init() {

write_lcd(0,8,\"欢迎使用电子秤\");

44

write_lcd(16,0,\"------------------------------\"); write_lcd(28,0,\"设计学生:谢玉夏\");

write_lcd(44,0,\"------------------------------\"); write_lcd(56,0,\"班级学号:1210401038\"); write_lcd(72,0,\"------------------------------\"); write_lcd(84,0,\"指导老师:刘志芳\");

write_lcd(100,0,\"------------------------------\"); write_lcd(112,0,\"设计日期:2014年12月\"); }

//键盘服务程序 void keyscan() { P1=0xfe; temp=P1; temp=temp&0xf0; while(temp!=0xf0) { delay(5); temp=P1; temp=temp&0xf0; while(temp!=0xf0) { temp=P1; switch(temp) {

case 0xee:num=1,price=price_unit[0], write_lcd(24,0,\"名 break;

case 0xde:num=2,price=price_unit[1],write_lcd(24,0,\"名 break;

case 0xbe:num=3,price=price_unit[2],write_lcd(24,0,\"名 break;

case 0x7e:num=4,price=price_unit[3],write_lcd(24,0,\"名 break; } while(temp!=0xf0) {

称: 杏称: 李 称: 草 称: 葡 仁\"); 子\"); 莓\"); 萄\"); 45

temp=P1; temp=temp&0xf0; } } } P1=0xfd; temp=P1; temp=temp&0xf0; while(temp!=0xf0) { delay(5); temp=P1; temp=temp&0xf0; while(temp!=0xf0) { temp=P1; switch(temp) {

case 0xed:num=5,price=price_unit[4],write_lcd(24,0,\"名 break;

case 0xdd:num=6,price=price_unit[5],write_lcd(24,0,\"名 break;

case 0xbd:num=7,price=price_unit[6],write_lcd(24,0,\"名 break;

case 0x7d:num=8,price=price_unit[7],write_lcd(24,0,\"名 break; } while(temp!=0xf0) { temp=P1; temp=temp&0xf0; } } } P1=0xfb; temp=P1; temp=temp&0xf0;

称: 西称: 苹称: 雪称: 核 瓜\"); 果\"); 梨\"); 桃\"); 46

while(temp!=0xf0) { delay(5); temp=P1; temp=temp&0xf0; while(temp!=0xf0) { temp=P1; switch(temp) {

case 0xeb:num=9,price=price_unit[8],write_lcd(24,0,\"名 称: break;

case 0xdb:num=10,price=price_unit[9],write_lcd(24,0,\"名 称: break; case 0xbb:num=11,price=price_unit[1]; break; case 0x7b:num=12,price=price_unit[2]; break; } while(temp!=0xf0) { temp=P1; temp=temp&0xf0; } } } P1=0xf7; temp=P1; temp=temp&0xf0; while(temp!=0xf0) { delay(5); temp=P1; temp=temp&0xf0; while(temp!=0xf0) { temp=P1; switch(temp)

香 蕉\"); 商品代码\"); 47

{ case 0xe7:num=13,price=price_unit[3]; break; case 0xd7:num=14,price=price_unit[4]; break; case 0xb7:num=15,price=price_unit[5]; break; case 0x77:num=16,price=price_unit[6]; break; } while(temp!=0xf0) { temp=P1; temp=temp&0xf0; } } }

price_temp1=(int)(price*1000); price_danjia[0]=price_temp1/1000+48; price_danjia[1]=46; price_danjia[2]=(price_temp1%1000)/100+48; price_danjia[3]=((price_temp1%1000)%100)/10+48; price_danjia[4]=((price_temp1%1000)%100)%10+48; }

void price_jisuan() {

price_temp2=(int)(price*press*1000); price_all[0]=price_temp2/10000+48; price_all[1]=(price_temp2/1000)%10+48; price_all[2]=46; price_all[3]=(price_temp2%1000)/100+48; price_all[4]=((price_temp2%1000)%100)/10+48; price_all[5]=((price_temp2%1000)%100)%10+48; }

//取单价个位

//取单价十分位 //取单价百分位 //取单价千分位 48

参考文献

[1] 郭天祥.51单片机C语言教程[M].北京:电子工业出版社,2009:342-354. [2] 李建忠.单片机原理及应用[M].西安:西安电子科技大学出版,2002:63-80. [3] 张俊谟.单片机中级教程[M].北京:北京航空航天大学出版,2000:36-44.

[4] 陈东云,杜敬仓.单片机原理与开发指导[M].北京:机械工业出版社,2006:122-156. [5] 彭伟.单片机C语言程序设计实训100例[M].北京:电子工业出版社,2009:160-167.

49

因篇幅问题不能全部显示,请点此查看更多更全内容