admin 發表於 2016-7-16 23:04:08

範例3、PWM 調控燈光亮度實驗

範例3、PWM 調控燈光亮度實驗
Pulse Width Modulation 就是通常所說的PWM,譯為脈衝寬度調製,簡稱脈寬調製。脈衝寬度調製(PWM)是一種對類比信號電平進行數位編碼的方法,由於電腦不能輸出類比電壓,只能輸出0 或5V 的的數位電壓值,我們就通過使用高解析度計數器,利用方波的占空比被調製的方法來對一個具體類比信號的電平進行編碼。PWM 信號仍然是數位的,因為在給定的任何時刻,滿幅值的直流供電要麼是5V(ON),要麼是0V(OFF)。電壓或電流源是以一種通(ON)或斷(OFF)的重複脈衝序列被加到類比負載上去的。通的時候即是直流供電被加到負載上的時候,斷的時候即是供電被斷開的時候。只要頻寬足夠,任何模擬值都可以使用PWM 進行編碼。輸出的電壓值是通過通和斷的時間進行計算的。輸出電壓=(接通時間/脈衝時間)*最大電壓值




PWM 被用在許多地方,調光燈具、電機調速、聲音的製作等等。

下面介紹一下PWM 的三個基本參數:

1、脈衝寬度變化幅度(最小值/最大值)

2、脈衝週期(1 秒內脈衝頻率個數的倒數)

3、電壓高度(例如:0V-5V)

Arduino 控制器有6 個PWM 介面分別是數位介面3、5、6、9、10、11,前面我們已經做了按鍵控制小燈的實驗,那是數位信號控制數字介面的實驗,我們也做過電位計的實驗,這次我們就來完成一個用電位計控制小燈的實驗。

需要的元器件有:

電位計模組*1

紅色M5 直插LED*1

220Ω直插電阻

麵包板*1

麵包板跳線*1 紮

電位計即為模擬值輸入我們接到模擬口,小燈我們接到PWM 介面上,這樣通過產生不同的PWM 信號就可以讓小燈有亮度不同的變化。

我們先按照下面的原理圖連接實物圖。










在編寫程式的過程中,我們會用到類比寫入analogWrite(PWM 介面,類比值)函數,對於類比寫入analogWrite()函數,此函數用法也很簡單,我們在本實驗中讀取電位計的類比值信號並將其賦給PWM 介面使小燈產生相應的亮度變化,再在螢幕上顯示出讀取的類比值,大家可以理解為此程式是在類比值讀取的實驗程式中多加了將類比值賦給PWM 介面這一部分,下面給大家提供一段參考來源程式。

參考來源程式:

intpotpin=0;//定義類比介面0

intledpin=11;//定義數位介面11(PWM 輸出)

int val=0;//暫存來自感測器的變數數值

void setup()

{

pinMode(ledpin,OUTPUT);//定義數位介面11 為輸出

Serial.begin(9600);//設置串列傳輸速率為9600

//注意:類比介面自動設置為輸入

}

void loop()

{

val=analogRead(potpin);//讀取感測器的模擬值並賦值給val

Serial.println(val);//顯示val 變數

analogWrite(ledpin,val/4);//打開LED 並設置亮度(PWM 輸__________出最大值255)

delay(10);//延時0.01 秒

}







下載完程式,我們旋轉電位計的旋鈕不但可以看到螢幕上數值的變化還也可以清楚的看到我們麵包板上的LED 小燈的亮度也在隨之變化。




頁: [1]
查看完整版本: 範例3、PWM 調控燈光亮度實驗