通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色, 理论几乎包括了人类视力所能感知的所有颜色。 我们的手机、电脑、电视,等显示器 ,一个像素就是通过对RGB三个颜色不同占比的控制实现显示不同颜色。
突发联想,做个大功率的RGB调光如何?可以做夜灯,做装饰 ,照明 ,加上手机控制,晚上很少开灯。本制作有所不足,希望各位大佬能进行完善,或者添加新的玩法~
用到的元器件:
RGB LED 3W*4
15W404AS 单片机
4.7R 1W电阻*3
NMOS管*3
100Ω 1/4 W电阻*3
1-10K 1/4 W电阻*3
6*8cm 洞洞板*1
蓝牙模块 *1
先发个演示视频吧~
原理:利用蓝牙串口助手发送数据,蓝牙模块接收后,经过单片机处理,处理当前的三路PWM值输出到IO口,通过MOS管驱动LED。
蓝牙APP 的配置:(如果想深入了解可以在app菜单点击程序帮助)
蓝牙串口助手发送界面
可以通过这个APP拖动上面的滑块,或者点击下面的按键配置RGB 的占比 ,当单片机接收到有效数据帧的时候 ,单片机会将数据原样返回到APP 这样做的目的是为了使按键按下后上面的滑块也能同步当前的三路PWM值。从而用户可再次对当前模式进行微调
具体配置:(点击APP右上方三个小点-地面站设置)
具体配置
详细数据说明:
* 滑块发送数据一次为7位数据
* 例如 A5 5A 05 F1 80 76 AA
* A5 5A 为帧头
* 05为除去帧头的长度
* F1为哪一个滑块
* 80为具体数值
* 76为byte 2到4位数据的和 (低字节)
* AA为帧尾
本制作实际使用中,接收做了两次帧头核对(接受时判断第0位A5,处理时判断第一位,5A)保证数据正确完整 。
没有使用效验。 但是在往APP返回数据时候需要严格按照APP标准执行。
具体的发送和接收处理过程在程序中有所体现,也做了充分的注释、
电路:
电路很简单,只是介绍MOS部分的接法:
MOS管接法
我使用的是PWM模块拆解的MOS管,其中两个MOS管是并连关系,为了驱动大功率的,但是在这里有点浪费,体积较大。
拆解后将引脚掰直
背面焊一个引脚出来,贴片变直插 ~~
其中PWM端接单片机io口
R1接RGB LED的其中一个颜色,4个LED的正极 R端G端B端口采用并联方式连接。
需要注意是需要对RGB三个颜色的功率进行匹配,也就是说当PWM为最大255时,保证每一个LED的每一个颜色不会过载。
我用的是下面这一款LED
红色电压2.2v
蓝绿色电压 3.3v
电流 350ma (实际100ma就发烫)
LED电阻的适配:
5V电源电压下 红:(5-2.2)/0.35 = 8Ω 电阻功率2.8*0.35 = 0.98w(电阻发烧严重)
蓝绿:(5-3.3)/0.35 = 4.85Ω 1.7*0.35 = 0.59w
3.3v 电源电压 红: (3.3-2.2)/0.35 = 3.14Ω 电阻功率 1.1*0.35 = 0.38w(不发烧)
蓝绿: 不用电阻
通过上面的数据和实际测试发现电源电压使用3.3v最为合适,并且还省去的蓝绿色的电阻(G/B直接接MOS管的D极,R通过3.1Ω电阻接D)。所以选择了使用5V 2A适配器+DCDC调压供电,此时需要考虑你的单片机工作电压和蓝牙模块工作电压是否合适。
说了这么久PWM,简谈一下PWM:
即在频率不变的情况下改变高低电平的占比。
程序中off_all 和on_all需要注意的是并没有对PWM值进行操作,而是直接关闭了io口的输出。因为这样可以彻底关闭LED不至于PWN=0时侯微亮状态。
其次程序中并没有对PWM=0进行发送 ,因为不知道为什么,PWM =0 app会接受失败,所以最低发送了PWM=1,然后让io口关闭实现LED完全熄灭。
有一个想法:当发送的为模式数据时,APP也能进行面板刷新,但是实际测试中 ,当模式执行时遇到发送数据就会停止当前模式(卡住),不知如何解决~ 望支招
实际使用:
使用前先确认蓝牙模块波特率为9600bps ,弱不是,请进入蓝牙模块AT模式进行配置 ,蓝牙连接成功后点击app上的蓝牙标志选择连接 ,提示连接成功后按如上的APP配置即可使用,接下来是主程序部分。
单片机程序源码如下:
其它子程序和分文件Keil工程,app 均在附件之中 欢迎下载~
最后希望感兴趣的朋友们顺利制作成功~~
全部资料51hei下载地址:
RGB 蓝牙滑块调光.zip
(2.84 MB, 下载次数: 287)
|