基于Arduino的“变色龙”LED灯的设计

2019-09-26 02:50:22刘相中张建文唐李生王宇廷仇怀利
照明工程学报 2019年4期
关键词:变色龙模糊控制亮度

刘相中,张建文,唐李生,王宇廷,仇怀利

(合肥工业大学电子科学与应用物理学院,安徽 合肥 230000)

引言

人们在处理不同事务时需要适宜的亮度和光色的灯光照明,在不同活动场所需要不同颜色的灯光来营造氛围。近年来,随着LED照明技术的发展,智能家居及室内照明系统解决方案不断被推出[1,2], 照明的舒适性和光色的可控性需求变得愈发重要。为研制依据环境亮度、色度而自动转变颜色的LED灯,本文设计了一种依据环境实现亮度和颜色调控的“变色龙”LED灯,其主要由颜色传感器、Arduino单片机[3]、LED发光矩阵三大模块构成。

1 “变色龙”LED灯的设计

我们采用的元件材料主要有:Arduino UNO R3主板、GY-33(TCS34725)颜色传感器、WS2812BLED发光矩阵、LCD1602A显示屏、测试用面包板、Arduino Power Shield、光敏传感器、红外接收器、红外遥控板、旋钮滑动变阻器等各1件,杜邦线、电阻若干件。设计时分别采用软件Arduino、matlab、Protues、Fritzing进行程序设计、数据处理和电路仿真绘图。

1.1 方案设计

方案实施的难点在于色度识别和颜色信息处理。色度识别能力在于传感器的颜色测量能力。GY-33工作原理是,内置照明LED发光,照射到被测物体后,返回光经过检测滤镜,通过光电积分法测算RGB的比例值,从而识别颜色。具体情况见图1。颜色信息处理需在耦合发光程序和传感器程序时需要建立控制算法,让输出光的颜色特征值与采样相吻合。输出机理为LED的PWM调制理论,通过改变方波的占空比以达到调节LED光度和颜色特征量(主波长和颜色纯度)的效果。从而起到调节三基色混色比例的作用,实现情景照明系统的混色功能[4]。

图1 颜色传感器工作机理

经过探讨,我们最终确立2套发光方案。方案一:为发光矩阵的三色驱动使用color函数,这个函数引用了三个数据,分别将模拟量输送到三色LED灯珠的三个发光核心,而这三个核心为三基色发光基点,根据格拉斯曼色光混合原理,不同基色的配比决定了总体发光颜色的色调与饱和度;方案二:通过对比色卡的CIE 1931标准色域分析,换算并建立了RGB颜色库,分析GY33的RGB数值分布特点,采用条件语句,由划定的区间进行筛选,设置了高饱和度的发光数据,从而实现对七彩色的准确识别与显示。方案一的优势在于LED呈现的色域更宽,但颜色饱和度不足。方案二的优势在于颜色的饱和度高、输出稳定,但色域识别模糊。综合两种方案,红外遥控模块的按键编码可进入对应模式的子程序中,从而实现发光模式控制。

1.2 参数设计与测试

在日光灯做背景光源的使用环境下,让LED灯呈现不同颜色,使用色度计测量其CIE 1931标准下的色品坐标,绘制典型颜色的径迹图。确立典型色品点的位置后,分析X-Y-Z系统和R-G-B系统的对应关系,这样就可以在算法中实现RGB数值的相对变化来调制颜色特征值。传感器可对光源颜色和物体颜色进行检测,依据LED灯使用环境,可进行修正算法的改良。分析离散RGB数据,由GY33颜色识别程序计算的8种关键颜色的RGB值见表1。

表1 RGB数据对比

采样前进行白平衡校正[5],依据RGB颜色库的统计分析,建立颜色判定的隶属函数,从而使用模糊控制算法[6]让采样RGB值与比色卡标定值基本相符,从而优化了LED颜色与比色卡标定颜色的匹配度。通过控制不同外界光照条件,大致分为光敏传感器完全遮挡、部分遮挡、自然日光、强光照射四个区间,通过光照度间断变化收集传感器的离散反馈数据,程序标定参数控制LED的驱动电压,从而改变LED的光强,光敏传感器程序的数值线性拟合情况如图2所示。

图2 光敏线性度测试(光照度-传感器采样值关系)

1.3 颜色识别程序设计

程序结构融汇了硬件系统的控制方法,颜色识别程序使用了PID控制,其颜色测量能力受到运行环境、系统结构和工作状态的制约。颜色信息处理与显示环节使用了模糊控制,按照模糊控制器的设计思路[6],对已经量化的R、G、B数值形成模糊集合,从而依据参数设计中的修正处理建立模糊控制规则。程序主框架分为定义,setup和voidloop三部分,如图3所示。

图3 程序设计流程图

setup可设置波特率为9600,让Arduino连接计算机从而用IDE中的串口监视器观察数据。红外遥控程序的编码译码函数会初始化,LCD显示程序自启动,同时TCS34725会进行启动判断,使用遥控按键可开启或关闭其RGB测算子程序。

loop循环中红外遥控按键可决定发光模式的选择,传感器的采样值会传递至LED发光矩阵程序,通过color函数判定采样值与真实值是否匹配,若数值相近从而进行赋值经PWM输出,若不匹配,则会先进行数值修正,再调制输出,两种方式的RGB值都会收到光敏传感器的调节。然后LCD程序会调用函数“jieshou”,功能为接收字符并显示。

利用if函数对红外编码进行判断,如果无信号则不输出,存在信号时,利用switch结构判断输出的选择。switch设置分支“CH-”按键为颜色传感器的标准读数显示(发光模式1),“CH”为扩大颜色明显程度的七彩色显示(发光模式2),“CH+”为关闭显示程序。当接收信号为“CH-”,这里我初始化发光矩阵并显示所有LED为关状态。引入while循环只要无其他信号输入就一直执行循环,读取颜色传感器的RGB并输出,从而维持LED显色随传感器的稳定变化,通过模糊控制中的条件语句。利用if与elseif嵌套来实现对于物体RGB的判断,并输出饱和度更高的相近颜色。当接收信号“CH+”按键,直接将三个变量赋值为0即为关闭所有LED。

1.4 电路设计与器件测试

由于程序结构要求,测试采用了tcs34725和LED发光矩阵。LED发光矩阵采用内置驱动电路[7],调整发光矩阵的供电电压,发现存在4.2 V的门限电压,低于门限电压会出现频闪和颜色畸变,而高于门限电压则由于已达到亮度极大值,因此几乎不变。相关实验[8]表明,通过调节占空比可以精确地实现预期的混合光。引入遥控模块和光敏电阻,接入一块LCD1602液晶屏显示发光RGB值,将Arduino Power Shield Li电池契合至主板上,程序烧录至主板后,接通电池开关即可启动,设备总体功率低于3 W。将ArduinoIDE的编译结果采用HEX文件导出二进制代码,用proteus进行电路仿真(具体情况见图4)。硬件采用PCB电路板建立主板和各模块关联,提升集成度,也有利于“变色龙”LED的封装。

图4 总成品电路示意图

1.5 设计样品

依据以上参数设置和电路设计要求,我们设计了“变色龙”LED灯样品,如图5所示。该样品灯可整体封装,外观可制成不同形状,且材质可选用新型材料[9],适用于家居照明。

图5 “变色龙”LED装置(成品模型形式)

2 “变色龙”LED灯的创新点

基于Arduino和GY33颜色传感器的“变色龙”LED灯实现了控制照明相关参数的功能,实现了颜色识别与LED发光颜色匹配的功能,可依据环境亮度通过负反馈调节以实现节能,其创新点包括:①通过编程中的参数设计与模糊控制方法,提高了传感器色度识别能力;②Arduino可智能调节LED的发光模式,可以满足不同场合或情景下的照明需求;③使用可太阳能充电的锂电池供电,实现了节能的低功耗设计。

3 结束语

我们利用颜色传感器技术和PWM调制技术设计了“变色龙”LED灯,设计了耦合各模块的控制电路,介绍了对LED发光颜色进行模糊控制的优化算法。“变色龙”LED灯可以依据环境改变发光亮度和颜色,优化照明空间,提升人们的视觉感受与心理体验。当然,我们的设计还存在不足,如未实现对精密色域的准确识别与色度匹配、亮度感光调节的梯度较大、产品设计样品不够美观等,我们将在后续研究中进行优化与改进。

猜你喜欢
变色龙模糊控制亮度
神奇变色龙
亮度调色多面手
神奇的变色龙
小小变色龙
亮度一样吗?
T-S模糊控制综述与展望
基于斩波调制的LED亮度控制
人生的亮度
基于模糊控制的PLC在温度控制中的应用
电子制作(2016年21期)2016-05-17 03:53:01
基于模糊控制的恒压供水系统的研究