利用手机蓝牙控制的LED灯的PWM调光设计

描述

1.引言

随着,2012年10月飞利浦在AppleStore出售最新的高科技Hue系列LED灯,并且只会交由苹果出售。Hue系列将是完全可有自定义的,并且通过一个灯泡内红蓝绿三原色的LED可以混合出1600万种颜色的灯光。整个过程完全由iPhone上的App来进行控制。从而引发了智能灯控发展的新思考,国内相关人士也纷纷进行研究。考虑到Hue是采用WiFi无线控制,而国内WiFi并未普及,本研究采用更普遍的蓝牙技术,采用手机蓝牙与单片机通信产生可调占空比PWM波信号控制LED驱动电路实现LED的调光和DIY调色。

2.脉冲宽制(PWM)调光技术

PWM调光是一种利用简单的数字脉冲,反复开关LED驱动器的调光技术。应用者的系统只需要提供宽、窄不同的数字式脉冲,即可简单地实现改变输出电流,从而调节LED的亮度。PWM调光的优点在于调光范围大,只要带宽足够,任何模拟值都可以使用PWM进行编码,PWM调光可以在精确控制LED的亮度的同时,也保证LED发光的色度。

2.1 脉冲宽制(PWM)调光原理

利用人眼睛视觉惰性,按固定频率操作占空比实现LED亮度调节,只要调光比即PWM波频率大于200Hz人眼就不会感觉到LED的闪烁。具体调光实现,通过控制LED的亮灭时间,从而控制LED亮度,从电力学来看就是控制一定周期内电流的有效值。这种方法在改变电流有效值大小的同时不改变电压和电流的大小,这样就保证了LED的发光色度,这是模拟调光和可控硅调光无法实现的。

2.2 占空比

占空比是指高电平在一个周期之内所占的时间比率。方波的占空比为50%,占空比为0.5,说明正电平所占时间为0.5个周期。

Ts为脉冲周期

Tw为脉冲宽度

占空比τ=Tw/Ts×100。

占空比的解释可以归纳为如下几种:

1)在一串理想的脉冲序列中(如方波),正脉冲的持续时间与脉冲总周期的比值。

2)在一段连续工作时间内脉冲占用的时间与总时间的比值。

3)在周期型的现象中,现象发生的时间与总时间的比。

也就是电路释放能量的有效时间与总释放时间的比。

2.3 调光比

调光比则是按下面的方法计算:

Foper=工作频率

Fpwm=调光频率

调光比率=Foper/Fpwm

其实也就是调光的最低有效占空比,比如Foper=100khz;Fpwm=200Hz,则调光比为:

100k/200=500。

3.蓝牙模块组成

3.1 蓝牙技术基础

蓝牙的创始人是瑞典爱立信公司,蓝牙技术是一种无线数据与语音通信的开放性全球规范,它以低成本的近距离无线连接为基础,为固定与移动设备通信环境建立一个特别连接。手机之间通过蓝牙实现数据共享已成为常理,将手机变身为遥控器为人们的生活带来无限方便。

蓝牙技术由三部分组成,包括蓝牙无线电技术、蓝牙协议栈和蓝牙互操作性。

3.1.1 蓝牙无线电技术

蓝牙无线电工作在全球通用的2.4GHzISM(即工业、科学、医学)频段,支持全双工传输,使用IEEE802.15协议。蓝牙设备即连即用,抗干扰能力强、使用方便[2]

3.1.2 蓝牙协议栈

蓝牙协议栈包含一个软件栈和一个硬件栈。蓝牙硬件协议栈由蓝牙硬件提供,蓝牙软件协议栈由软件实现。蓝牙软件协议栈提供Java蓝牙API给程序开放人员使用。

3.1.3 蓝牙互操作性

蓝牙互操作性包括三方面内容:①通用访问Profile定义了设备管理功能性;②服务发现应用Profiles定义了服务发现方面的内容;③串口Profiles定义了互操作设备和模拟串口电缆的能力3.2 HC-O6蓝牙模块。

BC04外置8M Flash,带EDR模块HC-06为民用级,兼容HC-04工业级。其中,HC-06模块的TX管脚跟STC15F204EA单片机的P3.0管脚相接,RX管脚跟P3.1接。HC-06模块接收手机端发来的数据,然后在通过串口TR,TX管脚与单片机通信。

蓝牙2.0带EDR,2Mbps-3Mbps调制度,内置2.4GHz天线,外置8Mbit FLASH,低电压3.3V工作(3.1V~4.2V)配对时30~40MA波动,配对完毕通信8MA,可选PIO控制标准HCI端口(UART or USB),数字2.4GHz无线收发射,CSR BC04蓝牙芯片技术,自适应跳频技术,蓝牙Class 2功率级别,工作温度为-25至+75,协波干扰为2.4MHz,发射功率3dBm,有效控制距离为10m。

4.手机APP设计

4.1 蓝牙连接相关程序设计

首先,初始化本地蓝牙设备,建立LocalDevice类,包括取得本地设备实例、蓝牙名称、设置发现模式、获得发现代理。创建public int BTS_Init()类函数,实现蓝牙初始化判断,寻找默认蓝牙设备,打开蓝牙。

启动蓝牙设备搜索,创建public voidBTS_StartScan()类函数,开始寻找从机蓝牙设备,注册搜寻函数,创建public int BTS_ConnectToDevice(String DeviceAddress)类函数,实现连接到一个指定的蓝牙设备。

创建public int BTS_SendDates(Stringbuffer)类函数实现字符串发送到已连接好的蓝牙设备上,创建public int BTS_Finish()类函数结束蓝牙通信,最后创建接收ACTION_FOUND广播的BroadcastReceiver privatefinal BroadcastReceiver mReceiver=newBroadcastReceiver()。

4.2 控制信号相关程序设计

首先创建一个用于控制信号的类publicclass PwmcontrolActivity extends Activity{},里面包含创建界面的类函数public voidonCreate(BundlesavedIn stan ceState){},发送控制信号类函数public void onStop TrackingTouch(SeekBar seekBar){}。

创建类class InitThread extends Thread{},实现资源加载线程,里面创建用于四路信号之间转换的public InitThread(PwmcontrolActivity act){}类函数,实现与蓝牙程序接口的public void run()线程体,用于软件退出的类函数public booleanonKeyDown(int keyCo de,KeyEvent event)。

5.单片机控制信号设计

5.1 硬件电路设计

系统框图如图1所示,本硬件电路采用STC15F204EA单片机为主控器,CH-06蓝牙模块的TXD与单片机11管脚P3.0连接,RXD与P3.1相连,实现蓝牙串口通信连接,从P1.0,P1.1,P1.2,P1.3四个口输出四路可调占空比的PWM信号,采用一个L298芯片将单片机控制信号和LED电源驱动隔离,避免了单片机带负载能力弱的缺点,以实现驱动大功率LED。

图1 系统框图

5.2 程序设计

主函数流程图如图2所示,定义完相关变量和相关函数声明后,设计串口通信函数,设置定时器1中断,中断函数为占空比控制函数,然后设计数据接收函数,当串口服务函数接收到数据时,将数据发送到数据接收函数,然后将接受到的字符数据通过字符转型函数进行字符的转型,然后通过标志iCommdType判断控制哪一路信号,当无标志信号来时,一直循环检查,检查到相应的标志信号,然后执行占空比调节函数蓝牙模块与单片机之间的通信使用模拟串口实现的,串口为标准配置:波特率9600,编写一个串口初始化函数void UART_INIT(),初始化相关标志,和寄存器,然后编写中断接收函数void tm0()interrupt 1 using 1,接收串口发来的数据。设定定时器1中断并编写中断服务函数void tm1()interrupt 3 using1,实现P W M的占空比控制。编写数据接收函数char GetUartData(),将中断接收函数里接收到的数据发送这里,等待接收数据函数void WaitForChars(unsigned chariCount,char *Dest)通过调用数据接收函数char GetUartData(),将手机发送来的数据装载到定义好的变量数组,然后通过字符转型函数unsigned int GetCmdType(char*Commd),将字符型数据转成数字,通过标志判断,要控制哪一路PWM波,然后将相应的数据传到控制占空比的中断服务函数,改变其占空比的输出。

led

图2 主函数流程图

6.结果展示

6.1 手机端界面

如图3所示,其中W调节白光,从0到100R、B、G共有100万种组合,每一种组合对应一种颜色,通过改变RBG的组合,从而调节LED的颜色。

图3

6.2 PWM波输出效果

如图4所示,这是其中一路PWM波的控制信号,通过手机端控制其占空比,用示波器测出其波形。

图4

6.3 实际调光调色效果

选择几种组合调色效果如图5所示。

图5

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分