這篇將用 Proteus 觀察 PWM 的波形,計算 Pulse 的寬度,看程式產生的 Pulse 寬度是否正確。
▲ Barebone Arduino
我們以 Barebone Arduino 為基礎,在設計畫面上放一個虛擬示波器 (OSSCILLOSCOPE),然後把 pin 11 接到 channel A,而 pin 3 接到 channel B:
接著即可載入 Arduino 的 HEX 檔並使用示波器觀察 PWM 波形。
計算 Fast PWM 範例的 Pulse 寬度
首先,載入 FastPWM 範例程式:
Fast PWM 的 frequency 計算公式為:
PWM_fequency = clock_speed / [Prescaller_value * (1 + TOP_Value) ]
所以:
- Output A 的 Pulse 寬度應為: (1000000 / 976.5625) * 70.7% = 723.968 us
- Output B 的 Pulse 寬度應為: (1000000 / 976.5625) * 19.9% = 203.776 us
然後用示波器觀察 PWM 波形,並使用 Cursor (游標) 計算 Pulse 寬度:
得 Output A 的 Pulse 寬度大約是 724 us,而 Output B 大約是 204 us,跟理論值幾乎相等。
計算 Phase-Correct PWM 範例的 Pulse 寬度
接著載入 PhaseCorrectPWM 範例程式:
Phase-Correct PWM 的 frequency 計算公式為:
PWM_frequency = clock_speed / (2 * Prescaller_value * TOP_value )
所以:
- Output A 的 Pulse 寬度應為: (1000000 / 347.2) * 50% = 1440 us
- Output B 的 Pulse 寬度應為: (1000000 / 694.4) * 27.8% = 400.34 us
然後用示波器觀察 PWM 波形,並使用 Cursor (游標) 計算 Pulse 寬度:
得 Output A 的 Pulse 寬度大約是 1.44 mS,也就是 1440 us,而 Output B 大約是 400 us (920 – 520 = 400),跟理論值幾乎一樣,由此可見 Proteus 示波器非常準確。
0 意見:
張貼留言