亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于STM32的PWM調(diào)光器

        2018-12-12 07:35:40王子權(quán)
        電氣自動(dòng)化 2018年6期
        關(guān)鍵詞:電位器調(diào)光時(shí)鐘

        王子權(quán)

        (合肥工業(yè)大學(xué),安徽 合肥 230009)

        0 引 言

        燈具伴隨著人們的日常生活,對(duì)于燈光亮度的調(diào)節(jié)也隨著科技的發(fā)展應(yīng)運(yùn)而生。普通的調(diào)光電路是將燈具與一個(gè)變阻器串聯(lián),通過調(diào)節(jié)變阻器的阻值大小,達(dá)到對(duì)燈具的功率的調(diào)節(jié),變阻器會(huì)消耗一定的功率,而且隨著變阻器阻值的增大,燈具所具有的有效功率逐漸變小。PWM是脈寬寬度調(diào)制的簡(jiǎn)稱[1],其控制簡(jiǎn)單靈活,損耗小,方便使用[2],憑借它的開關(guān)頻率高,低速運(yùn)行平穩(wěn),動(dòng)態(tài)性能優(yōu)良[3]等特點(diǎn),在電機(jī)調(diào)速方面得到普遍應(yīng)用。STM32F103ZET6是STM32系列高端單片機(jī)的一種,集成了AD轉(zhuǎn)換與PWM輸出功能,可以直接進(jìn)行數(shù)據(jù)采集和PWM輸出。由于STM32單片機(jī)需要對(duì)其功能進(jìn)行配置才能正常使用,所以這也成為了其功耗低的一種機(jī)制,應(yīng)用STM32單片機(jī)進(jìn)行控制的場(chǎng)合越來越多。

        1 調(diào)光原理

        1.1 STM32的PWM調(diào)節(jié)原理

        圖1 典型PWM波形

        脈沖寬度(PWM)調(diào)制,是一種周期一定而高低電平的占空比可以調(diào)制的方波信號(hào)[4],其波形如圖1所示。所以PWM的實(shí)質(zhì)是以調(diào)節(jié)占空比來改變負(fù)載兩端的電壓平均值,電壓變化關(guān)系[5]見式(2)。

        根據(jù)圖1可得PWM波形的分段函數(shù)為:

        (1)

        式中:Tper為PWM的周期;Tset為PWM高電平時(shí)間;UH為PWM高電平電壓值;UL為PWM低電平電壓值;k為PWM諧波次數(shù)。

        Uavr=α(UH-UL)+UL,(0≤α≤1)

        (2)

        式中:Uavr為負(fù)載兩端平均電壓;α為PWM占空比。由試驗(yàn)測(cè)得PWM的低電平時(shí)的電壓值約為0 V,故可將式(2)化簡(jiǎn)為:

        Uavr=αUH

        (3)

        在STM32中,定時(shí)器可以用來產(chǎn)生PWM輸出,其中定時(shí)器1和定時(shí)器8可以產(chǎn)生最多7路PWM輸出,除了定時(shí)器6和7不能產(chǎn)生PWM輸出以外,STM32最多可以產(chǎn)生30路PWM輸出,通過STM32的庫函數(shù)即可配置產(chǎn)生PWM輸出。

        在STM32固件庫的庫函數(shù)中,TIM_Period為TIM_TimeBaseInitTypeDef結(jié)構(gòu)體成員,表示為自動(dòng)重裝寄存器值,也就是PWM的一個(gè)周期值,TIM_SetCompare函數(shù)是選定定時(shí)器和設(shè)置占空比值的函數(shù),根據(jù)式(3)可推算出STM32的PWM輸出電壓變化關(guān)系。

        (4)

        式中:n為TIM_SetCompare裝載值;m為PWM一個(gè)周期值;T為單片機(jī)計(jì)數(shù)脈沖基本周期。試驗(yàn)使用定時(shí)器3產(chǎn)生PWM輸出,PWM的一個(gè)周期值m在試驗(yàn)程序中直接就可以進(jìn)行配置,其PWM發(fā)生程序如下:

        #include "pwm.h"/*PWM初始化函數(shù)*/

        void pwmInit(){

        pwmTIM3Init();//TIM3初始化

        pwmLEDInit();//LED初始化

        pwmTIM3OCInit();//TIM3參數(shù)設(shè)置}

        /*定時(shí)器3配置初始化函數(shù)*/

        void pwmTIM3Init(){

        TIM_TimeBaseInitTypeDefTIM_TimeBaseInitStructure;/*初始化TIMx的時(shí)間基數(shù)單位*/

        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);/*使能定時(shí)器3時(shí)鐘*/

        TIM_TimeBaseInitStructure.TIM_Period=1 000;/*PWM在一個(gè)周期內(nèi)的震蕩次數(shù)周期*/

        TIM_TimeBaseInitStructure.TIM_Prescaler=0;/*TIMx時(shí)鐘頻率除數(shù)的預(yù)分頻值*/

        TIM_TimeBaseInitStructure.TIM_ClockDivision=0;/*不進(jìn)行時(shí)鐘分割*/

        TIM_TimeBaseInitStructure.TIM_CounterMode=TIM_CounterMode_Up;/*定時(shí)器向上計(jì)數(shù)*/

        TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStructure);/*初始化定時(shí)器3*/

        TIM_Cmd(TIM3,ENABLE);/*必須使能定時(shí)器*/}

        /*LED配置初始化函數(shù)*/

        void pwmLEDInit(){

        GPIO_InitTypeDefGPIO_InitStructure;/*初始化外設(shè)GPIOx寄存器*/

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);/*開啟LED連接引腳的時(shí)鐘*/

        RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);/*必須開啟復(fù)用*/

        GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7;/*定義LED連接引腳*/

        GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;/*設(shè)置GPIO推挽輸出*/

        GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz;/*設(shè)置選中管腳的速率*/

        GPIO_Init(GPIOC,&GPIO_InitStructure);/*GPIO初始化

        GPIO_SetBits(GPIOC,GPIO_Pin_7);/*設(shè)置LED引腳為高電平*/

        GPIO_PinRemapConfig(GPIO_FullRemap_TIM3,ENABLE);/*必須完成完全映射*/}

        /*定時(shí)器3的PWM配置初始化函數(shù)*/

        void pwmTIM3OCInit(){

        TIM_OCInitTypeDefTIM_OCInitStructure;/*初始化外設(shè)TIMx*/

        TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;/*選擇定時(shí)器模式為TIM脈沖寬度調(diào)制模式1*/

        TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;/*使能輸出比較*/

        TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_Low;/*設(shè)置輸出極性為低*/

        TIM_OC2Init(TIM3,&TIM_OCInitStructure);/*2表示使用第二通道TIM_Channel_2*/

        TIM_OC2PreloadConfig(TIM3,TIM_OCPreload_Enable);/*使能預(yù)裝載*/}

        1.2 系統(tǒng)整體結(jié)構(gòu)

        圖2 調(diào)光器整體結(jié)構(gòu)圖

        調(diào)光器的整體結(jié)構(gòu)如圖2所示,包括電位器,STM32單片機(jī)和負(fù)載電路組成。電位器是進(jìn)行調(diào)節(jié)的控制始端,通過旋動(dòng)電位器使其電阻值發(fā)生改變。STM32單片機(jī)對(duì)從電位器采集到的數(shù)據(jù)進(jìn)行處理,得到Tset,并傳遞給TIM_SetCompare函數(shù),從而得到一定的占空比,使負(fù)載端接收到一定占空比的PWM輸出。

        1.3 AD轉(zhuǎn)換到PWM輸出的映射

        從電位器得到的AD數(shù)據(jù)與最終的PWM輸出存在著映射關(guān)系,STM32就是完成映射的處理核心。根據(jù)映射關(guān)系的不同,有線性關(guān)系和非線性關(guān)系,PWM的輸出也有線性輸出和非線性輸出。

        以線性輸出為例,對(duì)AD數(shù)據(jù)進(jìn)行算數(shù)平均值處理,建立比例線性模型,可得線性映射關(guān)系為:

        (5)

        式中:k為比例系數(shù);n為從AD采樣的數(shù)據(jù)個(gè)數(shù);xi為從電位器采樣的數(shù)據(jù)值。

        從式(4)可以看出調(diào)光器的級(jí)數(shù)只與PWM的一個(gè)周期Tper有關(guān),即只與m有關(guān),試驗(yàn)設(shè)置m=1 000,即設(shè)置LED燈具有1 000級(jí)的亮暗變化。根據(jù)式(4)和式(5)可得電壓變化關(guān)系:

        (6)

        圖3 電位器電路

        如果要對(duì)采集到的AD數(shù)據(jù)進(jìn)行適當(dāng)?shù)奶幚?,如減去最大值和最小值以及減去數(shù)據(jù)跳變值或進(jìn)行非線性處理等,只要對(duì)式(5)進(jìn)行相應(yīng)的變化即可。

        2 調(diào)光器硬件設(shè)計(jì)

        2.1 電位器

        電位器是旋轉(zhuǎn)變阻裝置,通過變阻使電阻的兩端電位差產(chǎn)生變化,電路如圖3所示。試驗(yàn)使用的電位器有三個(gè)引腳,其中兩端分別接VCC和GND,中間一端引出作為STM32的AD轉(zhuǎn)換輸入端,試驗(yàn)裝置將電位器的輸出端連接到了GPIOA1引腳上。從圖3中可以看出,電位器輸出端輸出的是電壓信號(hào),輸出電壓的取值范圍為0 V到3.3 V,當(dāng)輸出電壓為0 V時(shí),LED燈滅,LED燈的亮度隨著電位器輸出端的電位值的變化而變化。

        2.2 STM32F103ZET6單片機(jī)與LED

        STM32F103ZET6單片機(jī)是通用性基于ARMR的32位增強(qiáng)型微控制器,其引腳數(shù)目144個(gè),具有512 k字節(jié)的閃存存儲(chǔ)器。STM32單片機(jī)對(duì)從電位器采集到的AD數(shù)據(jù)進(jìn)行相應(yīng)的處理,如比例線性處理以及復(fù)雜的非線性處理等,得到PWM的占空比值,通過得到的占空比,進(jìn)行相應(yīng)的PWM輸出。

        圖4 LED發(fā)光原理

        LED是利用半導(dǎo)體PN結(jié)或類似結(jié)構(gòu)把電能轉(zhuǎn)化成光能的固態(tài)器件[6],發(fā)光原理如圖4所示。從圖4可以看出,只有給LED外加正向偏置的電壓,LED才會(huì)導(dǎo)通發(fā)光。

        發(fā)光二極管的亮度可以通過工作電壓或電流的大小進(jìn)行調(diào)節(jié),在很寬的工作電壓電流范圍內(nèi),發(fā)光二極管的發(fā)光亮度與工作電壓電流大小成線性關(guān)系。LED燈可通過串聯(lián)限流電阻直接與單片的IO引腳相連,試驗(yàn)裝置將LED與GPIOC的GPIO_Pin_7引腳相連。所以控制GPIOC的GPIO_Pin_7引腳的PWM輸出即可獲得對(duì)LED的亮暗調(diào)節(jié)。

        3 調(diào)光器軟件設(shè)計(jì)與試驗(yàn)

        3.1 調(diào)光器軟件設(shè)計(jì)

        圖5 調(diào)光器程序流程圖

        基于Eclipse開發(fā)平臺(tái),設(shè)計(jì)實(shí)現(xiàn)了調(diào)光器的C語言代碼。程序流程包括:初始化(系統(tǒng)時(shí)鐘初始化、PWM初始化、ADC初始化)、數(shù)據(jù)處理過程和PWM輸出,如圖5所示。

        Eclipse是基于Java的開源代碼可擴(kuò)展開發(fā)平臺(tái)[7],為大型程序的開發(fā)提供了很大的便利,其代碼提示與補(bǔ)全功能深受大型軟件開發(fā)者的喜愛。Eclipse的可擴(kuò)展功能使得開發(fā)者可以安裝許多外圍插件,也可以開發(fā)新的插件完成更多的功能[8],如基于Eclipse圖形建??蚣艿膱D形化脈沖序列設(shè)計(jì)軟件[9]。Eclipse的代碼提示功能如圖6所示。

        圖6 Eclipse代碼提示功能

        3.2 STM32時(shí)鐘配置

        STM32時(shí)鐘配置:使用外部8 MHz晶振;系統(tǒng)時(shí)鐘SYSCLK為72 MHz;外設(shè)時(shí)鐘HCLK為72 MHz;外圍總線APB1為36 MHz;外圍總線APB2為72 MHz。STM32在系統(tǒng)時(shí)鐘為72 MHz下的工作穩(wěn)定可靠,運(yùn)算速度較快,其時(shí)鐘配置函數(shù)可直接調(diào)用庫函數(shù)SystemInit()即可完成上述時(shí)鐘配置。

        3.3 調(diào)光器裝置試驗(yàn)

        基于STM32F103ZET6開發(fā)板進(jìn)行調(diào)光器的驗(yàn)證試驗(yàn),設(shè)置LED燈調(diào)光級(jí)為1 000,即m=1 000,單片機(jī)從電位器采集的AD數(shù)據(jù)每50個(gè)作為一個(gè)樣本,設(shè)置比例系數(shù)k=0.5,1,2,進(jìn)行3次調(diào)光器試驗(yàn),如圖7所示。試驗(yàn)結(jié)果表明PWM隨著電位器的調(diào)節(jié)而有不同的輸出,在調(diào)光級(jí)為1 000時(shí),LED燈具有光滑的亮暗變化。

        圖7 調(diào)光器試驗(yàn)板

        試驗(yàn)測(cè)得數(shù)據(jù)如表1所示,當(dāng)比例系數(shù)k發(fā)生變化時(shí),電位器的控制電壓范圍和LED電位值也會(huì)發(fā)生變化:k=0.5時(shí),電位器控制電壓為0~3.3 V,LED電位值為0~1.5 V;k=1時(shí),電位器控制電壓為0~3.3 V,LED電位值為0~3.3 V;k=2時(shí),電位器控制電壓為0~1.5 V,LED電位值為0~3.3 V。這與式(5)、式(6)建立的比例線性模型是吻合的。

        表1 調(diào)光器試驗(yàn)數(shù)據(jù)

        4 結(jié)束語

        基于STM32的PWM多級(jí)調(diào)光器,將電位器與LED相對(duì)地隔離開來,從而可以保證LED的有效功率,降低串聯(lián)電阻的功耗。式(4)表明了調(diào)光器的調(diào)光級(jí)數(shù)只與PWM的一個(gè)周期值m有關(guān),通過設(shè)置m的值可獲得m級(jí)調(diào)光。試驗(yàn)程序在Eclipse環(huán)境下進(jìn)行編寫,在1 000級(jí)調(diào)光的試驗(yàn)結(jié)果中,表明了LED具有平滑的亮暗變化。該裝置設(shè)計(jì)思想同樣可應(yīng)用于電機(jī)調(diào)速,臺(tái)燈、路燈等的調(diào)光等,實(shí)現(xiàn)弱電控制到強(qiáng)電執(zhí)行的變換。

        猜你喜歡
        電位器調(diào)光時(shí)鐘
        別樣的“時(shí)鐘”
        服務(wù)區(qū)LED照明調(diào)光算法探究
        古代的時(shí)鐘
        全海深A(yù)RV水下LED調(diào)光驅(qū)動(dòng)電路設(shè)計(jì)
        淺談公路隧道照明調(diào)光方案比選
        基于單片機(jī)的大棚自動(dòng)調(diào)光設(shè)計(jì)
        電子制作(2017年17期)2017-12-18 06:40:52
        有趣的時(shí)鐘
        Mixly開源項(xiàng)目設(shè)計(jì)10:用自制多量程歐姆表測(cè)量電位器的電阻
        時(shí)鐘會(huì)開“花”
        電位器在直線步進(jìn)電機(jī)中的應(yīng)用
        亚洲老妈激情一区二区三区| 日韩精品一区二区亚洲观看av| 国产麻豆一区二区三区在线播放| 亚洲最大一区二区在线观看| 亚洲av无码专区在线观看成人| 色八区人妻在线视频免费| 亚洲av无码资源在线观看| 久久精品国产乱子伦多人| 国产成人精品一区二区不卡| 成在线人av免费无码高潮喷水| 免费黄色电影在线观看| 丁香九月综合激情| 久久久国产精品黄毛片| 亚洲成a∨人片在线观看不卡 | 人妻中文字幕一区二区二区| 女同性恋看女女av吗| 欧美日本精品一区二区三区| 免费观看黄网站在线播放| 欧美日韩中文字幕日韩欧美| 极品夫妻一区二区三区| 日韩精品久久无码中文字幕| 老熟女多次高潮露脸视频| 99热久久只有这里是精品| 一本色道久久亚洲加勒比| 婷婷丁香五月激情综合| 97久久超碰国产精品2021| 精品人妻一区二区三区蜜桃 | 美女黄网站永久免费观看网站| 极品av一区二区三区| 四虎影视免费观看高清视频| 久热香蕉av在线爽青青| 亚洲一区二区三区乱码在线| 国产最新女主播福利在线观看| 成午夜精品一区二区三区| 中文在线天堂网www| 日本无吗一区二区视频| 精品亚洲一区二区三区四区五区| 婷婷色婷婷开心五月四房播播| 亚洲av无码一区二区三区性色| 99RE6在线观看国产精品| av网站大全免费在线观看|