脈沖寬度調制(PWM)是一種使用開關數字信號來控制傳遞到電子負載的功率量的技術。該技術背后的關鍵思想是,可以通過改變信號的占空比來改變數字信號的平均DC值,從而改變傳遞給負載的功率。該方法通常用于控制直流電動機的速度和燈的亮度。開關電源也基于PWM技術。在本教程中,我們將討論chipKIT Uno32板的PWM引腳,并通過控制兩個外部LED的亮度來說明該概念。
PWM
理論
脈寬調制(PWM)是一種通過能量傳遞能量的方式脈沖而不是連續變化的信號。通過增加或減少脈沖寬度(頻率保持不變),可以控制輸出功率。信號打開的時間周期的一部分稱為占空比。信號的平均DC值可以通過改變占空比來改變。占空比可以在0(信號始終關閉)到1(信號一直打開)之間的任何位置。假設,如果信號在開啟時為+5 V,在關閉狀態時為0 V,則通過更改信號的占空比,可以模擬0-5 V之間的任何電壓。該方法通常用于控制直流電動機的速度和燈的亮度。 PWM的原理如下圖所示。
PWM
電路設置
在chipKIT Uno32板上,可以將I/O引腳3、5、6、9和10配置為提供PWM輸出。我們將兩個LED(紅色和綠色)連接到PWM引腳3和5,并通過改變驅動這些LED的PWM信號的占空比來控制它們的亮度。兩個100電阻用于限制通過LED的電流。
電路設置
在面包板上的實際設置
寫草圖
可以使用 analogWrite生成Arduino平臺中的PWM信號()命令。在括號內,您可以指定引腳號和所需的占空比(0-255)。占空比“ 0”表示始終關閉,“ 255”表示始終打開。調用 analogWrite()時,將在指定的PWM引腳上生成具有指定占空比的穩定方波。下圖使用變化的占空比PWM信號來控制傳遞到兩個LED的輸出功率。兩個LED交替淡入和淡出,這意味著當一個LED處于峰值強度時,另一個LED變暗,反之亦然。
int redLED = 3; // Red LED is connected to pin 3
int greenLED = 5; // Green LED is connected to pin 5
int redCount = 255; // Initial PWM values, RED is full
int greenCount = 1; // Green is dim
int i = 0;
void setup()
{
pinMode(redLED, OUTPUT);
pinMode(greenLED, OUTPUT);
}
void loop()
{
if (i 《 255) // First phase
{
redCount = redCount-1; // Red down
greenCount = greenCount+1; // Green up
}
else if (i 《 509) // Second phase
{
redCount = redCount+1; // Red up
greenCount = greenCount-1; // Green down
}
else // Re-set
{
i = 0;
}
i += 1;
analogWrite(redLED, redCount); // Write current values to LED pins
analogWrite(greenLED, greenCount);
delay(10); // Pause for 10 millisecond
}
輸出
在程序中的職責周期以1為步長從1更改為255。首先,紅色LED由占空比為255的PWM信號驅動,這意味著它將完全打開。驅動綠色LED的PWM信號的占空比為1,這意味著其強度最小。在每10 ms中,驅動紅色LED的PWM信號的占空比減小1,而綠色LED的占空比則增大1。大約2550 ms之后,亮度條件反轉,并且綠色LED完全點亮。重復此操作以交替產生淡入和淡出效果。
淡入和淡出
紅色LED處于最大強度,而綠色則變暗了
綠色處于最大強度而紅色卻變淡
LED的工作電流非常低,因此,可以直接通過UNO32板的PWM輸出驅動它們。對于直流電動機控制,需要一個外部電動機驅動器電路(例如H橋),該電路基本上將從微控制器引腳發出的低電流PWM信號放大為能夠提供足夠電流來驅動電動機的高電流PWM信號。
責任編輯:wv
-
PWM
+關注
關注
114文章
5202瀏覽量
215048 -
開發板
+關注
關注
25文章
5142瀏覽量
98397
發布評論請先 登錄
相關推薦
嵌入式學習-飛凌嵌入式ElfBoard ELF 1板卡-開發板適配之PWM
飛凌嵌入式ElfBoard ELF 1板卡-開發板適配之PWM
自己設計的Arduino UNO R3主控板原理圖+PCB源文件(可直接打樣)
TAS5548如何在輸入信號改變的情況下,讓38和39這兩個引腳輸出的PWM產生變化?
在低成本MSP430 MCU上使用PWM實現數字DAC應用說明
![在低成本MSP430 MCU上使用<b class='flag-5'>PWM</b>實現數字DAC應用<b class='flag-5'>說明</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
具有 PWM 抑制功能的高側驅動、高側電磁閥監視器應用說明
![具有 <b class='flag-5'>PWM</b> 抑制功能的高側驅動、高側電磁閥監視器應用<b class='flag-5'>說明</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
如何在NXP源碼基礎上適配ELF 1開發板的PWM功能
![如何在NXP源碼基礎上適配ELF 1開發<b class='flag-5'>板</b>的<b class='flag-5'>PWM</b>功能](https://file1.elecfans.com/web2/M00/05/C4/wKgZombem8eAdoE_AABFKKlF4AA364.png)
PWM芯片引腳連接的一般步驟和注意事項
STM32F103C8T6單片機PWM引腳測不到信號,是什么原因?
S2GO_3D_TLE493DW2B6-A0無法與Arduino UNO一起工作是怎么回事?
如何通過電路板上的LIN引腳發送占空比調制PWM數據?
![](https://file1.elecfans.com/web2/M00/E8/8E/wKgaomZMWXmAK_a_AARg1x3blAE050.png)
評論