




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGE基于单片机的恒压供水系统设计摘要:本设计是在深入研究当前多种恒压供水方案的基础上,创造性地提出“定频副电机+变频主电机+低端MCU”的低成本高效能恒压供水方案。设计通过控制变频器的输出频率从而自动调节水泵电机的转速,实现管网水压的闭环调节(PID),使供水系统自动恒稳于设定的压力值。用户可以自行设定水管中的水压,低功耗低噪音高性能高寿命的特点使得本设计在同类产品中脱颖而出。使用KeilC和Proteus等先进EDA软件进行了高效率地设计实现和仿真验证。关键词:恒压,高效率,水泵转速,变频器目录1 前言 11.1 设计背景 11.2 设计目标 21.3 实施计划 22 总体方案设计 32.1 方案比较 32.1.1 方案一 32.1.2 方案二 32.1.3 方案三 42.2 方案论证 52.3 方案选择 63 单元模块设计 73.1 各单元模块功能介绍及电路设计 73.1.1 水管压力测量模块 73.1.2 时钟模块设计及与器件选择 83.1.3 复位电路的设计 83.1.4 按键接口模块设计 93.1.5 A/D转换模块 103.1.6 D/A转换模块 113.1.7 显示模块设计 123.1.8 电机控制设计 123.1.9 稳压电源模块 133.2 特殊器件的介绍 143.2.1 变频器介绍 143.2.2 DAC0832介绍 163.2.3 ADC0809介绍 173.2.4 74LS245介绍 203.2.5 单片机AT89C51 213.3 各单元模块的联接 234 软件设计 244.1 软件设计原理及设计所用工具 244.2 主程序流程图 244.2.1 T0中断服务程序 254.2.2 独立按键程序设计 284.2.3 LED动态显示程序模块的设计 305 系统调试 325.1 Proteus仿真软件介绍 325.2 软件调试 355.2.1 水管压力显示的仿真 355.2.2 恒压值的仿真 386 结论 407 总结与体会 418 谢辞 429 参考文献 43附1系统的原理电路图 44附2系统的相关程序 45附3外文文献翻译-译文 53附4外文文献翻译-原文 59PAGE81第页前言近年来,随着居民区的不断扩建与改造,楼房层数的不断加高,我国居民用水难问题越来越突出,特别是高层建筑居民,原有的自来水管网的压力出现不足,大部分地区普遍存在着用水高峰期高层供不上水,高层居民经常出现用水难问题,给生活带来极大不便。这种用水难问题在大城市表现尤为突出。针对上述问题,本文研制了变频调速恒压供水系统,该系统是以管网水压为设定参数,通过控制变频器的输出频率从而自动调节水泵电机的转速,实现管网水压的闭环调节(PID),使供水系统自动恒稳于设定的压力值。即用水量增加时,频率升高,水泵转速加快,供水量相应增大,当用水量超过一台泵的供水量时,通过控制器加泵;用水量减少时,频率降低,水泵转速减慢,供水量相应减小。也就是根据用水量的大小,由供水控制器控制水泵数量以及变频器对水泵的调速,来实现恒压供水。同时达到供水效率的目的“用多少水,供多少水”。采用该供水系统不需建造高位水箱,水塔,水质无二次污染,是一种理想的现代化建筑供水方案。此外,恒压供水系统对于某些上业或特殊用户是非常重要的。例如在某些生产过程中,若自来水供水因故压力不足或短时断水,可能影响产品质量,严重时使产品报废和设备损坏。又如发生火灾时,若供水压力不足或无水供应,不能迅速灭火,可能引起重大经济损失和人员伤亡。所以,某些用水区采用恒压供水系统,具有较大的经济和社会意义。设计背景随着居民区的不断扩建与改造,楼房层数的不断加高,我国居民用水难问题越来越突出,特别是高层建筑居民,原有的自来水管网的压力出现不足,大部分地区普遍存在着用水高峰期高层供不上水,高层居民经常出现用水难问题,给生活带来极大不便。这种用水难问题在大城市表现尤为突出。由于能源的问题不得不改变以往的供水方案,来改变在供水中的能源浪费问题,在国内外已有很多关于很压供水的研究,其中主要由两种,一是基于单片机加通用变频器的恒压供水,一是基于PLC加专用变频器的恒压供水,两种各有自己的特点,第一种价格便宜,通用性强,易于操作,不需专业人员就能操作,而后者价格高,对专业知识要求高,非专业人员不易操作,但是其抗干扰能力强,在市场上也有很大的应用,但是大多数人需要一个即便宜又容易操作的恒压供水系统,本设计就利用单片机和通用变频器来设计此恒压供水系统,并通过对系统的优化来消除此系统的缺点,也就是来提高单片机系统的抗干扰能力,来体现其通用性强,易于操作的优点。设计目标该系统主要以单片机为主控模块,通过控制变频器的输出频率从而自动调节水泵电机的转速,实现管网水压的闭环调节,使供水系统自动恒稳于设定的压力值,实现恒压供水。即用水量增加时,频率升高,水泵转速加快,供水量相应增大;用水量减少时,频率降低,水泵转速减慢,供水量相应减小。采用该供水系统不需建造高位水箱或水塔,水质无二次污染,是一种理想的现代化建筑供水方案。本次设计的预期目标是:完成系统硬件电路的设计,并绘制出相应的原理电路图;完成所需控制软件的流程设计和编程任务。实施计划3月下旬至4月初,查阅和收集文献资料;4月初至4月中旬,提出设计方案,并对方案进行比较和论证,选出最佳方案;4月中旬至5月初,完成硬件电路设计;5月初月至五月中旬完成相关软件编程;5月中旬至5月底进行系统的模拟测试;6月上旬撰写设计报告,并准备毕业设计答辩。
总体方案设计通过查阅大量相关技术资料,并结合自己的实际知识,我主要提出了三种技术方案来实现系统功能。下面我将首先对这三种方案的组成框图和实现原理分别进行说明,并分析比较它们的特点,然后阐述我最终选择方案的原因。方案比较方案一单单片机开关A/D转换恒速泵压机变频泵压机D/A转换压力传感器管网水压图2-1方案一的原理框图方案一系统由泵机和可变频网络组成。如图2-1所示,以80C196为核心构成控制器,将设定值与压力反馈值进行PID运算。系统通过压力传感器将电器部分与泵组联系起来,构成闭环系统。方案二方案二系统由变频器、控制器、传感器、主副两个水泵电机及相关电气控制设备集成而成,是一种具有变频调速和全自动闭环控制功能的机电一体化智能设备。它可同时对二台三相380/50Hz,异步电动机行变频调速和闭环控制,其系统组成示意图如图2-2所示。从下图中我们可以看到,自动恒压供水控制系统的基本控制策略是:采用电动机调速装置与供水控制器构成控制系统,进行优化控制泵组的调速运行,并自动调整泵组的运行台数,完成供水压力的闭环控制,在管网流量变化时达到稳定供水压力和节约电能的目的。4位LED显示4位LED显示上位机通信四位独立式键盘AT89C51变频器M2(工频)A/D转换D/A输出压力传感器M1(变频)图2-2方案二的原理框图调节水压专用变频器水泵电机管道压力传感器压力给定调节水压专用变频器水泵电机管道压力传感器压力给定图2-3方案三的原理框图系统由专用变频器、压力传感器、水泵等组成。如图2-3。专用变频器就是指有内置PID功能的变频器。随着电力电子技术的飞速发展变频器的功能也越来越强。充分利用变频器内置的各种功能,对变频调速恒压供水设备进行合理的设计。国外不少生产厂家近年来纷纷推出了一系列新型产品。如ABB公司的ACS600,ACS400系列产品,富士公司的G11S/P11S系列产品。这些产品将PID调节器以及简易可编程控制器的功能都综合进变频器内,形成了带有各种应用的新型变频器。方案论证方案一的工作流程是80C196为核心构成控制器,将设定值与压力反馈值进行PID运算。系统通过压力传感器将电器部分与泵组联系起来,构成闭环系统。运算结果以0-10v的电压信号输给变频器,实现恒压供水。方案二整个系统的具体工作流程为:系统通过安装在出水总管上的压力传感器,将供水管网的非电量信号(动态压力)转变成电信号,输入至供水控制器的输入模块,信号经单片机运算处理后与设定的信号进行比较运算,得出偏差值,再经过PID处理得出最佳的运行工况参数,并将其转换成模拟信号,由系统的输出部分输出变频器的频率设定值至变频调速器,变频调速器控制水泵的转数来调节管网内的实际压力值趋向于设定压力值,从而实现闭环控制的恒压供水。对于多台泵调速的方式,控制器控制泵站投运水泵的台数及变量泵的运行工况,并实现对每台水泵根据CPU指令实施软启动、软切换及变频运行。系统通过计算判定目前是否己达到设定压力,决定是否增加(投入)或减少(撤出)水泵。即:当一台水泵工作频率达到最高频率时,若管网水压仍达不到预设水压,则将启动令一台工频泵运行,(此设计只用两台电机且功率达到设计要)此后,往复工作,直至满足设定压力要求为止。反之,若管网水压大于预设水压,控制器控制变频器频率降低,使变频泵转速降低,当频率低于下限时自动切掉一台工频泵或此变频泵,始终使管网水压保待恒定。总之,系统可根据用户用水量的变化,自动确定泵组的水泵的循坏运行,以提高系统的稳定性及供水的质量。系统系统由变频器、控制器、传感器、主副两个水泵电机及相关电气控制设备集成而成。该变频恒压供水控制器以单片机为核心,在水泵的出水管道上安装一个压力传感器,用于检测管道压力,并把出口压力变成0--5V的模拟信号,送到单片机系统的A/D转换输入端,再经A/D转换变成相应的数字信号,送入单片机进行数据处理。单片机经运算后与设定的压力进行比较,得出偏差值,再经PID调节得出控制参数,经D/A转换变成0—5V的模拟信号,送入变频器中,以控制其输出频率的大小,以此改变水泵的电机转速,从而达到控制管道压力的目的。当实际管道压力小于给定压力时,变频器输出频率升高,电机转速加快,管道压力升高;反之,频率降低,电机转速减小,管道压力降低。其变过程可以表示如下:检测压力(下降)――控制器输出(上升)――变频器频率(上升)――电机转速(上升),反之相反,最终达到恒压。方案三由专用变频器与PLC组成的恒压供水系统,这类变频器的功能虽然强一些,但是价格比通用变频器却要高很多。此种类型供水设备的花费不光体现在变频器上,还体现在PLC上,市场上PLC的价格也要高于单片机的价格。使其工作时需要专业人员通过变频器的控制面板,在变频器的PID选项中选择合适的PID参数,再经过现场调试校正,设备才可以正常运行。整个操作过程都必须有专业人员的界入。因此,通用性不好,这是这种变频恒压供水方案的另外一个缺点。综上所述,其有下面两个缺点。1.价格比较昂贵,不适合小型用户的使用。2.调试不方便,需要专业人事到现场进行调试,这也增加了人力的投入资本。方案选择方案二采用压力传感器反馈电压信号(0-5V)至变频器中央处理器(MCU),经PID控制组成闭环控制系统。其输出频率的大小由作用MCU处理器控制,使电机的转速自动增加或降低;当变频主电机由变频器拖动运行至最大频率,压力如还不能达到设定的压力值,则MCU自动启动定频副电机,以期保持供水压力恒定。这样不但减小了电动机的无功功率,而且提高了水泵的工作效率,节约了能源。采用变频控制方式;其操作方便,无须手动调节进水阀门;启动噪音低,由于启动电流很小,减小了对电网的冲击,保护了用电设备。而且其系统实现起来比较简单,并且系统价格相对来说也比较便宜,所以本次设计将采用方案二。单元模块设计本节主要介绍系统各单元模块的具体功能、电路结构、工作原理、以及各个单元模块之间的联接关系;同时本节也会对相关电路中的参数计算、元器件选择、以及核心器件进行必要说明。各单元模块功能介绍及电路设计本系统主要分为9个单元模块,它们分别是:水管压力测量模块、时钟模块、复位模块、按键接口模块、A/D转换模块、D/A转换模块、显示模块、稳压电源模块。各单元模块功能及相关电路的具体说明如下。水管压力测量模块图3-1水管压力测量电路要测量出水管的电压就需要压力传感器。本次设计采用压电传感器来测量水管压力。压阻式传感器是利用晶体的压阻效应制成的传感器。当它受到压力作用时,应变元件的电阻发生变化,从而使输出电压发生变化。一般压阻式传感器是在硅膜片上做成四个等值的电阻的应变元件,构成惠斯特电桥。当受到压力作用时,一对桥臂的电阻变大,而另一对桥臂电阻变小,电桥失去平衡,输出一个与压力成正比的电压。由于硅压阻式压力传感器的灵敏系数比金属应变的灵敏系数大50~100倍,故硅压阻式压力传感器的满量程输出可达几十毫伏至二百多毫伏,有时不需要放大就可直接测量。另外压阻式传感器还有易于微型化,测量范围宽,频率响应好(可测几千赫兹的脉动压力)和精度高等特点。但在使用过程中,要注意硅压阻式压力传感器对温度很敏感,在具体的应用电路中要采用温度补偿。目前大多数硅压阻式传感器已将温度补充电路做在传感器中,从而使得这类传感器的温度系数小于±0.3%的量程。如图3-1所示。时钟模块设计及与器件选择图3-2时钟电路时钟电路用于产生单片机工作所需要的时钟信号,单片机本身就是一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在惟一的时钟信号控制下严格地按时序进行工作。该时钟电路由两个电容和一个晶体振荡器组成。X1是接外部晶体管的一个引脚。在单片机内部,它是一个反相放大器的输入端,这个放大器构成了片内振荡器。输出端为引脚X2,在芯片的外部通过这两个引脚接晶体振荡器和微调电容,形成反馈电路,构成一个稳定的自激振荡器。单片机工作的速度是由时钟电路提供的。在单片机的XTAL1和XTAL2两个引脚间,接一只晶振及两只电容就构成了单片机的时钟电路,如图3-2所示。电路中的器件选择可以通过计算和实验确定,也可以参考一些典型电路的参数。电路中电容C1和C2对振荡频率有微调作用,通常的取值范围30±10pF;石英晶体选择6MHz或12MHz都可以。其结果只是机器周期时间不同,影响记数器的记数初值和运算速度。复位电路的设计单片机的RST引脚为主机提供一个外部复位信号输入端口。复位信号是高电平有效的持续时间应为2个机器周期以上。复位后,单片机内部各部件恢复到初试状态,单片机从ROM的0000H开始执行程序。单片机复位电路设计的好坏,直接影响到整个系统工作的可靠性。许多人在设计完单片机系统,并在实验室调试成功后,在现场却出现了“死机”、“程序走飞”等现象,这主要是单片机的复位电路设计不可靠引起的。在单片机应用系统工作时,除了进入系统正常的初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需按复位键以重新启动。所以,系统的复位电路必须准确、可靠地工作。图3-3 复位电路单片机的复位都是靠外部电路实现的,在时钟电路工作后,只要在单片机的RST引脚上出现24个时钟振荡脉冲以上的高电平,单片机便实现初始化状态复位。为了保证应用系统可靠地复位,在设计复位电路时,通常使RST保持高电平。只要RST保持高电平,则单片机就循环复位。本次设计采用上电自动复位电路。由于R•C电路充电过程中,RST端出现正脉冲,从而使单片机复位。按键接口模块设计本系统采用独立式按键,独立式按键的各按键相互独立,每个按键都有一个输入线,各按键的状态互不影响,CPU需对按键状态分别检测,只适用于按键数量较少的场合。在此电路中,按键输入部分采用低电平有效,上拉电阻保证了按键断开时,I/0口线有确定的电平。在扫描时,先读取P0口的四位,若某位为低电平,应先延时l0ms,然后再读取该位,如果读得的值仍为低电平,可确认此键已按下,然后调用该键的键处理子程序,各键的优先级别由软件安排。依据本次的设计要求我们大体分析在自动部分需要4个按键,因此我们选择独立式键盘。在电路仿真当中,为了体现效果,把最小步进临时改成了5。按下启停键后,系统将压力传感器传过来的信号进行转换后进入单片机,显示出当前的水压。按下设置键后,系统显示出设定的压力值,如果对设置的水压进行调整,通过增减键,可以进行单位为5的调整。如图3-4所示,电路由4个按键和4个电阻组成,按键分别命名为【启停键】、【设置键】、【增一键】和【减一键】,共四个键,电阻可以采用9脚排阻(8×10KΩ)。【启停键】功能:启动/停止,执行开始自动运行和停止功能;【设置键】功能:设置,与【加一键】和【减一键】键配合对压力进行调整,开始设置。【增一键】键功能:+1,与【设置键】键配合对压力进行调整,【加一键】键每按下一次则进行数据进行+1操作。【减一键】键功能:-1,与【设置键】键配合对压力进行调整,【减一键】键每按下一次则进行数据进行-1操作。图3-4 按键接口电路A/D转换模块计算机、数字通讯等数字系统是处理数字信号的电路系统。然而,在实际应用中,遇到的大都是连续变化的模拟量,因此,需要一种接口电路将模拟信号转换为数字信号。A/D转换器正是基于这种要求应运而生的。由于压力传感器传过来的信号为模拟信号,在接入前要加A/D转换电路将模拟信号转换为数字信号,本次设计采用常用的A/D转换芯片ADC0809.如图3-5所示。图3-5 A/D转换电路D/A转换模块图3-6D/A转换电路D/A转换电路用我们比较熟悉的DAC0832来作,DAC0832采用了二次缓冲输入数据方式(输入寄存器及DAC寄存器)。这样可以在输出的同时,采集下一个数字量,以提高转换速度。如图3-6所示。显示模块设计但片机应用系统中,通常都需要进行人—机对话。这包括人对应用系统的状态干预与数据输入,以及应用系统向人们显示运行结果等。显示器、键盘电路就是用来完成人机对话的人—机通道。本次设计中要求作到4组LED显示,LED显示器的控制方式为静态显示和动态显示两种,因此在选择LED驱动时,一定要先确定显示方式。若选择静态显示,则LED驱动器的选择较为简单,只要驱动器的驱动能力与显示器电流相匹配即可。而且只须要考虑段的驱动因为共阳极接+5V,而共阴接地,所以位的驱动不要考虑。动态显示则不同,由于一位数据的显示是由段选和位选信号共同配合完成的,因此,要同时考虑段和位的驱动能力,而且段的驱动能力决定位的驱动能力。如图3-7所示。图3-7显示模块电路电机控制设计压力传感器将压力信号经过A/D转换后输入到单片机,如果压力和设定压力有偏差,单片机将控制变频器调频使压力值稳定,当变频主电机由变频器拖动运行至最大频率,压力如还不能达到设定的压力值,则MCU自动启动定频副电机,以期保持供水压力恒定。这样不但减小了电动机的无功功率,而且提高了水泵的工作效率,节约了能源。图3-8电机控制电路稳压电源模块大部分的电子电路与电子设备都需要有一个稳定的直流电源提供能量,而且对于我们通常所接触的控制器而言,一般都是利用电网提供的交流电源,经过整流、滤波、稳压后,滤去其不稳定的脉动、干扰成分,提供一个稳定的直流电压,来使电子电路与电子设备保持正常的工作。并且,我们目前绝大部分电子电路与电子设备都是使用线性电源,即通过降压、整流、滤波、稳压后提供稳定的直流电压给电子电路及芯片工作的。固定式三端稳压电源(7805)是由输出脚Vo,输入脚Vi和接地脚GND组成,它的稳压值为+5V,它属于CW78xx系列的稳压器,输入端接电容可以进一步的滤波,输出端也要接电容可以改善负载的瞬间影响,此电路的稳定性也比较好。由于固定式三端稳压电源(7805)的输出电流有1.5A,而本次设计电路电流在1A到2A之间,考虑到电路的一般余量在2倍到3倍左右。故本次设计电源电路需要采用扩流电路,如图3-9。图3-9稳压电源电路采用外接PNP型大功率管的方法,这是一种最基本的扩展电流电路,扩展的输出电流取决于外接功率管的电流负载量,电路中的R1是VT的偏置电阻,为VT1提压导通时的基极偏压,VT与集成稳压器内电路中的NPN型调整管组成复合管,设Ir为流过电阻R1中的电流,Ic为流过外接调整管的集电极电流,Td为7805的静态工作电流,这时7805的输出电流为Ioxx,可表示式中为VT的电流放大系数,稳压扩展后的输出电流Io可表示为。因为7805的的最大输出电流为1.5A,当Io取1.5A时,则稳压器的扩展后的输出电流为3A,加一只二极管VD与R1并联,把外接整流管的VT1的发射结电阻限制在0.7V以内,当输出电流超过额定植时,保护电阻R2上的压降增大,必然会使VT1的Vbe减小,从而使VT1的输出电流减小,以至不导通,这样便达到了保护外接管的目的。电路中的VT1可选用3CD6等PNP型硅低频大功率管。特殊器件的介绍本系统中主要使用了如下一些功能器件:DAC0832,ADC0809,变频器。下面就这些器件的功能特点、主要参数和使用方法作相应说明。变频器介绍通用变频器的选择包括变频器的型式选择和容量选择两个方面。其总的原则是首先保证可靠地实现工艺要求,再尽可能节省资金。表3-1三菱FR-500系列标准规格型号FR-A540-K-CH0.75.5适用电机容量(KW)(注1)0.75.5输出额定容量(KVA)(注2)1.9额定电流(A)2.546912过载能力(注2)150%60s200%0.5s(反时限特性)电压(注4)三相380V至480V50Hz/60Hz再生制动转矩最大值·允许使用率100%转矩·2%ED电源额定输入交流电压、频率三相380V至480V50Hz/60Hz交流电压允许波动范围323至528V50Hz/60Hz允许频率波动范围±5%电源容量(KVA)(注5)912保护结构(JEM1030)封闭型(IP20NEMA1)(注6)冷却方式自冷强制风冷大约重量(㎏)连同DU3.56.0根据控制功能可将通用变频器分为三种类型:普通功能型V/F控制变频器、具有转矩控制功能的高性能型V/F控制变频器(也称无跳闸变频器)和矢量控制高性能型变频器。变频器类型的选择要根据负载的要求进行。对于风机、泵类等平方转矩,低速下负载转矩较小,通常可选择普通功能型的变频器。对于恒转矩类负载或有较高静态转速精度要求的机械采用具有转矩控制功能的高功能型变频器则是比较理想的。因为这种变频器低速转矩大,静态机械特性硬度大,不怕负载冲击,具有挖土机特性。为了实现大调速比的恒转矩调速,常采用加大变频器容量的办法。对于要求精度高、动态性能好、响应快的生产机械(如造纸机械、轧钢机等),应采用矢量控制高功能型通用变频器。大多数变频器容量可从三个角度表述:额定电流、可用电动机功率和额定容量。其中后两项,变频器生产厂家由本国或本公司生产的标准电动机给出,或随变频器输出电压而降低,都很难确切表达变频器的能力。选择变频器时,只有变频器的额定电流是一个反映半导体变频装置负载能力的关键量。负载电流不超过变频器额定电流是选择变频器容量的基本原则。1.负荷的调速范围。在调速范围不大的情况下,选择较为简易的V/F控制方式的变频器。当调速范围很大时,应考虑采用有反馈的矢量控制方式。2.恒转矩负载只是在负荷一定的情况下负载阻转矩是不变的,但对于负荷变化时其转距仍然随负荷变化。当转矩变动范围不大时,可选择较为简易的V/F控制方式的变频器,但对于转矩变动范围较大的负载,应考虑采用无反馈的矢量控制方式。3.如果负载对机械特性的要求不高,可考虑选择较为简易的V/F控制方式的变频器,而在要求较高的场合,则必须采用有反馈的矢量控制方式。在众多变频器中基于运行可靠性、价格适中我们选定三菱公司出品的FR-500系列。由式(3-1)和所要求的调速范围90~1500r/min我们可以计算出变频的范围:(3-1)(3-2)即频率的调节范围为~之间,另外,考虑到此前我们选用的YVP100L1-4型变频电机其标称功率P=2.2KW,额定电流IN=5.2A,对于三菱公司的FR-500系列变频器标准规格型号的查看,如上表3-1所示,拟选用FR-A540-2.2K-CH型号的变频器DAC0832介绍下面我就把DAC0832芯片各引脚功能介绍一下,图3-9为其管脚图:ILE:允许输入锁存。CS:片选信号。它与ILE结合起来用以控制WR1是否作用。WR1:写信号1。在CS和ILE有效下,用它将数字输入并锁存于输入寄存器中。WR2:写信号2。在XFER有效下,用它将输入寄存器中的数字传送到8位DAC寄存器中。XFER:传送控制信号,用它来控制了WR2是否起作用。在控制多个DAC0832同时输出时特别有用。D0~D7:8位数字输入,D0为最低位。Iout1:DAC电流输出1。它是逻辑电平为1的各位输出电流之和。Iout2;DAC电流输出2。它是逻辑电平为0的各位输出电流之和。Rfb:反馈电阻,该电阻被制作在芯片内,用作运算放大器的反馈电阻。VREf:基准电压输入,可以超出±10V范围,芯片用于四象限乘时,为模拟电压输入。Vcc:逻辑电源。+5V~+15V,最佳用+15V。图3-9DAC0832引脚图AGND:模拟地。芯片模拟信号接地点。DGND:数字地,芯片数字信号接地点。LE是寄存器锁存命令,当LE=“1”时,寄存器的输出随输入变化;当LE=“0”时,数据锁存在寄存器中,而不再随数据总线上的数据变化而变化。若ILE=“1”、CS=“0”与WR1=“0”时,使输入寄存器的LE=“1”,当WR1变为“1”时,输入寄存器便将数据锁存。同样。若XFER=“0”且WR2=“0”时,使得DAC寄存器的LE=“1”,DAC寄存器的输出随输入变化,当WR2上升沿时,将输入寄存器中的信息锁存在DAC寄存器中。图中的RFB是片内电阻,为外部运放提供反馈电阻,用以输出适当电压。VREF端是外电路提供的+10V至-10V的参考电源,Iout1与Iout2是两个电流输出端。欲将输入数字量转换为模拟量,只要使WR2=“0”、XFER=“0”,DAC寄存器为不锁存状态;当ILE=“1”,CS和WR1端接负脉冲信号,即可完成一次转换。或者使WR1=“0”,CS=“0”,ILE=“l”,即输入寄存器为不锁存状态,当WR2和XFER端接负脉冲信号,也可达到同样目的。ADC0809介绍1.主要特性
1)8路8位A/D转换器,即分辨率8位。
2)具有转换起停控制端。
3)转换时间为100μs
4)单个+5V电源供电
5)模拟输入电压范围0~+5V,不需零点和满刻度校准。
6)工作温度范围为-40~+85摄氏度
7)低功耗,约15mW。
2.外部特性(引脚功能)图3-10ADC0809引脚图ADC0809芯片有28条引脚,采用双列直插式封装,如图3-10所示。下面说明各引脚功能。IN0~IN7:8路模拟量输入端。
2-1~2-8:8位数字量输出端。
ALE:地址锁存允许信号,输入,高电平有效。
START:A/D转换启动信号,输入,高电平有效。
EOC:A/D转换结束信号,输出,当A/D转换结束时,此端输出一个高电平(转换期间一直为低电平)。
OE:数据输出允许信号,输入,高电平有效。当A/D转换结束时,此端输入一个高电平,才能打开输出三态门,输出数字量。
CLK:时钟脉冲输入端。要求时钟频率不高于640KHZ。
REF(+)、REF(-):基准电压。
Vcc:电源,单一+5V。
GND:地。ADC0809的工作过程是:首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动A/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当OE输入高电平时,输出三态门打开,转换结果的数字量输出到数据总线上。3.内部结构表3-2ADC0809通道选择CBA选择的通道000IN0001IN1010IN2011IN3100IN4101IN5110IN6111IN7ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。A/D转换器的主要技术指标是转换误差、分辨率、转换速度。ST为转换启动信号。当ST上跳沿时,所有内部寄存器清零;下跳沿时,开始进行A/D转换;在转换期间,ST应保持低电平。EOC为转换结束信号。当EOC为高电平时,表明转换结束;否则,表明正在进行A/D转换。OE为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。OE=1,输出转换得到的数据;OE=0,输出数据线呈高阻状态。D7-D0为数字量输出线。CLK为时钟输入信号线。因ADC0809的内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500KHZ,VREF(+),VREF(-)为参考电压输入。ADC0809通道选择表如表3-2所示。8位A/D8位A/D转换器IN0IN1IN2IN3IN4IN5IN6IN78路A/D转换器ABCALE地址锁存与译码D0D1D2D3D4D5D6D7VCCGND三态输出锁存器EOCOEVREF(+)VREF(-)图3-11ADC0809芯片的内部逻辑结构74LS245介绍图3-1274LS245引脚图74LS245是我们常用的芯片,用来驱动led或者其他的设备,用法很简单如上图,这里简单的给出一些资料,他是8路同相三态双向总线收发器,可双向传输数据。74LS245还具有双向三态功能,既可以输出,也可以输入数据。当片选端/CE低电平有效时,DIR=“0”,信号由B向A传输;DIR=“1”,信号由A向B传输;当/CE为高电平时,A、B均为高阻态。单片机AT89C51AT89C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,片内含4Kbytes的可反复察写的只读程序存储器和128bytes的随机存取数据存储(RAM),器件采用ATMEL公司的高密度、非易失性存储器技术生产,兼容MCS-51的指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元,功能强大。AT89C51引脚图如图3-13所示:图3-13单片机引脚图主要性能参数:与MCS-51产品指令系统完全兼容、4K字节可重察写Flash闪速存储器、全静态操作0HZ—24MHZ、32个可编程I/O口线、2个16位定时/计数器、6个中断源、低功耗空闲和掉电模式。引脚功能:Vcc:电源电压GND:地P0口:P0口是一组8位漏极开路型双向I/O口,也即地址/数据总线复用口,作为输出口用时,每位能吸收8个TTL逻辑门电路,对端口写1可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址和数据总线复用,在访问期间激活内部上拉电阻。在Flash编程是P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。P1口:P1口是一个带上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动4个TTL逻辑门电路。对端口写1,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。Flsah编程和程序校验期间,P1就收低8位地址。P2口:P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动4个TTL逻辑门电路。对端口写1,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。在访问外部程序存储器或16位地址的外部数据存储器时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器时,P2口线上的内容,在整个访问期间不改变。Flash编程或校验时,P2亦就收高位地址和其它控制信号。P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动4个TTL逻辑门电路。对P3口写入1是,它们被内部上拉电阻拉高并作为输入口。作输入端时,被外部拉低的P3口将用上拉电阻输出电流。表3-3P3口第二功能端口引脚第二功能P3.0串行输入口P3.1串行输出口P3.2外中断0P3.3外中断1P3.4定时/计数器0P3.5定时/计数器1P3.6外部数据存储器写选通P3.7外部数据存储器读选通P3口除了作为一般的I/O口线外,更重要的用途是它的第二功能,如下表所示:P3口还接受一些用于Flash闪速存储器编程和程序校验的控制信号。RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。EA/VPP:外部访问允许。欲使CPU仅访问外部程序存储器,EA端必须保持低电平。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平,CPU则执行内部程序存储器中的指令。Flash存储器编程是,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。XTAL2:振荡器反相放大器的输出端.各单元模块的联接完成各模块的设计后,模块按照功能的不同连接成整体的电路图。各模块的具体联接图见附录一。软件设计软件设计原理及设计所用工具软件的主要功能是根据系统的工作原理,框图,先制定各部分程序的流程图,然后再根据流程图编写各部分程序,通过调试各部分程序运行正确无误后,再进行主程序的调试,看是否能实现预期的功能。系统能否完全正常工作,最主要的也是最关键的是看软件程序是否正确,它关系到系统功能的实现,可以说,软件是一个系统的灵魂。本设计所使用的软件工具如下:1.开发平台:KeilC51;2.编写语言:C/C++;KeilC51是美国KeilSoftware公司出品的51系列兼容单片机C语言软件开发系统,是目前最流行开发80C51系列单片机的软件,提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(micro;Vision)将这些部份组合在一起。与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。用过汇编语言后再使用C来开发,体会更加深刻。
KeilC51软件提供丰富的库函数和功能强大的集成开发调试工具,全Windows界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到KeilC51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。KeilC51语言编译工具都是以ANSL-C作为基础进行开发的,因此,一种C语言环境下所编写的C语言程序,只需将部分与硬件相关的地方和编译连接的参数进行适当修改,就可方便移植到另外一种系列上。也就是说,基于C语言环境下的嵌入式系统能基本达到平台的无关性。用C语言开发的代码便于开发小组计划项目,灵活管理,分工合作以及后期维护,基本上可以杜绝因开发人员变化而给项目进度,后期维护或升级所带来的影响。从而保证整个系统的品质,可靠性以及可升级性。主程序流程图恒压供水控制器对生活供水、消防供水系统进行监控,要求软件具有高可靠性、高稳定性、高抗干扰能力,检测信号准确,有良好的动静态性能,该软件按结构化流水设计,分为若干功能部分,采用C语言编写。本设计的软件主程序用来动态显示系统的压力,压力的采样和系统的控制环节都在中断处理程序中,主流程图如图4-1:主程序初始化,开T0中断,设置T0为10ms的中断主程序初始化,开T0中断,设置T0为10ms的中断压力的动态显示按键处理子程序YN是否键按下开始图4-1主程序流程图T0中断服务程序主要包括:A/D转换程序;D/A转换程序;控制程序。程序流程图如下:如图4-2示,变频器控制M1电机,M2电动机由单片机控制,其标志位为M2。1.A/D转换子程序其主要任务是把压力传感器检测的压力转换成数字量,并送入单片机处理,程序见附录。2.D/A转换子程序其主要任务是把经PID处理过的数据转换成模拟量,来控制变频器输出电压的频率,来控制水泵的转速,以达到控制供水压力的目的。读A/D转换器读A/D转换器返回Y进入T0中断PID调节是否为最大值标志位M2是否为1是否为最小值标志位M2是否为1NYY置标志位M2为1,(开M2电机)。PID调节数据送D/A转换器清标志位M2为0,(关M2电机)NNNNY图4-2T0中断服务程序流程图3.PID调节程序本设计就是通过单片机实现的PID调节器来实现水压的恒定,并自动调节水泵的数量。在工业控制过程中,目前采用最多的控制方式仍然是PID方式。PID有几个重要的功能:提供反馈控制;通过积分作用可以消除稳态误差:通过微分作用预测将来。由于PID控制器具有简单而固定的形式,在很宽的操作条件范围内,另一方面是因为PID控制器允许工程技术人员以一种简单而直接的方式来调节系统性能,其程序见附录。数字PID控制算法通常分为位置式PID控制算法和增量式PID控制算法。随着计算机技术的发展,在控制工程中,用计算机PID控制算法来实现数字PID控制器,组成计算机控制系统。可以灵活的改变PID参数,同时可以改变控制策略来达到控制目的。这是模拟PID控制器中所无法实现的。这里所说的控制策略是数字PID的改进算法,如积分分离PID控制算法、不完全微分PID控制算法、微分先行PID控制算法和带死区的PID控制算法等。在各个控制阶段采取各种控制方法,以此来获得控制目标。本设计采用增量式PID控制,下面把增量式PID控制算法介绍一下:1)增量式PID控制算法所谓增量式PID是指数字控制器的输出只是控制量的增量Δu(k)。离散的PID表达式为:(4-1)当执行机构需要的是控制量的增量(如驱动步进电机)时,可由式(4-1)导出提供增量的PID控制算法。根据递推原理可得(4-2)用式(4-1)减去(4-2),可得(4-3)其中:式(4-3)称为增量式PID控制算法。可以看出,由于一般计算机控制系统采用恒定的采样周期T,一旦确定了KP,KI,KD,只要使用前后三次测量值的偏差,即可有(4-3)求出控制增量。采用增量式算法时,计算机输出的控制增量Δu(k)对应的是本次执行机构位置的增量。对应阀门实际位置的控制量,目前采用较多的是利用如上算式并通过执行软件来完成。独立按键程序设计1)程序设计思路按键接收子程序主要是实现对当前设定压力的调整。根据按键电路的设计可知,当【SET】键按下时可以产生中断请求,CPU响应中断请求时,则进入该中断服务程序。在程序中,将对当前设定的压力进行调整,利用【SET】、【+1】和【-1】键配合使用,每次对【+1】键的按下则进行累加;同样对【-1】键按下则进行减1操作。开始开始置无键按下(P0口FFH)标志进入键盘处理程是否有键按下?(读P0口值)调延时子程序是否有键按下?(再次读P0口值)确认有键按下保存键值YYNN图4-3键盘扫描程序流程图2)按键去抖动的处理开始开始为F7H否?为EFH否为FBH否?为DFH否?读键值(P0口)置标志位执行RUN置标志位执行SET执行+1执行-1返回YNYYYNNNN图4-4按键处理程序流程图由于机械触点的弹性作用,在闭合及断开的瞬间均伴随有一连串的抖动,抖动时间的长短由按键的机械特性决定,一般为5~10ms。而按键稳定闭合时间的长短则是由操作人员的按键动作决定的,一般为零点几秒至数秒。键抖动会引起一次按键被误读多次,为了确保CPU对键的一次闭合仅作一次处理,按键的抖动可以用硬件或者软件方法来消除。本次设计中采用软件方法来消除按键抖动,具体的键盘扫描程序框图如图4-3所示。而按键处理的程序框图如图4-4所示。读取P0口的值于(11000011)二进制数或运算再到键盘处理程序中处理,以屏蔽高两位和低两位对程序的影响。LED动态显示程序模块的设计在采用动态扫描显示方式时,要使得LED显示比较均匀,又有足够的亮度,需要设置适当的扫描频率。当扫描频率在70Hz左右时,能够产生足够的图形和较好的显示效果。一般可以采用时间间隔10ms对LED进行动态扫描一次,每一位LED的显示时间为1ms。在单片机中,定时器功能既可以由硬件(定时/记数器)实现,也可以通过软件定时程序实现。软件延时程序占用CPU的时间,因此,它降低了CPU的利用率;硬件定时是利用单片机片内定时器,启动以后定时器可与CPU并行工作,不占用CPU的时间,使得CPU有较高的工作效率。本设计采用硬件定时和软件定时并用的方式,即用定时器1溢出中断功能实现10ms定时,通过软件延时程序实现1ms的定时。T1定时器中断服务程序的功能,从显示缓冲区分别取出4位LED显示数据的位码和段码,送P0口,依次显示每一位,显示4位需要4ms的时间。在设定时间时候,对当前需要调整的设定值应具有闪烁功能,用来提醒当前处于设置状态。保护现场关T1中断保护现场关T1中断把DATA1中数据写到DATA中根据CLK,送位选COM端恢复现场,开T1中断,恢复T1初值返回四位显示是否结束YNCOM+1图4-5LED动态显示程序程序流程图进入T1中断系统调试本章对系统的各模块进行了仿真调试。Proteus仿真软件介绍Proteus软件是LabcenterElectronics公司的一款电路设计与仿真软件,它包括ISIS、ARES等软件模块,ARES模块主要用来完成PCB的设计,而ISIS模块用来完成电路原理图的布图与仿真。Proteus的软件仿真基于VSM技术,它与其他软件最大的不同也是最大的优势就在于它能仿真大量的单片机芯片,比如MCS-51系列、PIC系列等等,以及单片机外围电路,比如键盘、LED、LCD等等。通过Proteus软件的使用我们能够轻易地获得一个功能齐全、实用方便的单片机实验室。软件仿真有很多特点和优势,如:可以随意方便的更换和改变电路中的器件及线路,仿真的过程中不会损坏器件,从而降低了产品开发的成本。本文中由于我们主要使用Proteus软件在单片机方面的仿真功能,所以我们重点研究ISIS模块的用法,在下面的内容中,如不特别说明,我们所说的Proteus软件特指其ISIS模块。我们首先来熟悉一下Proteus的界面。Proteus是一个标准的Windows窗口程序,和大多数程序一样,没有太大区别,其启动界面如图5-1所示:图5-1Proteus启动界面如图中所示,区域①为菜单及工具栏,区域②为预览区,区域③为元器件浏览区,区域④为编辑窗口,区域⑤为对象拾取区,区域⑥为元器件调整工具栏,区域⑦为运行工具条。首先点击启动界面区域③中的“P”按钮(PickDevices,拾取元器件)来打开“PickDevices”(拾取元器件)对话框从元件库中拾取所需的元器件。在对话框中的“Keywords”里面输入我们要检索的元器件的关键词,比如我们要选择项目中使用的AT89C51,就可以直接输入。输入以后我们能够在中间的“Results”结果栏里面看到我们搜索的元器件的结果。在对话框的右侧,我们还能够看到我们选择的元器件的仿真模型、引脚以及PCB参数。这里有一点需要注意,可能有时候我们选择的元器件并没有仿真模型,对话框将在仿真模型和引脚一栏中显示“NoSimulatorModel”(无仿真模型)。那么我们就不能够用该元器件进行仿真了,或者我们只能做它的PCB板,或者我们选择其他的与其功能类似而且具有仿真模型的元器件。
搜索到所需的元器件以后,我们可以双击元器件名来将相应的元器件加入到我们的文档中,那么接着我们还可以用相同的方法来搜索并加入其他的元器件。当我们已经将所需的元器件全部加入到文档中时,我们可以点击“OK”按钮来完成元器件的添加。添加好元器件以后,下面我们所需要做的就是将元器件按照我们的需要连接成电路。首先在元器件浏览区中点击我们需要添加到文档中的元器件,这时我们就可以在浏览区看到我们所选择的元器件的形状与方向,如果其方向不符合你的要求,你可以通过点击元器件调整工具栏中的工具来任意进行调整,调整完成之后在文档中单击并选定好需要放置的位置即可。接着按相同的操作即可完成所有元器件的布置,接下来是连线。事实上Proteus的自动布线功能是如此的完美以至于我们在做布线时从来都不会觉得这是一项任务,而通常像是在享受布线的乐趣。布线时我们只需要单击选择起点,然后在需要转弯的地方单击一下,按照你所需走线的方向移动鼠标到线的终点单击即可。
ComponentMode:组件模式,点击该按钮,能够显示出区域③中的元器件,以便我们选择。SelectionMode:选择模式,通常情况下我们都需要选中它,比如布局时和布线时。WireLabelMode:线路标签模式,选中它并单击文档区电路连线能够为连线添加标签。经常与总线配合使用。
TextScriptMode:文本模式,选中它能够为文档添加文本。
BusesMode:总线模式,选中它能够在电路中画总线。关于总线画法的详细步骤与注意事项我们在下面会进行专门讲解。
TerminalsMode终端:模式,选中它能够为电路添加各种终端,比如输入、输出、电源、地等等。
VirtualInstrumentsMode:虚拟仪器模式,选中它我们能够在区域③中看到很多虚拟仪器,比如示波器、电压表、电流表等等。好了,下面我们就来添加电源。首先点击,选择终端模式,然后在元器件浏览区中点击POWER(电源)来选中电源,通过区域⑥中的元器件调整工具进行适当的调整,然后就可以在文档区中单击放置电源了。放置并连接好线路的电路图一部分如图5-2所示。图5-2演示电路图连接好电路图以后我们还需要做一些修改。由上图我们可以看出,图中的R1电阻值为10k,这个电阻作为限流电阻显然太大,将使发光二极管D1亮度很低或者根本就不亮,影响我们的仿真结果。所以我们要进行修改。修改方法如下:首先我们双击电阻图标,这时软件将弹出“EditComponent”对话框(见下图所示的对话框),对话框中的“ComponentReferer”是组件标签之意,可以随便填写,也可以取默认,但要注意在同一文档中不能有两个组件标签相同;“Resistance”就是电阻值了,我们可以在其后的框中根据需要填入相应的电阻值。填写时需注意其格式,如果直接填写数字,则单位默认为Ω;如果在数字后面加上K或者k,则表示kΩ之意。这里我们填入270,表示270Ω。
修改好各组件属性以后就要将程序(HEX文件)载入单片机了。首先双击单片机图标,系统同样会弹出“EditComponent”对话框,如下图。在这个对话框中我们点击“Programfiles”框,来打开选择程序代码窗口,选中相应的HEX文件后返回,这时,按钮左侧的框中就填入了相应的HEX文件,我们点击对话框的“OK”按钮,回到文档,程序文件就添加完毕了。装载好程序,我们就可以进行仿真了。首先来熟悉一下上面第一个图中区域⑦的运行工具条。因为比较简单,我们只作一下介绍。工具条从左到右依次是“Play”、“Step”、“Pause”、“Stop”按钮,即运行、步进、暂停、停止。下面我们点击“Play”按钮来仿真运行,效果如下图所示,可以看到系统按照我们的程序在运行着,而且我们还能看到其高低电平的实时变化。如果我们已经观察到了结果就可以点击“Stop”来停止运行。如图5-3所示。图5-3仿真加载程序图软件调试水管压力显示的仿真为了能够实现仿真,在仿真时用滑动变阻器来模拟水管水压。通过调节电阻的大小来改变水管的水压值。在调节电阻值的时候,显示管上所显示的值随之变化。合上按键电路中的启停键系统工作。用户通过开闭【启停键】来控制系统的开关,当开关【启停键】未合上时,系统不工作,显示管显示FREE.如图5-4所示。当开关【启停键】合上时,系统开始工作,显示出当前水压,调节滑动变阻器显示值的大小随其变化。如图5-5所示。图5-4显示仿真图5-5模拟压力传感器仿真恒压值的仿真图5-6恒压值显示合上设置键后,系统显示出恒定压力值,通过增减键可以调节其大小。单片机把信息输入DAC0832后将数字信号转换为模拟信号,通过变频器后调节水泵的转速,用来保持恒定的水压。如图5-6所示,为开始设定的恒压值。系统设定的开始恒压值是150。因为恒压力的需求不同,就要根据不同用户的需要来调整恒压值。合上设置键后,按增一键一下,数值增加5,减一键一下,数值减少5。这样就可以调节所需要的压力。如图5-7所示,按可三下增一键后显示165。图5-7调节后的恒压值显示
结论本论文的研究主要完成了以下内容:通过对变频恒压供水控制系统的工作原理和控制原理的分析,用单片机汇编语言结合硬件电路,设计出以AT89C51为核心的恒压供水控制器。并将数值PID算法应用到变频恒压供水控制器中,使得用户在使用时更加方便快捷。变频调速恒压供水是现代化城市和生活小区供水的发展方向,采用单片机控制的变频供水系统具有工作可靠、实现容易、价格低廉等特点,是较理想的控制器。当然由于自己能力所限和时间的紧迫,这个设计还有很多缺陷,无法应用于实际,在电路设计方面也有考虑不足,由于没能做出实物,还无法对电路进行调试。只有在以后的工作中去完善。
总结与体会经历两个多月的时间,本次毕业设计:基于单片机的恒压供水系统设计已经圆满完成。本设计完成的是应用在工业生活领域的实践性设计。通过这次的毕业设计,我基本上掌握了一般的设计步骤:首先明确设计任务,以及工业生产和社会生活所要求控制达到的具体的技术指标通过讨论思考及必要的简单实验和实际考查完成对总体工业生产实际系统的了解;进而要对整个设计系统经过深入的方案论证、计算以及联系实际的生产工况、生产条件、企业经济等一系列条件,确立自己的设计方案,然后就是对自己确立的方案进行硬件实现,包括所用元器件选型,以及控制部分整个单片机系统的硬件选型与设计。我进行了软件部分的设计,我经过流程图绘制,搞清楚各个部分实现的功能,进而对整个系统进行软件编程实现,到此基本上这个系统设计已经完成大半虽然完成了设计工作,但由于本人的时间和能力有限,所以目前还有很多不足之处,有待进一步的完善与发现:在日常生活中,深夜的用水量很小,采用单纯变频调速供水设备容易使水泵频繁启停,影响水泵的寿命。针对这种情况,我们可以考虑再在原有供水设备的基础上,附加一个小气压罐和一台稳压水泵组成一个副系统。这样在用水量很小时,主系统(由变频器控制的主供水泵)自动切断,而由副系统供水从而防止了主供水泵的频繁启动。
谢辞在本次毕业设计过程中我的指导教师陈永强老师给予了我无私的帮助与耐心的指导,期间解决了我在设计过程中的许许多多的疑问,同时对于自己设计过程中的某些知识盲点也耐心地给予讲述,从而使得自己的毕业设计能顺利完成。在此,对于陈永强老师的无私帮助表示最真诚的感谢。同时,整个设计过程得到了信息工程系的大力帮助,提供了很好的设计环境,开放了系里的机房,使得自己不论在收集资料还是做实验、撰写设计论文等方面都很方便。对此特别表示感谢。当然,设计的评阅也花费了老师们很大的精力,并且对于自己整个设计的不足之处,也给予了热心的指正。对此,表示衷心地感谢。
参考文献[1]王晓明.电动机的单片机控制[M].北京:北京航空航天大学出版社,2002.6[2]王晓君,安国臣.MCS-51及兼容单片机原理与选型[M].北京:电子工业出版社,2003.5[3]卢京潮.自动控制原理[M].西安:西北工业大学出版社,2004.2[4]吴忠智,吴加林.变频器应用手册[M].北京:机械工业出版社,1995.12[5]何立民.MCS-51系列单片机应用系统设计系统配置及接口技术[M].北京:北京航空航天大学出版社,1996.9[6]陈伯时.电力拖动自动控制系统—运动控制系统[M].北京:机械工业出版社,2003.7[7]杨宁.单片机与控制技术[M].北京:北京航空航天大学出版社,2005.2[8]杨振江.流行单片机实用子程序及应用实例[M].西安:西安电子科技大学出版社,2002.4[9]胡汉才.单片机原理及其接口技术[M].北京:清华大学出版社,2004.3[10]罗志坤,徐植坚.串行可编程监控EEPROM器件及其应用[J].电子技术,1998(3)23-25[11]郭凌.EEPROM芯片X25045与MCS-51单片机的接口及应用[J].电子与自动,1999(4)38-41[12]郭观七.基于C语言的MCS-51系列单片机软件开发系统[M].华中理工大学出版社,1996.11[13]马淑华,高原.电子设计自动化[M].北京邮电大学出版社,2005.8[14]葛伟亮.自动控制元件[M].北京:北京理工大学出版社,2004.6[15]韩志军,沈晋源,王振波.单片机应用系统设计—入门向导与设计实例接[M].北京:机械工业出版社,2005.4[16]梅丽凤,王艳秋,汪毓铎,张军.单片机原理及接口技术[M].北京:北京交通大学出版社,2004.9[17]潘永雄.新编单片机原理与应用[M].西安:西安电子科技大学出版社,2003.5附1系统的原理电路图附2系统的相关程序1)myheadfiles.h#include"AT89x51.h"#defineulongunsignedlong#defineuintunsignedint#defineucharunsignedchar#defineOFF0x00 #defineON0xff#defineHi0xff #defineLo0x00#defineFree0xff //空闲,#defineAutoRun0x40 //自动运行状态标志#defineSetWp0x49 //设置水管水压值状态标志#defineKeyCodeUP0xff #defineKeyCodeDW0xa0#defineKeyCodeFree0xf3 #defineKeyCodeRun0x02#defineKeyCodeNONE0x02sbitKeyUP=P0^4; //各按键sbitKeyDW=P0^5;sbitKeySet=P0^6;sbitKeyRunStop=P0^7;sbitEnDACout=P3^3;//低有效,为低表示DAC0832可以接收数据sbitEnADCin=P3^2;//高有效,为高表示ADC0809可以输出数据sbitStartADC=P3^5;//负脉冲启动sbitADCcomp=P3^4;//高有效,为低表示转换没完成sbitMotor1EN=P3^6;//主电机使能sbitMotor2EN=P3^7;//副电机使能sbitWorkLED=P0^4;//staticcharLEDCodeTable[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};//共阳极LED字型码staticcharLEDCodeTable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴极LED字型码staticcharLEDSelTable[]={0xf8,0xf1,0xf2,0xf4};//{0x08,0x01,0x02,0x04};//LED高低位选择 {0x0E,0x0C,0x0A,0x07}voidInit_Device(void);//voidLEDisplay();voidBCDtoLED(void);voidIntDataToLED(uintdat);uintSampleADC(void);voidOutDAC(uintdat);voiddelay(uinttime);voidKeyPro(void);//按键处理voidPIDpro(void);2),main.c#include"MyHeadFiles.h"ucharKeyCodeNew=KeyCodeNONE;//按键输入值ucharKeyCodeOld=KeyCodeNONE;//按键输入值//bitNewKeyIn=0; //新按键值输入标志ucharLEDValue[4]={6,1,2,3};//放置各个LED原值码 ucharLEDCode[4];//放置各个LED字型uintTime10MS=0;//用于定时ucharWorkState=Free;//系统的运行状态标志uchartempChar;//全局临时变量uinttempINT;ucharLEDCNp=0;//记录LED点亮位置intWaterPctr=150; //控制输出intWaterPnow=60; //当前水管内的水压 intWaterPset=150;//记录人为设置的水管目标压强 // 假定0~5V对应水压0~255voidmain(void){ Init_Device();IntDataToLED(WaterPset);// BCDtoLED(); while(1) {// if((Time10MS%50300)==0) if((Time10MS%15)==0) //调节按键扫瞄处理程序 { KeyPro(); // Time10MS=20; // WorkLED=~WorkLED; } switch(WorkState) { caseAutoRun: { Motor1EN=ON;//确保主电机打开 if((Time10MS%10)==0)//调节采样频率 { WaterPnow=SampleADC(); IntDataToLED(WaterPnow); BCDtoLED(); PIDpro(); } break; } caseSetWp: //设置水管水压值状态标志 { IntDataToLED(WaterPset); BCDtoLED(); // WorkState=AutoRun; //设置完就进入自动运行 break; } caseFree: { Motor1EN=OFF; //关掉主电机 Motor2EN=OFF; //关掉副电机 LEDCode[0]=0x71;//F LEDCode[1]=0x70;//r LEDCode[2]=0x79;//E LEDCode[3]=0x79;//E break; } default: { WorkState=Free; break; } } }}voidPIDpro(void){ //以下是副电机的控制策略 if(WaterPnow<(WaterPset/4)) { Motor2EN=ON;//副电机使能 } elseif(WaterPnow>(WaterPset/3)) { Motor2EN=OFF; } //以下是主电机的控制策略 if(WaterPnow<(WaterPset/2)) { WaterPctr=0xff; //全功率输出 } elseif(WaterPnow>(WaterPset+2))//00功率输出 { WaterPctr=0; } else//变功率输出变频输出变化控制电压 { WaterPctr=WaterPset-WaterPnow; } OutDAC(WaterPctr);}voidInit_Device(void){ TH0=0xd8;//晶振12.0MHz,设置为10ms中断 TL0=0xf0; TR0=1; IE0=1; P0=0;//驱动口预先置0// P1=0xff; P3=0xff;//按键口预先置1 EnADCin=OFF; StartADC=Lo; IE=0x8A;//允许定时器0、1中断ET0=1;}voidTime0_ISR(void)interrupt1{ TF0=0; //清除中断标志 TH0=0xd8;//晶振12.0MHz,设置为10ms中断 TL0=0xf0;// TH0=0xb1;//晶振12.0MHz,设置为20ms中断// TL0=0xe0; Time10MS++;//记录中断次数 if((Time10MS%8)==0) { //以下驱动LED数据管 // tempChar=P0&0xf0; // tempChar=P0; // tempChar&=0xf0; // tempChar|=LEDSelTable[LEDCNp]; // P0=tempChar;//选择要点亮的LED位 P0=LEDSelTable[LEDCNp]; P1=LEDCode[LEDCNp++];//输出字型码 if(LEDCNp>3) //实现轮流点亮 LEDCNp=0; }}//ucharLEDValue[4];//放置各个LED原值码 //ucharLEDCode[4];//放置各个LED字型码voidBCDtoLED(void){ uchari; for(i=0;i<4;i++) LEDCode[i]=LEDCodeTable[LEDValue[i]];}voidIntDataToLED(uintdat){ uinttemp=dat; chari; for(i=3;i>=0;i--) { LEDValue[i]=temp%10; temp/=10; }}uintSampleADC(void){ EnDACout=1; //禁止DAC接收数据 P2=0xff;//不可少,预设为高方便ADC输出// EnADCin=OFF;// StartADC=Lo;// delay(2); StartADC=Hi;//清0复位// delay(2); StartADC=Lo;//启动 delay(20); while(!ADCcomp); //等待转换完成信号 EnADCin=ON;// delay(2); tempINT=P2; //读出数据 EnADCin=OFF; returntempINT;}voidOutDAC(uintdat){ EnADCin=OFF; EnDACout=0; //允许DAC接收数据 P2=dat;// EnDACout=1; //禁止DAC接收数据}voidKeyPro(void)//按键扫瞄处理 { if(KeyRunStop) { WorkState=Free; //停止 // WorkLED=~WorkLED; //测试之用 return; } else { if(!KeySet) { WorkSta
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 住人活动房租赁合同
- 广告服务代理合同协议书
- 土石方开挖工程合同
- 建筑施工单项承包合同
- 施工合同土方工程施工合同
- 销售秧苗合同
- 变电站工程施工合同
- 担保补充合同协议书
- 书法培训合同协议
- 工地劳务合同协议
- 2022-2023学年人教版(2019)选择性必修第二册 Unit 4 Journey Across a Vast Land Using Language-Listening课件(26张)
- 电力电缆状态检修实施细则
- ICD-O-3形态学编码汇总
- 第4期一文打尽xps图谱分析教程及在各领域的应用avantage操作指南
- APQP培训试习题(含答案)
- 公司流程文件管理规范
- 防雷安全管理制度(责任制)
- 平原东站维修工区轨道车库施工组织设计
- IEC61400-3海上风力发电机组设计要求-中文版
- 在教学中如何调动学生的学习积极性
- 危险源风险告知卡(高清版)
评论
0/150
提交评论