實驗現象:電位器控制LED的亮度。
理論學習:
學會PWM的使用:【Pulse Width Modulation 脈衝寬度調製】,簡稱脈寬調製。是利用微處理器的數字輸出來對模擬電路進行控制的一種非常有效的技術,廣泛應用在測量、通信到功率控制與變換的許多領域中。
脈衝寬度調製(PWM)是一種對模擬信號電平進行數字編碼的方法,用於計算機不能輸出模擬電壓,而只能輸出0V或5V的數字電壓值,(0V:0,5V:1)所以通過高分辨率計數器,利用方波的佔空比被調製的方法對一個具體模擬信號的電平進行編碼。但PWM信號任然是數字的,應爲在給定的任意時刻,直流供電要麼是5V(數字值爲1),要麼是0V(數字值爲0)。電壓或電流源以一種通(ON)、斷(OFF)的重複脈衝序列加到模擬負載上,知道帶寬足夠,任何模擬值都可以使用PWM進行編碼。
輸出的電壓值是通過通和斷的時間進行計算的,計算公式爲:
輸出電壓=(接通時間/脈衝時間)*最大電壓值
PWM的三個基本參數:
1.脈衝寬度變化幅度(最小值/最大值)
2.脈衝週期(1秒內脈衝頻率個數的倒數)
3.電壓高度(例如:0V-5V)
Arduino UNO控制器上有6個PWM接口分別是數字接口3、5、6、9、10、11
Arduino 中設置PWM的語句:
analogwrite(pin,value);
// pin:用於輸入數值的引腳。
//value:佔空比:0(完全關閉)到255(完全打開)之間。
程序代碼:
#define Pot A0
#define LED 3
int PotBuffer = 0;
void setup()
{
pinMode(LED,OUTPUT); //IO輸出
}
void loop()
{
PotBuffer = analogRead(Pot); //讀取AD值
PotBuffer = map(PotBuffer, 0, 1023, 0, 255);//把AD值0-1023 縮放爲 0-255
analogWrite(LED,PotBuffer); //PWM調光,輸出PWM,佔空比爲PotBuffer/255
}