DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 158|回复: 0
打印 上一主题 下一主题

基于单片机的高精度称重系统的研制

[复制链接]
跳转到指定楼层
楼主
发表于 2011-4-21 14:23:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
0 引言
  随着科学技术的进步,单片机及相关电子技术飞速发展,应用领域不断拓展。利用单片机和传感器实现对重量的高精度测量,提高了生产的自动化程度,成本低廉,应用十分广泛。
  1 系统组成
  系统由单片机系统、称重传感器、A/D转换、通信接口和语音提示模块组成,硬件结构框图如图1。

  1.1 单片机系统
  系统采用AT89S52作为控制核心,配备键盘、液晶显示电路和扬声器。
  AT89S52是Atmel公司新推出的一种低功耗、高性能CMOS  8位微控制器,它具有以下标准功能:8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器, 一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。其性能完全可以满足系统的要求。
  液晶显示采用OCMJ4X8A液晶显示屏,它内带汉字字库,可以方便地显示汉字及图形;可以同时显示4行8列个单元,可以一次显示系统所有状态 信息;显示的内容不需要刷新,节省了单片机的资源;电路结构简单,便于控制,功耗低。键盘用于输入预置信息,扬声器用于发出语音提示和超重报警。
  1.2 称重传感器
  系统采用悬臂梁式称重传感器。该传感器量程30kg;弹性体为弯曲悬臂梁结构,外形高度低,结构强度高;用于拉伸力或压缩力测量,抗偏、抗侧向力强;防尘密封,精度高,性能稳定可靠,安装使用方便。传感器外形如图2所示,单位:mm。

  此传感器为电阻应变式称重传感器,它的主要组成部分有电阻应变片、弹性体和检测电路。工作原理:弹性体在外力作用下产生弹性变形,使粘贴在其表 面的电阻应变片也随之产生变形,电阻应变片变形后,它的阻值将发生变化,再经相应的测量电路把这一电阻变化转换为电压,从而完成将外力变换为电信号的过 程。其中,电阻应变片是把一根电阻丝机械地分布在一块有机材料制成的基底上,即成为一片应变片;弹性体是一个有特殊形状的结构件,它的功能有两个:首先是 它承受称重传感器所受的外力,对外力产生反作用力,达到相对静平衡;其次,它要产生一个高品质的应变场,使粘贴在此区的电阻应变片比较理想地完成应变电信 号的转换任务;检测电路采用全桥式等臂电桥把电阻应变片的电阻变化转变为电压输出。
  1.3 高精度A/D转换
  称重传感器的输出为mV级的微弱信号,传统的测量方法是在A/D转换之前加一级高精度的放大器,电路复杂。AD7714是美国Analog  Devices(AD)公司推出的24-位ADC家族AD771X系列中的新品,适用于低频、高精度工业级转换。该器件具有完整的模拟前端,可以直接测量 传感器输出的直流微弱信号,转换精度达到24位无误码。采用三线串行口与微控制器连接,通过软件编程可以对增益、信号极性、输入通道作出设置。该芯片具有 自校准、系统校准和背景校准功能,可以消除零点误差、满量程误差及温度漂移的影响。
  1.4 通信接口
  将单片机采集的重量数据传输到上位机,利用单片机的RXD,TXD接口连接到RS232串行口接收或发送数据和指令,但是单片机的TTL电平和RS232不兼容,因此使用了MAX232进行电平转换,其连接线图如图3所示。

  1.5 语音提示模块
  语音提示由ISD1400芯片控制,它有20秒的录放时间。预先将0~9、点、十、百、千克、克的语音存入ISD1400,单片机将实际测量的重量值通过该语音芯片经由扬声器发出。
  2 软件设计
  2.1 单片机软件编程
  对于51系列单片机,目前常用的语言有汇编和单片机C语言。本系统下位机软件采用Keil C51程序编写。主要由主程序、读取重量子程序、键盘扫描和液晶显示子程序、语音提示子程序、串口发送和接收子程序等部分组成。流程图如图4所示。

  读取重力量程序功能。启动A/D转换,将称重传感器测量的重量值转换成数字信号并读取到单片机内部。
  串口发送和接收子程序功能。完成下位机和上位机的通信。单片机读取的温度和湿度值通过发送子程序发送给上位机并等待命令,收到命令后再继续进行 测量。接收子程序通过接收上位机传输的命令进行系统自检、参数修正等。上位机的命令发送采用间隔10ms反复发送的方式,直到单片机将接收到的命令返回为 止。如在 1s内单片机没有响应,则设置超时,系统复位单片机。
  2.2 上位机软件编程
  本系统采用MSComm控件实现VB与单片机之间的数据交换,具有程序实现简便,程序模块化,工作可靠等优点,并能满足多数情况下的工控要求。使用MSComm控件主要是通过事件来处理串行口的交互。控件的OnComm事件负责捕获或处理这些通讯事件和通讯错误。
  2.2.1 MSCOMM属性设置
  MSComml.CommPort=1 '设置端口1
  MSComml.Settings="2400,N,8,1" '2400 b/s,无校验,8位数据位,1位停止位
  MSComml.InputLen=1 '一次从缓冲区中接收一个字节
  MSComml.InBufferSize=1024 '接口收缓冲区大小
  MSComml.PortOpen=Ture '打开端口
  MSComml.Rthreshold=1 '接收一个字节触发一次ONCOMM事件
  2.2.2 ONCOMM事件响应程序
  Private Sub MSComml_OnComm()
  Dim buffer As Variant '由缓冲区接收到的数据用Variant格式接收
  Dim arr()As Byte '定义二进制数组
  Dim i As Integer
  Dim receivester As string '定义输出到接收文本框中的字符变量
  '下段程序是comEvReceive事件触发后,将数据存入相应的数组,并在接收文本框中显示
  Select Case MSComml.CommEvent CasecomEvReceive buffer="MSComml".Inpute
  arr=buffer接收缓冲区内数据variant变量内
  arr=buffer '转换为二进制数并送入相应数组
  For i="1to8"
  receivester arr(i)
  Text1.Text=Text1.Text&receiverstr&"."
  '在接收框中显示文本
  Next i
  End Select
  End Sub
  3 结束语
  本重量测量系统,充分发挥了AT89S52单片机强大的控制能力和计算机的数据处理能力,通过称重传感器和24位分辨率的A/D转换器实现了对重量的高精度测量。系统在电子秤的实际应用中收到了满意的效果。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2025-7-28 02:54 , 耗时 0.099800 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表