衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何使用PWM技術(shù)控制LED的亮度或直流風(fēng)扇的速度

科技觀察員 ? 來源:circuitdigest ? 作者:Pramoth Thangavel ? 2022-11-07 17:00 ? 次閱讀

在本教程中,我們將了解STM32中的PWM(脈寬調(diào)制),以及如何使用PWM技術(shù)控制LED的亮度或直流風(fēng)扇的速度。

我們知道有兩種類型的信號(hào)模擬和數(shù)字。模擬信號(hào)具有(3V,1V...等)和數(shù)字信號(hào)有(1'和0)。傳感器輸出為模擬信號(hào),這些模擬信號(hào)使用ADC轉(zhuǎn)換為數(shù)字信號(hào),因?yàn)?a target="_blank">微控制器只能理解數(shù)字信號(hào)。處理完這些ADC值后,需要再次將輸出轉(zhuǎn)換為模擬形式以驅(qū)動(dòng)模擬器件。為此,我們使用某些方法,例如PWM,數(shù)模(DAC轉(zhuǎn)換器等。

什么是PWM(帶調(diào)制的脈沖)?

PWM是一種使用數(shù)字值控制模擬設(shè)備的方法,例如控制電機(jī)的速度,LED的亮度等。我們知道電機(jī)和LED在模擬信號(hào)上工作。但是PWM不提供純模擬輸出,PWM看起來像由短脈沖產(chǎn)生的模擬信號(hào),而短脈沖是由占空比提供的。

PWM 的占空比

PWM信號(hào)保持高電平(導(dǎo)通時(shí)間)的時(shí)間百分比稱為占空比。如果信號(hào)始終為ON,則處于100%占空比,如果始終關(guān)閉,則為0%占空比。

Duty Cycle =Turn ON time/ (Turn ON time + Turn OFF time)

采用STM32封裝的PWM

STM32F103C8具有15個(gè)PWM引腳和10個(gè)ADC引腳。有 7 個(gè)定時(shí)器,每個(gè) PWM 輸出由連接到 4 個(gè)定時(shí)器的通道提供。它具有 16 位 PWM 分辨率 (216),即計(jì)數(shù)器和變量可以大到 65535。在 72MHz 時(shí)鐘速率下,PWM 輸出的最大周期約為 1 毫秒。

因此,值 65535 給出了 LED 的全亮度和直流風(fēng)扇的全速(100% 占空比)

同樣,32767 的值給出了 LED 的一半亮度和直流風(fēng)扇的一半速度(50% 占空比)

值 13107 給出 (20%) 亮度和 (20%) 速度(20% 占空比)

poYBAGNoyRiAHKUCAACpcLDsLvQ538.png

在本教程中,我們使用電位計(jì)和STM32通過PWM技術(shù)改變LED的亮度和直流風(fēng)扇的速度。16x2 LCD用于顯示ADC值(0-4095)和輸出的修改變量(PWM值)(0-65535)。

以下是其他微控制器的幾個(gè)PWM示例:

使用帶有MPLAB和XC8的PIC微控制器生成PWM

樹莓派伺服電機(jī)控制

基于 Arduino 的 LED 調(diào)光器,使用 PWM

使用 MSP430G2 的脈寬調(diào)制 (PWM)

在此處查看所有與PWM相關(guān)的項(xiàng)目。

所需組件

STM32F103C8

直流風(fēng)扇

ULN2003 電機(jī)驅(qū)動(dòng)器 IC

指示燈(紅色)

液晶顯示器 (16x2)

電位計(jì)

面包板

電池 9V

跳線

直流風(fēng)扇:這里使用的直流風(fēng)扇是來自舊PC的BLDC風(fēng)扇。它需要外部電源,因此我們使用 9V 直流電池。

ULN2003 電機(jī)驅(qū)動(dòng)器 IC:它用于在一個(gè)方向上驅(qū)動(dòng)電機(jī),因?yàn)殡姍C(jī)是單向的,風(fēng)扇也需要外部電源。在此處了解有關(guān)基于 ULN2003 的電機(jī)驅(qū)動(dòng)器電路的更多信息。以下是ULN2003的圖片圖:

pYYBAGNoyRqANRCIAABZRY0PjR0313.png

引腳(IN1 到 IN7)是輸入引腳,(OUT 1 到 OUT 7)是相應(yīng)的輸出引腳。COM 被賦予輸出設(shè)備所需的正源電壓。

發(fā)光二極管:使用紅色 LED 發(fā)出紅光??梢允褂萌魏晤伾?/p>

電位器:使用兩個(gè)電位器,一個(gè)用于ADC模擬輸入的分壓器,另一個(gè)用于控制LED的亮度。

STM32的引腳詳細(xì)信息

STM32-Pin-Details_0.png

正如我們所看到的,PWM引腳以波形格式(~)表示,有15個(gè)這樣的引腳,ADC引腳以綠色表示,10個(gè)ADC引腳用于模擬輸入。

電路圖和連接

pYYBAGNoySmASZpOAAD2csxrtks715.png

STM32與各種組件的連接說明如下:

STM32,帶模擬輸入(ADC)

電路左側(cè)的電位計(jì)用作穩(wěn)壓器,用于調(diào)節(jié)來自3.3V引腳的電壓。電位計(jì)的輸出,即電位計(jì)的中心引腳連接到STM32的ADC引腳(PA4)。

STM32 帶指示燈

STM32 PWM輸出引腳(PA9)通過串聯(lián)電阻電容連接到LED的正極引腳。

電阻器電容器的LED

串聯(lián)電阻和并聯(lián)電容器與 LED 連接,以從 PWM 輸出產(chǎn)生正確的模擬波,因?yàn)槟M輸出與直接從 PWM 引腳生成時(shí)不是純凈的。

STM32 帶 ULN2003 和 ULN2003 帶風(fēng)扇

STM32 PWM輸出引腳(PA8)連接到ULN2003 IC的輸入引腳(IN1),ULN2003的相應(yīng)輸出引腳(OUT1)連接到直流風(fēng)扇的負(fù)極線。

直流風(fēng)扇的正極引腳連接到 ULN2003 IC 的 COM 引腳,外部電池 (9V DC) 也連接到 ULN2003 IC 的同一 COM 引腳。ULN2003的接地引腳連接到STM32的接地引腳,電池負(fù)極連接到同一接地引腳。

STM32 帶液晶顯示器 (16x2)

液晶屏引腳編號(hào) 液晶屏引腳名稱 STM32 引腳名稱
1 地面(錠) 地面 (G)
2 可變資本公司 5V
3 維伊 電位計(jì)中心的引腳
4 寄存器選擇 (RS PB11
5 讀/寫 (RW) 地面 (G)
6 啟用 (英文) PB10
7 數(shù)據(jù)位 0 (DB0) 無連接(常閉)
8 數(shù)據(jù)位 1 (DB1) 無連接(常閉)
9 數(shù)據(jù)位 2 (DB2) 無連接(常閉)
10 數(shù)據(jù)位 3 (DB3) 無連接(常閉)
11 數(shù)據(jù)位 4 (DB4) PB0
12 數(shù)據(jù)位 5 (DB5) PB1
13 數(shù)據(jù)位 6 (DB6) 電腦13
14 數(shù)據(jù)位 7 (DB7) 電腦14
15 正極指示燈 5V
16 負(fù)極指示燈 地面 (G)

右側(cè)的電位計(jì)用于控制LCD顯示屏的對(duì)比度。上表顯示了LCD和STM32之間的連接。

poYBAGNoySyANLJnAAEMYGWvx4Y956.jpg

在此編碼中,我們將從連接到左電位計(jì)中心引腳的ADC引腳(PA4)獲取輸入模擬值,然后將模擬值(0-3.3V)轉(zhuǎn)換為數(shù)字或整數(shù)格式(0-4095)。該數(shù)字值進(jìn)一步作為PWM輸出提供,以控制LED亮度和直流風(fēng)扇的速度。16x2 LCD用于顯示ADC和映射值(PWM輸出值)。

首先,我們需要包含LCD頭文件,聲明LCD引腳并使用以下代碼初始化它們。

#include // include the LCD library

const int rs = PB11, en = PB10, d4 = PB0, d5 = PB1, d6 = PC13, d7 = PC14; //mention the pin names to with LCD is connected to

LiquidCrystal lcd(rs, en, d4, d5, d6, d7); //Initialize the LCD

接下來使用STM32的引腳聲明和定義引腳名稱

const int analoginput = PA4; // Input from potentiometer

const int led = PA9; // LED output

const int fan = PA8; // fan output

現(xiàn)在在setup()中,我們需要顯示一些消息并在幾秒鐘后清除它們,并指定輸入引腳和PWM輸出引腳

lcd.begin(16,2); //Getting LCD ready

lcd.clear(); //Clears LCD

lcd.setCursor(0,0); //Sets cursor at row0 and column0

lcd.print("CIRCUIT DIGEST"); //Displays Circuit Digest

lcd.setCursor(0,1); //Sets Cursor at column0 and row1

lcd.print("PWM USING STM32"); //Displays PWM using STM32

delay(2000); // Delay Time

lcd.clear(); // Clears LCD

pinMode(analoginput, INPUT); // set pin mode analoginput as INPUT

pinMode(led, PWM); // set pin mode led as PWM output

pinMode(fan, PWM); // set pin mode fan as PWM output

模擬輸入引腳(PA4)通過引腳模式(模擬輸入,輸入)設(shè)置為輸入,LED引腳設(shè)置為PWM輸出由引腳模式(led,PWM),風(fēng)扇引腳設(shè)置為PWM輸出由引腳模式(風(fēng)扇,PWM)設(shè)置。此處,PWM 輸出引腳連接到 LED (PA9) 和風(fēng)扇 (PA8)。

接下來在void loop()函數(shù)中,我們從ADC引腳(PA4)讀取模擬信號(hào)并將其存儲(chǔ)在一個(gè)整數(shù)變量中,該整數(shù)變量使用以下代碼將模擬電壓轉(zhuǎn)換為數(shù)字整數(shù)值(0-4095) int valueadc = analogRead(analoginput);

這里需要注意的重要一點(diǎn)是PWM引腳,即STM32的通道具有16位分辨率(0-65535),因此我們需要使用如下所示的映射功能將其與模擬值進(jìn)行映射

int result = map(valueadc, 0, 4095, 0, 65535).

如果不使用映射,我們將無法通過改變電位計(jì)來獲得風(fēng)扇的全速或LED的全亮度。

然后,我們使用pwmWrite(led,結(jié)果)將PWM輸出寫入LED,并使用pwmWrite(風(fēng)扇,結(jié)果)函數(shù)將PWM輸出寫入風(fēng)扇。

最后,我們使用以下命令在LCD顯示屏上顯示模擬輸入值(ADC值)和輸出值(PWM值)

lcd.setCursor(0,0); //Sets cursor at row0 and column0

lcd.print("ADC value= "); // prints the words “”

lcd.print(valueadc); //displays valueadc

lcd.setCursor(0,1); //Sets Cursor at column0 and row1

lcd.print("Output = "); //prints the words in ""

lcd.print(result); //displays value result

#include // include the LCD library

const int rs = PB11, en = PB10, d4 = PB0, d5 = PB1, d6 = PC13, d7 = PC14; //mention the pin names to with LCD is connected to

LiquidCrystal lcd(rs, en, d4, d5, d6, d7); //Initialize the LCD


const int analoginput = PA4; // Input from potentiometer

const int led = PA9; // LED output

const int fan = PA8; // fan output



void setup()

{

lcd.begin(16,2); //Getting LCD ready

lcd.clear(); //Clears LCD

lcd.setCursor(0,0); //Sets cursor at row0 and column0

lcd.print("CIRCUIT DIGEST"); //Displays Circuit Digest

lcd.setCursor(0,1); //Sets Cursor at column0 and row1

lcd.print("PWM USING STM32"); //Displays PWM using STM32

delay(2000); // Delay yime

lcd.clear(); // Clears LCD

pinMode(analoginput, INPUT); // set pin mode analoginput as INPUT

pinMode(led, PWM); // set pin mode led as PWM output

pinMode(fan, PWM); // set pin mode fan as PWM output

}




void loop()


{

int valueadc = analogRead(analoginput); //gets analog value from pot and store in variable,converts to digital

int result = map(valueadc, 0, 4095, 0, 65535); //maps the (0to4095 into 0to65535) and stores in result variable

pwmWrite(led, result); //puts resultin PWM form

pwmWrite(fan, result); //puts resultin PWM form

lcd.setCursor(0,0); //Sets cursor at row0 and column0

lcd.print("ADC value= "); // prints the words in ""

lcd.print(valueadc); //displays value

lcd.setCursor(0,1); //Sets Cursor at column0 and row1

lcd.print("Output = "); //prints the words in ""

lcd.print(result); //displays value result

}

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • PWM
    PWM
    +關(guān)注

    關(guān)注

    114

    文章

    5198

    瀏覽量

    214893
  • STM32
    +關(guān)注

    關(guān)注

    2272

    文章

    10924

    瀏覽量

    357599
  • 脈寬調(diào)制
    +關(guān)注

    關(guān)注

    3

    文章

    219

    瀏覽量

    38420
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    溫控直流風(fēng)扇電路圖分享

    溫控直流風(fēng)扇是一種結(jié)合了溫度控制技術(shù)直流風(fēng)扇。它通常內(nèi)置有溫度傳感器和控制電路,能夠根據(jù)設(shè)備
    的頭像 發(fā)表于 02-22 17:25 ?8222次閱讀
    溫控<b class='flag-5'>直流風(fēng)扇</b>電路圖分享

    PWM是如何控制LED亮度

    學(xué)習(xí):4. PWM控制LED亮度1.基礎(chǔ)知識(shí)1.1 PWM基本知識(shí)1.21.基礎(chǔ)知識(shí)1.1 PWM
    發(fā)表于 08-09 08:45

    典型的直流風(fēng)扇控制電路有哪幾種形式

    直流風(fēng)扇運(yùn)轉(zhuǎn)的基本原則是什么?何謂直流無刷風(fēng)扇?有何優(yōu)點(diǎn)?典型的直流風(fēng)扇控制電路有哪幾種形式?
    發(fā)表于 08-27 06:13

    如何利用PWM控制LED亮度直流電機(jī)的速度

    什么是PWM?怎么樣才能產(chǎn)生一個(gè)PWM波呢?如何利用PWM控制LED亮度
    發(fā)表于 12-21 07:12

    DX9087 內(nèi)置霍爾單相全波無刷直流風(fēng)扇驅(qū)動(dòng)芯片

    DX9612單相全波無刷直流風(fēng)扇驅(qū)動(dòng)芯片 概要DX9612是一款單相直流無刷馬達(dá)驅(qū)動(dòng)芯片,其通過PWM直接輸入模式高效控制直流無刷
    發(fā)表于 02-17 15:45

    基于DSP的小型直流風(fēng)扇自動(dòng)化測(cè)試系統(tǒng)

    針對(duì)目前我國(guó)小型直流風(fēng)扇產(chǎn)品出廠檢測(cè)設(shè)備落后的現(xiàn)狀,采用現(xiàn)代微處理器檢測(cè)與控制技術(shù)開發(fā)了基于DSP控制器TMS320F2812A的新型直流風(fēng)扇
    發(fā)表于 07-16 15:20 ?25次下載

    采用FanSense TM技術(shù)PWM風(fēng)扇速度控制

    TC642 是一款開關(guān)模式風(fēng)扇速度控制器,用于控制直流無刷風(fēng)扇
    發(fā)表于 11-20 18:26 ?49次下載

    抗電磁干擾的PWM風(fēng)扇控制器原理及應(yīng)用

    抗電磁干擾的PWM風(fēng)扇控制器原理及應(yīng)用 微芯科技(Microchip )公司提供一種工作于PWM模式的風(fēng)扇制冷
    發(fā)表于 03-12 15:42 ?4179次閱讀
    抗電磁干擾的<b class='flag-5'>PWM</b><b class='flag-5'>風(fēng)扇</b><b class='flag-5'>控制</b>器原理及應(yīng)用

    pwm控制led亮度原理圖,單片機(jī)PWM控制LED亮度

    對(duì)EN端子施加PWM信號(hào),白光LED會(huì)以某種速度做ON/OFF模式運(yùn)行,進(jìn)而實(shí)現(xiàn)LED亮度控制
    發(fā)表于 10-30 11:51 ?6.5w次閱讀
    <b class='flag-5'>pwm</b><b class='flag-5'>控制</b><b class='flag-5'>led</b><b class='flag-5'>亮度</b>原理圖,單片機(jī)<b class='flag-5'>PWM</b><b class='flag-5'>控制</b><b class='flag-5'>LED</b><b class='flag-5'>亮度</b>

    直流風(fēng)扇和交流風(fēng)扇的基本組成結(jié)構(gòu)?

    :傾角越大,葉片上下表面間壓力差越大,相同轉(zhuǎn)速下風(fēng)壓越大。葉片數(shù)目:直流風(fēng)扇和交流風(fēng)扇的葉片數(shù)目多數(shù)是7、9、11等奇數(shù),若采用偶數(shù)扇葉,很容易使系統(tǒng)發(fā)生共振,將會(huì)使葉片軸心發(fā)生斷裂。葉片弧度:向著
    發(fā)表于 05-21 16:17 ?1491次閱讀

    如何使用Arduino生成的PWM控制流風(fēng)扇速度

    在這個(gè)項(xiàng)目中,我們將演示使用 TRIAC 的 Arduino 交流風(fēng)扇速度控制。這里使用交流信號(hào)的相位控制方法來控制
    的頭像 發(fā)表于 08-18 16:26 ?1.2w次閱讀
    如何使用Arduino生成的<b class='flag-5'>PWM</b>來<b class='flag-5'>控制</b>交<b class='flag-5'>流風(fēng)扇</b>的<b class='flag-5'>速度</b>

    基于Arduino制作直流風(fēng)扇速度控制

    如何使用Arduino和IR Remote制作直流風(fēng)扇速度控制器。硬件部件:Arduino nano R3×1個(gè)直流電機(jī),RE40×1個(gè)JustBoom紅外遙控器×1個(gè)紅外接收器(通用
    發(fā)表于 01-05 16:22 ?0次下載

    用Arduino和紅外遙控器制作直流風(fēng)扇速度控制

    電子發(fā)燒友網(wǎng)站提供《用Arduino和紅外遙控器制作直流風(fēng)扇速度控制器.zip》資料免費(fèi)下載
    發(fā)表于 02-02 14:19 ?4次下載
    用Arduino和紅外遙控器制作<b class='flag-5'>直流風(fēng)扇</b><b class='flag-5'>速度</b><b class='flag-5'>控制</b>器

    使用Arduino和晶閘管(TRIAC)控制流風(fēng)扇速度

    在許多基于Arduino的自動(dòng)化項(xiàng)目中,使用開關(guān)使用某種控制很容易打開關(guān)斷家用電器。但是在很多應(yīng)用中,我們需要控 制交流電源,例如,控制風(fēng)扇
    發(fā)表于 03-06 14:57 ?3次下載
    使用Arduino和晶閘管(TRIAC)<b class='flag-5'>控制</b>交<b class='flag-5'>流風(fēng)扇</b>的<b class='flag-5'>速度</b>

    風(fēng)扇控制的進(jìn)步:考慮風(fēng)扇速度調(diào)節(jié)

    無刷直流風(fēng)扇電機(jī)可以使用多種方法進(jìn)行控制。最簡(jiǎn)單的方法是使用單個(gè)晶體管進(jìn)行開/關(guān)開關(guān)。針對(duì)風(fēng)扇速度的可變控制,Maxim提供多種產(chǎn)品,包括用
    的頭像 發(fā)表于 05-17 11:34 ?2015次閱讀
    <b class='flag-5'>風(fēng)扇</b><b class='flag-5'>控制</b>的進(jìn)步:考慮<b class='flag-5'>風(fēng)扇</b><b class='flag-5'>速度</b>調(diào)節(jié)
    依兰县| 王子百家乐的玩法技巧和规则| 百家乐官网胜率被控制| 全讯网365| 至尊百家乐官网| 百家乐官网打连技巧| 大发888网页出纳柜台| 百家乐稳一点的押法| 乐九百家乐官网游戏| 大发888问题缺少组件| 新百家乐官网的玩法技巧和规则 | 云鼎百家乐代理| 百家乐现场新全讯网| 金木棉百家乐官网的玩法技巧和规则| 象山县| 六合彩开奖结果直播| 大杀器百家乐学院| 24葬书-葬法| 真人百家乐官网套红利| 百家乐官网注册优惠平台| 申扎县| 大发888亚洲游戏 网页| 澳门百家乐怎么赢钱| 百家乐官网永利娱乐| 百家乐官网下注稳赢法| 澳门足球博彩网站| 太阳城伞| 百家乐翻天在线观看| 游戏机百家乐的玩法技巧和规则| 赌场百家乐试玩| 百家乐网站哪个好| 百家乐代理加盟| 易学24山3d罗盘App| 新时代百家乐官网娱乐城| 百家乐官网赌场导航| 至尊百家乐官网网| 博之道百家乐官网技巧| 澳门百家乐官网公试打法| 百家乐官网里和的作用| 百家乐官网二人视频麻将| 伟博娱乐|