速度更快的脈寬調變類比數位轉換器

作者 : Dusan Ponikvar

當你需要從一個配備數位類比轉換器(DAC)的微處理器輸出類比訊號時,可以外加一個DAC晶片,也可以用另一種更經濟的方法──採用脈寬調變(PWM)輸出加上低通濾波器取平均值的方法,該平均值等於PWM訊號的佔空比(duty cycle)。

當你需要從一個配備數位類比轉換器(DAC)的微處理器輸出類比訊號時,可以外加一個DAC晶片,也可以用另一種更經濟的方法──採用脈寬調變(PWM)輸出加上低通濾波器(LPF)取平均值的方法,該平均值等於PWM訊號的佔空比(duty cycle)。

[20160422 ADC TA 01FIG1]

圖1 用RC低通濾波器得到PWM訊號的平均值。


RC低通濾波器濾去除了非直流分量(non-DC components),剩餘的是訊號平均值UOUT,如果PWM訊號的週期為63個時脈週期,UOUT將會是64個DC離散值之一(0 ~63的 6位元解析度)。

RC低通濾波器的時間常數τ必須足夠大,以平滑輸出訊號UOUT;漣波訊號ΔUOUT必須小於最低有效位元(LSB)。最壞的情況出現在50%佔空比時(圖2)。當τ遠大於週期T時,電容的充電電流IC 和漣波ΔUOUT變化可近似為:

[20160422 ADC TA 01FIG1-1]

公式


對於一個6位元的DAC,ΔUOUT 應小於 VCC/64,需要 τ = RC大於等於16 · T的濾波器。

[20160422 ADC TA 01FIG2]

圖2 濾波訊號輸出(藍色)應小於漣波的一個最低有效位元。


一些實際數字:低功耗微處理器常使用一個32,768Hz晶體振盪器作為PWM模組的時脈訊號,如果是6位元PWM,則週期T為64/32768約為2ms,因此需要32 ms的時間常數τ,也就是要等待5τ (160ms)的時間來使6位元轉換器穩定,非常慢。下面的設計將完美地展現如何加速完成訊號的轉換。

微控制器中的PWM模組通常可以產生多個PWM訊號;考慮將兩個3位元PWM DAC(DACH與DACL)的輸出加總,在加總前將DACL的輸出幅度減小到八分之一,最後的訊號等同一個6位元DAC,但具備超越簡單6位元DAC的一個重要優勢──相同解析度下的週期T只要8個時脈週期,時間常數τ是原來的八分之一,DAC的穩定時間快了8倍。這樣的佈置很容易以雙PWM訊號(PWMH、PWML)的RC濾波器內電阻來實現,如圖3。

[20160422 ADC TA 01FIG3]

圖3 將兩個PWM DAC的輸出結合。


輸出訊號UOUT等於:

[20160422 ADC TA 01FIG3-1]

公式


此技巧已經在TI的MSP430F5132微控制器實現,如圖4。

[20160422 ADC TA 01FIG4]

圖4 基於6位元(3+3)PWM的DAC的初始化和配置程式碼。


[20160422 ADC TA 01FIG5]

圖5 6位元PWM DAC輸出量測結果;藍線為圖1方案的測試結果(穩定時間160ms),紫線為圖3方案測試結果(穩定時間20ms)。


7位元DAC用1%精度的電阻就可以實現;這一次兩個PWM訊號用來產生兩個3位元DAC、整體6位元的效果。最高有效位元(MSb)能在P3.7接腳輕鬆設置為0或1。

[20160422 ADC TA 01FIG6]

圖6 7位元PWM DAC實作案例。


[20160422 ADC TA 01FIG7]

圖7 圖6電路輸出的量測結果;注意其優秀的線性度。


[20160422 ADC TA 01FIG8]

圖 8 基於7位(3+3+1)PWM的DAC的初始化和配置程式碼。


速度的提升效果在這裡更加明顯。一個簡單PWM DAC需要128個時脈週期(128/32768 s-1= 3.9ms),結果是τ=32·T = 125ms ,穩定時間為5×125ms = 625ms。圖7穩定時間為40ms,快了16倍。使用高階的低通濾波器也有助於縮短穩定時間。

掃描或點擊QR Code立即加入 “EETimes技術論壇” Line 社群 !

 EET-Line技術論壇-QR

發表評論