1. 基于单片机的四点位水位控制与报警系统设计
点击链接下载protues仿真资料:https://download.csdn.net/download/m0_51061483/92081502
1.1 系统功能概述
在工业控制、农业灌溉、生活供水以及水箱储液系统中,水位监测与自动控制是保障系统安全稳定运行的重要环节。传统水位控制方式多依赖机械浮球或人工观察,存在精度低、响应慢、自动化程度不足等问题。
本设计提出一种基于单片机的四点位水位控制与报警系统,通过多点光电式水位检测与数字信号处理,实现对水位状态的分级监测与自动控制。系统通过四个关键水位点对水位进行分段判断,并结合加水控制与报警机制,实现水位自动调节与安全保护功能。
系统主要功能如下:
(1)采用四组光电式液位传感器实现多点水位检测;
(2)通过ADC0832对模拟信号进行采集与转换;
(3)单片机通过P1.0~P1.3读取水位状态;
(4)实现四级水位分段控制逻辑;
(5)使用三位七段数码管显示水位状态与报警信息;
(6)实现上限报警与下限报警双重保护机制;
(7)实现自动加水控制与停止控制功能;
(8)系统运行稳定,适用于多种水位控制场景。
2. 系统总体设计方案
2.1 系统结构组成
本系统采用模块化设计结构,主要包括以下几个部分:
- 单片机控制模块
- 四点位水位检测模块
- ADC0832模数转换模块
- 七段数码管显示模块
- 加水控制执行模块
- 声光报警模块
- 电源管理模块
系统通过四个水位检测点获取不同高度的水位信息,并由单片机进行逻辑判断,实现自动控制与报警功能。
3. 系统电路设计
3.1 单片机最小系统设计
单片机作为系统核心控制单元,负责数据采集、逻辑判断与控制输出。
3.1.1 时钟电路设计
系统采用11.0592MHz晶振作为时钟源,保证系统运行稳定性。晶振两端并联30pF电容,用于稳定振荡频率,提高系统抗干扰能力。
3.1.2 复位电路设计
复位电路采用RC上电复位与手动复位按键组合方式,确保系统上电自动初始化,并具备人工复位功能,提高系统可靠性。
3.1.3 电源电路设计
系统采用5V直流供电,并通过稳压芯片进行电压稳定处理。在电源输入端加入滤波电容与去耦电容,降低水泵及继电器工作时产生的干扰。
3.2 四点位水位检测模块设计
该模块是系统的核心感知部分。
3.2.1 传感器结构
每个水位检测点由:
组成光电检测对。
3.2.2 工作原理
当水位达到某一高度时,光路被水体遮挡或反射变化,从而改变光敏三极管导通状态,输出电平信号。
水位上升 → 光路变化 → 光电管导通 → 输出高电平
3.2.3 四点分布逻辑
四个检测点分别表示:
- 第四点:水位下限
- 第三点:自动加水线
- 第二点:停止加水线
- 第一点:水位上限
3.3 ADC0832模数转换模块设计
由于部分传感器输出为模拟信号,因此采用ADC0832进行转换。
3.3.1 工作原理
ADC0832通过逐次逼近方式将模拟信号转换为8位数字信号。
模拟信号 → ADC0832 → 数字信号 → 单片机
3.3.2 接口方式
ADC0832采用串行通信方式,与单片机连接引脚少,适合嵌入式系统应用。
3.4 七段数码管显示模块设计
系统采用三位七段LED显示器用于显示水位状态。
3.4.1 显示内容设计
显示内容包括:
- 当前水位等级
- 加水状态
- 报警状态
示例显示:
P1: OK
P2: RUN
P3: LOW
3.4.2 显示驱动方式
采用动态扫描方式进行显示,提高显示效率并减少IO占用。
3.5 加水控制执行模块设计
该模块用于控制水泵或电磁阀。
3.5.1 控制逻辑
- 水位低于第三点 → 启动加水
- 水位高于第二点 → 停止加水
3.5.2 执行结构
采用继电器驱动水泵,实现强电控制与弱电隔离。
3.6 声光报警模块设计
用于水位异常提示。
3.6.1 报警条件
- 水位高于第一点 → 上限报警
- 水位低于第四点 → 下限报警
3.6.2 报警方式
- 蜂鸣器持续鸣响
- LED闪烁提示
3.7 电源管理模块设计
系统采用稳定5V供电。
主要包括:
- 稳压模块
- 滤波电路
- 抗干扰设计
4. 系统程序设计
4.1 软件总体设计
系统软件采用模块化结构设计,主要包括:
- 水位采集模块
- 状态判断模块
- 加水控制模块
- 报警控制模块
- 数码管显示模块
- ADC采集模块
系统运行流程如下:
系统初始化
↓
水位采集
↓
ADC转换
↓
状态判断
↓
控制输出
↓
报警判断
↓
数据显示
↓
循环执行
4.2 主程序设计
主程序负责系统整体调度。
void main()
{
System_Init();
while(1)
{
Water_Read();
State_Check();
Pump_Control();
Alarm_Check();
Display_Run();
}
}
4.3 水位采集程序设计
读取四个水位点状态。
void Water_Read()
{
P1_Level1 = P1_0;
P1_Level2 = P1_1;
P1_Level3 = P1_2;
P1_Level4 = P1_3;
}
4.4 状态判断程序设计
根据水位判断系统状态。
void State_Check()
{
if(P1_Level1 == 1)
High_Alarm = 1;
if(P1_Level4 == 0)
Low_Alarm = 1;
}
4.5 加水控制程序设计
控制水泵运行。
void Pump_Control()
{
if(P1_Level3 == 0)
Pump = ON;
if(P1_Level2 == 1)
Pump = OFF;
}
4.6 报警控制程序设计
void Alarm_Check()
{
if(High_Alarm || Low_Alarm)
{
BEEP = 1;
LED = ~LED;
}
else
{
BEEP = 0;
}
}
4.7 数码管显示程序设计
void Display_Run()
{
Seg_Display(P1_Level1,0);
Seg_Display(P1_Level2,1);
Seg_Display(P1_Level3,2);
}
4.8 ADC采集程序设计
unsigned char ADC_Read()
{
Start_ADC0832();
return ADC_Value;
}
4.9 延时控制程序设计
void DelayMs(int ms)
{
int i,j;
for(i=ms;i>0;i--)
for(j=110;j>0;j--);
}
5. 系统运行过程分析
系统上电后,单片机首先完成初始化操作,随后进入水位检测循环。四个水位检测点实时反馈水位状态,通过ADC0832转换后送入单片机进行处理。当水位低于第三检测点时,系统自动启动水泵进行加水;当水位上升至第二检测点时,自动停止加水。当水位超过第一检测点时触发上限报警;当水位低于第四检测点时触发下限报警。同时,三位数码管实时显示当前水位状态与系统运行信息,使用户能够直观掌握水位变化情况。整个系统通过闭环控制实现水位自动调节与安全保护。
6. 系统总结
本设计基于单片机控制技术,结合四点位光电水位检测与ADC0832转换模块,实现了一种具有分级控制与双重报警机制的智能水位控制系统。系统通过多点检测实现水位精确分段控制,并结合自动加水与报警机制,提高了系统的自动化程度与安全性。整体结构简单、可靠性高、扩展性强,具有良好的工程应用价值与实际推广意义。
119