W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
脈沖寬度調(diào)制或PWM是用于改變脈沖串中的脈沖寬度的常用技術(shù)。PWM有許多應(yīng)用,如控制伺服和速度控制器,限制電機(jī)和LED的有效功率。
脈沖寬度調(diào)制基本上是一個(gè)隨時(shí)間變化而變化的方波。基本的PWM信號(hào)如下圖所示。
有很多術(shù)語與PWM相關(guān):
On-Time(導(dǎo)通時(shí)間) - 時(shí)間信號(hào)的持續(xù)時(shí)間較長(zhǎng)。
Off-Time(關(guān)斷時(shí)間) - 時(shí)間信號(hào)的持續(xù)時(shí)間較短。
Period(周期) - 表示為PWM信號(hào)的導(dǎo)通時(shí)間和關(guān)斷時(shí)間的總和。
Duty Cycle(占空比) - 它表示為在PWM信號(hào)周期內(nèi)保持導(dǎo)通的時(shí)間信號(hào)的百分比。
如圖所示,Ton表示導(dǎo)通時(shí)間,Toff表示信號(hào)的關(guān)斷時(shí)間。周期是導(dǎo)通和關(guān)斷時(shí)間的總和,并按照以下公式計(jì)算:
占空比用于計(jì)算為一段時(shí)間的導(dǎo)通時(shí)間。使用上面計(jì)算的周期,占空比計(jì)算為:
analogWrite()函數(shù)將模擬值(PWM波)寫入引腳。它可用于以不同的亮度點(diǎn)亮LED或以各種速度驅(qū)動(dòng)電機(jī)。在調(diào)用analogWrite()函數(shù)之后,引腳將產(chǎn)生指定占空比的穩(wěn)定方波,直到下一次調(diào)用analogWrite()或在相同引腳上調(diào)用digitalRead()或digitalWrite()。大多數(shù)引腳上的PWM信號(hào)頻率約為490 Hz。在Uno和類似的板上,引腳5和6的頻率約為980Hz。Leonardo上的引腳3和11也以980Hz運(yùn)行。
在大多數(shù)Arduino板上(ATmega168或ATmega328),此功能在引腳3,5,6,9,10和11上工作。在Arduino Mega上,它在引腳2-13和44-46上工作。舊的Arduino ATmega8板僅支持引腳9,10和11上的 analogWrite()。
Arduino Due支持引腳2至13以及引腳DAC0和DAC1上的 analogWrite()。與PWM引腳不同,DAC0和DAC1是數(shù)模轉(zhuǎn)換器,用作真正的模擬輸出。
在調(diào)用analogWrite()之前,不需要調(diào)用pinMode()將引腳設(shè)置為輸出。
analogWrite ( pin , value ) ;
value ? the duty cycle: between 0 (always off) and 255 (always on).
value - 占空比:0(始終導(dǎo)通)到255(始終關(guān)斷)之間。
示例
int ledPin = 9; // LED connected to digital pin 9
int analogPin = 3; // potentiometer connected to analog pin 3
int val = 0; // variable to store the read value
void setup() {
pinMode(ledPin, OUTPUT); // sets the pin as output
}
void loop() {
val = analogRead(analogPin); // read the input pin
analogWrite(ledPin, (val / 4)); // analogRead values go from 0 to 1023,
// analogWrite values from 0 to 255
}
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: