基于STM32的LED台灯照度控制系统设计
2022-10-31姚强孙勤良
姚强,孙勤良
(湖州职业技术学院 机电与汽车工程学院,浙江湖州,313000)
0 引言
目前浙江湖州正在打造“全国绿色智造名城”,各行各业都在向绿色智造转型升级,因此传统智能型台灯也将逐渐被绿色智能型台灯所替代。例如张钰琛等人[1]基于Arduino设计了一款智能语音控制台灯,通过语音控制台灯的开启、关闭、闪烁和灯头抬高功能;安章顺等人[2]基于微信小程序开发了一款智能台灯,实现利用手机无线操控室内台灯的亮灭,同时可以有效控制台灯的各种颜色和亮灭的混合;陈雪娇等人[3]基于树莓派设计的智能台灯,可通过触摸屏控制LED台灯包括开关、亮度及颜色变化。上述智能台灯都是主要从用户使用便捷角度出发设计了诸多功能,未贯彻绿色智造的理念。本文主要从照度稳定和连续调光角度出发进行台灯设计,该设计不仅具有节能环保的特点,而且对人的视力保护和身心健康也具有重要意义,符合智能制造的绿色评价指标体系[4],对环境和用户的影响都是积极的。
1 系统方案设计
在充分考虑节能的前提下,选用了由低功耗单片机STM32F103C8T6单片机、PWM控制模块、OLED显示模块、BH1750照度传感器、独立按键和LED灯板组成的设计方案。应用STM32单片机定时器的比较模式生成PWM控制信号,该信号施加在PWM可控电流源模块上,控制该模块驱动LED台灯,通过最小二乘直线拟合算法[5]粗调PWM的占空比,再经过一个步距为2的占空比微调,对光照度形成精确的闭环控制,实现对LED台灯照度的连续稳定调节,系统方案如图1所示。
图1 系统设计框图
2 控制系统硬件设计
2.1 主控芯片选择及引脚分配
该设计采用STM32F103C8T6单片机作为主控芯片,STM32F103C8T6是一款32位微控制器,该单片机采用ARM Cortex-M内核,最高时钟频率可达72MHZ,封装体积小,价格与家族其他芯片相比较低、相比8位单片机性能更优,所以考虑用此芯片作为主控芯片。主控芯片引脚功能分配如表1所示。
表1 主控芯片引脚功能分配表
2.2 显示模块设计
LED台灯显示模块通过一块0.96寸OLED来实现,OLED是利用多层有机隔膜结构产生电致发光的器材,它性价比高,价格便宜。通过SPI总线和单片机进行信号传输,接口只需五个I/O即可驱动,速度更快,模块本体轻薄,功耗低,发光效率高,满足项目设计对显示技术的需求[6],如图2所示。
图2 OLED引脚接线图
2.3 PWM可控电流源模块设计
该模块采用德州仪器TPS92200D1作为恒流源控制芯片,它具有4~30V的宽电压输入范围,连续工作电流为1.5A,开关频率支持1MHz,最大占空比可达99%,支持数字输入的PWM调光和模拟输入的模拟调光。采用了多种保护措施,包括LED开路和短路保护,传感电阻器开路负载和接地短路保护,为保护LED免受过流损坏,当检测到过流时,驱动器将会被关闭并锁存。STM32的定时器工作在输出比较模式,通过在软件中修改比较参数实现PWM占空比可调。PWM可控电流源模块电路设计图如图3所示,其中PB5为单片机的PWM输出引脚。
图3 PWM可控电流源模块设计
2.4 光照度检测模块设计
光照度传感器采用BH1750,这是一款数字型照度传感器集成芯片,BH1750引出了时钟线和数据线,单片机通过IIC协议可以与BH1750模块通讯,单片机的PB6连接IIC外设的时钟线,PB7连接IIC外设的信号线[6],如图4所示。
图4 BH1750照度传感器引脚接线图
2.5 按键模块设计
按键连接的单片机引脚采用上拉输入模式,当按键断开时,单片机引脚(PA0、PA1)处于高电平状态,按键按下时输入低电平,按键可以设定LED台灯的光照度,其中KEY1和KEY2分别为增加和减小光照度,如图5所示。
图5 独立按键引脚接线图
3 控制系统软件设计
3.1 系统软件组成及其功能介绍
软件设计包含初始化程序、OLED显示程序、BH1750照度检测程序、PWM控制程序、按键检测程序和照度调节程序。初始化程序主要完成OLED驱动模块、BH1750模块、按键模块、和定时器模块的初始化工作;OLED显示程序主要是完成STM32单片机通过SPI总线和OLED通信,定时刷新OLED,显示当前照度值(Current_lx)和设定照度值(Set_lx);BH1750照度检测程序完成STM32 单片机和BH1750传感器通过IIC通信,获取台灯正下方的实际照度值;PWM控制程序的功能是完成生成占空比可调的PWM,利用STM32定时器的比较模式,通过TIM_SetCompare2函数更新PWM的占空比[7];按键模块的功能是完成照度值的设定任务,按键状态在主程序中采用查询方式获取;照度调节程序的功能是完成LED灯照度的控制功能。系统的软件控制流程图如图6所示。
图6 软件控制流程图
3.2 照度控制算法
LED台灯的光照度近似与控制信号PWM的占空比呈线性关系,PWM占空比越高,LED台灯的光照度越高。如手动设定台灯光照度值,根据线性关系可以求解得到占空比的值,利用STM32定时器的比较模式,通过TIM_SetCompare2函数更新PWM的占空比,从而实现台灯照度的调节,所以快速和准确调节PWM占空比成为照度控制的关键技术问题。STM32的定时器TIM3的PWM输出模式可产生一个由TIM3_ARR确定频率,TIM3_CCRx确定占空比的信号,PWM占空比和CCRx的关系如1式所示。
CCRx寄存器的值即为TIM_SetCompare2的参数Compare2的值,故可采用线性拟合的方法得到光照度与CCRx的函数关系。首先采集7组光照度ix和Compare2iy数据,数据如表2所示;然后利用Python3和最小二乘法对x,y进行线性拟合[8]得到的函数图像如图7所示,最后求解出光照度x与Compare2值y的函数关系如(2)式所示。
表2 无干扰源下的台灯实测光照度与TIM3参数Compare2的关系表
图7 台灯实测光照度与TIM3参数Compare2的函数关系图
照度调节算法主要由粗调和微调两部分完成。按照光照度和Compare2的值的线性关系可得到(3)式,其中Set_lx为设定光照度值,Current_lx为实测光照度值。
粗调部分根据(4)式来完成
利用粗调算法反推出参数Compare2的粗大值,实现快速让光照度调整到设定光照度值附近,然后用步进的方式在主循环中进行微调,最终实现光照度调节的目的,因为采用的是闭环控制,如若环境中有干扰光源存在,该系统依然可以实现较好的控制。该算法相对于单纯使用微调算法,调整速度更快,满足对实时性要求较高的场合。
4 系统测试方案及结果
为测试台灯的设计效果,设计了相应的测试方案,LED台灯样机如图8所示。分别从台灯照度的连续性、稳定性、抗干扰性和节能性四方面进行测试,测试结果如表3所示。
表3 LED台灯测试结果
图8 LED台灯样机
连续性:台灯从亮度最高直至熄灭,整个过程中,台灯有无频闪。
稳定性:将台灯调整到固定的照度值,观察10s内台灯照度值的波动范围。
抗干扰性:将台灯调整到最大照度值,加入环境干扰光源,干扰源的光照度与台灯光照度相近。干扰源的扰动分为两种情况:干扰源调至照度最大,10s之内从台灯上方逐渐靠近台灯,直至台灯熄灭,在此过程观察台灯照度值的波动;干扰源在2s之内突然加入,观察台灯照度的波动。从上述测试结果可以看出,该台灯的照度稳定性已经可以完全达到日常使用的需求。
节能性:台灯供电电压为12V 时,LED 灯板消耗功率与供电电源输出功率之比。
5 结语
本文基于STM32F103C8T6芯片设计了一款符合绿色智造性指标的LED台灯,该台灯主要分为硬件设计和软件设计。首先硬件设计包含主控芯片、OLED照度显示、BH1750照度检测和PWM控制;然后软件设计主要包含各个硬件模块的驱动程序设计和LED台灯照度调节算法设计及实现,其中照度调节算法分为粗调和微调两部分,粗调算法采用线性拟合的方法得到比例系数,应用比例系数乘以设定照度和实测照度之间的差值就可以得到PWM占空比的调整值,微调算法采用步距为2进行调整PWM占空比,步距为2是综合考虑LED台灯性能的影响因素,经过实验最终确定的。微调算法步距过大,LED台灯照度波动比较大,稳定性差;微调算法步距过小,照度调整到稳定的时间变长;最后通过设计的测试方案,从照度连续性、稳定性、抗干扰性和节能性四个方面验证了LED台灯照度是稳定且连续可调的,可以满足用户的日常使用需求,未来还将该台灯的设计理念应用于《绿色智造技术应用》课程中的项目化教学中[9],有利于帮助学生树立绿色智造意识。