【導(dǎo)讀】當(dāng)你需要從一個(gè)不帶數(shù)模轉(zhuǎn)換器(DAC)的微控制器輸出模擬信號(hào)時(shí),你可以外加一個(gè)DAC芯片。但是你也可以用另一種更經(jīng)濟(jì)的方法,即采用脈寬調(diào)制(PWM)輸出加低通濾波器(LPF)取其平均值的方法,該平均值等于PWM信號(hào)的占空比。
圖1:用RC低通濾波器得到PWM信號(hào)的平均值
RC低通濾波器濾除掉非直流信號(hào),得到的便是平均信號(hào)UOUT。如果PWM信號(hào)的周期T為63個(gè)時(shí)鐘周期,UOUT將會(huì)是64個(gè)離散DC值之一。(0 到 63,6位分辨率。)
RC低通濾波器的時(shí)間常數(shù)τ必須足夠大以平滑輸出信號(hào)UOUT,紋波?UOUT應(yīng)小于一個(gè)最低有效位(LSB)。最壞的情況出現(xiàn)在50% 占空比時(shí)(如圖2所示)。當(dāng)τ遠(yuǎn)大于周期T時(shí),電容的充電電流IC 和變化?UOUT可近似為:
對(duì)于一個(gè)6位的DAC,UOUT應(yīng)小于 VCC/64,要求濾波器的τ=RC ≥ 16·T。
圖2:濾波輸出(藍(lán)色)的紋波應(yīng)小于一個(gè)LSB
一些實(shí)用數(shù)據(jù):低功耗微處理器常使用一個(gè)32768Hz晶體振蕩器作為PWM模塊的時(shí)鐘信號(hào)。如果是6位PWM,則周期T為64/32768≈2ms,因此需要32ms的時(shí)間常數(shù),也就是要等待5τ(160ms)來(lái)使6位轉(zhuǎn)換器穩(wěn)定。非常慢。本設(shè)計(jì)實(shí)例將展現(xiàn)你如何才能加速完成信號(hào)的轉(zhuǎn)換。
微控制器中的PWM模塊通??梢援a(chǎn)生多個(gè)PWM信號(hào)。我們來(lái)考慮一下將兩個(gè)基于PWM的3位DAC(DACH和DACL)的輸出求和,求和前DACL輸出的幅度被減小到了八分之一。得到的信號(hào)相當(dāng)于一個(gè)6位DAC,但將會(huì)比簡(jiǎn)單版本有重大的優(yōu)勢(shì):周期T對(duì)于相同的分辨率僅為8個(gè)時(shí)鐘周期,而所需的時(shí)間常數(shù)τ是原來(lái)的八分之一,DAC的穩(wěn)定時(shí)間快了8倍。這樣改進(jìn)后就很容易用電阻為兩個(gè)PWM信號(hào)(PWMH、PWML)實(shí)現(xiàn)RC濾波器:
圖3:將兩個(gè)基于PWM的DAC輸出合到一起
輸出信號(hào)UOUT等于:
這一技術(shù)已經(jīng)在TI MSP430F5132微控制器中實(shí)現(xiàn):
圖4:基于6位(3+3)PWM的DAC的初始化和寫入代碼
圖5:基于6位PWM的DAC測(cè)量輸出;藍(lán)線:圖1方案(穩(wěn)定時(shí)間160ms);紫線:圖3方案(穩(wěn)定時(shí)間20ms)。
7位DAC可以用1%精度的電阻實(shí)現(xiàn)。這次,兩個(gè)PWM信號(hào)用來(lái)產(chǎn)生兩個(gè)3位DAC,最終實(shí)現(xiàn)6位的效果,MSb只用P3.7引腳來(lái)設(shè)置為0或1。
圖6:基于7位PWM的DAC的實(shí)現(xiàn)
圖7:圖6電路的測(cè)量輸出結(jié)果;注意其優(yōu)秀的線性度
圖8:基于7位(3+3+1)PWM的DAC的初始化和寫入代碼
這里的速度提升更加明顯。一個(gè)簡(jiǎn)單的PWM DAC需要128個(gè)時(shí)鐘周期(128/32768 s-1=3.9ms),因此τ=32·T=125ms,穩(wěn)定時(shí)間為5·125ms=625ms。圖7的穩(wěn)定時(shí)間為40ms,快了16倍。使用高階的LPF濾波器也有助于縮短穩(wěn)定時(shí)間。
免責(zé)聲明:本文為轉(zhuǎn)載文章,轉(zhuǎn)載此文目的在于傳遞更多信息,版權(quán)歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權(quán)問(wèn)題,請(qǐng)聯(lián)系小編進(jìn)行處理。
推薦閱讀: