Ads 468x60px

##EasyReadMore##

06 9月, 2018

PWM 脈寬調變與暫存器

Introduction

  • Pulse-Width Modulation, 又稱pulse-duration modulation(PDM),是將脈波轉為類比信號的“一種技術”,利用在頻率不變的狀態下, 改變工作週期大小, 使整體平均電壓值上升或下降, 藉此間歇性電壓及功率切換以節省能源及控制等效果.

  • duty cycle 在一個信號週期裡,代表1的正脈衝的持續時間與脈衝總周期的比值。舉例來說,發出訊號1秒鐘,之後99秒沒有訊號,這是一個週期;之後又是發出一秒鐘的訊號,如此循環下去。而該訊號的工作週期就是1/(1+99)=1%。

  • PWM會較省電的原因 因為一般類比電壓要降低電壓輸出需靠增加電阻,源頭輸出電壓“持續”都為同一電壓,不過利用電阻改變最後輸出電壓,而PWM他靠的是一段時間內輸出的頻率來模擬類比電壓,“不需要持續的輸出”,故不會將電浪費在電阻上,即可達到省電效果。

  • STM32內部要產生PWM訊號時,需要透過Timer來實現。

Timer 與 counter的差異

  • timer與counter的差別:本質上timer和counter幾乎是一樣的東西,底層都是一個硬體counter,如果是按照規律的時間跳表,那就是timer;如果是按照不規律的事件訊號跳表,那就是counter

Timers

  • Timer 和 RTC的差別

  • Timer可被用於多種用途, 其中包含量測輸入訊號之pulse寬度, 或產生輸出波形。
  • Real-Time Clock(RTC)是負責記錄時間的專用積體電路,出現在需要長期使用時鐘的電子設備中。

一、PWM脈寬調變

PWM是脈衝寬度調變的簡稱。實際上,PWM波也是一個連續的方波,但在一個週期中,其高電平和低電平的duty cycle是不同的。一個典型PWM的波形如圖所示。

在圖中,T是PWM波的週期,T1是高電平的寬度,Vcc是高電平值。當該PWM波通過一個積分器後(低通濾波器)後,我們可以得到其輸出的平均電壓為:

式中,T1/T稱為PWM波的duty cycle。控制調節和改變T1的寬度,即改變PWM的duty cycle,就可以的到不同的平均電壓輸出。因此在實際應用中,常利用PWM波的輸出,實現D/A轉換,調節電壓或電流控制改變馬達的轉速,實現變頻控制等功能。

         一個PWM方波的參數有頻率、duty cycle和相位(在一個PWN週期中,高低電平轉換的起始時間),其中頻率和duty cycle為主要的參數。圖為3個duty cycle都為2/3的PWM波形,儘管他們輸出的平均電壓是一樣的,但其中(b)的頻率比(a)高一倍,相位相同;而(c)與(a)的頻率相同,但相位不同。

在實際應用中,除了要考慮如何正確的控制和調整PWM波的duty cycle,獲得達到要求的平均電壓的輸出外,還需要綜合的考慮PWM的週期、PWM波duty cycle調節的精度(通常用BIT位表示)、積分器的設計等。而且這些因素相互之間也是互相牽連的。

以下面暫存器的設定來看

image

對照下面的 data sheet

image

所以 0x41 的 clock Freqency 決定波形(Period)有多寬, 頻率(Hz)越高 Period 越窄,所以在同樣的時間內,越高的頻率可以搭配越多的階數,所以選擇了 9bit 以及 19.2 MHz clock,來呈現越平滑的波形。

image

0x41 的 PMW size 決定使用 6bit or 9bit 的 PWM,會把一個Period可以切成64格(6bit→111111→0~63) 也可以切成512格(9bit),也會影響是否使用 0x45暫存器。

image

0x44-0x45 是設定 T on 的"寬度"(duty cycle),0將 T on 的寬度填在 0x44,,當記錄的寬度大於8bit,0x44 就會填滿(0xFF), 就會將 0x45 拿來當第9個bit 來延伸寬度,所以 0x45 在 9bit 時是0或1,6bit 時一定是0。
而寬度的可變化尺寸可越大,則可紀錄的階數就越多。

最低有效位 (LSB) 到最高有效位 (MSB) 只是表達數值是從 LSB 開始填到 MSB.


PWM freqency 計算:

image

因為 PWM freqency 寬度會受 clock Freqency 寬度的影響,所以要透過公式算出來。

image

K表千KILO
M表百萬MILLION
16M表1600萬美元

PWM frequency=19.2M/(2^9*5*2^7)=58.59 約為 60

image

0x42 這個暫存器, 應該是可以提供更多更多種頻率的選擇,沒有特別的需求 應該用預設的就好。


小小科學實驗室: AVR timer/count 的PWM功能設計要點 - https://goo.gl/k3Yt1g

Wiki - Pulse-Width Modulation (PWM) - https://goo.gl/tBlWFH

0 意見:

張貼留言

 
Blogger Templates