毕 业 (设 计) 论 文
题目: 基于51单片机控制的水塔
自动供水系统
系部: 电气工程与自动化系
专业: 自动化技术
班级: 电气A0701班
姓名: 李月鹏
指导教师: 陈毅朋、张慧明
山 西 综 合 职 业 技 术 学 院
摘 要
微型计算机SCMC,简称单片机,又称单片微控制器,它不是完成某一个逻辑功能
的芯片,而是把一个计算机系统集成到一个芯片上。这种计算机的最小系统只用了一
片集成电路,可进行简单运算和控制。虽然单片机只有一个芯片,但无论从组成还是
从功能上看,它已具备了计算机系统的属性,是一个简单的微型计算机。
单片机以其体积小、功能全、价格优等种种优势充斥着整个市场。现在,单片机
的使用领域已十分广泛,如智能仪表、实时工控、导航系统、家用电器等。单片机开
发出的各种产品遍布于我们日常生活中的每个角落。
为了加深对单片机智能型控制器的了解,经过综合分析,本次设计最终选取了由
51单片机控制的智能型液位控制器作为研究项目,本文对单片机水塔水位控制系统
进行了整体设计,完成了单片机水塔水位控制系统硬件接线图和流程图以及单片机内
部控制程序设计,并完成了开发板模拟仿真过程。通过此次设计过程,自己在分析问
题、解决问题方面的能力得到了很大程度的提高。
关键词:
MCS-51单片机 液压传感器 AD转换 水塔水位检控
目 录
引言 ................................................................... 3
1、系统设计方案比较及论证 .............................................. 3
2、系统原理框图 ........................................................ 4
3、工作原理 ............................................................ 4
4、硬件设计 ............................................................ 4
4.1 STC89C52RC单片机简介 ................................................................................... 4
4.2 锁存器(74HC573)简介 ...................................................................................... 5
4.3 ADC0804简介 ..................................................................................................... 6
4.4 单片机与继电器及蜂鸣器的接口电路 ............................................................ 7
4.5 井中缺水信号检测电路 ..................................................................................... 8
4.6 压力传感器介绍 ................................................................................................ 9
4.7 LCD1602液晶显示屏接线图及其引脚功能图 .............................................. 10
4.8 开关电源部分 ................................................................................................... 10
5、软件设计 ........................................................... 12
5.1 程序流程图 ....................................................................................................... 12
5.2 程序流程图解析 ............................................................................................... 13
6、实验仿真结果 ....................................................... 13
7、结束语 ............................................................. 13
致谢 .................................................................. 14
附 录 ................................................................ 15
附录1 PCB原理图 .................................................................................................. 15
附录2 C程序
.......................................................................................................................... 16
参考文献 .............................................................. 26
基于51单片机控制的水塔自动供水系统
山西综合职业技术学院 李月鹏
引言
水塔供水的主要问题是塔内水位应始终保持在一定范围,避免“空塔”、“溢
塔”现象发生。目前,控制水塔水位方法较多,其中较为常用的是由单片机控制实现
自动运行,使水塔内水位保持恒定,以保证连续正常地供水。实际供水过程中要确保
水位在允许的范围内浮动,应采用水压监测来控制水位。首先通过压力传感器实时检
测水压,测量水位变化,再变送成电压信号传回单片机,由单片机执行内部控制程序
指令,从而控制水泵电动机,保证水位在正常范围内变化。为此,这里给出以STC
公司的STC89C52RC单片机为核心器件、以压力传感器为检测原件、通过ADC0804芯
片为信号转换原件的水塔水位检测控制系统仿真设计,实现水位的自动检测控制、电
机故障检测和报警等功能,通过在51单片机实验开发板上实际仿真,实验结果表明:
该系统具有良好的检测和控制功能,实用性很强。
1 系统设计方案比较及论证
对于液位进行控制的方式有很多,而应用较多的主要有2种,一种是通过简单的
机械控制装置来实现,而另一种是由复杂的控制器来控制。两种方式的实现简介如下:
(1)简单的机械式控制方式。其常用形式有浮标式、电极式等,这种控制形式的
优点是结构简单,成本低廉。存在问题是精度不高,不能进行数值显示,另外很容易
引起误动作,且只能单独控制,与计算机进行通信较难实现。
(2)复杂控制器控制方式。这种控制方式是通过安装在水塔出口管道上的压力传
感器来把出口水压变成标准工业电信号的模拟信号,再经过前置放大、A/D转换模
块变换成数字信号传送到单片机中,而后经单片机运算和给定参量的比较,进行PID
运算,得出调节参量;最后经由D/A变换给调压、变频调速装置输入给定端,控制
其输出电压变化,来调节电机转速,以达到控制水箱液位的目的。
针对上述2种控制方式,以及设计需达到的性能要求,这里选取第二种控制方式,
同时考虑到成本问题需要把PID控制去掉。最终形成的方案是,利用单片机为控制核
心,设计一个对水塔水位能进行自动监控的工控系统。根据监控对象的特征,要求实
时检测水塔的液位高度,并与开始预设定的上、下限值做比较,由单片机控制固态继
电器的开断进行液位的调整,最终达到液位的预设定值范围内。检测值若高于上限设
定值时,要求报警,同时断开继电器,使水泵停止上水;检测值若低于下限设定值,
要求报警,同时开启继电器,控制水泵开始上水。现场在LCD1602液晶屏上实时显示
测量值,从而实现对水箱液位的自动监控。 在功能上,本设计还预留了两个调参按
键,通过这两个按键可以自由设定水塔内水位的上下限值,以此来实现人工可控功能。
2 系统原理框图
液压传感器A/D0804转换LCD显示
井中缺水传感检测
STC89C52RC
蜂鸣报警
菜单按键输入
水泵电磁阀
图1 系统原理框图
3 工作原理
基于51单片机实现液位控制的控制器是以STC89C52RC芯片为核心,由键盘、
LCD1602液晶显示、ADC0804模数转换、液压传感器、开关电源、蜂鸣报警、电磁继
电器等部分组成。工作过程如下:水塔液位发生变化时,引起水塔中液压传感器的输
出电压值变化,即把压力变化量转化成电压信号;该信号经过运算放大电路放大后变
成幅度为0~5 V标准信号,送入A/D转换器,A/D转换器把模拟信号量变成数字
信号量,再由单片机进行实时数据采集,并进行处理,根据设定要求控制输出,同时
由液晶屏显示液位高度。通过键盘能够自由设置水位上下限值。该系统控制器的最大
特点是可直观地显示水位占水塔容积的百分量,并可任意控制水位上下限高度。
4 硬件设计
液位控制器的硬件主要包括由单片机、液压传感器(带变送器)、键盘电路、液晶
显示电路、A/D转换器和输出控制电路等。
4.1 STC89C52单片机简介
单片机采用的是由STC公司生产的双列40脚STC89C52RC芯片。STC公司生产的
STC89C52RC单片机,是一款性价比非常高的单片机,普通用户可完全将其当作一般的
51单片机来使用,高级用户可使用其扩展功能。 STC公司的单片机内部资源比起来
ATMEL公司的单片机要丰富的多,它内部有1280字节的SRAM、8-64K字节的内部程
序存储器、2-8K字节的ISP引导码、除P0-P3口外还多出了P4口(PLCC封装)、片内
自带8路8位AD(AD系列),片内自带EEPROM、单片机内自带看门狗、双数据指针等。
目前STC公司的单片机在国内市场上的占有率与日俱增。其中在这里我们把P0口连
接LCD1602液晶显示屏;P1口用于A/D转换; P2口用于控制电磁阀、蜂鸣报警和
键盘输入;P3口用于读写控制和中断等。下图是STC89C52RC单片机管脚图。
图2 STC89C52RC单片机管脚图
4.2 锁存器(74HC573)简介
锁存器,顾名思义,就是把输入端的数据锁存(或送出)到输出端,如下图所示,
第11角(锁存端)为高电平的时候,右边D0-D7的输入与左边Q0-Q7的输出是直通
的,就是说,输入端是什么电平,输出端就是什么电平,可以把它当作不存在。当第
11角为低电平的时候,左右两端就被断开了,无论输入端怎么变化,输出端都不会
变化,当第11角由低电平变为高电平的一瞬间,输入端的数据立刻被传送到输出端,
并且在11角保持为高电平期间,输出端数据始终的输入端数据相同,如果此时我们
再次把第11角设置为低电平,那么以后当输入端无论再怎么变化,输出端都不会变
化而是保持刚才第11角在下降沿(由高电平到低电平跳变)之间时输入端的值,这
样就达到了锁存数据的目的,这也就是所谓的总线设计思路,一个8位的数据线加一
个锁存器后就可以扩接多个元件,当选通哪个元件的片选信号,就送数据给那个元件。
图3 74HC573管脚图
4.3 ADC0804简介
ADC0804是8位全MOS中速A/D 转换器,它是逐次逼近式A/D 转换器,片内有
三态数据输出锁存器,可以和单片机直接接口。单通道输入,转换时间大约为100us。
ADC0804 转换时序是:当CS=0 许可进行A/D 转换。WR由低到高时,A/D开始转换。
CS与WR同时有效时启动A/D转换,转换结束产生INTR 信号(低电平有效),可供
查询或者中断信号。在CS和RD 的控制下可以读取数据结果。在使用时可选择中断、
查询和延时等待3种方式编制A/D转换程序。本实验没有使用INTR信号,而是采用
了延时等待的方式,以便把中断口留给LCD1602液晶显示屏接线使用。A/D转换电
路在控制器中起主导作用,用它来将液压传感器输出的模拟电压信号转换成单片机能
处理的数字量。下图是A/D转换部分原理图,在接线时先要经过运算放大器和分压
电路把传感器输出的电流信号转换成电压信号,然后输入到A/D转换器。由于实际
条件较为有限,在此暂时由电位器来代替模拟液压传感器传回的电压信号量。
图4 ADC0804与单片机接线图
4.4 单片机与继电器及蜂鸣器的接口电路简介
采用光电耦合器的开关量输出电路如下图所示。+5V电源为单片机电源,+24V
电源为开关量输出电源,两个电源是隔离的。当单片机输出端口输出高电平时,经与
非门电路,A点为低电平,经光耦器件使驱动晶体管V导通,出口继电器J得电吸合。
当输出端输出低电平时,经与非门电路,A点输出高电平,经光耦器件使V截止,J
释放。以此来控制水泵执行运行或停止工作。
图5 单片机与继电器接口电路原理图
说明:P2.5口接的J,是为了判断接触器是否吸合,从而判知水泵是否得电,以
此来检测配合完成单片机内部程序的运行。也就是说程序流程图上的“判断水泵的前
一个工作状态”就是通过此处的接触器常开触点J的通断来判断的。
图6 单片机与蜂鸣器接口电路原理图
4.5
井中缺水信号检测电路
图7 井中缺水信号检测电路
说明:通过井中的两电极是否导通来判断井中是否缺水,当井中水位过低、不足
以淹没两检测电极,则P2.0口会检测到一个低电平输入信号,单片机可判知井中缺水,
并作出相应的动作指令,如缺水报警、水泵停机等紧急动作。
4.6 压力传感器介绍
经过市场及网上实际调查发现,目前的液压传感器价格普遍偏高,多为高规格工
业用品。为实现低价位高功能,在此我们通过气压传感器改制了一个液压传感器。同
样可以满足实际要求。传感器使用SY一9411L—D型变送器,它内部含有1个压力传感
器和相应的放大电路。该压力传感器是美国SM公司生产的555—2型OEM压阻式压力传
感器,其有全温度补偿及标定(O~70℃),传感器经过特殊加工处理,用坚固的耐高
温塑料外壳封装。其引脚分布如图3所示。1脚为信号输出(一);2脚为信号输出(一);
3脚为激励电压;4脚为地;5脚为信号输出(+);6脚为信号输出(+)。
在水塔底部安装1根直径为5 mm的软管,一端安装在水塔底部;另一端与传感器
连接。水塔水位高度发生变化时,引起软管内气压变化,然后传感器把气压转换成电
压信号,输送到A/D转换器。
图8 SY-9411L-D型变送器引脚结构图
4.7 LCD1602液晶显示屏接线图及其引脚功能图
图9 LCD1602与单片机的接线图
图10LCD1602液晶屏的各引脚功能图
4.8 开关电源部分
随着全球对能源问题的重视,电子产品的耗能问题将愈来愈突出,如何降低其待
机功耗,提高供电效率成为一个亟待解决的问题。传统的线性稳压电源虽然电路结构
简单、工作可靠,但它存在着效率低(只有40% -50%)、体积大、铜铁消耗量大,
工作温度高及调整范围小等缺点。为了提高效率,人们研制出了开关式稳压电源,它
的效率可达85% 以上,稳压范围宽,除此之外,还具有稳压精度高、不使用电源变压
器等特点,是一种较理想的稳压电源。正因为如此,开关式稳压电源已广泛应用于各
种电子设备中,本着节能环保、电能高效利用的原则,本设计选用了开关电源为整个
模块供电。下面是对开关电源基本原理的简单介绍。
1 开关式稳压电源的基本工作原理
开关式稳压电源接控制方式分为调宽式和调频式两种,在实际的应用中,调宽式
使用较多,在目前开发和使用的开关电源集成电路中,绝大多数为脉宽调制型。因此
下面就主要介绍调宽式开关稳压电源。调宽式开关稳压电源的基本原理可参见下图。
图11 调宽式开关稳压电源的基本原理
对于单极性矩形脉冲来说,其直流平均电压Uo取决于矩形脉冲的宽度,脉冲越宽,
其直流平均电压值就越高。直流平均电压U。可由公式计算,即Uo=Um×T1/T,式中
Um为矩形脉冲最大电压值;T为矩形脉冲周期;T1为矩形脉冲宽度。从上式可以看出,
当Um 与T 不变时,直流平均电压Uo 将与脉冲宽度T1 成正比。这样,只要我们设法
使脉冲宽度随稳压电源输出电压的增高而变窄,就可以达到稳定电压的目的。
2 开关式稳压电源的原理电路
开关式稳压电源的基本电路框图如图二所示。交流电压经整流电路及滤波电路整
流滤波后,变成含有一定脉动成份的直流电压,该电压进人高频变换器被转换成所需
电压值的方波,最后再将这个方波电压经整流滤波变为所需要的直流电压。
控制电路为一脉冲宽度调制器,它主要由取样器、比较器、振荡器、脉宽调制及
基准电压等电路构成。这部分电路目前已集成化,制成了各种开关电源用集成电路。
控制电路用来调整高频开关元件的开关时间比例,以达到稳定输出电压的目的。
图12 开关电源基本电路框图
5. 软件设计
5.1 程序流程图
图13 程序流程图
5.2 程序流程图解析
1 正常工作时:
(1)假设初始时水塔中无水,经过开始、初始化程序后首先判断是否有按键键
入,如果有的话执行按键调试子程序,通过按键可以设定上限位,下限位值。设定完
成后再执行AD转换,接下来是判断一下液晶屏上是否有报警指示输出,如果有的话
就不执行显示水塔液位这一子程序,直接判断是否首次启动AD转换;否则在液晶屏
上显示通过AD转换得来的水塔水位值。下一步再判断AD转换是否是首次启动,是首
次启动就直接判断测量值是否小于预设的上限位AD值,如果此时小于上限位,再判
断是否小于下限位AD值,如果判得小于下限位则再判断井中是否有水,接着如果判
得井中有水就执行上水工作。经过一个延时程序后再执行下一次循环。
(2)有所不同的是在执行到判得检测值大于下限位时不执行上述循环,而是再
判断之前水泵的工作状态,如果之前水泵是上水状态则转到判断井中是否有水,接着
再执行上水工作,否则继续循环保持水泵停机状态。
(3)当水塔中的水高出上限位,此时执行断开继电器这一指令,让水泵停机。
到此,上水工作完成。继续循环检测,用户用水会使水塔水位低于上限值,这时再执
行判断之前水泵是否在上水状态,如果判得之前水泵没在上水状态则继续执行循环判
断,如此一来就保证了低于水位下限时水泵开始上水,并一直上水达到上限位为止。
再保持水塔水位用到低于下限位时开始打水。
2 出现故障时:
(1)当井中水位传感器检测到井中缺水时会调用报警子程序,在液晶屏上显示
“井中缺水”字样,并响起蜂鸣器,同时断开控制水泵的继电器。再执行一个长延时
子程序,等待井中积攒下足够的水后再执行上水工作。
(2)当判断AD值始终保持不变次数达到十次时,则需要再判断控制水泵的继电
器是否一直吸合,如果满足这两个条件则可判知水泵可能出现故障,这时就需要液晶
显示“水泵故障”,同时蜂鸣报警,并立即断开控制水泵的继电器。
6 实验仿真结果
根据所设计系统的软件流程图,编写相应的程序在kill软件环境下实现仿真,
并且还通过51单片机实验开发板进行了模拟实验。实验结果表明,该系统能够实现
水位检测、电机故障检测、处理和报警等功能,具有良好的检测控制功能,可移植性
和扩展性强。
7 结束语
该系统设计是基于在单片机嵌入式系统基础上而设计的,充分利用单片机强大控
制功能,该检测控制系统经过软件仿真实验和单片机实验开发板模拟实验,基本实现
了水位模拟检测、电机故障模拟检测、处理和报警等功能。进一步优化了系统软硬件
整体功能,可实时实现水塔自动控制,因此,该系统在水塔自动控制领域有着广阔的
应用前景。
致 谢
经过半个多月的匆忙准备,我们组所选的“基于51单片机控制的水塔自动供水
系统”终于小有所成。在这期间非常感谢我的导师陈毅鹏老师和张慧明老师,还有所
有培育过我的老师们!是他们悉心指导、耐心教诲下才让我逐渐发现知识的“庐山真
面目”,并从中体验到了学习研究过程中所带来的巨大乐趣。这些天我还体悟到一个
道理:任何一件伟大的事情都是由若干个细节堆砌而成的,要想取得最后的成功,那
就必须把握好中间过程的每一个细节。
同时在这里我也要感谢我的队友们,是大家的共同努力才赢得了这次小小的胜
利,团队的力量是伟大的,三人行必有我师焉。
路漫漫其修远兮,吾将上下而求索!在今后的工作学习中我会深深的记住并运用
此次获得的经验教训,相信以后的日子里在该行业领域我会有更大的收获。
附 录
附录1 PCB原理图
附录2 C程序
#include
#include
#define uchar unsigned char
#define uint unsigned int
sbit adrd=P3^7; //IO口定义
sbit diola=P2^5;
sbit dula=P2^6;
sbit wela=P2^7;
sbit BEEP=P2^3 ; //蜂鸣器驱动线
sbit LCD_RS = P3^5;
sbit LCD_RW = P3^6;
sbit LCD_EN = P3^4;
bit prence,flag;
void delay1(int ms)
{
unsigned char y;
while(ms--)
{
for(y = 0; y<250; y++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}
//检查LCD忙状态
/*lcd_busy为1时,忙,等待。lcd-busy为0时,闲,可写指令与数据*/
/***********************************************************/
bit lcd_busy()
{
bit result;
LCD_RS = 0;
LCD_RW = 1;
LCD_EN = 1;
LCD_RW = 0;
LCD_EN = 0;
_nop_();
_nop_();
P0 = cmd;
delayNOP();
LCD_EN = 1;
delayNOP();
LCD_EN = 0;
}
/***********************************************************/
/*写显示数据到LCD
/*RS=H,RW=L,E=高脉冲,D0-D7=数据。
/***********************************************************/
void lcd_wdat(uchar dat)
{
delay1(10);
LCD_RS = 1;
LCD_RW = 0;
LCD_EN = 0;
P0 = dat;
delayNOP();
LCD_EN = 1;
delay1(5);
lcd_wcmd(0x38);
delay1(5);
lcd_wcmd(0x0c); //显示开,关光标
delay1(5);
lcd_wcmd(0x06); //移动光标
delay1(5);
lcd_wcmd(0x01); //清除LCD的显示内容
delay1(5);
}
/***********************************************************/
/* 设定显示位置
/***********************************************************/
void lcd_pos(uchar pos)
{
lcd_wcmd(pos | 0x80); //数据指针=80+地址变量
}
/***********************************************************/
/*us级延时函数
/***********************************************************/
void Delay(unsigned int num)
{
while( --num );
}
/***********************************************************/
Delay(10);
wela=0; //关闭有AD片选信号锁存器的锁
//存端以防止在操作数码管时使AD的片选发生变化
for(a=20;a>0;a--) ; //需要注意的是ADC0804在写和
//读之间的时间间隔要足够长否则无法读出数据
for(a=20;a>0;a--); //这里把显示部分放这里的原
wela=1; //重新打开有AD片选信号锁存器
P1=0xff; //读取P1口之前先给其写全1
P0=0; //选通ADCS
adrd=0; //AD读使能
sl=P1; //AD数据读取赋给P1口
adrd=1;
P0=0xff; //关闭ADCS
LCD_RW=0;
deep_data[0] = sl ; //深度
TR0=1; //开中断
}
/***********************************************************
/* 数据转换与深度显示
/***********************************************************/
Disp_Temperature()
{
display[4]=deep_data[0]&0x0f;
display[0]=(display[4]*10/16)+0x30;
display[4]=((deep_data[0]&0xf0)>>4)|((deep_data[1]&0x0f)<<4);
display[3]=display[4]/100+0x30;
display[1]=display[4]%100;
display[2]=display[1]/10+0x30;
display[1]=display[1]%10+0x30;
if(display[3]==0x30) //高位为0,不显示
{ display[3]=0x20;
if(display[2]==0x30) //次高位为0,不显示
{display[2]=0x20;
};
};
lcd_pos(0x07);
lcd_wdat(display[3]); //百位数显示
lcd_wdat(display[2]); //十位数显示
lcd_wdat(display[1]); //个位数显示
lcd_wdat('.');
lcd_wdat(display[0]); //小数位数显示
lcd_wdat('%'); //显示%
}
void beep()
{
unsigned char y;
for (y=0;y<100;y++)
{
Delay(70);
BEEP=!BEEP; //BEEP取反
};
BEEP=1; //关闭蜂鸣器
Delay(25000);
}
/***********************************************************/
/* ad0804 正常显示菜单
/***********************************************************/
void Natural_Menu ()
{
/*********************************************************/
// 显示报警深度
/*********************************************************/
void Disp_deep_alarm(uchar addr,uchar num)
{ //0=TH,1=TL
display1[2]=deep_alarm[num]/100+0x30;
display1[0]=deep_alarm[num]%100;
display1[1]=display1[0]/10+0x30;
display1[0]=display1[0]%10+0x30;
lcd_pos(addr);
lcd_wdat(display1[2]); //百位数显示
lcd_wdat(display1[1]); //十位数显示
lcd_wdat(0x01); //小喇叭显示
}
el
{
lcd_pos(addr);
lcd_wdat(0x20); //清屏
};
}
/*********************************************************/
// 深度比较函数
/*********************************************************/
void deep_compare()
{
if(deep_comp >= deep_alarm[0]) //比较 TH 值
{
compare_th=1;
}
el compare_th=0;
spk(0x4e); //小喇叭闪动
beep();
count=deep_alarm[1];
}
el
{
lcd_pos(0x4e);
lcd_wdat(0x20);
}
}
/*********************************************************/
// 深度报警值闪动
/*********************************************************/
void Set_tempalarm_Flash(uchar addr,uchar num)
{
if(flag)
EA=1; ET0=1; TR0=1;
P0=0;
P2&=0x1F;
//正常显示界面
Delay(50000);
while(1)
{
Read_deep();
//读取当前温度
Delay(50000);
Disp_Temperature();
//更新当前温度
deep_compare();
//深度上下限比较
参考文献:
(1)胡寿松主编.自动控制原理.第四版.北京:科学出版社,2001年
(2)刘豹主编.现代控制理论.第二版.北京:机械工业出版社,2004年
(3)朱晓青主编.过程检测控制技术与应用.北京:冶金工业出版社,2002年
(4)李朝青编著.单片机原理及接口技术.简明修订版.北京:北京航天航空大学
出版社,1998年
(5)李广弟.单片机技术.中央广播电视大学,2001年
(6)何立民.MCS一5l系列单片机应用系统设计配制和接口.北京:北京航天大
学出版社
(7)曹文辉.实用的自动排水及水塔自动控制电路[J].中国科技信息,2006,
(6):5-6.
(8)赵利明,张广辉.水塔水位自动控制系统[J].重庆电力高等专科学校学报,
2000,(9):20-23.
目 录
第1节 引 言……………………………………………………………………………3
1.1 智能电风扇控制系统概述 ……………………………………………………3
1.2 本设计任务和主要内容 ………………………………………………………3
第2节 系统主要硬件电路设计 ………………………………………………………5
2.1 总体硬件设计 …………………………………………………………………5
2.2 数字温度传感器模块设计 ……………………………………………………5
2.2.1 温度传感器模块的组成 …………………………………………………5
2.2.2 DS18B20的温度处理方法 ………………………………………………6
2.3 电机调速与控制模块设计 ……………………………………………………7
2.3.1 电机调速原理………………………………………………………………7
2.3.2 电机控制模块硬件设计……………………………………………………8
2.4 温度显示与控制模块设计 ……………………………………………………9
第3节 系统软件设计…………………………………………………………………10
3.1 数字温度传感器模块程序设计………………………………………………10
3.2 电机调速与控制模块程序流程………………………………………………15
3.2.1 程序设计原理 ……………………………………………………………15
3.2.2 主要程序…………………………………………………………………16
第4节 结束语…………………………………………………………………………19
参考文献…………………………………………………………………………………20
基于单片机的智能电风扇控制系统
第1节 引 言
电风扇曾一度被认为是空调产品冲击下的淘汰品,其实并非如此,市场人士称,
家用电风扇并没有随着空调的普及而淡出市场,近两年反而出现了市场销售复苏的态
势。其主要原因:一是风扇和空调的降温效果不同——空调有强大的制冷功能,可以
快速有效地降低环境温度,但电风扇的风更温和,更加适合老人儿童和体质较弱的人
使用;二是电风扇有价格优势,价格低廉而且相对省电,安装和使用都非常简单。
尽管电风扇有其市场优势,但传统电风扇还是有许多地方应当进行改良的,最突
出的缺点是它不能根据温度的变化适时调节风力大小,对于夜间温差大的地区,人们
在夏夜使用电风扇时可能遇到这样的问题:当凌晨降温的时候电风扇依然在工作,可
是人们因为熟睡而无法察觉,既浪费电资源又容易引起感冒,传统的机械定时器虽然
能够控制电风扇在工作一定后关闭,但定时范围有限,且无法对温度变化灵活处理。
鉴于以上方面的考虑,我们需要设计一种智能电风扇控制系统来解决这些问题。
1.1 智能电风扇控制系统概述
传统电风扇是220V交流电供电,电机转速分为几个档位,通过人为调整电机转
速达到改变风力大小的目的,亦即,每次风力改变,必然有人参与操作,这样势必带
来诸多不便。
本设计中的智能电风扇控制系统,是指将电风扇的电机转速作为被控制量,由单
片机分析采集到的数字温度信号,再通过可控硅对风扇电机进行调速。从而达到无须
人为控制便可自动调整风力大小的效果。
1.2 设计任务和主要内容
本设计以MCS51单片机为核心,通过温度传感器对环境温度进行数据采集,从而
建立一个控制系统,使电风扇随温度的变化而自动变换档位,实现“温度高,风力大,
温度低,风力弱”的性能。另外,通过键盘控制面板,用户可以在一定范围内设置电
风扇的最低工作温度,当温度低于所设置温度时,电风扇将自动关闭,当高于此温度
时电风扇又将重新启动。
本设计主要内容如下:
① 风速设为从高到低5个档位,可由用户通过键盘手动设定。
② 当温度每降低2℃则电风扇风速自动下降一个档位。
③ 当温度每升高2℃则电风扇风速自动上升一个档位。
④ 用户可设定电风扇最低工作温度,当低于该温度时,电风扇自动停转。
第2节 系统主要硬件电路设计
2.1 总体硬件设计
系统总体设计框图如图2-1所示
键盘输入
数字温度传感模块 单片机系统 电机控制模块
温度显示
图2-1 系统原理框图
对于单片机中央处理系统的方案设计,根据要求,我们可以选用具有4KB片内
E2PROM的AT89C51单片机作为中央处理器。作为整个控制系统的核心,AT89C51内部
已包含了定时器、程序存储器、数据存储器等硬件,其硬件能符合整个控制系统的要
求,不需要外接其他存储器芯片和定时器件,方便地构成一个最小系统。整个系统结
构紧凑,抗干扰能力强,性价比高。是比较合适的方案
2.2 数字温度传感器模块设计
温度传感器可以选用LM324A的运算放大器,将其设计成比例控制调节器,输出
电压与热敏电阻的阻值成正比,但这种方案需要多次检测后方可使采样精确,过于烦
琐。所以我采用更为优秀的DS18B20数字温度传感器,它可以直接将模拟温度信号转
化为数字信号,降低了电路的复杂程度,提高了电路的运行质量。
2.2.1 温度传感器模块组成
本模块以DS18B20作为温度传感器,AT89C51作为处理器,配以温度显示作为温
度控制输出单元。整个系统力求结构简单,功能完善。电路图如图2-2所示。
系统工作原理如下:
DS18B20进行现场温度测量,将测量数据送入AT89C51的P3.7口,经过单片机
处理后显示温度值,并与设定温度值的上下限值比较,若高于设定上限值或低于设定
下限值则控制电机转速进行调整。
U1
1939
38
37
3618
35
34
33
329
21
22
23
2429
2530
2631
27
28
101
112
123
134
145
156
167
178
X1
CRYSTAL
XTAL1P0.0/AD0
XTAL2P0.3/AD3
C1C2
22p22p
RSTP0.7/AD7
P0.1/AD1
P0.2/AD2
P0.4/AD4
P0.5/AD5
P0.6/AD6
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11PSEN
P2.4/A12ALE
P2.5/A13EA
P2.6/A14
P2.7/A15
P3.0/RXDP1.0
P3.1/TXDP1.1
P3.2/INT0P1.2
P3.3/INT1P1.3
P3.4/T0P1.4
P3.5/T1P1.5
P3.6/WRP1.6
P3.7/RDP1.7
R1
R2
2.2.2 DS18B20的温度处理方法
DS18B20直接将测量温度值转化为数字量提交给单片机,工作时必须严格遵守
单总线器件的工作时序。
表2-1 部分温度值与DS18B20输出的数字量对照表
温度值/℃ 数字输出(二进制) 数字输出(十六进制)
+85℃ 0000 0101 0101 0000 0550H
+25.625℃ 0000 0001 1001 0001 0191H
+10.125℃ 0000 0000 1010 0010 00A2H
+0.5℃ 0000 0000 0000 1000 0008H
0℃ 0000 0000 0000 0000 0000H
-0.5℃ 1111 1111 1111 1000 FFF8H
-10.125℃ 1111 1111 0110 1110 FF5EH
-25.625℃ 1111 1111 0110 1111 FF6FH
-55℃ 1111 1100 1001 0000 FC90H
2.3 电机调速与控制模块设计
电机调速是整个控制系统中的一个重要的方面。通过控制双向可控硅的导通角,
使输出端电压发生改变,从而使施加在电风扇的输入电压发生改变,以调节风扇的转
速,实现各档位风速的无级调速。
2.3.1 电机调速原理
可控硅的导通条件如下:
1)阳-阴极间加正向电压;
2)控制极-阴极间加正向触发电压;
3)阳极电流I大于可控硅的最小维持电流I。
A H
电风扇的风速设为从高到低5、4、3、2、1档,各档风速都有一个限定值。在额
定电压、额定功率下,以最高转速运转时,要求风叶最大圆周上的线速度不大于
2150m/min。且线速度可由下列公式求得
VDn10
3
式中,V为扇叶最大圆周上的线速度(m/min),D为扇中的最大顶端扫出圆的直径
(mm);n为电风扇的最高转速(r/min)。
代入数据求得 1555r/min,取 =1250 r/min.又因为:
nn
55
调速比=100%70%
最低转速
最高转速
取n1=875 r/min.则可得出五个档位的转速值:
=1250r/min
n
5
=1150r/min
n
4
=1063r/min
n
3
=980r/min
n
2
=875r/min
n
1
又由于负载上电压的有效值
uu()
01
sin2
2
其中,u1为输入交流电压的有效值,α为控制角。解得:
=0° t=0ms
5
=23.5° t=1.70ms
4
=46.5° t=2.58ms
3
=61.5° t=3.43ms
2
=76.5° t=4.30ms
1
以上计算出的是控制角和触发时间,当检测到过零点时,按照所求得的触发时
间延时发脉冲,便可实现预期转速。
2.3.2 电机控制模块硬件设计
电路中采用了过零双向可控硅型光耦MOC3041 ,集光电隔离、过零检测、过零触
发等功能于一身,避免了输入输出通道同时控制双向可控硅触发的缺陷, 简化了输出
通道隔离2驱动电路的结构。所设计的可控硅触发电路原理图见图2-3 。其中RL即
为电机负载,其工作原理是:单片机响应用户的参数设置, 在I/ O 口输出一个高电
平, 经反向器反向后, 送出一个低电平,使光电耦合器导通, 同时触发双向可控硅,
使工作电路导通工作。给定时间内,负载得到的功率为:
PUI
n
N
式中: P 为负载得到的功率, kW; n 为给定时间内可控硅导通的正弦波个数; N 为给
定时间内交流正弦波的总个数; U 为可控硅在一个电源周期全导通时所对应的电压
有效值,V; I 为可控硅在一个电源周期全导通时所对应的电流有效值,A。由式(1) 可
知,当U , I , N 为定值时, 只要改变n 值的大小即可控制功率的输出,从而达到调
节电机转速的目的。
U2
1939
XTAL1P0.0/AD0
P0.1/AD1
P0.2/AD2
P0.3/AD3XTAL2
P0.4/AD4
P0.5/AD5
P0.6/AD6
P0.7/AD7RST
P2.0/A8
P2.1/A9
P2.2/A10
P2.3/A11PSEN
P2.4/A12ALE
P2.5/A13EA
P2.6/A14
P2.7/A15
P3.0/RXDP1.0
P3.1/TXDP1.1
P3.2/INT0P1.2
P3.3/INT1P1.3
P3.4/T0P1.4
P3.5/T1P1.5
P3.6/WRP1.6
P3.7/RDP1.7
38
37
3618
35
34
33
329
21
22
23
241629
2530
2631
27
28322
101
1142
123
134MOC3031M
145
156
167
178
R1
4k7
U1
U4
L2008L6
C1
27p
U3:A
4009
Zero
Crossing
R4
4k7
AT89C51
R2RL
4k7110k
图2-3 电机控制原理图
2.4 温度显示与控制模块设计
通过HD7279A控制芯片组建一个单片机键盘输入与显示模块,其中包括一个2*8
的键盘矩阵。和8段动态扫描数码管显示。与单片机通过接插件连接,可以用于系统
的控制和输出,其原理图如图2-4所示。
21111
4832
C
L
KS
C
D
I
N
D
O
U
T
I
S
E
T
U1
MAX7221
R9R10R11R12R13R14R15R16
100k100k100k100k100k100k100k100k
DDDDDDDDDDC
IIIIIIII
GGGGGGGG
76543210
8503761227513064
1121122211
P
G
F
EBA
R1
R2
200R
R3
200R
R4
200R
R5
200R
R6
200R
R7
200R
R8
200R
200R
CCCCCCCC
OOOOOOOO
MMMMMMMM
AAAAAAAA
BBBBBBBB
CCCCCCCC
DDDDDDDD
EEEEEEEE
FFFFFFFF
GGGGGGGG
HHHHHHHH
图2-4 HD7279A键盘和显示器控制模块电路原理图
第三节 系统软件设计
3.1 数字温度传感器模块程序设计
本系统的运行程序采用汇编语言编写,采用模块化设计,整体程序由主程序和子
程序构成。
图3-1 数字温度传感器模块程序流程图
如图3-1所示,主机控制DS18B20完成温度转换工作必须经过三个步骤:初始
化、ROM操作指令、存储器操作指令。单片机所用的系统频率为12MHz。根据DS18B20
初始化时序、读时序和写时序分别可编写4个子程序:初始化子程序、写子程序、读
子程序、显示子程序。
DS18B20芯片功能命令表如下:
表2 DS18B20功能命令表
命令 功能描述 命令代码
CONVERT 开始温度转换 44H
READ SCRATCHPAD 读温度寄存器(共9字节) BEH
READ ROM 读DS18B20序列号 33H
WRITE SCRATCHPAD 将警报温度值写如暂存器第2、3字节 4EH
MATCH ROM 匹配ROM 55H
SEARCH ROM 搜索ROM F0H
ALARM SEARCH 警报搜索 ECH
SKIP ROM 跳过读序列号的操作 CCH
READ POWER SUPPLY 读电源供电方式:0为寄生电源,1为外电源 B4H
主要程序如下:
…
MAIN: ;初始化
LCALL RST_DS18B20
LCALL GET_TEMPER
MOV A,20H
MOV C,08H
NOP
NOP
MOV R0, #25H
RST2:JNB P3. 7,RST3
DJNZ R0,RST2
LJMP RST4
RST3: SETB FLAG
LJMP RST5
MOV P3. 7,C
MOV R3, #25
DJNZ R3, $
SETB P3. 7
NOP
DJNZ R2,WR1
SETB P3. 7
NOP
SETB P3. 7
MOV R3, #9
READ3:
DJNZ R3,READ3
MOV C, P3. 7
MOV R3, #23
READ4:
DJNZ R3,READ4
RRC A
DJNZ R2,READ2
MOV @R1,A
INC R1
DJNZ R4,READ1
RET
3.2 电机调速与控制模块程序流程
3.2.1 程序设计原理
采用双向可控硅过零触发方式,由单片机控制双向可控硅的通断,通过改变每个
控制周期内可控硅导通和关断交流完整全波信号的个数来调节负载功率,进而达到调
速的目的。
断一次,对n进行减1计数,如果n不等于0,保持控制电平为“1”,继续打开控制
门;如n=0,则使控制电平复位为“0”,关闭控制门,使可控硅过零触发脉冲不再通
过。这样就可以按照控制处理得到的控制量的要求,实现可控硅的过零控制,从而达
到按控制量控制的效果,实现速度可调。
1)回路控制执行程序。主回路控制执行程序的任务是初始化数据存储单元,确
定电机工作参数 /,并将其换算成“有效过零脉冲”的个数;确定中断优先
n
min
n
max
级、开中断,为了保证正弦波的完整,工频过零同步中断INT0确定为高一级的中断
源。
2)断服务程序,执行中断服务程序时,首先保护现场,INT0中断标志置位,禁
止主程序修改工作参数,然后开始减1计数,判断是否关断可控硅,最后INT0中断
标志位清零,还原初始化数据,恢复现场,中断返回。(设1秒钟通过波形数N=100)
中断流程图如图3-2所示:
图3-2 电机控制模块中断响应流程图
3.2.2 主要程序
外中断INT0的部分中断响应程序如下:
ORG 0003H
INTD0:
PUSH ACC
PUSH PSW
PUSH DPH
PUSH DPL
SETB 24H.0
MOV A, 5FH
JZ TING1
DEC A
MOV 5FH,A
LJMP FAN2
TING1: …
KAI:
CLR 24H.0
JB 26H.0, KAI2
KAI2:
MOV A, 66H
结 束 语
首先,通过这次应用系统设计,在很大程度上提高了自己的独立思考能力和单片
机的专业知识,也深刻了解写一篇应用系统的步骤和格式,有过这样的一次训练,相
信在接下来的日子我们都会了,而且会做得更好。
我所写的系统主要根据目前节智能化电风扇技术的发展趋势和国内实际的应用
特点和要求,采用了自动化的结构形式,实现对电风扇转速的自动控制。
系统以单片机AT89C51为核心部件,单片机系统完成对环境温度信号的采集、处
理、显示等功能;用Protel软件绘制电路原理图和PCB电路印刷板图,由Protues
软件进行访真测试,利用MCS51汇编语言编制,运行程序该系统的主要特点是:
1)适用性强,用户只需对界面参数进行设置并启动系统正常运行便可满足不同用
户对最适合温度的要求,实现对最适温度的实时监控。
2)系统成本低廉,操作非常简单,随时可以根据软件编写新的功能加入产品。操
作界面可扩展性强,只要稍加改变,即可增加其他按键的使用功能。
本系统在当今提倡人性化设计和健康产品的环境下具有非常好的市场前景。
本设计在模拟检测中运行较好,但采样据不太稳定。功能上的缺憾是对于两个档
之间的临界温度处理不好,并且档位太少。还有待改进。
参考文献
[1] 张鑫.单片机原理及应用.电子工业出版社
[1] 明德刚.DS18B20在单片机温控系统中的应用.贵州大学学报,2006,2
[2] 黄朝民,肖明清,吴志强.单片机原理与应用.现代电子技术,2006,12
[3] 刘进山.基于MCS-51电风扇智能调速器的设计.电子质量,2004,10
本文发布于:2023-10-29 18:46:47,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/zhishi/a/169857640875536.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:毕业论文(设计):基于51单片机控制的水塔自动供水系统设计.doc
本文 PDF 下载地址:毕业论文(设计):基于51单片机控制的水塔自动供水系统设计.pdf
留言与评论(共有 0 条评论) |