kowala's home

kowala's home
這裡是我的學習筆記,陸續增加中。
http://kowala21.blogspot.com

2014-06-13

Arduino 有關 PWM 的參考資料

PWM 全名叫做脈衝寬度調變( Pulse Width Modulation,PWM)[1],是將類比信號 轉換為脈波的一種技術,一般轉換後脈波的週期固定,但脈波的占空比會依類比信號的大小而改變。
PWM 技術是一種對類比信號電位的數字編碼方法,通過使用高解析度計數器(調製頻率)調製方波的占空比,從而實現對一個類比信號的電位進行編碼。
它是一種數位控制訊號,抗干擾性較強,應用很廣,電壓和電流可直接用來進行控制對象,例如家用電器設備中的音量開關控制、採用鹵素燈泡燈具的亮度控制等等。

輸出電壓的控制
PWM透過對佔空比 DUTY_CYCLE 的波形產生,可以對輸出電壓達到控制目的。

圖一、DUTY_CYCLE
輸出電壓 Output_Voltage 就是佔空比乘以輸入電壓

Output_Voltage = Duty_Cycle * Input_Voltage


如圖一,輸入電壓是 0V-5V,佔空比是25%,輸出電壓就是

 Output_Voltage = 0.25 * 5 = 1.25V

也就是高電位 5V 的加總平均值


如輸入電壓是 0V-5V,佔空比是80%,輸出電壓就是

 Output_Voltage = 0.8 * 5 = 4V

所以我們只需控制輸出波形,就可以決定輸出電壓了。


以下討論對象是目前比較被廣泛採用的晶片 ATmega328,參考它的Datasheet [2]可知,它有三個時脈 Timer,分別是 Time0, Time1, Time2,我們可以通過對 Timer 的設定,來達到控制脈波輸出的特性。

以下是三個時脈的設定說明,節錄自 QEEWiki [3],這是要對Timer設定的重要參考,它已經被整理成表格狀,還附有一個範例程式,非常方便使用。

圖二、Time0

圖三、Time1

圖四、Time2





[1].http://zh.wikipedia.org/wiki/脈衝寬度調變
[2].http://www.atmel.com/Images/doc8161.pdf
[3].https://sites.google.com/site/qeewiki/books/avr-guide/pwm-on-the-atmega328

沒有留言:

張貼留言

請提供您的寶貴意見 ;-)