基于STM32大功率LED调光控制器设计
2019-02-12关丛荣赵伟程祝天岳王愉天刘政贤胡子佳
关丛荣,赵伟程,祝天岳,王愉天,刘政贤,胡子佳
(1.北方工业大学,北京 100144; 2.中国船舶工业系统工程研究院,北京 100094)
引言
LED照明凭借着高效节能、绿色环保、体积小寿命长等特点受到各国的青睐[1,2],在节能减排中发挥了重要作用。LED调光控制方法主要包括线性调光、可控硅调光和PWM调光三种方式[3,4]。其中PWM调光技术优点在于控制灵活简单、高精度、高效率以及调光频率范围广和不会出现频闪等,是目前较为常用的控制方法。本文基于STM32单片机进行大功率LED调光控制器设计,给出硬件电路原理图及关键电路设计,以及相应的软件设计,并验证其是否满足设计需求。
1 PWM调光原理
图1 PWM工作原理Fig.1 Working principle of PWM
脉冲宽度调制(PWM)是一种周期一定而高低电平的占空比可以调制的方波信号,通过调整PWM波形的周期和占空比可以调节大功率LED驱动器的输入电压,进而实现对驱动器输出的驱动电流的控制[5,6],PWM工作原理图如图1所示。图中CNT为自动重装载计数器,ARR为预装载寄存器,CCRx为捕获/比较寄存器。假设定时器为向上计数PWM模式,t时刻对计数器值和比较值进行比较,如果计数器值小于CCRx值,输出低电平;如果计数器值大于CCRx值,输出高电平。
PWM的一个周期是指定时器从0开始向上计数,在0-t1段定时器计数器TIMx_CNT值小于CCRx值输出低电平;t1-t2段定时器计数器TIMx_CNT值大于CCRx值输出高电平;当TIMx_CNT值达到ARR时定时器溢出重新向上计数,依次循环。改变CCRx的值就可以改变PWM输出的占空比,而改变ARR的值就可以改变PWM的输出频率[7,8]。
假设高电平灯点亮低电平熄灭,则在PWM波一个周期内灯点亮的时间就等于周期×占空比。调整占空比,就可以控制LED在一个周期内的点亮时间。本文控制器设计PWM频率选择2 kHz。
无线方式选用蓝牙方式,本设计使用的蓝牙型号为ATK-HC05,由6个间距为2.54 mm的排针与外部相连接,其配置了蓝色LED灯用于配对状态输出的显示,如果上电KEY端口置为高电平,择LED闪烁为1秒亮1次;如果KEY悬空则LED 1 s亮2次;如果配对成果LED 2 s亮1次。
蓝牙上电配对后为全双工串口,可以传输8位的数据为和1位的停止位,并且是无奇偶校验进行通信。模块主从一体化,可以通过AT指令集改变主从模式,也可由程序设定按键改变主从模式,这样使电路的使用更加灵活,而且其传输距离可达到10 m之远。
2 控制器组成
大功率LED调光控制器主要由遥控端和控制端两部分组成,各部分由STM32主控芯片、蓝牙模块、按键模块、TFTLCD屏幕显示模块组成,控制端也可通过手机蓝牙来传输数据控制调光,整个控制器如图2所示。
图2 控制器框图Fig.2 Controller block diagram
图2中,遥控端和手机蓝牙串口助手作为两种独立方式可分别对控制端进行控制,控制端可独立输出不同占空比的PWM波,或分别接收遥控端和手机数据输出不同占空比的PWM波,再通过大功率LED驱动电路实现LED调光,所有的信息均可在遥控端和控制端的显示屏上显示。
LED驱动电路选择了恒流源作为LED驱动方式参照凌特公司官网LT3791芯片典型参考电路,设计输入电压为15~60 V、最大输出电压为28 V,输出电流为4A的驱动电源。电路参数选取及设计可见文献[9]。
3 硬件电路设计
3.1 MCU模块
本文采用STM32F103RCT6单片机,该模块包括开关电路、复位电路、晶振电路和CR1220纽扣电池供电电路等[10,11]。开关电路操控整个电路的通断,复位电路是使整个系统回到起始状态并重新进行计算,晶振电路要为系统提供精准的时钟信号。MCU部分模块如图3所示。
图3 MCU模块Fig.3 MCU modules
系统上电VCC电压由0增加值3.3 V为C1电容充电,R3端电位大小和持续时间将影响系统能否上电复位,由于机器周期等于12倍震荡周期,对于系统8 MHz晶振来说,复位时间应大于式(1)所计算出的时间。
(1)
当RESET电压超过上电电压0.7倍即2.31 V时持续时间超过3 μs,系统便会复位。电容两端暂态电流与电压关系见式(2)。
(2)
式中,UC(∞)为3.3 V,UC(0)为0由此得到Uc(t)见式(3)。
(3)
设RESET电压为UR(t),则
UR(t)=Vcc-Uc(t)
(4)
图4 LCD模块Fig.4 LCD modules
STM32F103RCT6外接8 MHz晶体振荡器作为外部震荡方式,晶振电路电容的选择是在许可的范围内数值越低越好,一般晶振所配电容在10~50 pF之间,本设计所选电容为22 pF以削减谐波对电路稳定性的影响。
3.2 蓝牙及显示屏接口模块
本设计通过普通IO口模拟8080总线来控制TFTLCD屏幕的显示,所选屏幕为2.8寸分辨率为320×240,16位真彩显示,总计使用了21个IO口。屏幕RST信号线直接连在STM32的复位引脚,可以直接通过单片机RESET键进行复位。TFTLCD屏幕接口模块如图4所示。
本设计采用ATK-HC05蓝牙串口模块,蓝牙接口模块接口设计与HC05模块相对应。ATK-HC05是一款高性能主从一体的蓝牙串口模块,它可以同手机电脑等终端进行配对,也可互相配置主从进行连接。该模块波特率范围在4 800~1 382 400,且兼容3.3 V或5 V的单片机系统,本设计采用3.3 V供电,蓝牙接收和发送端分别连接STM32芯片PA2和PA3管脚。蓝牙接口模块如图5所示。
3.3 电源模块
本设计采用前端电源适配器提供5V直流电源,主要提供给TFTLCD显示屏供电。通过AMS1117-3.3稳压芯片降压得到3.3 V电源电压给控制系统供电。其电源模块电路如图6所示。
图5 蓝牙模块Fig.5 Bluetooth modules
图6 电源模块Fig.6 Power modules
4 软件设计
本设计编写程序采用MDK编程软件,所涉及计算机语言为C语言[12]。程序总体思路先对整个系统设备、系统资源以及GPIO端口进行初始化。然后让程序进行无限循环,在循环中通过按键按下,使得程序进行下一步处理,且蓝牙状态、PWM波占空比同显示屏显示数值同时进行相应改变。主程序流程图如图7所示。
图7 主程序流程图Fig.7 Main program flowchart
在电路上电后先进行延时初始化,串口1初始化波特频率9600,初始化与LCD屏幕、蓝牙连接的硬件端口、初始化按键、蓝牙与LCD屏幕并设置TIM1通道1开始以2 kHz频率输出占空比为0的PWM波,初始化程序如下:
Stm32_Clock_Init(9);//系统时钟设置
delay_init(72); //延时初始化
uart_init(72,9600);//串口1初始化为9600
KEY_Init();//初始化按键
LCD_Init();//初始化LCD
usmart_dev.init(72);//初始化USMART
TIM1_PWM_Init(500-1,84-1);//PWM频率
POINT_COLOR=RED;
LCD_ShowString(30,50,200,16,16,"PWM:%");
while(HC05_Init())//初始化蓝牙模块
主程序通过While(1)的死循环进行按键扫描,当按键WK_UP按下时,通过程序内的“AT+ROLE=0”或“AT+ROLE=1”指令进行蓝牙的状态取反设置,初始默认状态为“SLAVE”(从机),蓝牙切换程序:
if(key==WKUP_PRES
{
key=HC05_Get_Role();//切换主从模式
if(key!=0XFF)
{
key=!key;//状态取反
if(key==0)HC05_Set_Cmd("AT+ROLE=0");
else HC05_Set_Cmd("AT+ROLE=1");
HC05_Role_Show();
HC05_Set_Cmd("AT+RESET");//复位
}
当按键KEY0按下时,调节占空比大小减小10%并向串口2发送数据“000”,蓝牙接收到数据向对位机发送,使得对位机收到信号PWM波占空比减小,同时两台单片机显示屏均显示改变后的PWM占空比数值。若占空比为0%则不执行操作,KEY0按键操控程序:
else if(key==KEY0_PRES)
{
delay_ms(10);
u2_printf("000");//发送“000”到蓝牙
reclen=USART2_RX_STA&0X7FFF;
USART2_RX_BUF[reclen]=0;
if(led0pwmval>0)led0pwmval=led0pwmval-50;
else led0pwmval=0;
USART2_RX_STA=0;
}
当按键KEY1按下时,调节占空比大小增加10%并向串口2发送数据“001”,蓝牙接收到数据向对位机发送,使得对位机收到信号PWM波占空比增加,同时两台单片机显示屏均显示改变后的PWM占空比数值。若占空比为100%则不执行操作,KEY1按键操控程序:
else if(key==KEY1_PRES)
{
delay_ms(10);
u2_printf("001");
reclen=USART2_RX_STA&0X7FFF;
USART2_RX_BUF[reclen]=0;
if(led0pwmval<499)led0pwmval=led0pwmval+50;
else led0pwmval=500;
USART2_RX_STA=0;
}
这样程序编写使得两个对位单片机操作十分灵活,既可以作为遥控部分发出信号,也可作为控制部分接收信号,还可以两端同时操控同样照明亮度的LED设备。
5 实验
依前述软硬件设计完成了控制器实物图,如图8所示。
图8 控制器实物图Fig.8 Physical diagram of controller
对控制器进行了不同占空比的调光实验,由PWM输入引脚至驱动电源5 V稳压输出引脚,使得LED灯能够保持亮度不变,控制器与驱动电源连接电源上电,为保证系统稳定,设置直流稳压电源输出电压为30 V,通过改变遥控端输入信号改变LED灯亮度。选择PWM占空比为0%、50%和100%时的波形如图9所示。
图9 PWM不同占空比测试结果Fig.9 Test results of PWM different duty cycle test results
结合示波器示数,在PWM占空比分别为0%、50%和100%时,整个系统显示效果如图10所示。
图10 控制器控制效果图Fig.10 Controller control effect diagram
综合以上调试,大功率LED调光控制器可以保证对输出电流电压的平稳控制,完成对LED灯的无线稳定调光,并且PWM与蓝牙等信息能够正确显示在显示屏上,满足本课题的设计需求。
6 结论
大功率LED在未来必将有着更好的发展前景,而LED调光控制器也必须不断完善和发展。本文基于ARM Cortex-M3内核的STM32微控制器STM32F103RCT6,以蓝牙无线通信方式远距离操控大功率LED灯的亮暗,控制方式更加灵活安全。
在调光控制器调试过程中,充分遵循先模块后整体的思路,验证按键模块、蓝牙模块、LCD屏幕模块和PWM模块的可靠性,达到了设计初期对大功率LCD调光控制器的设计目标。