基于单片机的自动路灯监控系统设计

1. 系统概述

点击链接下载protues仿真设计资料:https://download.csdn.net/download/m0_51061483/92081507

基于单片机的自动路灯监控系统是一种集时间控制、光照检测、智能照明控制和状态显示于一体的智能照明管理系统。随着城市道路照明智能化水平的不断提高,传统路灯采用人工控制或固定时间控制方式已经难以满足节能与智能管理需求。因此,本系统利用单片机作为核心控制器,通过光敏传感器实时检测环境光照强度,结合时钟模块实现定时控制功能,根据环境变化自动调节路灯工作状态,从而达到节约能源、提高管理效率和延长设备使用寿命的目的。

系统采用模块化设计结构,主要由单片机控制模块、光照检测模块、时钟模块、数码管显示模块、按键设置模块、LED照明控制模块以及报警与状态指示模块组成。系统能够实时显示时间与光照百分比信息,并支持用户自主设定光照上下限阈值和路灯工作时间段。当环境光照低于设定下限时,系统自动开启路灯;当光照高于设定上限时,系统自动关闭路灯。同时,为保证照明控制的合理性,系统采用光照优先控制策略,即光照条件优先于时间条件进行判断,使路灯能够更加准确地适应实际环境变化。

该系统具有自动化程度高、控制灵活、功耗低、运行稳定等优点,可广泛应用于道路照明、公园照明、小区照明以及校园照明等场所。

2. 系统功能设计

2.1 时间显示功能

系统采用时钟模块记录当前时间信息,通过数码管动态显示当前分钟和秒钟数据,使用户能够实时查看系统运行时间状态。

显示内容包括:

  • 当前分钟数
  • 当前秒钟数
  • 设置时间参数
  • 开灯时间段参数

例如:

text 复制代码
12:35

通过动态扫描方式实现数码管显示,保证显示效果清晰稳定。


2.2 光照检测与显示功能

系统利用光敏电阻检测环境光照变化,通过ADC模块采集光照模拟电压信号,并转换为数字量供单片机处理。

系统将光照强度转换为百分比形式显示:

text 复制代码
LIGHT:75%

用户可通过按键切换显示模式,实现时间显示与光照显示之间的自由切换。

光照百分比计算公式如下:

text 复制代码
Light_Percent = ADC_Value ×100 /1023

通过该方式能够直观反映当前环境亮度情况。


2.3 自动开灯控制功能

系统支持设置路灯自动开启时间段。

例如:

text 复制代码
开启时间:18:00
关闭时间:06:00

当系统时间进入设定时间范围后,自动点亮LED路灯。

控制逻辑如下:

text 复制代码
当前时间 ∈ 开灯时间段
↓
满足
↓
开启路灯

该功能能够实现无人值守自动照明管理。


2.4 光照上下限设置功能

为了使路灯能够适应不同天气和季节变化,系统允许用户设置光照上下限参数。

例如:

text 复制代码
光照下限:30%
光照上限:70%

控制规则如下:

  • 光照低于30%时开启路灯
  • 光照高于70%时关闭路灯

判断逻辑:

text 复制代码
Light < Low_Limit
→ 开灯

Light > High_Limit
→ 关灯

该功能提高了系统的智能化程度。


2.5 灯光控制优先级功能

系统采用双重控制策略:

  • 光照控制
  • 时间控制

其中光照控制优先级最高。

例如:

当前时间为白天,但由于暴雨天气导致环境亮度急剧下降:

text 复制代码
时间条件:不开灯
光照条件:开灯

系统最终执行:

text 复制代码
开灯

优先级判断流程:

text 复制代码
先判断光照
      ↓
满足开灯条件
      ↓
立即开灯
      ↓
忽略时间判断

该设计更加符合实际应用需求。

3. 系统总体方案设计

整个系统采用单片机集中控制方案。

系统主要组成如下:

  1. 单片机最小系统
  2. 光敏检测模块
  3. 时钟模块
  4. 数码管显示模块
  5. LED照明模块
  6. 按键输入模块
  7. 电源模块

系统工作流程如下:

text 复制代码
系统上电
   ↓
初始化模块
   ↓
读取时间
   ↓
采集光照
   ↓
按键检测
   ↓
判断控制策略
   ↓
控制LED状态
   ↓
更新显示
   ↓
循环运行

4. 系统电路设计

4.1 单片机最小系统设计

单片机作为整个系统核心控制器,负责数据采集、逻辑运算、参数设置以及输出控制。

最小系统主要包括:

4.1.1 时钟振荡电路

采用晶体振荡器产生稳定系统时钟。

主要作用:

  • 提供CPU运行时钟
  • 保证定时器计时精度
  • 提高系统稳定性

常用晶振频率:

text 复制代码
11.0592MHz
12MHz

4.1.2 复位电路

用于系统启动初始化。

功能:

  • 上电自动复位
  • 手动复位
  • 异常恢复

保证系统能够正常启动运行。


4.2 时钟模块设计

系统采用时钟芯片记录时间数据。

主要功能:

  • 秒计时
  • 分计时
  • 时间存储
  • 掉电保持

单片机定期读取时间信息。

读取内容:

text 复制代码
Minute
Second

为定时开灯功能提供依据。


4.3 光敏检测模块设计

光敏电阻阻值随着光照变化而变化。

特点:

  • 光照增强阻值减小
  • 光照减弱阻值增大

经分压后形成模拟电压:

text 复制代码
Vout = Vcc × R/(R+RLDR)

单片机ADC采样后计算当前光照百分比。

功能:

  • 光照采集
  • 环境亮度判断
  • 自动开灯依据

4.4 数码管显示模块设计

系统采用数码管显示数据。

显示内容:

  • 当前时间
  • 光照百分比
  • 设置参数

显示模式如下:

text 复制代码
12:35

或:

text 复制代码
L75

采用动态扫描技术减少IO口占用。

优点:

  • 成本低
  • 显示清晰
  • 响应速度快

4.5 LED路灯控制模块设计

LED用于模拟实际路灯。

驱动方式:

text 复制代码
单片机IO口
     ↓
三极管驱动
     ↓
LED灯

功能:

  • 路灯开启
  • 路灯关闭
  • 状态指示

由于单片机驱动能力有限,因此采用三极管放大驱动电流。


4.6 按键设置模块设计

系统采用独立按键实现参数设置。

按键功能如下:

按键 功能
SET 模式切换
ADD 参数增加
SUB 参数减少
MODE 显示切换

可设置:

  • 光照上限
  • 光照下限
  • 开灯时间
  • 关灯时间

4.7 电源模块设计

系统采用5V稳压电源供电。

主要功能:

  • 单片机供电
  • 时钟模块供电
  • 显示模块供电
  • 光敏模块供电

稳压电路保证系统长期稳定运行。

5. 系统程序设计

5.1 主程序设计

主程序负责系统整体调度。

程序流程:

c 复制代码
void main()
{
    System_Init();

    while(1)
    {
        Read_Time();

        Read_Light();

        Key_Scan();

        Lamp_Control();

        Display_Update();
    }
}

5.2 系统初始化程序设计

完成硬件初始化。

c 复制代码
void System_Init()
{
    Timer_Init();

    LED_Init();

    ADC_Init();

    Display_Init();

    Key_Init();
}

初始化完成后进入主循环。


5.3 光照采集程序设计

ADC读取光照值。

c 复制代码
unsigned int Read_Light()
{
    unsigned int adc;

    adc = ADC_Read();

    return adc;
}

转换光照百分比:

c 复制代码
LightPercent = adc*100/1023;

5.4 时间读取程序设计

读取时钟数据。

c 复制代码
void Read_Time()
{
    Minute = RTC_Read_Min();

    Second = RTC_Read_Sec();
}

获取当前时间用于控制判断。


5.5 按键扫描程序设计

检测用户操作。

c 复制代码
void Key_Scan()
{
    if(KEY_SET==0)
    {
        Mode++;
    }

    if(KEY_ADD==0)
    {
        Value++;
    }

    if(KEY_SUB==0)
    {
        Value--;
    }
}

实现参数修改功能。


5.6 路灯控制程序设计

实现优先级控制策略。

c 复制代码
void Lamp_Control()
{
    if(LightPercent < LowLimit)
    {
        Lamp = ON;
    }
    else if(LightPercent > HighLimit)
    {
        Lamp = OFF;
    }
    else
    {
        if(Time_Enable())
            Lamp = ON;
        else
            Lamp = OFF;
    }
}

实现光照优先控制逻辑。


5.7 时间段判断程序设计

判断是否处于工作时间。

c 复制代码
bit Time_Enable()
{
    if(CurrentTime>=StartTime &&
       CurrentTime<=EndTime)
       return 1;

    return 0;
}

用于辅助控制路灯状态。


5.8 数码管显示程序设计

动态刷新显示内容。

c 复制代码
void Display_Update()
{
    if(DisplayMode==TIME_MODE)
    {
        Display_Time();
    }
    else
    {
        Display_Light();
    }
}

实现显示模式切换。


5.9 LED控制程序设计

控制路灯输出。

c 复制代码
void Lamp_On()
{
    LED = 1;
}

void Lamp_Off()
{
    LED = 0;
}

完成最终执行控制。

6. 系统运行过程分析

系统启动后首先完成硬件初始化,随后读取当前时间和环境光照数据。用户可通过按键设置光照上下限和路灯工作时间段。系统实时比较当前光照与设定阈值,当光照低于下限时立即开启路灯;当光照高于上限时关闭路灯。在光照处于正常范围时,系统根据预设时间段决定是否开启照明。整个过程中数码管实时显示时间或光照百分比,用户可随时查看当前运行状态。通过光照优先策略,系统能够有效应对阴雨天气、雾霾天气以及季节变化导致的环境亮度变化,实现智能节能照明控制。

7. 系统总结

基于单片机的自动路灯监控系统结合时间控制与光照检测技术,实现了智能化路灯管理功能。系统通过光敏传感器实时监测环境光照变化,通过数码管显示时间与光照信息,并支持用户设置光照上下限及开灯时间段。采用光照优先于时间控制的策略,使系统能够更加准确地适应实际环境需求,提高照明效率并降低能源消耗。系统结构简单、成本低廉、运行稳定,具有较高的推广应用价值,可广泛应用于道路照明、园区照明、校园照明以及智慧城市建设等领域。

相关推荐
嵌入式小站1 小时前
STM32 零基础可移植教程 26:SPI Flash 保存参数,做一个掉电不丢的配置结构体
chrome·stm32·嵌入式硬件
Szime1 小时前
深智微40Gsps高速数据采集系统进入工程化阶段
科技·单片机·嵌入式硬件·fpga开发
fffzd2 小时前
STM32:OLED原理
stm32·单片机·嵌入式硬件·iic·oled·嵌入式软件
来杯@Java11 小时前
学生选课管理系统(基于springboot+vue前后端分离的项目)计算机毕业设计java
java·spring boot·spring·vue·毕业设计·maven·mybatis
清风66666612 小时前
基于单片机与DAC0832的双路波形信号发生系统设计
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业
azwsm13 小时前
电路元器件和GPIO控制器
单片机·嵌入式硬件
kebidaixu16 小时前
FreeRTOS 移植到 STM32F407VETX 记录(一)
stm32·单片机·嵌入式硬件
CSDN官方博客17 小时前
「谁说嵌入式只是调包和焊板子?」—— 2026嵌入式全栈技术征锋令
嵌入式硬件·物联网·embedding
点灯小铭17 小时前
基于单片机的数码管定时插座设计与定时开关功能实现
单片机·嵌入式硬件·毕业设计·课程设计·期末大作业