1. 项目概述:STM32智能台灯控制系统设计
这个项目是我去年为一个创客空间开发的智能台灯控制系统,核心是用STM32单片机实现PWM调光、人体感应和环境光检测的智能联动。相比市面上简单的触摸台灯,这套系统最大的特点是实现了真正的"无感智能控制"——你完全不需要手动操作,台灯就能根据是否有人、环境亮度自动调节到最舒适的亮度。
系统硬件架构非常清晰:STM32F103C8T6作为主控(性价比极高的Cortex-M3内核),搭配LCD1602显示屏做人机交互,HC-SR505热释电传感器检测人体活动,光敏电阻采集环境光照,通过MOS管驱动LED灯带实现PWM调光。无线模块是可选项,我测试过ESP8266 WiFi模块和HC-05蓝牙模块都能稳定工作。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心功能实现细节
2.1 硬件选型与电路设计
主控选择STM32F103C8T6是经过深思熟虑的:
- 72MHz主频完全满足实时控制需求
- 内置PWM发生器支持多通道输出
- 12位ADC精度足够光敏采样
- 价格仅10元左右,性价比极高
人体检测用的HC-SR505需要注意:
- 检测角度约120度,安装时需朝向使用者位置
- 探测距离3米内可调,建议设置为1.5米
- 输出高电平触发,需接10K上拉电阻
光敏电路设计要点:
- 使用GL5528光敏电阻,光照特性曲线平滑
- 分压电阻建议选择10K精密电阻
- 需加0.1uF电容滤波,避免ADC采样波动
LED驱动部分:
- 选用IRF540N MOS管,最大承受33A电流
- 栅极必须加10Ω限流电阻保护STM32
- 并联续流二极管防止反电动势损坏
2.2 PWM调光算法实现
调光核心是TIM3的PWM输出配置:
c复制// PWM频率设置为1kHz (72MHz/(719+1)/(99+1))
TIM_TimeBaseStructure.TIM_Period = 99;
TIM_TimeBaseStructure.TIM_Prescaler = 719;
TIM_OCInitStructure.TIM_Pulse = 50; // 初始50%占空比
亮度调节采用指数曲线算法,更符合人眼感知:
c复制// 将线性0-10档转换为PWM占空比
uint16_t levelToDuty(ui
