標(biāo)題: 創(chuàng)客集結(jié)號(hào):PWM 調(diào)控?zé)艄饬炼葘?shí)驗(yàn) [打印本頁]

作者: 一加一    時(shí)間: 2018-7-26 09:10
標(biāo)題: 創(chuàng)客集結(jié)號(hào):PWM 調(diào)控?zé)艄饬炼葘?shí)驗(yàn)
Pulse Width Modulation 就是通常所說的PWM,譯為脈沖寬度調(diào)制,簡(jiǎn)稱脈寬調(diào)制。脈沖寬度調(diào)制(PWM)是一種對(duì)模擬信號(hào)電平進(jìn)行數(shù)字編碼的方法,由于計(jì)算機(jī)不能輸出模擬電壓,只能輸出0 或5V 的的數(shù)字電壓值,我們就通過使用高分辨率計(jì)數(shù)器,利用方波的占空比被調(diào)制的方法來對(duì)一個(gè)具體模擬信號(hào)的電平進(jìn)行編碼。PWM 信號(hào)仍然是數(shù)字的,因?yàn)樵诮o定的任何時(shí)刻,滿幅值的直流供電要么是5V(ON),要么是0V(OFF)。電壓或電流源是以一種通(ON)或斷(OFF)的重復(fù)脈沖序列被加到模擬負(fù)載上去的。通的時(shí)候即是直流供電被加到負(fù)載上的時(shí)候,斷的時(shí)候即是供電被斷開的時(shí)候。只要帶寬足夠,任何模擬值都可以使用PWM 進(jìn)行編碼。輸出的電壓值是通過通和斷的時(shí)間進(jìn)行計(jì)算的。

輸出電壓=(接通時(shí)間/脈沖時(shí)間)*最大電壓值




PWM 被用在許多地方,調(diào)光燈具、電機(jī)調(diào)速、聲音的制作等等。
下面介紹一下PWM 的三個(gè)基本參數(shù):
1、脈沖寬度
2、脈沖周期(1 秒內(nèi)脈沖頻率個(gè)數(shù)的倒數(shù))
3、電壓高度(例如:0V-5V)




Arduino 控制器有6 個(gè)PWM 接口分別是數(shù)字接口3、5、6、9、10、11,這次我們就來完成一個(gè)用可調(diào)電阻輸入模擬電壓,單片機(jī)是別后產(chǎn)生響應(yīng)比例的PWM波來控制小燈的亮度。
需要的元器件有:
可調(diào)電阻*1
直插LED*1
220Ω直插電阻
面包板*1
面包板跳線*1 扎


電位計(jì)即為模擬值輸入我們接到模擬口,小燈我們接到PWM 接口上,這樣通過產(chǎn)生不同的PWM 信號(hào)就可以讓小燈有亮度不同的變化。



按照下圖鏈接好電路后,就可以開始編寫程序了。



參考源程序如下:
int potpin=0;//定義模擬接口0
int ledpin=11;//定義數(shù)字接口11(PWM 輸出)
int val=0;// 暫存來自傳感器的變量數(shù)值
void setup()
{
pinMode(ledpin,OUTPUT);//定義數(shù)字接口11 為輸出
Serial.begin(9600);//設(shè)置波特率為9600
//注意:模擬接口自動(dòng)設(shè)置為輸入
}
void loop()
{
val=analogRead(potpin);// 讀取傳感器的模擬值并賦值給val
Serial.println(val);//顯示val 變量
analogWrite(ledpin,val/4);// 打開LED 并設(shè)置亮度(PWM 輸出最大值255)
delay(10);//延時(shí)10ms
}











歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1