STM32控制器多级LED调光原理与实验

小编:大闷头 更新时间:2022-08-20

基于STM32的LED多级调光器,采用PWM电压调节方法,利用STM32单片机集成有AD转换与PWM输出技术,通过对从控制始端(电位器)采集到的电位数据进行AD转换,并对数据进行处理得到PWM输出的占空比,从而能够对LED负载进行调节,完成调光。以STM32F103ZET6为核心的单片机开发板,对LED灯的1000级亮暗调节,实验结果显示LED的亮暗变化均匀,电压变化与文中所建立的线性处理模型一致。

引 言

LED的驱动方法有很多,可用单片机(如8051单片机)[1]产生脉冲宽度调制来驱动LED,PWM是脉宽调制的简称[2-4],其控制简单灵活,方便使用,凭借其低速运行平稳,动态性能优良[5]等特点,在电机的调速、功率调节等方面得到了非常广泛的应用。STM32F103系列是STM32系列高端单片机的一种系列,集成AD转换与PWM输出功能,可直接进行AD数据的采集和PWM波的输出。

PWM输出原理

STM32的PWM输出机制

PWM既脉冲宽度调制,是一种高低电平以一定周期变化的占空比可调的方波信号[6-8],PWM的波形图如图1所示。PWM调制的输入电压与负载的平均电压之间的关系[9]如式(2)。

STM32控制器多级LED调光原理与实验

图 1 PWM方波信号图 Fig.1 PWM square wave signal diagram

由图1所示的PWM波形图可得PWM波形的分段函数为:

STM32控制器多级LED调光原理与实验

式中,Tp:PWM的周期;Ts:PWM高电平时间;UH:PWM高电平电压值;UL:PWM低电平电压值;k:PWM的谐波次数。

电压变化关系表示为:

STM32控制器多级LED调光原理与实验

式中Ua:负载两端平均电压;α:PWM输出的占空比,0≤α≤1。

实验使用STM32F103ZET6单片机,该类型的单片机共有8个定时器,其中定时器6和定时器7不能用来产生PWM输出,定时器1和定时器8可最多产生7路PWM输出,其它的每个通用定时器可最多产生4路PWM输出,故最多可以产生30路PWM输出,实验使用定时器3。

在STM32F103系列单片机固件库函数中,TIM_Period为定时器的自动重装寄存器值,是PWM的周期值,TIM_SetCompare是用于选定使用哪个定时器和设置PWM占空比的函数,可推算出STM32的PWM输出电压变化关系。

STM32控制器多级LED调光原理与实验

在STM32的PWM配置函数里,TsTp是通过设置非负整数值来完成的,假设T为单片机计数脉冲基本周期,n为TIM_SetCompare装载值,m为PWM一个周期值,mn都是非负整数,则有:

STM32控制器多级LED调光原理与实验

由式(4)可以看出,在STM32的代码编写里,负载两端的电压平均值Ua与TIM_SetCompare装载值n和TIM_Period的PWM的一个周期值m有关,而在程序设计中,m可预先设置好,m就是调光器的级数,装载值n则需要对从电位器得到的AD数据值进行处理后方能得到,对AD数据的处理有多种方式,于是可得到装载值n与AD数据之间的映射关系。

线性处理模型

由式(4)分析可知,装载值n与AD数据之间有映射关系,即从电位器得到的AD数据与最终的PWM输出存在映射关系,实验建立线性映射关系,对AD数据进行算数平均值处理,可得:

STM32控制器多级LED调光原理与实验

式中k:比例系数;kr:算数平均值比例系数(与N有关);N:从电位器采样的AD数据个数;xi:从电位器采样的AD数据值;p:AD转换器的数据二进制位数。

由式(4)和式(5)可得负载两端的电压变化与算数平均值处理的AD数据之间的关系:

STM32控制器多级LED调光原理与实验

根据所建立的线性处理模型,实验设置调光器的调光级m=1000,由式(4)、式(5)和式(6)可得线性处理模型的电压变化关系为:

STM32控制器多级LED调光原理与实验

硬件设计

调光器整体结构

PWM调光器的整体结构包括旋转电位器、双电源:电源1和电源2、LED驱动电路、LED负载和STM32F103ZET6单片机组成,如图2所示。

旋转电位器是旋转变阻装置,通过旋动电位器使其电阻值发生改变,从而电位器两端的电位差也会发生变化,单片机从电位器采集其电位值,并转换为AD数据进行处理,实验进行的是线性处理,装载值为n,将n传递给TIM_SetCompare函数,从而得到AD数据所对应的占空比,使LED驱动电路端接收到一定占空比的PWM输出。实验使用的电位器有三个引脚,实验装置将电位器的电压输出端连接到了GPIOA1引脚上,STM32单片机的ADC1、ADC2和ADC3均能够完成对GPIOA1端的AD转换,如表1所示。电位器的输出电压的理论取值范围在0 V到3.3 V之间,LED灯的亮度变化随着电位器输出端的电位值的变化而变化。

STM32控制器多级LED调光原理与实验

图 2 PWM调光器整体结构 Fig.2 PWM dimmer overall structure

电源1为旋转电位器和STM32单片机的供电电源,为直流3.3 V恒压电源,故电位器的点位值范围即为0 V~3.3V。电源2为LED驱动电路的电源,为恒压电源,其电器特性根据LED负载的特性进行配置。

表 1 STM32F103ZET6的ADC与转换通道

Table 1 STM32F103ZET6 ADC and conversion channels

转换通道

ADC1

ADC2

ADC3

通道0

PA0

PA0

PA0

通道1

PA1

PA1

PA1

通道2

PA2

PA2

PA2

通道3

PA3

PA3

PA3

通道4

PA4

PA4

PF6

通道5

PA5

PA5

PF7

通道6

PA6

PA6

PF8

通道7

PA7

PA7

PF9

通道8

PB0

PB0

PF10

通道9

PB1

PB1


通道10

PC0

PC0

PC0

通道11

PC1

PC1

PC1

通道12

PC2

PC2

PC2

通道13

PC3

PC3

PC3

通道14

PC4

PC4


通道15

PC5

PC5


LED驱动电路

LED驱动电路如图3所示。驱动电路主要由固态继电器与电源接口组成。

STM32控制器多级LED调光原理与实验

图 3 LED驱动电路 Fig. 3 LED drive circuit

固态继电器受PWM波的控制,当PWM Input端为低电平时,PC817光电耦合器导通,NPN型C9014三极管基集1端为高电位,三极管导通,固态继电器闭合,LED负载通电。当PWM Input端为高电平时,LED负载为断路状态,光电耦合器将前端与负载隔离开来。在LED负载高电压端引出ADC连接线,用于STM32采集LED负载两端的电压值。LED驱动电源根据LED负载特性进行选取,为恒压源。实验采用低功率0805贴片LED,故其驱动电源可选用STM32单片机的3.3 V直流电源,事实上对于该种类型的LED可通过限流电阻直接与单片机的GPIO引脚连接,式(5)和式(6)的线性处理模型同样适用。

STM32F103ZET6单片机

STM32F103ZET6是STM32系列单片机中的一种,对于LQFP和BGA的封装均有144只引脚,内部集成了512 K字节的FLASH闪存存储器,标准工作电压范围为2.0 V ~3.6 V,其部分性能参数如表2所示。STM32F103ZET6单片机内部集成了AD转换与PWM输出功能,可通过GPIO引脚采集电位器的电位值,并对从电位器采集到的数据进行线性或非线性处理,如式(6)和式(7)的处理,可得PWM输出的占空比,通过得到的占空比,可进行相应的PWM输出。

表 2 STM32F103ZET6部分性能参数

Table 2 Performance parameters of STM32F103ZET6

名称

参数

单片机

STM32F103ZET6

主频(MHz)

72

内核

ARM Cortex-M3

通用IO个数

112

定时器个数

8

Flash(KB)

512

SRAM(KB)

64

LED是利用PN结或类似结构把电能转化成光能的器件[10, 11],在很宽的工作电压电流范围内,发光二极管的发光亮度与工作电压大小成线性关系,LED灯是比较节能的发光装置,在现代社会里的应用非常广泛。实验装置将LED灯与GPIOC的引脚GPIO_Pin_7通过470欧姆的限流电阻相连,所以将PWM输出到GPIOC的GPIO_Pin_7引脚即可获得对LED的亮暗调节。在编程时将TIM3的定时通道2(TIM_CH2)与GPIOC_Pin_7完全重映像。定时器TIM3的引脚映像表如表2所示。

表 3 TIM3的定时通道与映像引脚

Table 3 TIM3 timing channels and mapping pins

定时通道

无重映像

部分重映像

完全重映像

TIM_CH1

GPIOA6

GPIOB4

GPIOC6

TIM_CH2

GPIOA7

GPIOB5

GPIOC7

TIM_CH3

GPIOB0

GPIOC8

TIM_CH4

GPIOB1

GPIOC9

软件设计与实验

PWM调光器软件设计

PWM调光器的软件程序流程包括:装置初始化(系统时钟初始化、PWM配置初始化、ADC配置初始化),采集电位器AD数据,对采集的AD数据的线性处理过程和根据处理后得到的占空比进行PWM输出,如图4所示。

STM32控制器多级LED调光原理与实验

图 4 LED调光器程序流程图 Fig.4 LED dimmer program flow chart

调光器装置实验

STM32F103ZET6开发板的标准电压为3.3 V,所以高电压UH ≈ 3.3 V,LED负载两端电压的变化范围在0 V~3.3 V之间。设置LED调光级为m=1000,从电位器采样的AD数据个数N=100,AD转换的数据二进制位数为p=12,比例系数分别取k=0.5,1,2,进行三种不同比例系数线性处理模型的调光实验。

根据式(5)和式(6)可知线性处理模型的结果以LED负载两端的电压值来体现,可通过误差值的大小来判断线性处理模型的正确性,误差较小则表明实验结果与理论模型具有相同的变化趋势,定义相对误差(取值范围一般在5%以内):

式中UC:实验测得LED负载端的电压值。

实验测得数据如表4所示,当比例系数k=0.5,1和2时,电位器控制电压的理论值分别为0~3.3 V,0~3.3 V和0~1.5 V,LED负载端的电压理论值范围分别为0~1.5 V,0~3.3 V,0~3.3 V。

实验结果表明随着电位器的调节,LED负载端的电压值也在发生变化,这说明LED受到STM32单片机的控制,STM32单片机也随着电位器的调节而有不同占空比的PWM输出。在调光级为1000时,LED的亮暗变化均匀,通过误差分析,得出相对误差值均在5%以内,实验结果验证了式(5)和式(6)建立的线性处理模型。当调光级m的值比较小时,LED的亮度并不明显,此时LED受到占空比较小的PWM控制,LED两端的电压值也较小。

表 4 LED调光器实验数据

Table 4 Experimental data of LED dimmer

比例

元器件

电位(V)

k=0.5

电位器

0.444

1.679

2.200

3.205


LED

0.215

0.800

1.050

1.524


相对误差(%)

3.153

4.705

4.545

4.899


k=1

电位器

0.102

1.061

2.290

3.145


LED

0.106

1.10

2.182

2.998


相对误差(%)

3.774

3.545

4.950

4.903


k=2

电位器

0.065

0.304

0.891

1.403


LED

0.125

0.587

1.698

2.668


相对误差(%)

3.846

3.454

4.714

4.918


结 论

STM32单片机的应用广泛,基于STM32的PWM调光器,将电位器与LED相对地隔离开来,通过建立装载值n与从电位器端采集的AD数据之间的映射模型,得到LED调光器的调光级只与PWM的一个周期值m有关。在设置的调光级m=1000的实验结果中,验证了所建立的线性处理模型,LED的亮暗变化均匀,相对误差也较小。

参考文献

[1] 贾冬颖, 王巍. 基于STC单片机LED智能照明系统的设计 [J]. 照明工程学报, 2010, (02): 71-73+80.

[2] 邹中华, 吴陈, 曾庆军. 基于S3C2410的直流电机PWM调速系统 [J]. 微计算机信息, 2008, 24(4-2): 130-131.

[3] 何国荣, 纪娜. 基于PWM技术的LED补光灯R/B配比算法研究 [J]. 信息技术, 2015, (05): 147-150.

[4] 曹阳. 基于触摸按键和PWM驱动配色的汽车氛围灯 [J]. 电子技术, 2015, (12): 1-3.

[5] 杨学存, 杨战社, 孔令红. 基于ARM的嵌入式直流电机PWM调速系统设计 [J]. 煤矿机械, 2012, 33(04): 255-257.

[6] 洪俊峰, 卜文强, 张榕鑫, 等. 基于STM32 PWM的正弦信号发生器设计 [J]. 合肥工业大学学报(自然科学版), 2014, 37(02): 188-191+224.

[7] 王琼, 吴惠, 夏光, 等. 基于PWM控制模式的高速开关阀开关特性分析及优化 [J]. 合肥工业大学学报(自然科学版), 2016, (09): 1199-1204.

[8] 王子权. 基于STM32的PWM调光器 [J]. 电气自动化, 2018, 40(06): 98-100+115.

[9] 李素娟, 蒋维安. 直流电机PWM调速系统中控制电压非线性研究 [J]. 现代电子技术, 2010, (22): 196-198+202.

[10] 李杨帅. 基于PWM的无级调光LED驱动电路设计 [D]: 长安大学, 2015.

[11] 程伊炳, 金尚忠. 基于多路输出的高效LED驱动器的分析和仿真 [J]. 照明工程学报, 2013, (02): 66-70.