首页 基于单片机的双容水箱液位控制器设计-毕业设计(可编辑)

基于单片机的双容水箱液位控制器设计-毕业设计(可编辑)

举报
开通vip

基于单片机的双容水箱液位控制器设计-毕业设计(可编辑)基于单片机的双容水箱液位控制器设计-毕业设计(可编辑) 基于单片机的双容水箱液位控制器设计-毕业设计 本科生毕业设计说明书(毕业论文) 题 目:基于单片机的双容水箱液位控制器设计 学生姓名: 学 号: 专 业:测控技术与仪器 班 级: 指导教师: 基于单片机的双容水箱液位控制器设计 摘 要 关键词: Based on single chip dual tank water level controller design Abstract The level is charged with on...

基于单片机的双容水箱液位控制器设计-毕业设计(可编辑)
基于单片机的双容水箱液位控制器设计-毕业设计(可编辑) 基于单片机的双容水箱液位控制器设计-毕业设计 本科生毕业设计说明书(毕业 论文 政研论文下载论文大学下载论文大学下载关于长拳的论文浙大论文封面下载 ) 题 目:基于单片机的双容水箱液位控制器设计 学生姓名: 学 号: 专 业:测控技术与仪器 班 级: 指导教师: 基于单片机的双容水箱液位控制器设计 摘 要 关键词: Based on single chip dual tank water level controller design Abstract The level is charged with one of the parameters of the industrial production process, the most important, widely used in metallurgy, building materials, chemicals, food, petroleum and other industries, the level of control in the process directly influences the production of productsquality. Level Control System scale of modern industry are becoming increasingly complex, large-scale, level control has gradually become the Process Control field of a hot research topic. Based on single chip water level controller has many advantages, such as stable performance, reliable, high control precision, low cost, easy set up, easy operation. The design use single chip achieve dual-tank water level control system is based on the two upper and lower water tanks in series for the study, the following tank level is controlled parameters, the pressure transmitter to measure the level of the water tank, and the measurements gave microcontroller as the core controller as the feedback signal, the controller based on incremental PID control algorithm is pre-set computing, issue control commands to control the actuator valve opening size, thus changing into the flow of water on the tank size. tank liquid level automatic control. Key words: single chip STC89C52,liquid level control, incremental PID control algorithm, LED display 目 录摘 要 I Abstract II 第一章 引言 1 1.1 研究背景 1 1.2 国内液位控制的发展现状 1 1.3 PID调节器简介 2 1.4 设计思路 2 1.5 设计意义 3 第二章 硬件组成 4 2.1 系统硬件组成概述 4 2.2 数据采集电路 4 2.2.1 压力变送器 4 2.2.2 I/V转换电路 5 2.2.3 A/D转换器 5 2.3 STC89C52RC单片机 8 2.4 D/A转换器 10 2.4.1 DAC0832引脚功能 11 2.4.2 DAC0832工作方式 12 2.4.3 DAC0832工作时序 12 2.5 V/I转换电路 12 2.6 执行机构 12 2.6.1 控制阀 12 2.6.2 水泵电机 13 2.7 掉电存储器 13 2.8 LED显示 14 2.8.1 LED显示器的结构 14 2.8.2 移位寄存器 16 第三章 硬件设计 19 3.1 STC89C52单片机模块电路 19 3.1.1 晶振电路 19 3.1.2 复位电路 19 3.1.3 最小系统 20 3.2 LED显示模块 21 3.3 A/D转换电路 22 3.4 D/A转换电路 22 3.5 V/I转换电路 23 3.6 键盘电路 24 3.7 串口通信电路 24 第四章 软件设计 26 4.1 主程序流程图 26 4.2 A/D转换子程序 27 4.3 键盘控制子程序 28 4.4 PID控制子程序 29 4.5 LED显示子程序 32 4.6 Keil软件 33 4.6.1 Keil软件简介 33 4.6.2 Keil软件编程流程及程序下载 33 第五章 系统的调试及说明 36 5.1 硬件设计调试 36 5.2 软件设计调试 37 5.2.1 键盘和显示软件设计 37 5.2.2 输入信号的测量 38 5.2.3 PID控制量计算及数据处理 38 5.3 软硬件联合调试 41 总结 42 参考文献 43 附录A 本设计原理图 45 附录B 主程序 46 致谢 52 引言 研究背景 51单片机为核心的多机分布式液位控制系统,由数据采集模块,处理模块和多机通信平台组成,既满足了测量精度的要求,同时具有较高的可靠性,成本低,控制灵活。随着传感技术的不断提高,分布式监控系统应用日趋广泛,一个高质量、合理化的多机串行通信平台就显得尤为重要[19]。 南京邮电大学的牛标和张代远所做的可监控智能液位控制器系统设计中列举了液位控制系统可以采取的硬件 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 以及他们各自的优缺点,采用FPGA作为控制器可以实现各种复杂的逻辑功能,规模大,密度高,它将所有器件集成在一块芯片上,减小了体积,提高了稳定性,并且可应用EDA软件仿真、调试,易于进行功能扩展[5]。FPGA采用并行输入输出方式,提高了系统的处理速度,适合作为大规模实时系统的控制核心。但是由于其集成度高,使其成本偏高,同时由于芯片的引脚较多,实物硬件电路板布线复杂,加重了电路设计和实际焊接的工作[5]。 根据哈尔滨工业大学的李小平所做的《液位控制系统建模及其控制算法的研究》对几种控制算法进行了研究,其中包括PID控制算法、大林算法、Smith预估控制算法、模糊控制算法等,并通过编程说明了其可行性和优越性:PID控制器是迄今为止应用最广泛的反馈形式,它具有结构简单、容易实现、控制效果好等特点,且原理简明,参数物理意义明确,理论分析体系完整;大林控制算法的最大的特点是, 将期望的闭环响应设计成一阶惯性环节加纯延迟,然后反过来得到能满足这种闭环响应的控制器[12]。它是克服纯滞后的有效方法,一阶系统很快达到稳定,波动较少;Smith预估控制算法是一种简单而有效的控制方法,但只适用于单输入单输出系统,它的最大优点是将时滞环节移到了闭环之外,是控制品质大大提高,它的最大缺点是太过依赖精确的数学模型,对于外部扰动非常敏感,鲁棒性较差;模糊控制是一种新型控制方法,在冶金、化工、电力和家电等工业部门都有成功应用,它避开了复杂的数学模型,控制系统的鲁棒性强,通常能得到比较好的性能指标,适用于水位这样的滞后非线性系统[12]。 PID调节器简介 传统的调节器多为模拟调节器,这种调节器多用气动或电动单元组合仪表来完成。随着单片机在控制领域中的广泛应用,利用计算机软件设计控制算法,具有更大的可靠性、灵活性以及更好的控制效果。因此,以单片机为中心、采用数字算法的数字调节器正不断代替着模拟调节器。在中,应用最广泛的调节器控制规律为比例(P)、积分、微分控制,简称PID控制,又称PID调节。PID控制器问世已有近70年历史,它以稳定性好结构简单调整方便工作可靠成为工业控制的主要技术之一。当被控对象的参数和结构不能完全掌握得不到确的数学模型时,系统控制器的必须依靠来确定,这时用PID控制最为方便。即当我们不完全了解系统被控对象或不能通过有效的测量手段来获得系统参数时,最适合用PID控制技术。如图1.1 图1.1 系统工艺图 设计意义 本设计之所以选择用单片机进行控制是由于其具有体积小、功能强、可靠性能高、造价比低和开发周期短等优点。而单片机控制系统以其性能稳定、可靠,控制精度高,造价低,设置方便,操作方便等优点,被应用到液位控制系统中来,增强了系统的可视性,使得人机交互的能力进一步提高。 双容水箱本身存在惯性大、扰动多等问题,本设计利用积分分离和带死区的增量型PID控制可以成功的克服这些问题。这些问题的有效克服使得液位控制系统在工业上具有很大的研究价值。 硬件组成 系统硬件组成概述 本设计的硬件结构如图2.1所示。 图2.1 系统硬件结构框图 数据采集电路 数据采集电路的功能主要是采集容器中的实时液位高度,并且把这个采集到的模拟信号转换成单片机可识别的数字信号送入单片机。 压力变送器 压力变送器测量的是压力信号,根据液位参数与压力参数的关系即式(2.1)得到液位信号,从而将液位测量的数据转换为压力测量的数据。 (2.1) 本设计所选用的压力变送器是JYB-KO-HAG,技术参数如表2.1所示: 表2.1 JYB-KO-HAG压力变送器技术参数 环境温度 , 0?,+温度, 0?,+电压输出型输出阻抗? 250Ω DC 24V供电时 供电电压DC 24V 12V,32V 负载能力电流输出型? 500Ω抗过载抗冲击抗干扰能力强温度补偿激光调阻,使用温域宽防浪涌电压,反向极性保护抗腐蚀性能,可以测量多种介质过流过压保护电路进口陶瓷芯片或扩散硅,适用于不同场合测量稳定性高实用性广扩散硅压力传感器A级? 0.25,F.SB级?0.5,F.S0-60MPa内任量程,最小量程为 5kPa陶瓷压力传感器A级? 0.5,F.SB级? 1,F.S0-10MPa内任量程,最小量程为 30kPa4-20mA直流信号后,再经250Ω电阻转换成直流1-5V标准电压信号,送入A/D 转换器。 A/D转换器 在工业控制过程中,被测参数(如流量、温度、液位、压力、速度等)都是连续变化的量,称为模拟量。而单片机只能处理数字量,所以在数据进入单片机之前,必须把模拟量转换成为单片机可识别的数字量,能够达到这一目的的器件,称之为模数转换器,即A/D转换器。A/D转换器有很多种,依据位数来区分,有16位、12位、10位、8位等。其位数越高,分辨率也就越高。 通常的转换器是将一个输入信号转换为一个输出的数字信号ADC0832模数转换器与I/V转换电路相连接,对输入的1-5V电压信号进行采样。现场传来的4-20mA电流信号经过适当的输入转换电路 转换为单片机可接受的1-5V电压信号后直接接至单片机读写引脚上。同时对转换后的数字量进行数字滤波、标度变换等数据处理,增加数据的可信度、提高其抗干扰能力和稳定性。 ADC0832 是美国国家半导体公司生产的一种双通道8 位分辨率A/D转换芯片。由于它兼容性性价比高体积小而深受企业及单片机爱好者欢迎,已经有很高的普及率。ADC0832 具有以下特点:双通道A/D转换;8位分辨率;5V电源供电时输入电压在0-5V之间;输入输出电平与TTL/CMOS相兼容;一般功耗仅为15mW;8P、14P-DIP(双列直插)、PICC 多种封装;商用级芯片温宽为0?到+70?,而工业级芯片温宽则为?40?到+85?;工作频率为250KHz,转换时间为32μS。 芯片引脚如图2.2所示。 芯片接口说明: CS:低电平芯片使能,片选使能。 CH1:模拟输入通道1(或作为IN+或IN-使用)。 CH0:模拟输入通道0(作为IN+或IN-使用)。 GND:地(芯片参与0电位)。 DO:转换数据输出,数据信号输出。 DI:选择通道控制,数据信号输入。 VCC/REF:电源输入端及参考电压输入端(复用)。 CLK:芯片时钟输入端。 图2.2 ADC0832引脚 ADC0832为8位分辨率的A/D转换芯片,其最高可达256级分辨率,可以适应一般的模数转换要求。其内部电源输入与参考电压的复用(VCC/REF),使得芯片的模拟电压输入在0-5V之间。芯片据有双数据输出,其可作为数据校验,以减少数据误差,芯片转换时间仅为32μS,转换速度快且稳定性能强。独立的芯片使能输入,使处理器控制和多器件挂接变的更加方便。通过DI数据输入端,可以轻易实现通道功能的选择。 正常情况下,单片机与ADC0832的接口应为4条数据线(CS、CLK、DO、DI)。其中,由于DI端与DO端在通信时与单片机的接口是双向的并且未同时有效,所以电路设计时可以将DI和DO并联在一根数据线上使用。 当ADC0832没有开始工作时,它的CS使能端应为高电平,此时芯片禁用,DO/DI和CLK的电平可任意。当要进行A/D转换时,需先将CS使能端置低电平并保持低电平直到转换完全结束。此时芯片开始转换工作,同时由处理器向芯片时钟输入端CLK输入时钟脉冲,DO/DI端则使用DI端输入通道功能选择的数据信号。在第一个时钟脉冲下沉之前DI端必须置高电平,表示起始信号。在第二、三个脉冲下沉前DI端应输入2位数据用于选择通道功能,其功能见表2.2。 如表2.2所示,当2位数据为“1、1”时,只对CH1进行单通道转换。当2位数据为“1、0”时,只对CH0进行单通道转换。如表2.3所示,当2位数据为“0、0”时,CH1作为负输入端IN-进行输入,将CH0作为正输入端IN+。当2位数据为“0、1”时,CH0作为 负输入端IN-进行输入,将CH1作为正输入端IN+。 作为单通道模拟信号输入时,8位分辨率时的电压精度为19.53mV ,ADC0832的输入电压是0-5V。如果作为由IN-与IN+输入时,可以将电压值设定在一个较大的范围之内,从而提高转换宽度。值得注意的是,在进行IN-与IN+的输入时,如果IN+的电压小于IN-的电压则转换后的数据结果始终为00H。 表2.2 多路寻址:ADC0832单端多路方式 多路寻址 通道 SGL/DIF ODD/SIGN 0 1 1 0 + 1 1 + 表2.3 多路寻址:ADC0832差分多路方式 多路寻址 通道 SGL/DIF ODD/SIGN 0 1 0 0 + ― 0 1 ― + 图2.3 ADC0832时序图 ADC0832时序如图2.3所示,当 CS由高变低时,ADC0832选通。在时钟信号是上升沿时,DI 端的数据移入 ADC0832内部的多路地址移位寄存器。在第一个时钟脉冲期间,DI为高电平,表示启动位,紧接着输入两位配置位。当输入启动位和配置位后,选通输入模拟控制通道,转换开始。转换开始后,经过一个时钟周期延接着在第一个时钟周期的延迟,以达到使选定通道稳定的目的。到第3个时钟脉冲的下降沿之后DI端的输入电平就失去了输入作用,此后DO/DI端则开始依靠数据输出端DO进行转换数据的读取。从第4个时钟脉冲下降开始由DO端输出转换数据最高位data7,随着每一个时钟脉冲下 沉,DO端输出下一位数据,直到第11个脉冲时输出最低位数据data0,一个字节的数据输出结束。反过来从此位开始输出下一个相反字节的数据,即从第11个字节的下降沿输出data0,随后依次输出8位数据,到第19个脉冲时数据输出结束。这也标志着一次A/D转换结束了。最后将CS置高电平使芯片禁用,然后直接将转换过的数据进行处理就可以了。若要再进行一次AD转换,片选信号CS必须再次从高向低跳变,然后后面再输入启动位和配置位。 STC89C52RC单片机 STC系列单片机芯片是由STMicroelectronics 公司生产,并有宏晶公司做为大陆代理商。STMicroelectronics(意法半导体公司)是1987年6月位于意大利的SGS微电子公司和位于法国的汤姆逊微电子公司合并后产生的。1998年5月,公司由原来的SGS汤姆逊SGSTHOMSON)微电子公司改名为意法半导体公司 STMicroelectronics),简称ST公司。 STC89C52是一种带8K字节闪烁可擦除可编程只读存储器(FPEROM-Flash Programable and Erasable Read Only Memory)的高性能、低电压的微处理器,俗称单片机。单片机引脚电路如图2.4所示,实物如下图2.5所示: 图2.4 单片机引脚电路 图2.5 单片机STC89C52实物图 STC89C52RC可以代替AT89C51,速度更快,功能更强,价格更低寿命更长。STC89C52RC的内核AT51系列单片机一样,引脚排列外形 相同。 管脚说明:GND:地。VCC:电源输入端,接,5V电源。 P0口8位漏级开路双向I/O口,每脚可吸收8TTL门电流。P0能够外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程,P0 口作原码输入口,FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口带内部上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1”时,内部上拉高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的。在FLASH校验和编程时,P1口作第八位地址接收。 P2口带内部上拉电阻的8位双向I/O口,P2口缓冲器可接收输出4个TTL门电流,当P2口被写1”时,其管脚被内部上拉电阻拉高,为输入。P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的。P216位地址外部数据存储器或外部程序存储器进行存取时,P2口输出地址的高八位在地址1”时,利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH时接收高八位。 P3口带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入1”后,它们被内部上拉高电平,并用作输入。作为输入,由于外部下拉低电平,P3口将输出电流这是由于上拉的。在时,P3口可接收某些控制信号。具体的P3口功能,如表2所示。ALE/PROG:地址锁存允许信号。当访问外部存储器时,地址锁存允许 的输出电平用于锁存地址。在编程,用于输入编程脉冲。,ALE端以振荡器频率的1/6频率周期输出正冲信号。因此它用于定时目的或用作对外部输出的脉冲。注意的是每当用作外部数据存储器时,将跳过一个ALE脉冲。想禁止ALE的输出可在SFR8EH地址上置0此时ALE只有在执行MOV,MOV指令ALE才起作用。该引脚被拉高。如果微处理器在外部执行状态ALE禁止,置位无效。表2P3口的特殊功能串行数据接收串行数据外部中断0申请外部中断申请定时器0外部事件计数输入定时器外部事件计数输入外部RAM写选通外部RAM选通EA/VPP:程序存储器的内外部选通引脚。接低电平从外部程序存储器读指令,如果接高电平则从内部程序存储器读指令。当EA低电平时,则在此期间外部程序存储器(0000H,FFFFH)注意加密方式1”时,EA将内部锁定为RESET;当EA端高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP。 RST复位输入。PSEN:外部程序存储器的选通信号。在由外部程序存储器期间,每个机器周期PSEN有效。但在访问外部数据存储器时,这两次有效的PSEN信号将。 XTAL1内部时钟工作电路的输入反向振荡器的输入。 图2.6 DAC0832引脚 引脚说明: DI0―DI7:转换数据输入。 CS:片选信号(输入),低电平有效。 ILE:数据锁存允许信号端(输入),高电平有效。 WR1:第1写信号(输入),低电平有效。WR1和ILE两个信号控制输入寄存器的控制方式:当ILE 1和WR1 1时,为输入寄存器锁存方式;当ILE 1和WR1 0时,为输入寄存器直通方式。 WR2:第2写信号(输入),低电平有效。 XFER:数据传送控制信号(输入),低电平有效。XFER和WR2两个信号控制DAC寄存器工作方式:当WR2 1和XFER 0时,为DAC寄存器锁存方式;当WR2 0和XFER 0时,为DAC寄存器直通方式。 IOUT1:DAC电流输出级1。 IOUT2:DAC电流输出级2。(IOUT1+IOUT2为常数) Rfb:反馈电阻端。DAC0832是电流输出型,为了取得电压输出,需在电压输出端接运算放大器,Rfb即为集成在片内的外接运放的反馈电阻。 Vref:基准电压(-10到+10V)。 Vcc:是源电压(+5到+15V)。 DGND:数字地,可与AGND接在一起使用。 AGND:模拟地。 DAC0832工作方式 DAC0832内部主要有3个寄存器,即8位D/A寄存器、8位输入寄存器、8位D/A转换器,对应3个寄存器的控制DAC0832有3个工作方式。 单缓冲方式:两个寄存器中的一个寄存器始终处于直通状态,即WR1 0或WR2 0,另一个寄存器始终处于受控状态。 直通方式:WR1 WR2 0时,数据可以从输入端DI0―DI7经两个寄存器直接进入D/A转换器。 双缓冲方式:两个寄存器均处于受控状态。这种工作方式适合于多模拟信号同时输出的应用场合。 DAC0832工作时序 DAC0832工作时序如图2.7所示。 图2.7 DAC0832工作时序图 WR1 0、CS 0、ILE 1,使输入数据锁存到输入寄存器。 XFER 0、WR2 0,数据传送到DAC寄存器并开始转换。 V/I转换电路 V/I转换是将输入的电压信号转换成需要的电流信号,转换后的电流相当于一个输出可调的恒流源,其输出电流应能够保持稳定而不会随负载的变化而变化。本设计采用的是三个运放实现电压到电流的转换。 执行机构 控制阀 该设计采用的控制阀ML7420A6033是一个能够通过提供其电流大小来控制通过其中的液体流量的装置。若单片机分析得出的即时液体高度比设定值低许多时,就会输出一个比较大的电流,来控制流量阀的开度使其在单位时间内通过更多的液体,以便液体高度尽快地恢复到设定的初始液位值上。反之,开启排水阀进行调整。技术参数如表2.5所示。 表2.5 控制阀ML7420A6033技术参数 执行器类型 阀门 提供电压24Vac?15% 控制信号调节型手动操作反馈2-10Vdc 频率50/60Hz 介质温度 最大值1502.8 掉电存储电路原理图 AT24C08属于AT24C0X系列设备,该系列具有以下特点:与400KHz I2C 总线兼容;低功耗CMOS 技术;1.8 到6.0 伏工作电压范围;温度范围商业级工业级和汽车级;写保护功能当WP为高电平时进入写保护状态;自定时擦写周期;1,000,000编程/擦除周期;可保存数据100年;写缓冲器;8脚DIP SOIC 或TSSOP 封装。 AT24C08是一个8K位串行CMOS E2PROM,内部含有1024个8位字节CATALYST公司的先进CMOS 技术,实质上减少了器件的功耗,AT24C08有一个16字节写缓冲器,该器件通过I2C总线接口进行操作,有一个专门的写保护功能。 使用AT24C08时最多可接两个器件。若只有一个AT24C08被总线寻址,A2管脚可连接到Vss或悬空。且仅使用地址管脚A0、A1、A2管脚未用,可以悬空或连接到Vss。 AT24C08集成电路采用8脚双列直插式封装,其集成电路的引脚功能及数据见表所列。-2.0Vcc+2.0V;封装功率损耗Ta为251.0W;焊接温度 10秒 300?;工作温度工业级-55?到+125?;输出短路电流100mA;商业级0?到+75?;贮存温度-65?到+150?;Vcc 管脚承受电压-2.0V到+7.0V。 表2.6 AT24C08集成电路引脚功能及数据7个发光二极管(LED) 构成一个“日”字形,它门可以共阳极,也可以共阴极。它的工作原理是通过解码电路得到的数码导通相应的发光二极而形成相应的字。一般的半导体数码管是由7个条状的发光二极管(LED)排列而形成的,可实现少量字符及数字“0,9”的显示。除此之外,为了实现小数点的显示,增加了1个点状的发光二极管,所以数码管由8个发光二极管(LED)构成,这些发光二极管被分别命名为“a,b,c,d,e,f,g,dp”。其引脚如图2.9所示。 图2.9 数码管引脚图图 数码管按各自发光二极管(LED)电极的连接方式可分为共阳极数码管和共阴极数码管两种。 共阳极数码管指将所有发光二极管的阳极连接在一起形成公共阳极(COM(COM+5V,当某一字段的发光二极管的阴极为高时,相应字段不亮,反之,当某一字段的发光二极管的阴极为低时,相应字段点亮。共阳极数码管内部连接如图2.10所示。 图2.10 共阳极数码管内部连接图 共阴极数码管指将所有发光二极管的阴极连接在一起形成公共阴极(COM(COMGND上,当某一字段的发光二极管的阳极为低时,相应字段不亮,反之,当某一字段的发光二极管的阳极为高时,相应字段点亮。共阴数码管内部连接如图2.11所示。 图2.11 共阴极数码管内部连接图 若要数码管能正常显示,必须用驱动电路驱动数码管的各个段码,以便能够显示出我们需要的数字,故根据数码管驱动方式的不同, 可以分为动态方式和静态方式两种。 静态显示驱动(也称直流驱动):指每个数码管的每一个段码都由一个单片机的I/O 端口进行驱动,或者使用译码器译码进行驱动。静态显示具有显示亮度高和编程简单的优点。其缺点为占用I/O 端口过多(如驱动5个数码管的静态显示则需40根I/O端口来驱动,然而一个51单片机可用的I/O 端口只有32个);实际应用中必须增加译码驱动器进行驱动,这就增加了硬件电路的复杂性。 动态显示驱动:它是单片机中应用最广泛的一种显示方式之一。动态显示驱动是指将所有数码管的8个发光二极管"a,b,c,d,e,f,g,dp"的同名端连接在一起,然后为每个数码管的公共极(COMI/O线控制的,当单片机输出的是字形码时,所有的数码管都接收到相同的字形码,但要想知道究竟是哪个数码管会显示出字,则取决于单片机对位选通电路的控制,故只需将要显示字形的对应数码管的选通控制打开,该位就显示出字形,若数码管没有被选通,则该数码管不会亮。轮流分时控制各个数码管的公共(COM1 ms―2ms,由于发光二极管的余辉效应及人的视觉暂留现象,即使实际上各位数码管并不是同时被点亮,但是只要扫描的速度足够快,那么它给人的感觉就是一组稳定的显示数据,不会有闪烁的感觉,动态显示的效果和静态显示一样。 用LED显示器显示十六进制数的字型代码如表2.7所示: 表2.7 LED显示十六进制数的字型代码 字形 共阳极代码 共阴极代码 字形 共阳极代码 共阴极代 码 0 C0H 3FH 1 F9H 06H 2 A4H 5BH 3 B0H 4FH 4 99H 66H 5 92H 6DH 6 82H 7DH 7 F8H 07H 8 80H 7FH 9 90H 6FH A 88H 77H B 83H 7CH C C6H 39H D A1H 5EH E 86H 79H F 8EH 71H 灭 FFH 00H 移位寄存器 本设计采用的74LS164是8位移位寄存器图12 74LS164引脚图Clock:时钟输入端。 Clear:同步清除输入端(低电平有效)。 A、B:为串行数据输入端。 QA―QH:为输出端。 内部逻辑如图2.13所示。 图274LS164 内部逻辑图 输入电压5.5V 电源电压7V储存温度-65150?。 工作环境温度070?。 当清除端()为低电平时,输出端(QAQH)为低电平串行数据输入端(A,B)可控制数据。当A,B 任意一个为低电平,在时钟端(C)脉冲上升沿作用下Q为低电平禁止新数据输入。当A,B 有一个为高电平,另一个就允许输入数据,并在C上升沿作用下决定Q的状态 图时序图 图3.1 晶振电路 单片机晶振电路的作用是为单片机提供工作频率,使单片机能够 完成一定的功能。单片机的晶振电路分为外部时钟信号和片内振荡电路。当使用片内振荡电路时,X1(J1)、X2 J2 与晶体振荡器(简称晶振)晶振的电容,是根据晶振的频率,20―40P基本都可以 (3.1) 复位电路 为确保系统电路稳定可靠工作,复位电路是必不可少的一部分,复位电路的功能是上电复位。 (3.2) 图3.2 复位电路 最小系统 单片机最小系统很简单,就是能使单片机工作的最少的器件构成的系统。最小系统虽然简单,但是却是大多数控制系统所必不可少的关键部分。对于MCS-51 单片机,其内部已经包含了一定数量的程序存储器和数据存储器,在外部只要增加时钟电路和复位电路即可构成单片机最小系统单片机系统中的各个部分是在一个统一的时钟脉冲控制下有序地进行工作,时钟电路是单片机系统最基本、最重要的电路。MCS-51 单片机内部有一个高增益反相放大器,引脚XTAL1 和XTAL2 分别是该放大器的输入端和输出端,如果引脚XTAL1 和XTAL2 两端跨接上晶体振荡器(晶振)或陶瓷振荡器就构成了稳定的自激振荡电路,该振荡电路的输出可直接送入内部时序电路。大规模集成电路在上电时一般都需要进行一次复位操作,以便使芯片内的些部件处于一个确定的初始状态,复位是一种很重要的操作。器件本身一般不具有自动上电复位能力,需要借助外部复位电路提供的复位信号才能 进行复位操作。在单片机应用系统中,数码管显示器显示常用两种办法:静态显示和动态扫描显示。所谓静态显示,就是每一个数码管显示器都要占用单独的具有锁存功能的I/O接口用于笔划段字形代码。这样单片机只要把要显示的字形代码发送到接口电路,就不用管它了,直到要显示新的数据时,再发送新的字形码,因此,使用这种办法单片机中CPU的开销小。能供给单独锁存的I/O接口电路很多,常用的串并转换电路74LS164ADC0832的接口应为4条数据线(CS、CLK、DO、DI)。其中,由于DI端与DO端在通信时与单片机的接口是双向的且并未同时有效,所以电路设计时可以将DI和DO并联在一根数据线上使用。ADC0832和单片机相连电路如图3.5所示。 图3.5 A/D转换电路 D/A转换电路 DAC0832经过运放uA741输出0-5V电压信号。电路如图3.6所示。 图3.6 D/A转换电路 调幅分析:当数字量为0FFH 255,参考电压VREF -5V时, (3.1) 3.2 V/I转换电路 图3.7 V/I转换电路 选择该电路的理由是三个运算放大电路共同作用,代替了三极管,使电路更简单、方便,也减少焊接时的麻烦。 设经过第一个运算放大器的输出电压为U1,经过第二个运算放 大器的输出电压为U2,经过第三个运算放大器的输出电压为U0,输 入电压为Ui,输出电流为I0。 3.3 3.4 由式(3.3)和式(3.4)可得 3.5 3.6 由式(3.5)和式(3.6)可得 3.7 3.8 3.9 键盘电路 如图3.8所示键盘控制电路是由K1、K2、K3、K4键接单片机的 P1.4―P1.7口相连组成的,它完成PID参数值的设定和修改。按键 功能如表3.1,按键设定值如表3.2所示。 图3.8 键盘电路 表3.1 按键功能表 按键 功能 K1 修改PID参数 K2 加1键 K3 减 1键 K4 确定并返回 表3.2 按键设定值 K1键按下的次数n 设定PID参数 n 1 修改比例系数Kp n 2 修改积分常数Ti n 3 修改微分常数Td 串口通信电路 单片机与上位机的联系是通过串口来实现的,两者遵循一定的 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 。在单片机与微机之间的距离在15米范围内,采用九针串口中的三根引脚与单片机相连即可,一个是串行数据发送端TXD,一个是串行数据接收端RXD,另一个是地端GND。由于单片机和微机之间的电平不兼容,单片机串口使用的是正逻辑的TTL电平,而上位机的串口使用的是负逻辑的EIA电平,这样就存在TTL电平和EIA电平之间的转换问题。为了使单片机和微机之间的电平相互兼容,使用电平转换芯片RS232。 RS-232电缆的两端,一端为母头(DB9孔式),一端为公头(DB9针式)DB9定义: 1 DCD载波检测、2 RXD接受数据、3 TXD发出数据、4 DTR数据终端准备好、5 SG信号地线、6 DSR数据准备好、7 RTS请求发送、8 CTS清除发送、9 RI振铃指示外部设备与串行接口之间的数据传送是按位进行的。RS232采用负逻辑,即,5,15V代表1”,,5,15V代表0”。必须经过相应的电平转换计算机过串口通讯。 计算机串口通讯接口采用DB9芯接插件使用RS232标准第一部分是电荷泵电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生+12v和-12v两个电源,提供给RS-232串口电平的需要。第二部分是数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数据通道。 其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。 8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。第三部分是供电。15脚GND、16脚VCC(+5v)TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑DB9插头;DB9插头的RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出。 图4.1 主程序流程图 在主程序中将采集到的信号经250Ω的电阻转换成1-5V的电压信号再经过ADC0832利用A/D转换子程序把模拟信号转换成数字信号,再将转换后的数字信号送至单片机的P3口输入,结果输出到单片机的P0口和P1口使其直接驱动LED静态显示显示当前的液位值。单片机输出的数字信号经过DAC0832转换成模拟信号,再经过V/I转换电路把0-5V电压信号转换成为4-20mA电流信号输出以实现对执行机构的控制。 PID控制子程序出来的数据进行变换后送到LED静态显示程序中进行显示。LED显示主要的主要任务是经过PID控制子程序控制后输出的测量值和根据实际情况而进行设定的设定值。同时PID控制中的比例系数Kp、积分时间Ti、微分时间Td由键盘控制子程序进行设定。 A/D转换子程序 A/D转换的硬件连接是利用ADC0832与单片机STC89C52RC的P3口相连,软件部分是利用A/D转换子程序首先对采样到的数据进行A/D转换,然后输入通道控制字选择A/D转换的控制通道,比较正逆 序输出端D0的输出值A1、A2是否相等,若A1与A2相等则转换完成,将结果送到单片机缓冲单元存储;若不相等则重新开始转换。A/D转换子程序流程如图4.2所示。 图4.2 A/D转换子程序流程图 不同被测对象的参数具有不同的量纲和数值,仪器在检测这些参数时,采集的数据并不等于原来带有量纲的参数值,它仅仅能代表被测参数值的相对大小,因而必须把它转换成带有量纲的对应数值后才能显示,称为标度变换。线性标度变换的公式如下所示: (4.1) 式(4.1)中,A0为测量下限值,Am为测量上限值,Ax为实际测量值(工程值),N0为A0对应的数字量,Nm为Am对应的数字量,Nx为实际测量值Ax对应的数字量。对于该设计,标度变换程序流程图如图4.3所示。 标度变换主要是实现数字量到模拟电压数据的转换,最后送到数码管来实现液位数据的显示。标度变换的软件编程主要是依据标度变换公式来实现的。 图4.3 标度变换程序 键盘控制子程序 单片机的键盘,是人机联系的重要通道,操作者的许多指令都是通过键盘输入到单片机中去。键盘管理程序的主要任务是根据获取的按键编码,转入相应的键服务程序,以便完成相应的功能。本设计采 用独立式键盘,一共有四个按键,其程序首先经过键盘扫描,然后进行10ms的延时给单片机反应的时间,以免出现误动作,然后再进行键盘扫描。为了更好地实现本设计的水箱液位控制,需要调整不同的PID参数(比例系数Kp、积分时间Ti、微分时间Td)。 按键功能如下:K1键―修改PID参数(Kp、Ti、Td);K2键―加1键;K3键―减1键;K4键―确定键。 按键设计的具体思路:K1键作为参数切换键,按下次数为n,当n 1时,修改参数Kp,按一次K2键(K3键)加一(减1),若按下K4键,则参数Kp修改成功,若没有按下,则返回重新检测K1键按下的次数。当n 2时,修改参数Ti,按一次K2键(K3键)加一(减1),若按下K4键,则参数Ti修改成功,若没有按下,则返回重新检测K1键按下的次数。当n 3时,修改Td参数,按一次K2键(K3键)加一(减1),若按下K4键,则参数Td修改成功,若没有按下,则返回重新检测K1键按下的次数。若n 4时,则返回液位显示。 其键盘子程序流程图如图4.4所示。 图4.4 键盘子程序流程图 PID控制子程序 标准的数字PID算法可分为增量型算法和位置型算法两种。由于位置型算法占用大量的内存,计算起来也比较繁琐,使用很不方便。因此,后来又出现了被广泛应用的增量型算法。但是无论对于增量型算法还是位置型算法都有一个共同特点,即比例、积分和微分的作用是彼此相互独立,互不相关的。这就有利于操作人员直观的理解和检 查各个PID参数(Kp、Ti、Td)对控制效果的影响。 增量型算法具有以下优点: 1 由于计算机只输出增量,所以误动作的影响较小,必要的时候可以通过逻辑判断的方法去掉,不会严重影响到系统的状态。 2 在应用位置型控制算法时,必须要首先使计算机的输出值与阀门的原始开度相等,即P k-1 ,才能确保手动到自动的无扰动切换,这给程序的设计带来许多不便。而增量型算法的设计相对位置型算法只与本次的偏差值有关,与阀门原来的开度无关,因而增量型算法更容易实现手动到自动的无扰动切换。除此之外,在位置控制算式的应用中,不仅要对E(j)进行累计相加,而且无论计算机出现任何故障都会引起P k 的大幅度变化,这对生产是十分不利的。 3 由于不产生积分失控,所以比较容易获得较好的调节品质,故可靠性较高。 PID控制子程序流程如图4.所示。 图4.5 PID控制子程序流程图 考虑到实际问题时,一般会有干扰存在,选择实际PID微分算式如下: (4.2) 其中 (4.3) (4.4) (4.5) (4.6) (4.7) 其中ud(k)和ud(k-1)分别是实际微分环节第k,k-1时刻的输出。k为采样序号(k 0、1、2、„„);Kp为调节器比例系数;Ki为调节器积分系数;Kd为调节器微分系数;e k 为第K次采样时的偏差值;e k-1 为第k-1采样时的偏差值;u(k) 相对于理想的增量型PID算式来说,实际微分PID控制算式具有可以有效限制高频干扰的优点。由于控制器输出的变化过大和过于频繁,现场希望当被调参数在一定范围内变化时,输出不改变。为了避免这种现象就要考虑到带死区的数字PID控制算法。带死区的数字PID控制算法:人为的设置一个死区(不灵敏区)值B,偏差的绝对值大于B时,则进行正常的PID控制输出;当偏差的绝对值小于等于B时,其控制输出维持在上次的输出不变,即?Uk为0。B值的设定要适当,过大的B值将会使系统产生很大的滞后,过小的B值将使控制动作过于频繁。 控制系统中存在着动态误差,在一般情况下用积分作用进行调节,但是在动态过程中(如系统的开工、停工或大幅度提降时),过大的积分作用可能导致系统稳定性的变坏,为了消除这种现象可以采用积分分离算法。具体方法是:在被控变量开始跟踪的时候,取消积分的作用,直到被控变量接近给定值时,才产生积分作用。积分分离 控制算法的算式表示为:当式(4.8)成立时,为PD控制,Ti为0;当式(4.9)成立时,为PID控制。其中经数字滤波后的测量值为MK,给定值为UK,允许的最大偏差值为A。 (4.8) 4.9 此外,在自动控制系统中,为了 安全生产 安全生产管理档案一煤矿调度员先进事迹安全生产副经理安全生产责任最近电力安全生产事故安全生产费用投入台账 的要求,通常不希望调节阀“全开”或“全闭”,因此设定一个上限位和一个下限位。换句话说,就是要求PID调节的输出必须限制在一个特定的幅度范围内,即 (4.10) 在具体系统中,不一定上限位和下限位都需要,可能只需要一个下限位或一个上限限位。 LED显示子程序 利用单片机内部的串行接口,可以实现静态的显示处理。这样不仅可以节省单片机的并行接口资源,而且在大多数不使用串行接口的情况下,可以减少或是免去扩展接口。 程序流程如图4.6所示。 图4.6 LED显示子程序流程图 在这种设计中,串行口工作于方式0,数据的输入输出都通过RxD 实现,移位脉冲则由TxD发出。每次传送一个字节数据。每输出一个字节数据,单片机自动使串行中断请求标志TI置。通过测试该状态,即可确定该字节是否发送完毕。由硬件电路图可知,74LS164是串行输入并行输出的移位寄存器。它具有两个串行输入端和8位并行输出端(QA―QH)。 当显示数据从RxD端输出到移位寄存器74LS164的输入端AB时,74LS164将串行数据转换成8位输出码QA―QH,然后加到共阳极LED显示器上。究竟在哪一位上显示,还要P1口的状态而定。当某一位为低电平时,该位LED显示,其他位不显示。由于接口电路中显示模型输出地址和位选信号可一次选中,故只要一次输出即可显示一位。 Keil软件 Keil软件简介 Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编语言相比,C语言在功能上、结构上、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境uVision将这些部分组和在一起。运用Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果使用C语言编程,那么Keil就是必不可少的编程软件,即使不适用C语言而仅使用汇编语言编程,Keil软件的方便易用的集成环境、强大的软件仿真调试工具也会让整个软件设计过程事半功倍。 Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具,去Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体会高级语言的优势。 Keil软件编程流程及程序下载 Keil软件编程是在Keil uVision3界面上实现的。要实现软件编程,需要按下列步骤进行操作: (1)启动 Keil uVision3 从uVision3的Project菜单中选择New Project,这时将出现“产生新工程”对话框,在对话框输入项目文件名,点击保存,出现“选择设备”对话框,在器件数据库中选择单片机STC89C52。 (2)新建一个源文件 用菜单选项File―New新建一个源文件,在打开的编辑窗口输入源代码,并另存为*.c的文件。 (3)选择建立的工程 点击工程下方的*.c文件,用Add Files to Group„按钮把文STARTUP.A51添加到项目中。加入文件如图4.7所示。 图4.7 加入文件 (4)创建HEX文件 输入调试程序直至没有错误,创建一个HEX文件来进行软件模拟。如图4.8所示。 图4.8 输出HEX文件 (5)下载程序到单片机 下载程序使用软件STC-ISP V391,启动软件后选择器件STC89C52RC。单片机选型如图4.9所示。 图4.9 下载时单片机选型 选择将要被下载的 HEX 机器码文件。HEX 文件是由单片机开发环境输入、编辑代码后编绎产生的,文件添加如图4.10所示。 设置串口和串口通信速度。烧录过程中,如果出现失败,可以考虑将串口通信速度降低再试,这是由于机器配置以及当 地环境因素决定的,当供电电源偏低 用 USB 供电的一般都会偏低 和环境干扰过大时,必需选低一点的波特率 即通信速率 。下载成功与失败,可以从信息区的提示看出。选择并设置好串口后 一般不需更改 ,进入第四步,而这一步基本上不用更改,串口选择及波特率选择如图4.11所示。 图4.10 添加文件选择 图4.11 串口选择及波特率选择 点击“Download/下载”,就可以进入烧录状态,按下电源按钮,就可将程序下载到单片机中,程序下载如图4.12所示。 图4.12 程序下载按钮图 系统的调试及说明 系统的调试包括硬件设计调试、软件设计调试和软硬件联合的调试。 硬件设计调试 第一步:检查电路冒烟、放电的声光、异常气味、元器件发烫等动态调试调整电路的交流通路元件如电容、电感等使电路相关点的交流信号的幅度、波形、频率等参数达到设计要求。若输入信号为周期性变化信号,可用示波器观测输出信号。当采用分块调试时,除输入级采用外加输入信号外,其他各级的输入信号应采用前输出信号对于模拟电路,观测输出波形是否符合要求。对于数字电路,观测输出信号波形、脉冲宽度、幅值、相位及动态逻辑关系是否符合要求。在数字电路调试中,常常希望让电路状态发生一次性变化,而不是周期性的变化。,输入信号应为单阶跃信号又称开关信号,用以观察电路状态变化的逻辑关系。 指标测试如有不符,则应仔细检查问题,一般是对某些元件参数加以调整和。若仍达不到要求,则应对某部分电路进行修改,甚至对整个电路加以修改。Kp。 (2)在输出不振荡时,减小积分时间常数Ti。 (3)在输出不振荡时,增大微分时间常数Td。 调节器的规律会直接影响系统的控制质量,其选择不仅要根据对象特性,负荷变化,系统干扰和控制要求等进行具体分析,还要考虑系统的经济性,安全性以及投运方便等因素。 调节器的控制规律选择的一般原则: (1)当广义过程的控制通道时间常数较大或容量滞后较大时,应引入D调节,当工艺允许有静差时,应选用PD调节器,当工艺要 求无静差时,应选用PID调节器; (2)当广义过程的控制通道时间常数较小,负荷变化不大时且工艺要求有静差时,应选用P调节,当要求无静差时,应选用PI调节器; (3)当广义过程的控制通道时间常数较大且纯滞后时间较大,负荷变化剧烈时,简单控制难以满足工艺要求,应采用复杂控制系统或其他控制方案。 其次,介绍PID参数整定。在自动调节系统中, (5.1) 式(5.1)中,E为偏差、SP 为给定值、PV为测量值。当SP大于PV时为正偏差,反之为负偏差。 比例调节作用的动作与偏差的大小成正比。当比例度为100时,比例作用的输出与偏差按各自量程范围的1:1动作。当比例度为10时,按10:1动作。即比例度越小,比例作用越强。比例作用太强会引起振荡。太弱会造成比例欠调,造成系统收敛过程的波动周期太多,衰减比太小。其作用是稳定被调参数。 积分调节作用的动作与偏差对时间的积分成正比。即偏差存在积分作用就会有输出。它起着消除余差的作用。积分作用太强也会引起振荡,太弱会使系统存在余差。 微分调节作用的动作与偏差的变化速度成正比。其效果是阻止被调参数的一切变化,有超前调节的作用。对滞后大的对象有很好的效 果。但不能克服纯滞后。适用于温度调节。使用微分调节可使系统收敛周期的时间缩短。微分时间太长也会引起振荡。 经验法是简单调节系统应用最广泛的整定方法,是一种试凑法。它通过参数预先设置和反复试凑来实现。参数的预置值要根据对象的特性和仪表的量程决定。仪表量程大的PID参数要适当加强作用。四类被调参数的一般范围。实际情况可能超出此范围。 临界比例度法是采用纯比例将系统投入自动,此时积分时间放最大,微分时间放0。逐渐减小比例度,使系统刚刚出现等幅振荡,记下这时的比例度Pbc和振荡周期Tc,然后按下式计算PID的比例度和积分时间:P 2.2Pbc,T 0.85Tc。 PID的整定参数一般包括Kp,Ti,Td等3个常用的控制参数,准确有效地选定PID的最佳整定参数是PID控制器是否有效的关键。参数整定通常有理论设计和现场经验整定两种方法。现场经验整定法是人们在长期工作工程实践中,从各种控制规律对系统控制质量的影响的定性分析总结出来的一种行之有效,并得到广泛应用的工程整定方法。在现场整定过程中,实行PID参数按先比例,后积分,最后微分的顺序进行,在观察现场过程值PV的趋势曲线的同时,慢慢地改变PID 参数,进行反复凑试,直到控制质量符合要求为止。 PID整定步骤: (1)先整定比例系数。 将PID调节器的Ti设置为无穷大、Td设置为零,使其成为纯比例调节。初期比例度按经验数据设定,根据PV曲线,再慢慢地整定 比例控制比例度,使系统达到4:1衰减振荡的PV曲线; (2)再加积分作用。 在加积分作用之前,应将比例度加大为原来的1.2倍左右。将积分时间Ti由大到小进行调整,直到系统再次得到4:1的衰减振荡的PV曲线为止。 (3)若需引入微分作用。 微分时间按积分时间的1/3到1/4计算,这时可将比例度调到原来数值或更小一些,再将微分时间由小到大调整,直到PV曲线达到满意为止。 在找到最佳整定参数之前,要对PV值曲线进行走势分析,判断扰动存在的变化大小,再慢慢进行凑试。如果经过多次仍找不到最佳整定参数或参数无法达到理想状态,而生产工艺又必须要求较为准确时,那就得考虑单回路PID控制的有效性,是否应该选用更复杂的PID控制。需要指出的是,PID调节器的参数对控制系统性能的影响通常并不十分敏感,因而参数整定的结果可以不唯一。在实际应用中,只要被控过程的主要指标达到设计要求,那么就可以选定相应的控制器参数作为有效的控制参数。 在PID控制子程序的调试过程中存在一些问题,开始虽然程序编译完全正确,但是输出的控制量老显示 “0”,为了寻找问题所在,起初不加死区判断、积分分离以及输出限幅,不进行PID的增量运算,直接给上一次的输出和增量赋初值,然后计算显示输出量,但是经过调试发现,显示的输出量仅等于增量的值,与上一次输出的无关,上 一次输出的初值没按照式(4.7)调用,这就考虑到程序初始化的调用有问题,经检查验证发现PID参数的初始化必须在增量型PID计算函数内部进行,这样才可以将个参数初始化的值正确调用,此时,当加上死区判断、积分分离以及输出限幅时,也可以正确显示PID输出的控制量了。其程序参见附录B主程序中的增量型PID计算部分。 软硬件联合调试 在硬件调试和软件调试均没有问题的情况下,将程序生成HEX文件,然后通过STC89C52专用STC-ISP-V4.83-NOT-SETUP-CHINESE软件下载到STC89C52RC单片机上,上电后观察LED显示结果。若与设计要求相同则证明程序的初始化部分没有问题。然后通过改变子程序部分的设定值,然后观察整个液位控制系统是否达到预期的效果。按动按键K1-K4,可以看到LED上Kp、Ti、Td的值随按键的改变而改变,证明程序已经达到预期的目标,同时也证明该系统的硬件连接没有问题。 总结 在此次双容水箱液位控制器的设计过程当中,首先对液位控制器进行了简单的概述,其次又对它分别进行了硬件组成介绍、硬件设计、软件设计以及对装置的编程调试,最后达到实现液位控制的作用。 在整个设计的环节当中,对它的硬件设计环节相对来说比较简单,其中主处理器选用的芯片是STC89C52RC,A/D转换部分选用的芯片是ADC0832进行数据采集,它接收的模拟信号来自电位器,将1-5V的模拟量转换成0-255的数字量。显示采用LED显示模块,四个按键 实现对PID参数的调节功能。而相对硬件设计而言,对它软件的设计及对它的编程调试是一个复杂的过程。按照设计的要求,它整个程序的设计和编写,主要采用了模块化的设计 思想 教师资格思想品德鉴定表下载浅论红楼梦的主题思想员工思想动态调查问卷论语教育思想学生思想教育讲话稿 ,分别将A/D转换部分(完成模拟量的采集并对其进行离散化)、PID计算部分、按键处理部分和LED显示部分的程序进行模块化,在对这些程序模块以子程序调用的方式进行整体化,进而实现设计的要求。 此外,作为一名专业的大生,设计。在大学里我们在课堂上掌握的仅仅是专业课的理论知识锻炼我们的实践能力把我们所学的专业理论知识运用到实践中去为我们提供了良好的实践平台。[M](北京,航空航天出版社,2003( [8] 赖寿宏(微型计算机控制技术与控制原理[M](北京,机械工业出版社,2005( [9] 康华光(电子技术基础[M](北京,高等教育出版,2000( [10] 陈杰,黄鸿.传感器与检测技术[M](北京,高等教育出版社出版,2004( [11] 马翼平(三容水箱液位控制系统的研究(哈尔滨工业大学工学硕士学位论文(2003,7:6,19( [12] 李小平(液位控制系统建模及其控制算法的研究(哈尔滨工业大学工学硕士学位论文,2007,7:30,56( [13] 何希才,薛永毅(传感器及其应用实例[M](北京,机械工业出版社,2004( [14] 朱晓青,曹王剑(过程检测与控制技术[M](北京,冶金 工业出版社,2002( [15] 王雪文,张志勇(传感器原理与应用[M](北京,北京航 空航天大学出版社,2004( [16] 赵佩华(单片机接口技术及应用[M](北京,机械工业出 版社,2003( [17] 李华(MCS251 系列单片机实用接口技术[M](北京,北京 航空航天大学出版社,2003( [18] 胡汉才(单片机原理及接口技术[M](第2版(北京,清 华大学出版社,2004( [19] 安艳伟(基于单片机的分布式液位控制系统设计[J](信 息系统工程,2009(12):42-45( [20] 王鸿磊,李传发,张雪松(基于AT89S52的CAN通信接口 设计[J](计算机技术与发展,2006(12):190-192( [21] Mizumoto M.Realization of PID Control by Fuzzy Control Methods.Fuzzy Sets and Systems,1995,70 2 :171-182. [22] Qin S.J.Auto-Tuned Fuzzy Logic Control,Proceeding of The American Control Conference.1994 1 :966-970. [23] Astrom K.J. and Hagglund.T,The Future of PID Control.Control Engineering Practice,2001,11 9 :1163-1165. [24] Kharitonov VL.Robust Stability Analysis of Time Delay Systems:A Survey.Annual Reviews in Control,1999,23:185-196. [25] Majhi S.Atherton D.P. Automatic Tuning of The Modified Smith Predictor Controllers.Proceedings of the 39 IEEE Conference on Decision and Control,Sydney, Australia,2000:533-568. 附录A 本设计原理图 附录B 主程序 #include #include #include #include #define uchar unsigned char #define uint unsigned int uint xdata DAC0832; sbit P3_0 P1^0; sbit P3_1 P1^1; sbit P0_0 P0^0; sbit P0_1 P0^1; sbit key1 P1^4; sbit key2 P1^5; sbit key3 P1^6; sbit key4 P1^7; float temp; int Kp; //比例常数 int Ti; //积分常数 int Td; sbit clk_adc0832 P3^6;//ADC0832时钟 sbit cs_adc0832 P2^0;//ADC0832片选 sbit di_adc0832 P3^7;//ADC0832输入 sbit do_adc0832 P3^7;//ADC0832输出 uchar getvalue0832 bit channel //ADC0832数据读取 uchar i,dat1 0,dat2 0; clk_adc0832 0; cs_adc0832 0; //选通adc0832 di_adc0832 1; //在第一个脉冲沿下降之前adc0832的DI 端必须是高电平,表示启始信号 clk_adc0832 1;clk_adc0832 0;//第一个脉冲 di_adc0832 1; //di_adc0832分别送出通道选择数据SGL 1, clk_adc0832 1; clk_adc0832 0; //第二个脉冲下降沿,送出数 据SGL 1 di_adc0832 channel; clk_adc0832 1; clk_adc0832 0; //第三个脉冲下降沿,送出数 据ODD channel; di_adc0832 1; //释放总线 for i 0;i 8;i++ //从高到低取D7- D0位 clk_adc0832 1; clk_adc0832 0; //从第四个脉冲下沉开始输出D7位,以后每个脉冲的下沉输出一位数据 if do_adc0832 dat1| 0x80 i;//用变量dat1接收D7- D0位数据 //用或运算将相应的位置1,如果do_adc0832 0则不用理会,相应的位也是0 for i 0;i 8;i++ //从低到高取D0- D7位 if do_adc0832 dat2| 0x01 i;//用变量dat2接收D0- D7位数据 clk_adc0832 1; clk_adc0832 0; cs_adc0832 1; di_adc0832 1; clk_adc0832 1; //释放总线 if dat1 dat2 return dat1; //校验数据是不是正确,返回的数据范围在0x00-0xFF之间 unsigned char disp_buffer[4]; unsigned char dis[] 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f ; unsigned char point[] 0x00,0x00,0x00 ; unsigned char d[4]; void display disp_buffer[0] dis[d[0]] | point[0]; disp_buffer[1] dis[d[1]] | point[1]; disp_buffer[2] dis[d[2]] | point[2]; void mDelay int i for ;i 0;i-- uchar j 244;while --j ; void disp_led int yewei unsigned char gsb,led,led1,j; d[0] yewei/100; d[1] yewei%100/10; d[2] yewei%100%10; for gsb 0;gsb 4;gsb++ led disp_buffer[gsb]; for j 0;j 8;j++ led1 led&0x80; if led1 0x80 P3_0 1; else P3_0 0; P3_1 0;P3_1 1; led led 1; mDelay 2000 ; int Change uchar Nx float Am,A0; int tempt; uchar Nm,N0; Am 30.0; A0 0.0; Nm 255; N0 51; temp temp Am-A0 * Nx-N0 / Nm-N0 +A0; tempt int temp; return tempt; typedef struct PID int SV; //设定目标 long SumError; //误差累计 double Kp; //比例常数 double Ti; //积分常数 double Td; //微分常数 int LastError; //第K-1采样时的偏差值,Error[-1] int PrevError; //第K-2采样时的偏差值,Error[-2] int B; //死区电压 int A; //积分分离限 int Downlimit; //PID增量部分高限幅 int uplimit; //PID增量部分低限幅 int LastOutput; //上次PID输出 int Output; //PID的输出 PID; static PID sPID; static PID *sptr &sPID; unsigned int IncPIDCalc unsigned int NextPoint; unsigned int iError, PError,dError,iIncpid; sptr- SumError 0; sptr- LastError 0; //第K-1采样时的偏差值, Error[-1] 0 sptr- PrevError 0; //第K-2采样时的偏差值, Error[-2] 0 sptr- Kp 10; //比例常数 sptr- Ti 1000; //积分常数 sptr- Td 8; //微分常数 sptr- LastOutput 0; //上次PID输出为0 sptr- SV 0; //设定目标为0 sptr- Downlimit 0; //PID增量部分高限幅为0 sptr- uplimit 1024; //PID增量部分低限幅为1024 sptr- A 5; //积分分离限为5 sptr- B 0.4; //死区电压为0.4 iError NextPoint-sptr- SV; //增量 计算 PError iError-sptr- LastError; dError iError-2*sptr- LastError+sptr- PrevError; if iError sptr- B //判断死区 iIncpid 0; else if iError sptr- A //判 断积分分离 iIncpid sptr- Kp * PError + sptr- Ti * iError + sptr- Td * dError; else iIncpid sptr- Kp * PError+ sptr- Td * dError; //积分分离,去掉积分 sptr- Output sptr- LastOutput+iIncpid; if sptr- Output sptr- Downlimit //PID输出限幅 sptr- Output sptr- Downlimit; else if sptr- Output sptr- uplimit sptr- Output sptr- uplimit; sptr- PrevError sptr- LastError; //存储误差,用于下 次计算 sptr- LastError iError; sptr- LastOutput sptr- Output; return sptr- Output; void square /* 方波发生函数 */ int w; w IncPIDCalc ; if w 0x7f DAC0832 0x00; mDelay 20 ; else DAC0832 0xff; mDelay 20 ; void main int i; int n; int yw; n 0; Kp 10;Ti 14; Td 17; while 1 i getvalue0832 0 ; yw Change i ; if n 0 display ; disp_led yw ; if key1 0 mDelay 3 ; if key1 0 n++; if n 4 n 0; if n 1 if key2 0 mDelay 3 ; if key2 0 Kp++; if Kp 50 Kp 50; if key3 0 mDelay 3 ; if key3 0 Kp--; if Kp 0 Kp 0; display ; disp_led Kp ; if n 2 if key2 0 mDelay 3 ; if key2 0 Ti++; if Ti 50 Ti 50; if key3 0 mDelay 3 ; if key3 0 Ti--; if Ti 0 Ti 0; display ; disp_led Ti ; if n 3 if key2 0 mDelay 3 ; if key2 0 Td++; if Td 50 Td 50; if key3 0 mDelay 3 ; if key3 0 Td--; if Td 0 Td 0; display ; disp_led Td ; if key4 0 mDelay 3 ; if key4 0 n 0; square ; 致谢 经过半学期的忙碌,本次毕业设计已经接近尾声,在此,我要感 谢每一个帮助过我的人。 首先,我要感谢的是我的指导老师。王老师平日里工作繁多,但在我做毕业设计的每个阶段,都给予我悉心的指导和帮助。可以说,没有王老师的悉心指导和帮助,我是不可能顺利完成我的毕业设计的。另外,她的治学严谨和科学研究的精神也是我永远学习的榜样,并将积极影响我今后的学习和工作。其次,我要感谢的是我的班里同学,在我毕业设计期间,他们给了我不少的关心和帮助。最后我要感谢的是我亲爱的信息学院以及信息学院的每一位老师和同学。总之,感谢每一位关心过我,爱护过我的人。滴水之恩,当涌泉相报。最后,再次感谢我的导师。 I ---- - 大学毕业设计说明书(毕业论文) 内蒙古科技大学毕业设计说明书(毕业论文) 内蒙古科技大学毕业设计说明书(毕业论文) 内蒙古科技大学毕业设计说明书(毕业论文)
本文档为【基于单片机的双容水箱液位控制器设计-毕业设计(可编辑)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_601191
暂无简介~
格式:doc
大小:83KB
软件:Word
页数:0
分类:企业经营
上传时间:2017-09-30
浏览量:33