在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

 巧妙利用pwm原理,PWM控制LED實現呼吸燈

GReq_mcu168 ? 來源:玩轉單片機 ? 作者:玩轉單片機 ? 2020-10-14 18:26 ? 次閱讀

實驗目標

利用STM32定時器產生PWM信號

利用PWM信號實現呼吸燈。

什么是PWM信號呢?

PWM,英文名Pulse Width Modulation。

PWM信號是一種脈寬調制信號,廣范用于LED電機控制等場合。

PWM信號其實類似于方波,只有0和1兩種狀態。

PWM信號可以調節占空比。

不同占空比可以使LED產生不同的亮度。

占空比就是指在一個周期內, 信號處于高電平的時間占據整個信號周期的百分比, 例如上圖中所示脈沖的占空比就是25%。

PWM波可以由GPIO口產生,通過GPIO口輸出高電平,延時,輸出低電平,延時來產生PWM波。

還可以使用定時器,利用比較寄存器形成PWM。

本實驗就是利用PWM信號這一特性控制LED產生不同亮度,從而實現呼吸燈的效果。

PWM信號應用場景

我們經常見到的就是交流調光電路,高電平占多一點,也就是占空比大一點亮度就亮一點,占空比小一點亮度就沒有那么亮,前提是PWM的頻率要大于我們人眼識別頻率,要不然會出現閃爍現象。

除了在調光電路應用,還有在直流斬波電路、蜂鳴器驅動、電機驅動、逆變電路、加濕機霧化量等都會有應用。

PWM信號如何輸出呢?

1)可以直接通過芯片內部模塊輸出PWM信號,前提是這個I/O口要有PWM集成模塊,自帶PWM功能的芯片只需要簡單幾步操作即可實現PWM功能。這種自帶有PWM輸出的功能模塊在程序設計更簡便,同時數據更精確。如下圖,一般的IO口都會標明這個GPIO是否是PWM口;

STM32單片機就是標識如下形式:TIMx_CHy這樣的形式,下圖中所示的PWM引腳即占用TIM1的通道1。

2)但是如果IC內部沒有PWM功能模塊,或者要求不是很高的話可以利用I/O口結合定時器輸出PWM信號,因為PWM信號其實就是一高一低的一系列電平組合在一起。具體方法是給I/O加一個定時器,輸出的PWM信號頻率與你的定時器一致,用定時器中斷來計數,但是這種方法一般不采用,除非對于精度、頻率等要求不是很高可以這樣實現。

LED使用的引腳:

原理圖

由上面的原理圖可知,當LED1和LED2引腳為高電平的時候,LED滅;當引腳為低電平的時候,LED亮。

一個周期內低電平占比越來越少,高電平占空比越來越高,LED越來越暗。

具體實現

1. LED引腳PB8、PB9初始化

注意 GPIO_Mode 要設置為:GPIO_Mode_AF_PP

voidLED_Init(void) { GPIO_InitTypeDefGPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8|GPIO_Pin_9; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz; GPIO_Init(GPIOB,&GPIO_InitStructure); }

2. TIM4_CH3和TIM4_CH4初始化

voidLed_PWM_Init(u16arr,u16psc) { TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure; TIM_OCInitTypeDefTIM_OCInitStructure; NVIC_InitTypeDefNVIC_InitStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE); LED_Init(); TIM_DeInit(TIM4); /*TimeBaseconfiguration*/ TIM_TimeBaseStructure.TIM_Period=arr; TIM_TimeBaseStructure.TIM_Prescaler=psc; TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; TIM_TimeBaseStructure.TIM_ClockDivision=0; TIM_TimeBaseStructure.TIM_RepetitionCounter=0; TIM_TimeBaseInit(TIM4,&TIM_TimeBaseStructure); TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM2; TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse=0; TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_High; TIM_OC3Init(TIM4,&TIM_OCInitStructure); TIM_OC4Init(TIM4,&TIM_OCInitStructure); TIM_CtrlPWMOutputs(TIM4,ENABLE); TIM_OC3PreloadConfig(TIM4,TIM_OCPreload_Enable); TIM_OC4PreloadConfig(TIM4,TIM_OCPreload_Enable); TIM_ARRPreloadConfig(TIM4,ENABLE); TIM_Cmd(TIM4,ENABLE); }

其中參數arr為重載值,psc為TIMx時鐘頻率的預分頻系數。

設置定時器的周期:

PWM的周期一般要設置到50Hz以上,否則,我們會看到明顯的視覺閃爍。

設置定時器的周期需要改變ARR和PSC兩個寄存器的值來控制輸出PWM的周期。

在STM32的庫函數中,

TIM_TimeBaseStructure.TIM_Period即設置的ARR寄存器,溢出計數值,(如有中斷)達到這個值就中斷,對應參數arr;

TIM_TimeBaseStructure.TIM_Prescaler即設置的PSC寄存器,對應預分頻系數參數psc。

TIM_TimeBaseStructure.TIM_Period=arr; TIM_TimeBaseStructure.TIM_Prescaler=psc; TIM_TimeBaseStructure.TIM_ClockDivision=0; TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; TIM_TimeBaseInit(TIM1,&TIM_TimeBaseStructure);

應用

Led_PWM_Init(899,0);

psc為0,表示初始化PWM對應的定時器不分頻,仍舊為72MHz,arr為899,代表PWM的頻率為:72000/(899+1)=80KHz。周期等于頻率的倒數,即1/80KHz=12.5us。

while(1) { //呼吸燈 if(dir) led0pwmval++; else led0pwmval--; if(led0pwmval>900) dir=0; if(led0pwmval==0) dir=1; TIM_SetCompare3(TIM4,led0pwmval);//CH3綠色 TIM_SetCompare4(TIM4,led0pwmval);//CH4紅色 delay_ms(1); }

其中代碼:

TIM_SetCompare3(TIM4,led0pwmval);//CH3綠色 TIM_SetCompare4(TIM4,led0pwmval);//CH4紅色

就是調節定時器TIM4的通道3和通道4的占空比,當計數時間達到led0pwmval時電平翻轉,比如默認0-arr都為高電平,如TIM_SetCompare的值為arr/2,就是0-arr/2 為低電平,arr/2-arr為高電平,占空比 50%。

TIM_SetCompare設置的值就是設置的CCRx。由上面的圖可知,CCRx/ARR就是占空比,由于占空比不能大于1,CCRx的值肯定不能大于ARR了。

比如我們執行如下代碼:

TIM_SetCompare3(TIM4,450);//CH3綠色 TIM_SetCompare4(TIM4,450);//CH4紅色

示波器中可以看到如下效果:

從上我們可以看到:

脈沖頻率是:80KHz

周期是:12.50us

占空比:50% (450/(899+1))

跟上面的我們設置的值是一致的。

實現的效果

視頻中的板子就是2020.06每月活動智能風扇使用的板子。

由核心板+底板的形式組成,待月底全部功能實現并驗證沒有問題之后,開源原理圖和PCB圖給大家下載自行搭建測試。

本文的PWM控制LED實現呼吸燈的原理,其實就是我們控制風扇轉速的原理,有了本節課的知識,我們就可以控制風扇的轉速了。

原文標題:利用PWM原理,實現呼吸燈功能

文章出處:【微信公眾號:玩轉單片機】歡迎添加關注!文章轉載請注明出處。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • led
    led
    +關注

    關注

    242

    文章

    23593

    瀏覽量

    668556
  • PWM
    PWM
    +關注

    關注

    116

    文章

    5292

    瀏覽量

    217113
  • PWM信號
    +關注

    關注

    3

    文章

    98

    瀏覽量

    20469
  • 呼吸燈
    +關注

    關注

    10

    文章

    112

    瀏覽量

    43024
  • stm32定時器
    +關注

    關注

    0

    文章

    13

    瀏覽量

    2375

原文標題:利用PWM原理,實現呼吸燈功能

文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。

收藏 3人收藏
  • 怡情养性1
  • 木槿花海1

評論

相關推薦

使用單片機驅動多組LED實現呼吸效果電路

各位大佬,請教下,當前我需要使用單片機驅動控制20路并聯LED,需要PWM驅動實現呼吸
發表于 04-11 14:24

【幸狐Omni3576邊緣計算套件試用體驗】PWM呼吸

【幸狐Omni3576邊緣計算套件試用體驗】PWM呼吸 本文介紹了幸狐Omni3576邊緣計算套件實現 GPIO 輸出電平的控制
發表于 04-03 04:59

【瑞薩RA2L1入門學習】+PWM呼吸

1.新建項目 2.PWM 脈沖寬度調制是一種模擬控制方式,根據相應載荷的變化來調制晶體管基極或MOS管柵極的偏置,來實現晶體管或MOS管導通時間的改變,從而實現開關穩壓電源輸出的改變
發表于 03-30 22:28

【瑞薩RA2L1入門學習】01. PWM 呼吸

占空比的調節就是實現呼吸效果的關鍵。通過控制PWM信號的占空比,可以實現
發表于 03-07 11:43

【瑞薩RA2L1入門學習】01、PWM呼吸

低功耗的桌面擺件項目。 這次評測報告內容是PWM呼吸。 2 硬件部分 2.1 LED 這塊RA2L1開發板載有2顆LED
發表于 01-25 13:34

基于FPGA的呼吸設計(附源工程)

,起到一個通知提醒的作用。 設計原理 關于呼吸設計實現的理論主要是PWM有關知識。PWM(Pluse Width Modulation)脈
的頭像 發表于 01-16 10:09 ?437次閱讀
基于FPGA的<b class='flag-5'>呼吸</b><b class='flag-5'>燈</b>設計(附源工程)

PWMLED調光中的應用

脈沖寬度調制(PWM)是一種常用的調光技術,它通過改變脈沖的寬度來控制LED的亮度。這種技術因其高效、節能和易于控制的特點,在
的頭像 發表于 11-28 16:33 ?2510次閱讀

使用PWM實現電源管理的策略

PWM(脈沖寬度調制)是一種廣泛應用于電子設備中實現電壓調節和功率控制的技術,它通過改變信號的脈沖寬度來模擬輸出不同的電壓幅值,從而高效控制設備的工作狀態。在電源管理中,
的頭像 發表于 11-18 16:23 ?946次閱讀

4G模組PWM調光入門:打造個性化呼吸

一直有朋友問我怎么打造個性化呼吸,本文我將以合宙低功耗4G模組經典型號——Air780E為例,展示PWM輸出呼吸
的頭像 發表于 11-17 09:56 ?484次閱讀
4G模組<b class='flag-5'>PWM</b>調光入門:打造個性化<b class='flag-5'>呼吸</b><b class='flag-5'>燈</b>

呼吸的概念和實現原理

呼吸在日常生活中經常見到,如電子時鐘,小夜燈等等,本文我們介紹下通過PWM波來控制LED
的頭像 發表于 10-24 14:50 ?3475次閱讀
<b class='flag-5'>呼吸</b><b class='flag-5'>燈</b>的概念和<b class='flag-5'>實現</b>原理

【RA-Eco-RA0E1-32PIN-V1.0開發板試用】pwm控制led呼吸

我們繼續熟悉e2studio的工具配置生成代碼,本部分介紹,通過芯片的SAU單元部分,使能PWM功能,來輸出可變的占空比,來控制LED的亮案。 首先我們查看原理圖 我們使用的P112這個引腳
發表于 09-17 21:29

使用STM32CubeMX輸出PWM,并制作呼吸效果

概述 本篇文章主要介紹如何使用STM32CubeMX輸出PWM,并制作呼吸效果。 硬件準備 首先需要準備一個開發板,這里我準備的是NUCLEO-F030R8的開發板: 選擇芯片型號 配置時鐘源
發表于 09-04 10:38

如何實現pwm控制功能

PWM(Pulse Width Modulation,脈沖寬度調制)是一種常見的電子控制技術,廣泛應用于各種電子設備中,如電機控制LED調光、電源管理等。 一、
的頭像 發表于 08-08 15:08 ?1289次閱讀

如何使用帶中斷的pwm實現LED呼吸

我想使用帶中斷的 pwm實現 LED 呼吸,即 LED 的強度應該增加或減少。
發表于 06-04 07:21

PWM控制電機轉速的原理與實現

PWM(脈寬調制)是一種廣泛應用于電機控制領域的調制技術。它通過調節脈沖信號的占空比,實現對電機轉速的精確控制PWM
的頭像 發表于 06-03 17:23 ?7745次閱讀
主站蜘蛛池模板: 丁香婷婷综合五月综合色啪 | 四虎影院永久网址 | 男人和女人做免费做爽爽视频 | 极品吹潮视频大喷潮tv | 免费国产99久久久香蕉 | 色秀视频免费高清网站 | 国产精品亚洲玖玖玖在线靠爱 | 久久天天躁狠狠躁夜夜不卡 | 99国产成人精品2021 | 在线人成精品免费视频 | 你懂的福利网站 | 手机看片自拍自自拍日韩免费 | 337p亚洲精品色噜噜狠狠 | 亚洲激情婷婷 | 2018天天干夜夜操 | 69性成熟xxxxhd | 夜夜爱夜夜操 | 午夜小视频在线观看 | 国产人成午夜免费看 | 400部大量精品情侣网站 | 在线播放免费视频 | 天天搞天天爽 | 午夜在线观看免费观看大全 | 免费性网站 | 99干99 | 亚洲一区免费看 | 一区二区三区午夜 | 天天干夜夜看 | 色手机在线| 午夜神马| 欧美一区二区三区视频在线观看 | 亚洲激情视频网 | 国产真实野战在线视频 | 五月激情六月婷婷 | 伊人成人在线 | 一级特黄a免费大片 | 欧美激情αv一区二区三区 欧美激情第一欧美在线 | 性欧美极品另类 | 视频一区二区中文字幕 | 轻点灬大ji巴太大太深了 | 天堂电影在线观看免费入口 |

電子發燒友

中國電子工程師最喜歡的網站

  • 2931785位工程師會員交流學習
  • 獲取您個性化的科技前沿技術信息
  • 參加活動獲取豐厚的禮品