静态称重测控系统设计
计算机控制系统课程设
计
静态称重测控系统设计
学生姓名
学院名称
学号
班级
专业名称
指导教师
年 月 日
摘要
随着交通检查、超限治理和计重收费工作的不断深入,称重测控系统得到了越来越广泛的应用。称重测控系统实际上就是一个信号转换和显示的系统。当物品放到到称重平台上时,传感器把感受到的压力转换并输出电压模拟信号,经模/数转换(A/D变换)后就得到数字量的信号。但是,数字量的信号并不是重物的实际重量值,它需要由数字量在单片机内部经过一系列的数据处理才能得到。不仅如此,称重显示器的整个工作过程也都是在单片机的控制下有条不紊地进行。近年来,随着大规模集成电路的飞速发展,单片机更加广泛的应用在各种智能化表中。
通过分析近年来电子衡器产品的发展情况及国内外市场的需求,电子衡器总的发展趋势是小型化、模块化、集成化、智能化;其技术性能趋向是速率高、准确度高、 稳定性高、可靠性高;其功能趋向是称重计量的控制信息和非控制信息并重的“智能化”功能;其应用性能趋向于综合性和组合性。
本设计是基于单片机的称重仪,它的硬件电路设计包括单片机最小系统、A/D转换器、称重传感器、LED 显示电路、±5V 稳压电源电路等几部分设计内容。其中压力传感器输出响应的模拟电压信号,经过模/数转换(A/D变换)后就得到数字量D 。但是,数字量D 并不是重物的实际重量值W ,W 需要由数字量D 在控制器内部经过一系列的运算——即数据处理才能得到。
关键字:称重;模拟信号;传感器;A/D转换器
目 录
1 绪论.............................................................. 3
2 系统的软件设计.................................................... 4
2.1 系统主程序流程图 ............................................ 4
2.2 A/D转换子程序............................................... 4
2.3 数据采集子程序 .............................................. 5
2.4 通信模块子程序 .............................................. 5
2.5 显示子程序 .................................................. 6
2.6 控制子程序 .................................................. 7
3 系统单元电路的设计................................................ 8
3.1 检测电路设计 ................................................ 8
3.1.1传感器电路设计 ........................................ 10
3.1.2 放大电路设计.......................................... 10
3.2 A/D转换电路设计............................................ 11
3.3微控制器的工作电路设计...................................... 12
3.4 显示电路的设计 ............................................. 13
3.5 通信模块设计 ............................................... 14
3.6 系统抗干扰设计 ............................................. 14
4 总体方案设计..................................................... 14
4.1 硬件方案论证 ............................................... 14
4.1.1 微处理器的选择........................................ 14
4.1.2 称重传感器的选择...................................... 14
4.1.3 显示器的选择.......................................... 15
4.1.4 数据采集电路的选择.................................... 15
4.1.5 数据接口的选择........................................ 16
4.2 系统总体设计 ............................................... 17
4.2.1 系统的工作流程........................................ 17
4.1.2 系统的设计方案方框图.................................. 18
4.3 系统控制算法的设计 ......................................... 19
5 总结............................................................. 20
6 参考文献......................................................... 20
附录............................................................... 21
1 绪论
称重技术自古以来就被人们所重视,作为一种计量手段,广泛应用于工农业、科研、交通、内外贸易等各个领域,与人民的生活紧密相连。电子秤是电子衡器中的一种,衡器是国家法定计量器具,是国计民生、国防建设、科学研究、内外贸易不可缺少的计量设备,衡器产品技术水平的高低,将直接影响各行各业的现代化水平和社会经济效益的提高。称重装置不仅是提供重量数据的单体仪表,而且作为工业控制系统和商业管理系统的一个组成部分,推进了工业生产的自动化和管理的现代化,它起到了缩短作业时间、改善操作条件、降低能源和材料的消耗、提高产品质量以及加强企业管理、改善经营管理等多方面的作用。称重装置的应用已遍及到国民经济各领域,取得了显著的经济效益。因此,称重技术的研究和衡器工业的发展各国都非常重视。50年代中期电子技术的渗入推动了衡器制造业的发展。60年代初期出现机电结合式电子衡器以来,经过40多年的不断改进与完善,我国电子衡器从最初的机电结合型发展到现在的全电子型和数字智能型。现今电子衡器制造技术及应用得到了新发展。电子称重技术从静态称重向动态称重发展:计量方法从模拟测量向数字测量发展;测量特点从单参数测量向多参数测量发展,特别是对快速称重和动态称重的研究与应用。通过分析近年来电子衡器产品的发展情况及国内外市场的需求,电子衡器总的发展趋势是小型化、模块化、集成化、智能化;其技术性能趋向是速率高、准确度高、稳定性高、可靠性高;其功能趋向是称重计量的控制信息和非控制信息并重的“智能化”功能;其应用性能趋向于综合性和组合性。电子秤是电子衡器中的一种,衡器是国家法定计量器具,是国计民生、国防建设、科学研究、内外贸易不可缺少的计量设备,衡器产品技术水平的高低,将直接影响各行各业的现代化水平和社会经济效益的提高。
2 系统的软件设计
静态称重系统的软件设计主要包括单片机的软件设计和PC 机上的程序设计。单片机的软件设计主要包括:主程序设计、数据采集、数据处理、显示程序、通信程序等。
2.1 系统主程序流程图
在本设计中选用的单片机语言是C51。它具有一般C 语言的特点:程序书写简单,便于阅读和维护;可实现模块化、结构化编程;语言表达能力强:可对内存、变量的值进行直接操作,能完成汇编语言对硬件操作的大部分功能;源程序的可移植性好,许多程序段不做或只做少量的修改即可移植到另一个C 系统上运行,为调试提供方便。主程序主要完成可编程芯片的初始化和重量数据采集及按需要调用各模块。程序流程图如下:
图 2.1 主程序流程图
2.2 A/D转换子程序
该模块的功能是:设置数据的采集频率和转换的格式,将采集到的数据转换
成单片机能识别的数字信号。当主程序调用A /D 转换程序时,首先须对A /D 转换模块的采样频率和采样精度进行设置,再等待传感器检测信号的输入,如有前端数据输入,则对输入数据进行预处理,采集、调整频率和幅值,最后输出数字信号。AD 转换程序主要有三大块组成:
①AD 转换器启动程序:
②查询等待转换结束程序;
③读取转换结果程序。
A/D转换器的原理图如图3-4所示:
CP S
v (I t )
S v I t )ADC的量化编码电路. . D n-1D 1
D 0
ADC
输入模拟电压取样保持电路
取样展宽信号数字量输出(n位)
图3-4 A/D转换原理图
在A/D转换器中,因为输入的模拟信号在时间上是连续量,而输出的数字信号代码是离散量,所以进行转换时必须在一系列选定的瞬间(亦即时间坐标轴上的一些规定点上)对输入的模拟信号取样,然后再把这些取样值转换为输出的数字量。因此,一般的A/D转换过程是通过取样、保持、量化和编码这四个步骤完成的。
2.3 数据采集子程序
数据采集就是把称重传感器的模拟信号x(t)经过采样转换为采样信号
x(nT),然后再进行量化和编码处理得到离散的数字信号x(n),最后把x(n)送到计算机进行相应的处理。
(1)采样周期的选择
采样周期T 决定了采样信号的质量与数量,T 太小,会使采样信号x (n T)的数量剧增,占用大量的内存单元;T 太大,会使模拟信号的某些信息丢失,这样一来就会出现失真现象,影响数据处理的精度。因此必须根据采样定理来选择T 以确保x(n T)不失真。根据采样定理可知,对截止频率为f 的连续信号x(t)进行采样,其采样周期T 必须满足T ≤1/(2f)时,才能唯一确定不会出现失真。根据相关文献可知汽车的垂直振动在50Hz 时已不明显,因此f 取50Hz 比较合适,所以T ≤1/(2f)=0.01s=10ms。一个采样周期包括硬件延迟时间、A/D转换时间和程序
执行时间。在本课题中取硬件延迟为100微秒,A/D转换时间35微秒,程序执行时间l5微秒,由此可知T=150微秒,满足采样定理。
(2)采样开始和结束的判断
由于硬件系统的数据采集是连续的,因此实验小车通过计量平台的开始和结束要由软件来判断。这就需要在软件中设置一个阀值,如果A/D转换数据超过阀值,则认为小车开始通过计量平台采样开始,一旦采样开始并且转换值低于阀值则认为小车离开计量平台采样结束。
图 2.3 数据采集流程图
2.4 通信模块子程序
通信模块负责单片机与用户PC 之间的通信,完成了串行口的初始化和波特率的设置,并将数据传送给PC 机。在串行通信时,要求通信双方都采用一个标准接口,是不同的设备可以方便地连接起来进行通信当主程序调用通信模块时,程序
首先设置好断点并保护好现场,在处理完通信程序后,利用现场数据进行恢复。接下来要设置好波特率,并对串口进行初始化。接着向PC 发送要传输的数据长度,再传输数据并等待PC 方接收,接着判断数据是否被PC 收到、数据是否发完,如PC 没有收到数据或者数据没有发送完毕,则重新进行发送。数据发送完毕后,程序利用保护好的现场数据进行现场恢复。通信模块的具体程序流程如下图所示:
图 2.4 通信模块流程图
2.5 显示子程序
由于在数码管的显示上,本系统选择的是静态显示,因此在不同位数码管的显示之间需要延时,因考虑人眼的视觉暂留的影响,数码管每5个采样周期,即
0.5秒刷新一次。三个数码管的高两位为显示重量的整数值,两个显示重量的小数值。如:
char dispvalue_Array[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};为显示0~9的数组。为了把整数值与小数值区分开,中间的数码管显示时要把小数点点亮。这时给中间的数码管的显示编写了另一个代码数组如:
char dispvalue_Array1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};
2.6 控制子程序
设d(t)是反映物品通过称重台台面过程中施加给台面的一个幅值为单位l 的输入信号,w(t)为称重台面向下位移,M 为称重台面质量,m 为物品真实载荷,k 、c 分别为称重传感系统结构的弹性系数和阻尼次数。上可知系统传递函数为:
G(S)=W(S)/D(S)=mg/(MS2+cS+k).
且系统无阻尼振荡频率(固有频率) 为:wn =(k/M)1/2,阻尼比为ζ=c/(2(k/M)1/2) 。
Z 变换为G(Z)=(b0+b1Z-1+b2Z-2)/(1+a1 Z-1+a2 Z-2), 将系统模型格式写最小二乘格
式:Z (k )=h(k)θ+v(k),其中h(k)=[z(k-1),-z(k-2),u(k),u(k-1),u(k-2)]T , θ=[a1,a2,b0,b1,b2]T 。
根据前述最小二乘参数估计递推算法RLS ,得流程图如下:
图 2.5 控制流程图
3 系统单元电路的设计
对于本系统,硬件系统的设计可分为以下几个部分:机械部分和电器部分,我们关心的是电器部分。电气部分包括检测电路的设计及其信号调理电路的设计、信号采集电路(A/D转换电路)设计、单片机最小系统设计、显示电路设计。系统硬件的选择和设计按精确性,经济性,可靠性,线长最短原则进行。
3.1 检测电路设计
3.1.1传感器电路设计
称重传感器位于称体之中,是整个硬件系统的起始部分,是构成系统信息输入的主要窗口,为系统提供赖以处理和决策控制所必需的原始信息。它将重量信号转换成电压信号,静态称重系统信号检测中传感器的性能,直接影响称量精度,称重原理决定了传感器的选择或设计。相当多的静态称重系统仍是采用通用的压力传感器,就通用传感器本身性能而言其静态特性完全可以满足物品正常时的信号检测。选择传感器要考虑数量,量程,准确度,使用环境及介质性能
3.1.2 放大电路设计
由于称重传感器转换后的电压信号是幅度很小的毫伏级差动信号,很难直接 进行模数转换,因此需要对这一模拟电信号进行放大处理。由于传感器信号放大 电路的设计对系统的精度有很重要的影响,因此尽量选用高增益、高输入电阻、低失调和高共模抑制比的仪表放大器。在传感器信号放大电路中采用放大AD602。AD602电路不复杂,同时该放大器具有很好的特性,温漂和电压失调参数很小。AD602是一种只用一个外部电阻就能设置放大倍数为l ~1000的低功耗、高精度仪表放大器。其主要特性如下:
①供电电源范围:士2.3V ——士l8V ;
②最大供电电流:13mA ;
③最大输入失调电压:125uV ;
④最大输入失调电压漂移:1uV/℃;
⑤最大输入偏置电流:2nA ;
⑥最小共模抑制比:93dB(G=10);
⑦建立时间:15us 。
AD620在它的输入端采用了超β处理,使其具有低输入偏置电流和低噪音,因而是一个很好的前置放大器。低功耗的特性,使它非常适合于传感器接口。其
增益公式为:R G =49.4/(G-1)KΩ。
其电路工作原理:传感器电桥采用恒压源供电,激励电压为12V 。本电压由精密稳压电源提供。我们选用的称重传感器(10Kg)灵敏度为2mV /V ,由于前面的分析,取5Kg 作为最大称量,传感器输出电压范围为0~12mV 。AD 的输入电压要求为0~l 0V ,所以考虑把传感器的输出信号放大到0~l 0V 范围内,放大倍数为833倍,但考虑到静态称量时静态峰值可能会大于汽车静态轴载,故放大倍数为750倍,同时考虑到去零电路,故采用两级放大电路。考虑温度漂移会给放大电路带来影响,整个放大电路的电阻均采用低温度系数(5ppm)的高精密电阻。
(1)第一级放大电路
第一级采用差动放大电路,为了减小可调电阻的值,使得调试时容易调节放大倍数,采用两个电阻(一个阻值固定,一个阻值可调) 来决定放大倍数。其中RI=1 00 ,RPl 为200 的可调电阻。本级放大倍数为250。
(2)第二级放大电路
由于传感器可变电阻的不平衡及称重台的重力,造成无汽车时传感器仍有输出,由于输出电压非零值,A /D 转换器的输出显示的是该电压对应的数字量。单片机把这一数字量作为零点,进行零点标定,这样很大一部分数据单元就被占据。如果进行调零,使从零到最大运算数都可作为有效分辨单位,则单片机中被零点占据的大部分有效空间被释放出来,从而提高称量的精度。为了解决此问题,用RP 来调零。即RP4来调放大倍数,R5的作用是减小可调电阻的值,使得调试时容易调节放大倍数,而且工作性能稳定,本级放大倍数为3倍。
图 3.1 放大电路图
3.2 A/D转换电路设计
采集上来的模拟信号要进入单片机进行处理前,需要转换成数字信号。综合
考虑系统对转换精度与转换速度的要求,选择AD574模数转换器来完成模数转换的工作。AD574A 是美国模拟数字公司(Analog)推出的单片高速12位逐次比较型A/D转换器,内置双极性电路构成的混合集成转换芯片,具有外接元件少,功耗低,精度高等特点。并且具有自动校零和自动极性转换功能,只需外接少量的电阻电容元件即可构成一个完整的A/D转换器。其主要功能特性如下:
·非线性误差:小于±l/2LBS或+1LBS;
·有参考电压基准和时钟电路,不需外部时钟就可以工作:
·转换速率高:l2位转换25us ,8位转换l6us ;
·模拟电压输入范围为O ——l0V 和0——20V ,O ——±5V 和O ——±l0V 两档四种; ·数据输出格式分为12位和8位两种。
AD574采用.5V ~+5V双极性输入方式,2脚直接接地,转换结果为12位数据,分两次输出转换结果,3、4、5、6脚分别接至单片机P2.5、P1.3、P1.4、P1.5,用于控制AD574A 的工作过程。AD574状态脚(STATUS)接单片机P1.0,当单片机P1.O 查询到STS 端送出的转换结束信号后,先将转换后的l2位A/D数据的高8位读入单片机,然后再将低4位读入单片机。与AD574的12脚和lO 脚相接的两个100 Q 的电位器分别用于零点调整和满刻度调整(增益调整) 。
3.3微控制器的工作电路设计
P89C58X2是一款低功耗、高性能的8位微处理器,采用先进的CMOS 工艺制 造,指令系统与805l 完全相同。它包含32K 字节的FLASH EPROM和256字节的
RAM 、32条I /O 口线、3个16位定时/计数器、6输入4优先级嵌套中断结构、一个 串行I /O(可用于多机通信、I /O 扩展或全双IUART) 以及片内振荡器和时钟电 路。其特性如下:
①采用静态设计,可提供很宽的操作频率范围(频率可降至0) ;
②片内含32K 字节FLASH 程序储存器,可擦除和编程1 0000次以上。可编程加密位,数据保存可达10年以上;
③存储器的寻址范围可达到64K 字节RAM 和64K 字节ROM ;
④工作速度可达到33MHz ;
⑤电源控制模式:可实现两个由软件选择的节电模式(空闲模式以及掉电模式) 。
图 3.2 微控制器电路图
3.4 显示电路的设计
静态称重系统测最出汽车车重后,要在显示器上将卡车重显示出来。本设计选用适合LED 数码管显示器来完成显示。LED(Light Emitting Diode) 数码管显示器与其他显示器相比,有工作电压低、多色、寿命长、发光控制简单的特点。我们用无片共阳极发光二极管显示器来显示汽车重量,其中三位整数、两位小数。用一片74LS373锁存器完成LED 数码数码管字形码的锁仔和驱动。单片机的P2 0~P2 4作为位选端,通过反相器7106与各位数码管的共阳极连接,控制某一位数码点亮。
图 3.3 显示电路图
3.5 通信模块设计
该模块完成了串行口的初始化和波特率的没置,并将数据传送给PC 机。在串行通信时,要求通信双方都采用一个标准接口,是不同的设备可以方便地连接起来进行通信。本系统采用了RS-485接口,波特率为9600。
3.6 系统抗干扰设计
CPU的抗干扰设计主要是用专门的看门狗复位电路,保证CPU 系统的可靠运行,从而保证整个静态称重系统的可靠性。
为了降低干扰,传感器输入信号线采用四芯屏蔽线,同时屏蔽地线与秤台底部相连。在实验的过程中非常必要,可有效保证传感器的信号不被其它信号干扰。
4 总体方案设计
系统主要由静态轴重秤台,红外物品分离器,轮胎识别检测器,收尾地感线圈,室外信号控制柜及相关通信软件等组成。静态称重系统主要安装在高速公路及等级公路的收费站,工作环境恶劣,车流量大,因此对其称量精度,稳定性质量可靠性,长寿命,故障自诊断能力,可维护性等要求较高。
4.1 硬件方案论证
硬件系统是它的最基本的框架,是系统的所有功能的基础。本系统硬件方案论证包括单片机、公路静态称重系统的传感器、数据采集电路、数据接口及显示电路的选择。
4.1.1 微处理器的选择
由于所需程序空间比较大,要求微处理器包含比较大的内部程序存储器空间。PHLIPS 公司生产的P89C58X2单片机内部含有32K 字节的FLASH 程序存储器和256字节的RAM ,可以满足设计需要。所以我们选择P89C58X2作为系统微处理器。
4.1.2 称重传感器的选择
电阻应变片式传感器通常是由某些金属半导体材料制成。它具有精度高、测量范围广,使用寿命长、性能稳定可靠,结构简单、尺寸小,重量轻,频率特性好,可在高低温、高速、高压、强烈震动、强磁场、核辐射和化学反应等腐蚀的恶劣条件下工作,很适合与露天静态称重,故本设计选用电阻应变片式称重传感器。
4.1.3 显示器的选择
LED 数码管显示器静态显示方式下,将所有位的段选线并联在起,由位选线控制哪位接收字段码。采用静态扫描显示,也就是在显示过中,轮流向各位送出字形码和相应的字位选择,同一时刻只有一位显示,其他各位熄灭。利用显示器的余晖和人眼的视觉暂留现象,只要每一位显示足够短,则人看到的就是无为数码管同时显示。在静态显示方式下电路设计简单,故采用此方式。
4.1.4 数据采集电路的选择
串行通信是指一条信息的各位数据被逐位按顺序传送的通信方式。串行通信的特点是:数据位传送,按位顺序进行,最少只一需根传输线即可完成,成本低但传送速度慢。串行通信的距离可以从几米到几千米。由于串行通信方式具有使用线路少、成本低、特别是在远程
传输时,避免了多条线路特性的不一致而被广泛采用,因此本设计采用串行通信。
4.1.5 数据接口的选择
在串行通信时,要求通信双方都采用一个标准接口,是不同的设备可以方便地连接起来进行通信。当前流行的接口有:RS-232-C 和RS-485。
RS-485总线,通信距离为几十米到上千米时,因此长距离要求时被广泛采用。RS-485采用平衡发送和差分接收,因此具有抑制共模干扰的能力。RS-485采用半双工工作方式,任何时候只能有一点处于发送状态,因此发送电路须由使能信号加以控制。RS-485用于多点互连时非常方便,可以省掉许多信号线。应用RS 一485可以联网构成分布式系统,其允许最多并联32台驱动器和32台接收器。故本系统采用RS-485接口。
4.2 系统总体设计
4.2.1 系统的工作流程
(1)初始状态:检测区通过地感线圈检测有无物品。
(2)物品驶入秤台,仪表接收到来自秤台的重量数据超过一定限定值时,系统自动进入静态称重方式。
(3)物品通过秤台,仪表检测车重。控制箱内的数据采集模块将称重称台传来的信号进行放大,并转换为数字信号送到计算机进行称重信号处理。
(4)计算机收到仪表传送的信息后,自动计算出轴超载量、总重超载量及相关内容,并进行记录与储存。
4.1.2 系统的设计方案方框图
压力传感器
图4.1系统总体构造图
4.3 系统控制算法的设计
物品放在托盘上时,由于自身结构、路面平整度等因素的影响,使称重系统受到静态干扰力。设d(t)是反映物品通过托盘台面过程中施加给台面的一个幅值为单位l 的输入信号,w(t)为称重台面向下位移,M 为称重台面质量,m 为物品真实载荷,k 、c 分别为称重传感系统结构的弹性系数和阻尼次数。依照牛顿第二定律,可以对模型建立如下力学方程:
M*d2w(t)/ d2t+c*dw(t)/d(t)+kw(t)=mgd(t),
再进行拉氏变换,可以得出其传递函数为:
G(S)=W(S)/D(S)=mg/(MS2+cS+k).
其中D(s),W(s)分别为输入信号和输出信号的拉式变换。可见此称重系统为一二阶欠阻尼系统,系统无阻尼振荡频率(固有频率) 为:wn =(k/M)1/2,阻尼比为
ζ=c/(2(k/M)1/2) 。
建立这个模型后,物品驶入称重台相当于给此系统施加了一个信号mgd(t)。综合分析称重系统模型和实测数据后,可以发现物品在称重台上所产生信号d(t)实为一梯形波。梯形波的两腰分别对应物品上下称重台的过程;中间平稳阶段即
为物品完全作用在称重台上的测量过程,有效采集数据存在于此段。输入的信号d(t)的上升和水平阶段可以两个速度信号的叠加,据拉氏变换的叠加原理可得D (S )=1/(ε0*S*S)- e-Εs /(ε0*S*S).
再依据拉氏变换的终止定理有:w(+∞)=mg/k.
我们采用的控制算法是参数估计法。参数估计法是一种系统辨识方法,它把静态测量作为一个参数估计和预测问题来处理,具体过程是:首先依据物品静态称重的先验知识,推导出一个含有未知参数的模型;其次用此模型去模拟静态称重过程中的输出信号,从而获得最小平方误差意义上的参数估计。基于参数估计的系统辨识方法可由极短的轴重信号估计出模型参数和轴重值,而且具有较高的准确度,同时利用适当的辨识算法可以进一步减小速度对测量结果的影响,可以在物品中速及高速的情况下使用此种方法。其典型应用算法是最小二乘递推算法(RLS)。该问题的典型提法是,根据随时间先后顺序所获得的测量值Zl 、Z2、⋯、Zk ,在线且实时地估计参数θ的值。其中,测量值Zl 、Z2、⋯、Zk 是向量,待估参数θ可以是矩阵。
最小二乘递推算法RLS 的基本思想可以概括成:θk=θk-1+修正值;RLS 算法的基本递推算式为:θk=θk-1+Kk[Zk-hk*θk-1];Kk=PK-1*hK [hkPk-1+1];
Pk=[1-Kk*hk]*PK-1 .
根据前次观测数据得到的Pk-1及新的测量数据,可以计算出Kk ,从而由θk-1递推出θk ,下一次的递推计算所需的Pk 也可根据Pk-1,、和Kk 等计算出来。每一次递推计算过程中的信息变换。
Zk hk
Θk-1
Pk-1Θk Pk
图 4.2 RLS算法示意图
系统实际的输入信号是连续的,而计算机的处理是基于离散信号的,因此依据上面的微分方程将系统的传递函数离散化,得出下式:
G(Z)=(b0+b1Z-1+b2Z-2)/(1+a1 Z-1+a2 Z-2),a1,a2,b 。,b1,b2为Z 变抉的相关参
数。根据Z 变换的中值定理,w(+∞)=(b0+b1+b2)/(1+a1+a2);由此可知
mg/k=(b0+b1+b2)/(1+a1+a2), 经过变换计算可以得到具有理想精度的汽车质量
m=((b0+b1+b2)/(1+a1+a2))*(k/g)。在采集到系统相关输出的基础上,依据RLS 算法进行参数估计,可以快速的在线辨识出参数如,k 也可以通过系统辨识标定出来。
5 总结
此设计在理论分析的基础上,对物品静态称重系统进行了硬件设计,包括传感器,AD 转换电路,信号放大电路,信号采集以及控制电路和LED 显示电路。完成电路系统的仿真调试。由于时间和精力有限,所做的称重系统知识其中一部分,还要感谢老师和同学们的帮助。
6 参考文献
【1】田社平. 采用数字滤波技术得数据采集误差分析[J].计量技术1994 NO 5
【2】任克强,刘晖. 微机控制系统的数字滤波算法[J].现代电子技术.2003年第3期
【3】蔡美琴.MCS —51系列单片机系统及其应用.北京.高等教育出版社,1999
【4】陈明荧.8051单片机基础教程.北京.科学出版社,2003
【5】李建忠.单片机原理及应用.西安.西安电子科技大学出版社,2003
【6】胡学军.单片机与控制技术.北京.北京航空航天大学出版社,2004
【7】庚华光,邹寿彬.电子技术基础[M].北京:高等教育出版社,1998
【8】刘君华.智能传感器系统[M].西安;西安电子科技大学出版社,1999
7 附录一:
附录二
源程序
#include sbit RS=P2^0; sbit RW=P2^1; sbit E=P2^2;
unsigned char code str[]={"Volt:"}; unsigned char code str1[]={"weigh:"}; void Delay(unsigned int t) {
unsigned char i,j; for(i=0;i
void wr_command(unsigned char com) {
Delay(1);
RW=0; //RW=0是写数据或指令RW=1是从LCD 读指令
E=0; //EN=1是使能信号,1时读取信息,1-0(下降沿)时执行指令 P0=com; Delay(1);
RS=0; //RS=0是输入指令RS=1是输入数据
E=1; Delay(1); }
void wr_data(unsigned char dat) {
Delay(1);
RS=1; //RS=0是输入指令RS=1是输入数据 RW=0; //RW=0是写数据或指令RW=1是从LCD 读指令
E=0; //EN=1是使能信号,1时读取信息,1-0(下降沿)时执行指令 E=0; //EN下降沿时数据锁存
P0=dat;
}
Delay(1); Delay(1); E=0;
// EN下降沿时数据锁存
E=1;
void locateXY(unsigned char x,unsigned char y) {
if(y==0)
x|=0x80; //当要显示第一行时的起始地址码其中x 是列总共最大值为16,y 为行最大值为1
else }
void Init_LCD() {
Delay(15);
wr_command(0x38); //设置8位格式2行5*7 Delay(5);
wr_command(0x08); //显示关闭 Delay(5);
wr_command(0x01);
Delay(5);
//显示光标移动位置 //显示开及光标位置
wr_command(0x06); Delay(5);
wr_command(0x0c); Delay(5); }
void Display_str(unsigned char *p) {
while(*p!='\0') {
wr_data(*p); p++;
//显示清屏
x|=0xc0;
//当要显示第二行时的起始地址码
wr_command(x);
Delay(1); }
void Init_display() {
Init_LCD(); locateXY(0,0); Display_str(str); }
#include "0804.h" #include "1602.h" #include
sbit int1=P3^3; //定义管脚功能 sbit cs=P3^2; //使能端 sbit wr=P3^6; //写端口 sbit rd=P3^7; //读端口 sbit LED=P2^3; sbit sound=P2^4;
void Delay_0804(unsigned int tc) //显示延时程序 {
while( tc != 0 ) {
unsigned int i; for(i=0; i
unsigned char adc0804(void) //读AD0804子程序 {
unsigned char addata; rd=1;
//sbit cs=P3^2; //使能端 sbit
locateXY(0,1); Display_str(str1); }
wr=P3^6; //写端口sbit rd=P3^7; //读端口
wr=1; //CS=0、WR =0、RD =1(由CPLD 发出信号要求ADC0804开始进行模拟/数字信号的转换)
int1=1; //读ADC0804 前准备 P1=0xff; //P1全部置一准备 cs=0; wr=0;
wr=1; //启动ADC0804开始测电压
while(int1==1);//查询等待A/D转换完毕产生的INT (低电平有效)信号 rd=0; //开始读转换后数据wr=1; //启动ADC0804开始测电压 Delay_0804(1); //无意义语句,用于延时等待ADC0804 读数完毕 addata=P1; //读出的数据赋与addate rd=1;
cs=1; //读数完毕
return(addata); //返回最后读出的数据 }
unsigned int datpro(void) //ADC0804 读出的数据处理 {
unsigned char x;
unsigned int dianyah,dianyal; //用于存储读出数据的高字节和低字节 unsigned int dianya=0; //存储最后处理完的结果 注意数据类型 for(x=0;x
dianya=adc0804(); }
dianya=dianya/10; dianyah=dianya&0xf0; dianyah=dianyah>>4; dianyal=dianya&0x0f;
dianya=dianyal*20+dianyah*320;
return(dianya); //返回最后处理结果 }
display_0804() {
unsigned int dat=0;
unsigned int weigh=0; dat=datpro(); weigh=dat/5; locateXY(6,0);
wr_data(dat%1000/100+0x30); wr_data('.');
wr_data(dat%100/10+0x30); wr_data('V'); locateXY(7,1);
if((weigh/100+'0')==0x30) wr_data(0x20); else
wr_data(weigh/100+'0'); wr_data(weigh%100/10+'0'); wr_data('.');
wr_data(weigh%10+'0'); wr_data('t');
while(dat>=400) //判断超重点亮LED {LED=0; Delay(100); sound=0; Delay(100); } }