基于单片机变频恒压供水课程设计报告_第1页
基于单片机变频恒压供水课程设计报告_第2页
基于单片机变频恒压供水课程设计报告_第3页
基于单片机变频恒压供水课程设计报告_第4页
基于单片机变频恒压供水课程设计报告_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

.PAGE.目录课题简介3关键词3课题描述3实验任务3实验设备3设备工作原理简介4西门子MM440变频器工作原理4变频器参数复位5压力变送器工作原理5PID工作原理6课题实施方案7硬件设计7电路原理图7软件设计8结果分析13个人总结14参考文献15课题简介传统控制水位的方法是人为频繁的进展观察并以此为依据进展补水或放水的,而这些工作相当费时费力。如果运用自动控制的思想来处理这个问题那么会方便很多。本实验课题便是针对这个问题进展设计。实验拟设计一套PID水塔液位控制系统,采用51单片机为主控制器,对其进展编程后,通过控制变频器,使得变频器支配的电机能够根据频率而得到相应的运转,从而使水位到达并保持预期的要求;变频器为执行器。水塔水位信号的来源是由位于水塔下方的压力传感器感知水面高度,并将水面高度转换为相应的电流信号反响回控制回路,而后根据测定人为的建立它们之间的函数关系,进展信号的校对从而实现水塔水位信号的输入。整个系统能够很好的跟踪给定液位,有较好的快速性和稳定性,能够满足一般化生产过程中对液位控制的要求。关键词:液位控制系统单片机PID课题描述实验任务●会使用单片机C语言,能用它进展编程;●在单片机中完成PID算法的编程实现;●构建一个闭环系统完成对PID实验装置的水位高度的稳定调节;●完成系统框图的设计及各组成的功能描述;●完成西门子MM440变频器的参数化设置;●完成在增加输出扰动后控制系统快速调节;实验设备IA7000实验台一台51单片机试验箱西门子MM440变频器三相水泵:AB-12,380V,40W,流量12升/分,扬程3米压力变送器:DC24,4~20mA装有实验软件的计算机一台PC-PPI通讯电缆一根导线假设干设备工作原理简介1、西门子MM440变频器工作原理MM440变频器具有多个继电器输出、多个模拟量输出。原理图如下MM440的接线原理图MM440的每个端子都有一个对应的参数用来设定该端子的功能〔如下表〕表1MM440六个数字开关量输入端子功能数字输入端子编号参数编号出厂设置DIN15P07011DIN26P070212DIN37P07039DIN48P070415DIN516P070515DIN617P070615功能说明=1接通正转/断开停车=2接通反转/断开停车=3断开按惯性自由停车=9故障复位=10正向点动=11反向点动=12反转〔与正转命令配合使用〕=13电动电位计升速=14电动电位计降速=15固定频率直接选择=16固定频率选择+ON命令=17固定频率编码选择+ON命令2、变频器参数复位:参数复位是将变频器的参数恢复到出厂时的参数默认值。在变频器初次调试,或者参数设置混乱时,需要执行该操作,以便于将变频器的参数值恢复到一个确定的默认状态。MM440包含六个数字开关量输入端子,每个端子都有一个对应的参数用来设定该端子的功能。恢复变频器缺省值,按下"P〞健,变频器开场复位到工厂缺省值。表2.由BOP操作时的工厂缺省设置值参数号出厂值设置值说明P0010030工厂的设定值P097001参数复位压力变送器工作原理压力变送器的主要作用把压力信号传到电子设备,进而在计算机显示压力。其原理大致是:将水压这种压力的力学信号转变成电流〔4-20mA〕这样的电子信号。压力和电压或电流大小成线性关系,一般是正比关系。所以,变送器输出的电压或电流随压力增大而增大,由此得出一个压力和电压或电流的关系式。压力变送器的被测介质的两种压力通入高、低两压力室,低压室压力采用大气压或真空,作用在δ元〔即敏感元件〕的两侧隔离膜片上,通过隔离片和元件的填充液传送到测量膜片两侧。压力变送器是由测量膜片与两侧绝缘片上的电极各组成一个电容器。当两侧压力不一致时,致使测量膜片产生位移,其位移量和压力差成正比,故两侧电容量就不等。主要优点〔1)压力变送器具有工作可靠、性能稳定等特点;〔2)高准确度,高稳定性;〔3)4-20mADC二线制信号传送,抗干扰能力强,传输距离远;〔4)铝合金压铸外壳,三端隔离,静电喷塑保护层,巩固耐用;〔5)专用V/I集成电路,外围器件少,可靠性高,维护简单/体积小、重量轻,安装方便。PID工作原理PID是比例(P)、积分(I)、微分(D)控制算法。但并不是必须同时具备这三种算法,也可以是PD,PI,甚至只有P算法控制。我以前对于闭环控制的一个最朴素的想法就只有P控制,将当前结果反响回来,再与目标相减,为正的话,就减速,为负的话就加速。现在知道这只是最简单的闭环控制算法。比例(P)、积分(I)、微分(D)控制算法各有作用: 比例:反响系统的根本〔当前〕偏差e(t),系数大,可以加快调节,减小误差,但过大的比例使系统稳定性下降,甚至造成系统不稳定;积分:反响系统的累计偏差,使系统消除稳态误差,提高无差度,因为有误差,积分调节就进展,直至无误差; 微分:反映系统偏差信号的变化率e(t)-e(t-1),具有预见性,能预见偏差变化的趋势,产生超前的控制作用,在偏差还没有形成之前,已被微分调节作用消除,因此可以改善系统的动态性能。但是微分对噪声干扰有放大作用,加强微分对系统抗干扰不利。积分和微分都不能单独起作用,必须与比例控制配合。增量式PID:是指数字控制器的输出只是控制量的增量Δu(k)。采用增量式算法时,计算机输出的控制量Δu(k)对应的是本次执行机构位置的增量,而不是对应执行机构的实际位置。增量型PID算式:PID=Uk+KP*[E(k)-E(k-1)]+KI*E(k)+KD*[E(k)-2E(k-1)+E(k-2)];增量式算法优点:算式中不需要累加。控制增量Δu(k)确实定仅与最近3次的采样值有关,容易通过加权处理获得比拟好的控制效果;计算机每次只输出控制增量,即对应执行机构位置的变化量,故机器发生故障时影响围小、不会严重影响生产过程;手动—自动切换时冲击小。当控制从手动向自动切换时,可以作到无扰动切换。课题实施方案1、硬件设计在本方案中,由51单片机试验箱、变频器MM440、压力变送器组成。1)、51单片机试验箱完成对模拟量输入输出EM235模块数字输入信号的读取,并且负责PID输入输出的计算,并将结果化为数字量放入模拟量输入输出EM235模块。2)、变频器MM440主要是用来完成对水泵的控制,当频率为0HZ时水泵不抽水,液位维持不变;当频率为50HZ时,水泵最大功率输出,提高液位。3)、压力变送器主要任务是将水缸中的水的压力信号转换成4-20mA的电流信号并且输入模拟量输入输出EM235模块从而到达监视系统水位的目的。4)、模拟量输入输出EM235模块负责将模拟量转化为数字量以方便单片机读取,并且将PLC-200的输出数字量转化成模拟量以便控制变频器MM440。电路原理图2.软件设计PID算法局部:/*PID=Uk+KP*[E(k)-E(k-1)]+KI*E(k)+KD*[E(k)-2E(k-1)+E(k-2)];(增量型PID算式)函数入口:RK(设定值),CK(实际值),KP,KI,KD函数出口:U(K)*///pid.c/*PID=PID->UK_REAL+PID->KP*[E(k)-E(k-1)]+PID->KI*E(k)+PID->KD*[E(k)-2E(k-1)+E(k-2)];(增量型PID算式)函数入口:PID->RK(设定值),PID->CK(实际值),PID->KP,PID->KI,PID->KD函数出口:U(K)*///#include"defines.h"#include"pid.h"#defineMAXOUT0xff//#defineMAXGAP100voidpid_exe(pid_str*PID) //指针指向PID构造体{PID->EK[2]=PID->EK[1]; //Double上差量->上次差量PID->EK[1]=PID->EK[0]; //上次差量->当前差量PID->EK[0]=PID->RK-PID->CK; //当前差量=水位设定值-水位实际值 if(PID->EK[0]<=10&&PID->EK[0]>=-10) PID->EK[0]=0;PID->UK_REAL=PID->UK_REAL+PID->KP*(PID->EK[0]-PID->EK[1])//微分一次后积分即原数+(float)PID->KI*PID->EK[0]//直接积分+(float)PID->KD*(PID->EK[0]-2*PID->EK[1]+PID->EK[2]);//二阶微分后积分即一阶微分if((PID->UK_REAL>>PID->BITMOV)>=MAXOUT) //AD输出量>上限值{PID->UK=MAXOUT; //AD输出量=上限值}elseif(PID->UK_REAL>>PID->BITMOV<=0)//AD输出量{PID->UK=0;}else{PID->UK=PID->UK_REAL>>PID->BITMOV;//实际输出量}}PID头文件:主函数局部:/********************************************************************************* 普中科技*实验名 :AD显示试验*实验说明:使用LCD1602显示AD读取到的各个数值*连接方式:见连接图*注意 :*******************************************************************************/#include<reg51.h>#include"i2c.h"#include"lcd.h"#include"pid.h"//--定义PCF8591的读写地址--//#defineWRITEADDR0x90 //写地址#defineREADADDR0x91 //读地址pid_str swkz;voidDelay(unsignedinti){while(i--);}voidset_pid_para(void){swkz.KP=3;swkz.KI=0.5;swkz.KD=0;swkz.RK=450;swkz.EK[2]=0; swkz.EK[1]=0; swkz.EK[0]=0;swkz.BITMOV=1;swkz.UK_REAL=0; }/********************************************************************************函数名:Pcf8591SendByte*函数功能 :写入一个控制命令*输入:channel〔转换通道〕*输出:无*******************************************************************************/voidPcf8591SendByte(unsignedcharchannel){ I2C_Start(); I2C_SendByte(WRITEADDR,1);//发送写器件地址 I2C_SendByte(0x40|channel,0);//发送控制存放器 I2C_Stop();}/********************************************************************************函数名:Pcf8591ReadByte*函数功能 :读取一个转换值*输入:无*输出:dat*******************************************************************************/unsignedcharPcf8591ReadByte(){ unsignedchardat; I2C_Start(); I2C_SendByte(READADDR,1);//发送读器件地址 dat=I2C_ReadByte();//读取数据 I2C_Stop();//完毕总线returndat;}/********************************************************************************函数名:Pcf8591DaConversion*函数功能 :PCF8591的输出端输出模拟量*输入:value〔转换的数值〕*输出:无*******************************************************************************/voidPcf8591DaConversion(unsignedcharvalue){ I2C_Start(); I2C_SendByte(WRITEADDR,1);//发送写器件地址 I2C_SendByte(0x40,1);//开启DA写到控制存放器 I2C_SendByte(value,0);//发送转换数值 I2C_Stop(); }voidDis_Play(unsignedintdata1){ LcdWriteData('0'+data1/1000); //发送显示数据 LcdWriteData('0'+data1%1000/100); LcdWriteData('0'+data1%100/10); LcdWriteData('0'+data1%10);}/********************************************************************************函数名:main*函数功能 :主函数*输入:无*输出:无*******************************************************************************/voidmain(){ unsignedintAD_Read=0; // AD_Read->信号输入量 LcdInit(); //1602液晶初始化 set_pid_para(); //给 PID赋初值 while(1) { AD_Read=Pcf8591ReadByte()*2;//ADC读取外部输入电压先空读一次 swkz.CK=AD_Read; //把读入的AD值付给PID.CK write_str(1,0,"AD:"); Dis_Play(AD_Read); //显示当前读入AD电压值 0-510->水位的高度 Pcf8591SendByte(3);//发送电位器转换命令 AD_Read=Pcf8591ReadByte()*2; //再度读一次,读出当前数据 AD_Read->信号输入量0-510->水位的高度 //--PIDDA输出--// pid_exe(&swkz); //PID计算出AD输出量 write_str(0,0,"OUTPUT:"); Dis_Play(swkz.UK); Pcf8591DaConversion(swkz.UK); //AD输出量给控制 //Delay(100000); //延时时间改变控制周期! }}3、结果分析模拟量电压0-5V对应数字量0-510(设定的数字量最大值MAXOUT=0xff=2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论