任务名称
2009年_I题:模拟路灯控制系统【高职高专组】
任务要求
难度

一、任务
设计并制作一套模拟路灯控制系统。控制系统结构如图1 所示,路灯布置如图 2 所示。

 

二、要求
1.基本要求
(1)支路控制器有时钟功能,能设定、显示开关灯时间,并控制整条支路按时开灯和关灯。
(2)支路控制器应能根据环境明暗变化,自动开灯和关灯。
(3)支路控制器应能根据交通情况自动调节亮灯状态:当可移动物体 M(在物体前端标出定位点,由定位点确定物体位置)由左至右到达 S 点时(见图 2),灯 1 亮;当物体 M 到达 B 点时,灯 1 灭,灯 2 亮;若物体 M 由右至左移动时,则亮灯次序与上相反。
(4)支路控制器能分别独立控制每只路灯的开灯和关灯时间。
(5)当路灯出现故障时(灯不亮),支路控制器应发出声光报警信号,并显示有故障路灯的地址编号。

2.发挥部分
(1)自制单元控制器中的 LED 灯恒流驱动电源。
(2)单元控制器具有调光功能,路灯驱动电源输出功率能在规定时间按设定要求自动减小,该功率应能在 20%~100%范围内设定并调节,调节误差≤2%。
(3)其它(性价比等)。

三、说明
1.光源采用 1 W 的 LED 灯,LED 的类型不作限定。
2.自制的 LED 驱动电源不得使用产品模块。
3.自制的 LED 驱动电源输出端需留有电流、电压测量点。
4.系统中不得采用接触式传感器。
5.基本要求(3)需测定可移动物体 M 上定位点与过“亮灯状态变换点”
(S、B、S’等点)垂线间的距离,要求该距离≤2cm。

评审标准

参考答案

GPT-4o给出的设计方案:


一、总体设计

设计一套模拟路灯控制系统,主要包括一个控制器和两个单元采集控制器,控制器统一管理并监控路灯的操作状态,通过单元采集控制器实现路灯的开关和故障检测。

二、简单论证

系统需要实现定时开关、故障检测以及信号采集。定时功能保证路灯按计划开关,光敏传感器提供环境亮度数据,单元采集控制器采集和控制每盏路灯的状态,并将故障和工作状态上报至中央控制器。

三、重要指标的理论分析

  1. 定时功能:使用RTC模块实现准确的实时钟功能,控制路灯在指定时间开关。
  2. 环境光检测:光敏传感器采集外界光强度数据,帮助实现光控功能。
  3. 故障检测:每盏路灯的电流或电压监控,判断是否存在灯泡损坏或电路故障。
  4. 控制信号:通过单片机实现对路灯的控制,对采集的信号进行快速处理和反馈。

四、电路原理图设计要点

  1. 控制器电路

    • 包括实时钟模块(RTC),用于时间管理和定时控制。
    • MCU(如STM32),负责整体逻辑控制、数据处理和通信。
    • 接收单元数据,发送控制信息。
  2. 采集控制单元电路

    • 包含光敏电阻(LDR)或光电二极管,用于光强度测量。
    • MOSFET或继电器驱动电路,用于开关路灯。
    • 电流检测电路(如霍尔传感器或分流电阻+运放),用于故障检测。
  3. 通信电路

    • 采用I2C或RS485总线,保证多个单元采集控制器与中央控制器之间的稳定通信。

五、核心器件设计要点

  1. STM32 MCU

    • 支持多种外设接口,快速处理能力,适合实时控制。
    • 内置RTC模块,低功耗。
  2. 光敏传感器(LDR/光电二极管)

    • 高灵敏度,快速响应外界光强度变化。
    • 需进行适当的信号调理(如滤波和放大)。
  3. MOSFET

    • 低导通电阻,大电流处理能力,适合驱动大功率LED。
  4. 霍尔电流传感器

    • 高精度,非接触测量,可实现实时电流监测。

六、MCU重要功能的C代码及介绍

以下是使用STM32进行定时控制、光强检测和故障诊断的C代码示例:

#include "stm32f1xx.h"

#define LIGHT_THRESHOLD 500  // 光强度阈值
#define TIME_ON  1800        // 18:00 开灯时间
#define TIME_OFF 600         // 06:00 关灯时间

RTC_HandleTypeDef hrtc;
ADC_HandleTypeDef hadc1;
TIM_HandleTypeDef htim2;

// 实时钟初始化
void SystemClock_Config(void);
void RTC_Init(void);
void GPIO_Init(void);
void ADC1_Init(void);
void TIM2_Init(void);

// 获取当前时间
RTC_TimeTypeDef Get_Current_Time(void) {
    RTC_TimeTypeDef currentTime;
    HAL_RTC_GetTime(&hrtc, &currentTime, RTC_FORMAT_BIN);
    return currentTime;
}

// 检查是否在开灯时间范围内
uint8_t Check_Light_Time(RTC_TimeTypeDef currentTime) {
    if ((currentTime.Hours >= TIME_ON / 100) || (currentTime.Hours < TIME_OFF / 100)) {
        return 1;
    }
    return 0;
}

// 光强度检测
uint32_t Get_Light_Intensity(void) {
    HAL_ADC_Start(&hadc1);
    HAL_ADC_PollForConversion(&hadc1, HAL_MAX_DELAY);
    return HAL_ADC_GetValue(&hadc1);
}

// 检测故障
uint8_t Check_Light_Fault(void) {
    // 检测电流是否正常,假设通过ADC检测电流
    uint32_t current = Get_Light_Intensity(); // 电流模拟值
    if (current < 10 || current > 1000) {
        return 1; // 出现故障
    }
    return 0;
}

int main(void) {
    HAL_Init();
    SystemClock_Config();
    RTC_Init();
    GPIO_Init();
    ADC1_Init();
    TIM2_Init();

    RTC_TimeTypeDef currentTime;
    while (1) {
        currentTime = Get_Current_Time();
        uint32_t lightIntensity = Get_Light_Intensity();
        
        if (Check_Light_Time(currentTime) && lightIntensity < LIGHT_THRESHOLD) {
            HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_SET); // 开灯
        } else {
            HAL_GPIO_WritePin(GPIOB, GPIO_PIN_0, GPIO_PIN_RESET); // 关灯
        }

        if (Check_Light_Fault()) {
            // 处理故障,可能需要上报或报警
        }

        HAL_Delay(1000); // 延时1秒
    }
}

void SystemClock_Config(void) {
    // 配置系统时钟
}

void RTC_Init(void) {
    // 初始化RTC
}

void GPIO_Init(void) {
    // 初始化GPIO
}

void ADC1_Init(void) {
    // 初始化ADC
}

void TIM2_Init(void) {
    // 初始化定时器
}

代码介绍

  • SystemClock_Config: 配置系统时钟。
  • RTC_Init: 初始化RTC模块,实现定时功能。
  • GPIO_Init: 初始化GPIO接口,用于控制路灯的开关。
  • ADC1_Init: 初始化ADC,用于光敏传感器信号采集。
  • TIM2_Init: 初始化定时器,实现定时任务调度。

本题考察的主要知识点:

  1. 控制器设计

    • 设计包括定时功能的控制器,能够实现定时开关路灯。
    • 控制各采集控制单元并处理采集信号。
  2. 单元采集控制器设计

    • 负责光敏传感器数据的采集,实现光控功能。
    • 管理每个路灯的开关状态,并检测故障。
  3. 传感器技术

    • 使用光敏电阻或光电二极管检测外界光强度。
    • 使用电流传感器(如霍尔传感器)进行路灯工作状态监测。
  4. 功率控制与驱动电路

    • 使用MOSFET或继电器控制路灯的开关。
    • 考虑驱动电路的功率管理和保护机制。
  5. 通信技术

    • 实现多单元与控制器之间的通信,如I2C或RS485总线。
    • 保证通信的稳定与及时性。
  6. 软件编程

    • 使用MCU(如STM32)进行系统控制。
    • 编写C语言代码实现时钟功能、传感器数据采集、信号处理和故障检测。
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号