Ardino基础教程 11_PWM调控灯光亮度
實驗十一:PWM調(diào)控?zé)艄饬炼?/h1>
Pulse Width Modulation 就是通常所說的PWM,譯為脈沖寬度調(diào)制,簡稱脈寬調(diào)制。脈沖寬度調(diào)制(PWM)是一種對模擬信號電平進(jìn)行數(shù)字編碼的方法,由于計算機不能輸出模擬電壓,只能輸出0 或5V 的的數(shù)字電壓值,我們就通過使用高分辨率計數(shù)器,利用方波的占空比被調(diào)制的方法來對一個具體模擬信號的電平進(jìn)行編碼。PWM 信號仍然是數(shù)字的,因為在給定的任何時刻,滿幅值的直流供電要么是5V(ON),要么是0V(OFF)。電壓或電流源是以一種通(ON)或斷(OFF)的重復(fù)脈沖序列被加到模擬負(fù)載上去的。通的時候即是直流供電被加到負(fù)載上的時候,斷的時候即是供電被斷開的時候。只要帶寬足夠,任何模擬值都可以使用PWM 進(jìn)行編碼。輸出的電壓值是通過通和斷的時間進(jìn)行計算的。輸出電壓=(接通時間/脈沖時間)*最大電壓值
PWM 被用在許多地方,調(diào)光燈具、電機調(diào)速、聲音的制作等等。
下面介紹一下PWM 的三個基本參數(shù):
1、脈沖寬度變化幅度(最小值/最大值)
2、脈沖周期(1 秒內(nèi)脈沖頻率個數(shù)的倒數(shù))
3、電壓高度(例如:0V-5V)
Arduino 控制器有6 個PWM 接口分別是數(shù)字接口3、5、6、9、10、11,前面我們已經(jīng)做了按鍵控制小燈的實驗,那是數(shù)字信號控制數(shù)字接口的實驗,我們也做過電位計的實驗,這次我們就來完成一個用電位計控制小燈的實驗。
實驗器材清單
電位計即為模擬值輸入我們接到模擬口,小燈我們接到PWM 接口上,這樣通過產(chǎn)生不同的PWM 信號就可以讓小燈有亮度不同的變化。
實驗原理圖
我們也可以把11腳和13腳用跳線連起來,我們就不用接LED的線了,更方便。效果一樣。
在編寫程序的過程中,我們會用到模擬寫入analogWrite(PWM 接口,模擬值)函數(shù),對于模擬寫入analogWrite()函數(shù),此函數(shù)用法也很簡單,我們在本實驗中讀取電位計的模擬值信號并將其賦給PWM 接口使小燈產(chǎn)生相應(yīng)的亮度變化,再在屏幕上顯示出讀取的模擬值,大家可以理解為此程序是在模擬值讀取的實驗程序中多加了將模擬值賦給PWM 接口這一部分,下面給大家提供一段參考源程序。
參考源程序:
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
//注意:模擬接口自動設(shè)置為輸入
}
void loop()
{
val=analogRead(potpin);// 讀取傳感器的模擬值并賦值給val
Serial.println(val);//顯示val 變量
analogWrite(ledpin,val/4);// 打開LED 并設(shè)置亮度(PWM 輸
__________出最大值255)
delay(10);//延時0.01 秒
}
實驗截圖
實驗現(xiàn)象
下載完程序,我們旋轉(zhuǎn)電位計的旋鈕不但可以看到屏幕上數(shù)值的變化還也可以清楚的看到我們面包板上的LED 小燈的亮度也在隨之變化。
程序代碼
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 //注意:模擬接口自動設(shè)置為輸入 } void loop() { val=analogRead(potpin);// 讀取傳感器的模擬值并賦值給val Serial.println(val);//顯示val 變量 analogWrite(ledpin,val/4);// 打開LED 并設(shè)置亮度(PWM 輸__________出最大值255) delay(10);//延時0.01 秒 }總結(jié)
以上是生活随笔為你收集整理的Ardino基础教程 11_PWM调控灯光亮度的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ardino基础教程 10_光控声音
- 下一篇: Ardino基础教程 12_感光灯