STM32控制器多级LED调光原理与实验
基于STM32的LED多級(jí)調(diào)光器,采用PWM電壓調(diào)節(jié)方法,利用STM32單片機(jī)集成有AD轉(zhuǎn)換與PWM輸出技術(shù),通過(guò)對(duì)從控制始端(電位器)采集到的電位數(shù)據(jù)進(jìn)行AD轉(zhuǎn)換,并對(duì)數(shù)據(jù)進(jìn)行處理得到PWM輸出的占空比,從而能夠?qū)ED負(fù)載進(jìn)行調(diào)節(jié),完成調(diào)光。以STM32F103ZET6為核心的單片機(jī)開(kāi)發(fā)板,對(duì)LED燈的1000級(jí)亮暗調(diào)節(jié),實(shí)驗(yàn)結(jié)果顯示LED的亮暗變化均勻,電壓變化與文中所建立的線性處理模型一致。
引 言
LED的驅(qū)動(dòng)方法有很多,可用單片機(jī)(如8051單片機(jī))[1]產(chǎn)生脈沖寬度調(diào)制來(lái)驅(qū)動(dòng)LED,PWM是脈寬調(diào)制的簡(jiǎn)稱[2-4],其控制簡(jiǎn)單靈活,方便使用,憑借其低速運(yùn)行平穩(wěn),動(dòng)態(tài)性能優(yōu)良[5]等特點(diǎn),在電機(jī)的調(diào)速、功率調(diào)節(jié)等方面得到了非常廣泛的應(yīng)用。STM32F103系列是STM32系列高端單片機(jī)的一種系列,集成AD轉(zhuǎn)換與PWM輸出功能,可直接進(jìn)行AD數(shù)據(jù)的采集和PWM波的輸出。
PWM輸出原理
STM32的PWM輸出機(jī)制
PWM既脈沖寬度調(diào)制,是一種高低電平以一定周期變化的占空比可調(diào)的方波信號(hào)[6-8],PWM的波形圖如圖1所示。PWM調(diào)制的輸入電壓與負(fù)載的平均電壓之間的關(guān)系[9]如式(2)。
圖 1 PWM方波信號(hào)圖 Fig.1 PWM square wave signal diagram
由圖1所示的PWM波形圖可得PWM波形的分段函數(shù)為:
式中,Tp:PWM的周期;Ts:PWM高電平時(shí)間;UH:PWM高電平電壓值;UL:PWM低電平電壓值;k:PWM的諧波次數(shù)。
電壓變化關(guān)系表示為:
式中Ua:負(fù)載兩端平均電壓;α:PWM輸出的占空比,0≤α≤1。
實(shí)驗(yàn)使用STM32F103ZET6單片機(jī),該類型的單片機(jī)共有8個(gè)定時(shí)器,其中定時(shí)器6和定時(shí)器7不能用來(lái)產(chǎn)生PWM輸出,定時(shí)器1和定時(shí)器8可最多產(chǎn)生7路PWM輸出,其它的每個(gè)通用定時(shí)器可最多產(chǎn)生4路PWM輸出,故最多可以產(chǎn)生30路PWM輸出,實(shí)驗(yàn)使用定時(shí)器3。
在STM32F103系列單片機(jī)固件庫(kù)函數(shù)中,TIM_Period為定時(shí)器的自動(dòng)重裝寄存器值,是PWM的周期值,TIM_SetCompare是用于選定使用哪個(gè)定時(shí)器和設(shè)置PWM占空比的函數(shù),可推算出STM32的PWM輸出電壓變化關(guān)系。
在STM32的PWM配置函數(shù)里,Ts和Tp是通過(guò)設(shè)置非負(fù)整數(shù)值來(lái)完成的,假設(shè)T為單片機(jī)計(jì)數(shù)脈沖基本周期,n為TIM_SetCompare裝載值,m為PWM一個(gè)周期值,m和n都是非負(fù)整數(shù),則有:
由式(4)可以看出,在STM32的代碼編寫里,負(fù)載兩端的電壓平均值Ua與TIM_SetCompare裝載值n和TIM_Period的PWM的一個(gè)周期值m有關(guān),而在程序設(shè)計(jì)中,m可預(yù)先設(shè)置好,m就是調(diào)光器的級(jí)數(shù),裝載值n則需要對(duì)從電位器得到的AD數(shù)據(jù)值進(jìn)行處理后方能得到,對(duì)AD數(shù)據(jù)的處理有多種方式,于是可得到裝載值n與AD數(shù)據(jù)之間的映射關(guān)系。
線性處理模型
由式(4)分析可知,裝載值n與AD數(shù)據(jù)之間有映射關(guān)系,即從電位器得到的AD數(shù)據(jù)與最終的PWM輸出存在映射關(guān)系,實(shí)驗(yàn)建立線性映射關(guān)系,對(duì)AD數(shù)據(jù)進(jìn)行算數(shù)平均值處理,可得:
式中k:比例系數(shù);kr:算數(shù)平均值比例系數(shù)(與N有關(guān));N:從電位器采樣的AD數(shù)據(jù)個(gè)數(shù);xi:從電位器采樣的AD數(shù)據(jù)值;p:AD轉(zhuǎn)換器的數(shù)據(jù)二進(jìn)制位數(shù)。
由式(4)和式(5)可得負(fù)載兩端的電壓變化與算數(shù)平均值處理的AD數(shù)據(jù)之間的關(guān)系:
根據(jù)所建立的線性處理模型,實(shí)驗(yàn)設(shè)置調(diào)光器的調(diào)光級(jí)m=1000,由式(4)、式(5)和式(6)可得線性處理模型的電壓變化關(guān)系為:
硬件設(shè)計(jì)
調(diào)光器整體結(jié)構(gòu)
PWM調(diào)光器的整體結(jié)構(gòu)包括旋轉(zhuǎn)電位器、雙電源:電源1和電源2、LED驅(qū)動(dòng)電路、LED負(fù)載和STM32F103ZET6單片機(jī)組成,如圖2所示。
旋轉(zhuǎn)電位器是旋轉(zhuǎn)變阻裝置,通過(guò)旋動(dòng)電位器使其電阻值發(fā)生改變,從而電位器兩端的電位差也會(huì)發(fā)生變化,單片機(jī)從電位器采集其電位值,并轉(zhuǎn)換為AD數(shù)據(jù)進(jìn)行處理,實(shí)驗(yàn)進(jìn)行的是線性處理,裝載值為n,將n傳遞給TIM_SetCompare函數(shù),從而得到AD數(shù)據(jù)所對(duì)應(yīng)的占空比,使LED驅(qū)動(dòng)電路端接收到一定占空比的PWM輸出。實(shí)驗(yàn)使用的電位器有三個(gè)引腳,實(shí)驗(yàn)裝置將電位器的電壓輸出端連接到了GPIOA1引腳上,STM32單片機(jī)的ADC1、ADC2和ADC3均能夠完成對(duì)GPIOA1端的AD轉(zhuǎn)換,如表1所示。電位器的輸出電壓的理論取值范圍在0 V到3.3 V之間,LED燈的亮度變化隨著電位器輸出端的電位值的變化而變化。
圖 2 PWM調(diào)光器整體結(jié)構(gòu) Fig.2 PWM dimmer overall structure
電源1為旋轉(zhuǎn)電位器和STM32單片機(jī)的供電電源,為直流3.3 V恒壓電源,故電位器的點(diǎn)位值范圍即為0 V~3.3V。電源2為L(zhǎng)ED驅(qū)動(dòng)電路的電源,為恒壓電源,其電器特性根據(jù)LED負(fù)載的特性進(jìn)行配置。
表 1 STM32F103ZET6的ADC與轉(zhuǎn)換通道
Table 1 STM32F103ZET6 ADC and conversion channels
|
轉(zhuǎn)換通道 |
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驅(qū)動(dòng)電路
LED驅(qū)動(dòng)電路如圖3所示。驅(qū)動(dòng)電路主要由固態(tài)繼電器與電源接口組成。
圖 3 LED驅(qū)動(dòng)電路 Fig. 3 LED drive circuit
固態(tài)繼電器受PWM波的控制,當(dāng)PWM Input端為低電平時(shí),PC817光電耦合器導(dǎo)通,NPN型C9014三極管基集1端為高電位,三極管導(dǎo)通,固態(tài)繼電器閉合,LED負(fù)載通電。當(dāng)PWM Input端為高電平時(shí),LED負(fù)載為斷路狀態(tài),光電耦合器將前端與負(fù)載隔離開(kāi)來(lái)。在LED負(fù)載高電壓端引出ADC連接線,用于STM32采集LED負(fù)載兩端的電壓值。LED驅(qū)動(dòng)電源根據(jù)LED負(fù)載特性進(jìn)行選取,為恒壓源。實(shí)驗(yàn)采用低功率0805貼片LED,故其驅(qū)動(dòng)電源可選用STM32單片機(jī)的3.3 V直流電源,事實(shí)上對(duì)于該種類型的LED可通過(guò)限流電阻直接與單片機(jī)的GPIO引腳連接,式(5)和式(6)的線性處理模型同樣適用。
STM32F103ZET6單片機(jī)
STM32F103ZET6是STM32系列單片機(jī)中的一種,對(duì)于LQFP和BGA的封裝均有144只引腳,內(nèi)部集成了512 K字節(jié)的FLASH閃存存儲(chǔ)器,標(biāo)準(zhǔn)工作電壓范圍為2.0 V ~3.6 V,其部分性能參數(shù)如表2所示。STM32F103ZET6單片機(jī)內(nèi)部集成了AD轉(zhuǎn)換與PWM輸出功能,可通過(guò)GPIO引腳采集電位器的電位值,并對(duì)從電位器采集到的數(shù)據(jù)進(jìn)行線性或非線性處理,如式(6)和式(7)的處理,可得PWM輸出的占空比,通過(guò)得到的占空比,可進(jìn)行相應(yīng)的PWM輸出。
表 2 STM32F103ZET6部分性能參數(shù)
Table 2 Performance parameters of STM32F103ZET6
|
名稱 |
參數(shù) |
|
單片機(jī) |
STM32F103ZET6 |
|
主頻(MHz) |
72 |
|
內(nèi)核 |
ARM Cortex-M3 |
|
通用IO個(gè)數(shù) |
112 |
|
定時(shí)器個(gè)數(shù) |
8 |
|
Flash(KB) |
512 |
|
SRAM(KB) |
64 |
LED是利用PN結(jié)或類似結(jié)構(gòu)把電能轉(zhuǎn)化成光能的器件[10, 11],在很寬的工作電壓電流范圍內(nèi),發(fā)光二極管的發(fā)光亮度與工作電壓大小成線性關(guān)系,LED燈是比較節(jié)能的發(fā)光裝置,在現(xiàn)代社會(huì)里的應(yīng)用非常廣泛。實(shí)驗(yàn)裝置將LED燈與GPIOC的引腳GPIO_Pin_7通過(guò)470歐姆的限流電阻相連,所以將PWM輸出到GPIOC的GPIO_Pin_7引腳即可獲得對(duì)LED的亮暗調(diào)節(jié)。在編程時(shí)將TIM3的定時(shí)通道2(TIM_CH2)與GPIOC_Pin_7完全重映像。定時(shí)器TIM3的引腳映像表如表2所示。
表 3 TIM3的定時(shí)通道與映像引腳
Table 3 TIM3 timing channels and mapping pins
|
定時(shí)通道 |
無(wú)重映像 |
部分重映像 |
完全重映像 |
|
TIM_CH1 |
GPIOA6 |
GPIOB4 |
GPIOC6 |
|
TIM_CH2 |
GPIOA7 |
GPIOB5 |
GPIOC7 |
|
TIM_CH3 |
GPIOB0 |
GPIOC8 |
|
|
TIM_CH4 |
GPIOB1 |
GPIOC9 |
|
軟件設(shè)計(jì)與實(shí)驗(yàn)
PWM調(diào)光器軟件設(shè)計(jì)
PWM調(diào)光器的軟件程序流程包括:裝置初始化(系統(tǒng)時(shí)鐘初始化、PWM配置初始化、ADC配置初始化),采集電位器AD數(shù)據(jù),對(duì)采集的AD數(shù)據(jù)的線性處理過(guò)程和根據(jù)處理后得到的占空比進(jìn)行PWM輸出,如圖4所示。
圖 4 LED調(diào)光器程序流程圖 Fig.4 LED dimmer program flow chart
調(diào)光器裝置實(shí)驗(yàn)
STM32F103ZET6開(kāi)發(fā)板的標(biāo)準(zhǔn)電壓為3.3 V,所以高電壓UH ≈ 3.3 V,LED負(fù)載兩端電壓的變化范圍在0 V~3.3 V之間。設(shè)置LED調(diào)光級(jí)為m=1000,從電位器采樣的AD數(shù)據(jù)個(gè)數(shù)N=100,AD轉(zhuǎn)換的數(shù)據(jù)二進(jìn)制位數(shù)為p=12,比例系數(shù)分別取k=0.5,1,2,進(jìn)行三種不同比例系數(shù)線性處理模型的調(diào)光實(shí)驗(yàn)。
根據(jù)式(5)和式(6)可知線性處理模型的結(jié)果以LED負(fù)載兩端的電壓值來(lái)體現(xiàn),可通過(guò)誤差值的大小來(lái)判斷線性處理模型的正確性,誤差較小則表明實(shí)驗(yàn)結(jié)果與理論模型具有相同的變化趨勢(shì),定義相對(duì)誤差(取值范圍一般在5%以內(nèi)):
式中UC:實(shí)驗(yàn)測(cè)得LED負(fù)載端的電壓值。
實(shí)驗(yàn)測(cè)得數(shù)據(jù)如表4所示,當(dāng)比例系數(shù)k=0.5,1和2時(shí),電位器控制電壓的理論值分別為0~3.3 V,0~3.3 V和0~1.5 V,LED負(fù)載端的電壓理論值范圍分別為0~1.5 V,0~3.3 V,0~3.3 V。
實(shí)驗(yàn)結(jié)果表明隨著電位器的調(diào)節(jié),LED負(fù)載端的電壓值也在發(fā)生變化,這說(shuō)明LED受到STM32單片機(jī)的控制,STM32單片機(jī)也隨著電位器的調(diào)節(jié)而有不同占空比的PWM輸出。在調(diào)光級(jí)為1000時(shí),LED的亮暗變化均勻,通過(guò)誤差分析,得出相對(duì)誤差值均在5%以內(nèi),實(shí)驗(yàn)結(jié)果驗(yàn)證了式(5)和式(6)建立的線性處理模型。當(dāng)調(diào)光級(jí)m的值比較小時(shí),LED的亮度并不明顯,此時(shí)LED受到占空比較小的PWM控制,LED兩端的電壓值也較小。
表 4 LED調(diào)光器實(shí)驗(yàn)數(shù)據(jù)
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 |
||
|
相對(duì)誤差(%) |
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 |
||
|
相對(duì)誤差(%) |
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 |
||
|
相對(duì)誤差(%) |
3.846 |
3.454 |
4.714 |
4.918 |
||
結(jié) 論
STM32單片機(jī)的應(yīng)用廣泛,基于STM32的PWM調(diào)光器,將電位器與LED相對(duì)地隔離開(kāi)來(lái),通過(guò)建立裝載值n與從電位器端采集的AD數(shù)據(jù)之間的映射模型,得到LED調(diào)光器的調(diào)光級(jí)只與PWM的一個(gè)周期值m有關(guān)。在設(shè)置的調(diào)光級(jí)m=1000的實(shí)驗(yàn)結(jié)果中,驗(yàn)證了所建立的線性處理模型,LED的亮暗變化均勻,相對(duì)誤差也較小。
參考文獻(xiàn)
[1] 賈冬穎, 王巍. 基于STC單片機(jī)LED智能照明系統(tǒng)的設(shè)計(jì) [J]. 照明工程學(xué)報(bào), 2010, (02): 71-73+80.
[2] 鄒中華, 吳陳, 曾慶軍. 基于S3C2410的直流電機(jī)PWM調(diào)速系統(tǒng) [J]. 微計(jì)算機(jī)信息, 2008, 24(4-2): 130-131.
[3] 何國(guó)榮, 紀(jì)娜. 基于PWM技術(shù)的LED補(bǔ)光燈R/B配比算法研究 [J]. 信息技術(shù), 2015, (05): 147-150.
[4] 曹陽(yáng). 基于觸摸按鍵和PWM驅(qū)動(dòng)配色的汽車氛圍燈 [J]. 電子技術(shù), 2015, (12): 1-3.
[5] 楊學(xué)存, 楊戰(zhàn)社, 孔令紅. 基于ARM的嵌入式直流電機(jī)PWM調(diào)速系統(tǒng)設(shè)計(jì) [J]. 煤礦機(jī)械, 2012, 33(04): 255-257.
[6] 洪俊峰, 卜文強(qiáng), 張榕鑫, 等. 基于STM32 PWM的正弦信號(hào)發(fā)生器設(shè)計(jì) [J]. 合肥工業(yè)大學(xué)學(xué)報(bào)(自然科學(xué)版), 2014, 37(02): 188-191+224.
[7] 王瓊, 吳惠, 夏光, 等. 基于PWM控制模式的高速開(kāi)關(guān)閥開(kāi)關(guān)特性分析及優(yōu)化 [J]. 合肥工業(yè)大學(xué)學(xué)報(bào)(自然科學(xué)版), 2016, (09): 1199-1204.
[8] 王子權(quán). 基于STM32的PWM調(diào)光器 [J]. 電氣自動(dòng)化, 2018, 40(06): 98-100+115.
[9] 李素娟, 蔣維安. 直流電機(jī)PWM調(diào)速系統(tǒng)中控制電壓非線性研究 [J]. 現(xiàn)代電子技術(shù), 2010, (22): 196-198+202.
[10] 李楊帥. 基于PWM的無(wú)級(jí)調(diào)光LED驅(qū)動(dòng)電路設(shè)計(jì) [D]: 長(zhǎng)安大學(xué), 2015.
[11] 程伊炳, 金尚忠. 基于多路輸出的高效LED驅(qū)動(dòng)器的分析和仿真 [J]. 照明工程學(xué)報(bào), 2013, (02): 66-70.
總結(jié)
以上是生活随笔為你收集整理的STM32控制器多级LED调光原理与实验的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: jax-rs jax-ws_JAX-RS
- 下一篇: 给陌生的网吧修一天电脑没收费给陌生的网吧