任务名称
2021年_K题:照度稳定可调LED台灯
任务要求
难度

一 任务

设计并制作一个照度稳定可调的 LED 台灯和一个数字显示照度表。调光台灯由 LED 灯板和照度检测、调节电路构成,如图 1 所示。

二 要求

1.基本要求
(1)数字显示照度表由电池供电,相对照度数字显示不少于 3 位半,不需照度校准。数字显示照度表检测头置于调光台灯正下方 0.5 米处,调整台灯亮度,最大照度时显示数字大于 1000;遮挡检测头达到最低照度时显示数字小于 100。台灯亮度连续变化时,数显也随之连续变化。亮度稳定时,数显稳定,跳变不大于 10。数字显示照度表和调光台灯间不能有信息交换。
(2)调光台灯输入电压 Vi:直流 10V~15V,Vi 变化不影响亮度。
(3)亮度从最亮到完全熄灭连续可调,无频闪(LED 灯板供电电压纹波小于5%)。
(4)台灯供电电压为 12V 时, 电源效率(LED 灯板消耗功率与供电电源输出功率之比)不低于 90%。 

2.发挥部分
(1)将台灯调整到最大亮度,在其下方 0.5 米距离处放置一张 A4 白纸,要求白纸整个区域内亮度均匀稳定,各点照度差小于 5%。台灯的照度检测头可有多个,位于 A4 纸面以外的任何位置。
(2)用另一调至最大亮度的 LED 灯板作为测试用环境干扰光源,改变距离实现干扰光强变化。当环境光缓慢变化时,最弱最强变化时长不小于 10 秒,台灯能自动跟踪环境光的变化调节亮度,保持纸面中心照度变化不大于 5%;当环境光突变时,最弱最强变化时长不大于 2 秒,纸面中心照度突变变化不大于 10%。当环境光增强直至台灯熄灭,纸面中心照度变化不大于 10%。
(3)环境干扰光强变化对纸面照度影响越小越好。
(4)其他。

三 说明
(1)台灯结构不做限制,参赛队自行确定。
(2)供电电源用带输出电压、电流显示的可调稳压电源。
(3)现场测试所用外加干扰光源由参赛队自备。
(4)如果自制数字显示照度表不能使用,可自带成品照度表代替测试,但要扣除基本要求(1)项 20 分。

 

评审标准

参考答案

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


一、硬件设计

  1. LED灯及驱动电路

    • 可调稳压电源: 输入电压范围10V到15V,用于提供稳定的电源给LED台灯。
    • LED灯及PWM调光驱动电路: 使用PWM信号进行调光,保证在低亮度和高亮度状态下LED灯都能稳定工作。
  2. 照度检测及调节电路

    • 照度传感器(Lux传感器): 用于实时检测台灯的照度,并将其转换为电压信号Vo
    • 数字显示模块: 数字显示照度值,要求显示范围大于1000,精度为3位半。
    • 控制电路: 比如使用微控制器(如Arduino或STM32)处理照度信号并调节PWM信号驱动LED,保持照度稳定。控制器能根据亮度读数自动调节LED驱动电压,使台灯照度稳定。

二、软件设计

  1. PWM控制算法

    • 调光算法: 根据Lux传感器反馈的照度值,调整PWM占空比,实现LED亮度调节。
    • 稳态控制: 当检测到照度变动时,快速调整亮度以稳定在设定值。
  2. 数据处理和显示

    • 测量数据处理: 采集传感器数据,通过滤波算法去除噪声。
    • 显示更新: 将处理后的照度值通过数码管或LCD实时显示。

三、操作流程

  1. 硬件连接

    • 连接稳压电源、LED灯、电源滤波器、照度传感器和微控制器,保证所有电路连接正确。
  2. 初始化

    • 系统上电后,微控制器初始化各个模块,开始进行数据采集和处理。
  3. 实时检测与调节

    • 照度传感器实时采集台灯区域的照度值,微控制器根据传感器输出的电压值计算当前照度。
    • 调节PWM信号占空比,使LED灯输出的亮度保持在设定值,实现照度的稳定。
  4. 显示照度值

    • 实时将当前照度值显示在数字显示模块上,便于观察和记录。

系统框架


调光算法的核心是通过实时读取照度传感器的数据,利用反馈控制机制调节LED灯的PWM信号占空比,使其亮度稳定在期望水平。我们以Arduino为例,用C++实现该算法。

程序步骤

a. 初始化和配置 初始化硬件引脚和变量,设置PWM输出频率和初始化显示屏库。

#include <LiquidCrystal.h>

// 定义引脚
const int sensorPin = A0; // 照度传感器连接的模拟输入引脚
const int ledPin = 9; // LED灯连接的PWM输出引脚

// 定义液晶显示屏的引脚
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

// 初始化变量
int sensorValue = 0;
float desiredLux = 300.0; // 期望的照度值
float currentLux = 0.0;
int pwmValue = 0;

void setup() {
  pinMode(sensorPin, INPUT);
  pinMode(ledPin, OUTPUT);
  
  // 初始化LCD
  lcd.begin(16, 2);
  lcd.print("Loadding...");
}

b. 主循环 在主循环中,读取传感器数据,通过比例积分微分(PID)控制算法调节PWM信号,实现调光。

void loop() {
  // 读取照度传感器的原始数据值
  sensorValue = analogRead(sensorPin);
  
  // 将原始数据转换为实际的照度值
  // 例如假设传感器的输出为线性比例,最大值为1023,对应最大照度为1000lux
  currentLux = (sensorValue / 1023.0) * 1000.0;

  // 调用调光算法,基于当前照度调整PWM值
  pwmValue = calculatePWM(currentLux, desiredLux);
  
  // 将PWM输出
  analogWrite(ledPin, pwmValue);
  
  // 更新LCD显示
  lcd.setCursor(0, 0);
  lcd.print("Current Lux: ");
  lcd.print(currentLux);
  lcd.setCursor(0, 1);
  lcd.print("PWM: ");
  lcd.print(pwmValue);
  
  delay(100); // 小延迟,降低处理负荷
}

c. 调光算法 使用PID算法进行控制,确保照度值稳定在期望值。

// PID算法的参数
float Kp = 2.0;
float Ki = 0.5;
float Kd = 1.0;

float previousError = 0;
float integral = 0;

int calculatePWM(float currentLux, float desiredLux) {
  // 计算误差值
  float error = desiredLux - currentLux;

  // 积分和微分
  integral += error;
  float derivative = error - previousError;

  // 计算PID控制量
  float output = Kp * error + Ki * integral + Kd * derivative;

  // 更新前一个误差
  previousError = error;
  
  // 将控制量转换为PWM输出值,限制在0-255的范围内
  int pwmValue = constrain(output, 0, 255);
  return pwmValue;
}

将以上部分结合即为完整的调光控制算法,实现LED台灯照度的稳定控制。

通过上述代码实现了对LED照度的稳定控制,利用PID算法自动调节PWM信号,确保照度持续稳定在期望值。这种方法方便集成到各类照度控制项目中,具有较高的实际应用价值。


本题考察知识点

本设计考察了LED调光电路的设计、照度检测、PWM控制、数据采集和处理,以及数字显示模块的应用,确保台灯在不同照度水平下保持稳定,且在复杂环境中能够快速响应变化。这涉及硬件电路设计和控制算法的实现。

硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2024 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号