當(dāng)您需要來(lái)自沒(méi)有數(shù)模轉(zhuǎn)換器(DAC)的微控制器的模擬輸出時(shí),您可以連接外部DAC芯片。但是對(duì)于更便宜的解決方案,使用脈沖寬度調(diào)制(PWM)輸出并添加低通濾波器(LPF)來(lái)提取其平均值,該平均值等于PWM信號(hào)的占空比。
圖1RC LPF提取PWM信號(hào)的平均值
RC濾波器去掉了非直流分量;剩下的是平均信號(hào) U OUT 。如果PWM信號(hào)的周期 T 等于63個(gè)時(shí)鐘,則信號(hào) U OUT 可以具有64個(gè)離散DC之一值(0到63,六位分辨率)。
低通RC濾波器的時(shí)間常數(shù)t必須足夠大,以平滑輸出信號(hào) U OUT 的。紋波,? U OUT ,應(yīng)小于一個(gè)最低有效位(LSb)。最壞的情況是占空比為50%(圖2)。如果t遠(yuǎn)大于周期 T 那么電容器充電電流 I C 并且改變? U OUT 可以近似為:
對(duì)于6位DAC,? U OUT 應(yīng)小于V CC /64,需要一個(gè)t <=> RC = 16·T的濾波器。
圖2濾波后的輸出(藍(lán)色)應(yīng)少于一個(gè)LSb紋波。
一些實(shí)用數(shù)字:低功耗微處理器通常使用32768 Hz的晶體振蕩器,此時(shí)鐘信號(hào)用于PWM模塊。對(duì)于6位PWM,周期 T 為64/32768~2ms,需要32ms的時(shí)間常數(shù)。必須等待5t(160ms)才能使6位轉(zhuǎn)換器穩(wěn)定下來(lái)。慢。本設(shè)計(jì)理念解釋了如何加快速度。
微控制器中的PWM模塊通常可以產(chǎn)生多個(gè)PWM信號(hào)。考慮對(duì)兩個(gè)基于PWM的3位DAC(DACH和DACL)的輸出求和,其中DACL的輸出在加法之前降低到八分之一幅度。產(chǎn)生的信號(hào)用作6位DAC,與簡(jiǎn)單版本相比具有重要優(yōu)勢(shì):對(duì)于相同的分辨率,周期 T 僅為8個(gè)時(shí)鐘周期,并且所需的時(shí)間常數(shù)t為1/8以前,將建立時(shí)間加快8倍。 RC濾波器中的電阻可以很容易地實(shí)現(xiàn)這種布置,用于兩個(gè)PWM信號(hào)(PWMH,PWML):
圖3組合兩個(gè)基于PWM的DAC輸出
輸出信號(hào) U OUT 由下式給出:
該技術(shù)已在TI MSP430F5132微控制器中實(shí)現(xiàn):
//配置PWM - 32 kHz/8 = 4 kHz :: 6位兩個(gè)PWM,上電時(shí)只執(zhí)行一次
TA0CCR0 = 7;//最多7個(gè)(包括)
TA0CTL = TASSEL__ACLK | MC_1 | TACLR;
TA0CCR1 = 0; TA0CCTL1 = OUTMOD_6;//toggle/set
TA0CCR2 = 0; TA0CCTL2 = OUTMOD_6;//切換/設(shè)置
//使用::寫入PWM模塊以實(shí)現(xiàn)所需的DAC輸出
DAClevel ++;//下一個(gè)DAC級(jí)別,DAClevel是char
TA0CCR1 =(DAClevel >> 3)&amp; 7;//設(shè)置PWMH:MSB 3位
TA0CCR2 =(DAClevel)&amp; 7;//設(shè)置PWML:LSB 3位
圖4要初始化的代碼&amp;寫入6位(3 + 3)基于PWM的DAC
圖5基于6位PWM的DAC的測(cè)量輸出;藍(lán)色:實(shí)現(xiàn)如圖1所示(160ms建立); Violet:如圖3所示的實(shí)現(xiàn)(20ms建立)
7位DAC可以使用1%電阻實(shí)現(xiàn)。這次,兩個(gè)PWM信號(hào)用于產(chǎn)生兩個(gè)三位DAC,總共六位,并且在P3.7處MSb簡(jiǎn)單地設(shè)置為0或1.
圖6七位基于PWM的DAC的實(shí)現(xiàn)
圖7圖6電路的測(cè)量輸出;注意良好的線性度。
//配置PWM - 32 kHz/8 = 4 kHz :: 7 bit in兩個(gè)PWM和一個(gè)數(shù)字引腳,上電僅執(zhí)行一次
//相同圖5中configure部分
//使用::寫入定時(shí)器比較器實(shí)現(xiàn)所需的DAC輸出
DAClevel ++;//下一個(gè)DAC級(jí)別,DAClevel是char
TA0CCR1 =(DAClevel >> 3)&amp; 7;//設(shè)置PWMH,MSB,3位
TA0CCR2 =(DAClevel)&amp; 7;//設(shè)置PWML,LSB,3位
if(DAClevel&amp; BIT6)P3OUT | = BIT7;否則P3OUT&amp; = ~BIT7;//設(shè)置MSB,無(wú)PWM
圖8初始化代碼&amp;寫入7位(3 + 3 + 1)基于PWM的DAC
-
PWM
+關(guān)注
關(guān)注
114文章
5197瀏覽量
214607 -
dac
+關(guān)注
關(guān)注
43文章
2309瀏覽量
191410 -
PCB打樣
+關(guān)注
關(guān)注
17文章
2968瀏覽量
21794 -
華強(qiáng)PCB
+關(guān)注
關(guān)注
8文章
1831瀏覽量
27884 -
華強(qiáng)pcb線路板打樣
+關(guān)注
關(guān)注
5文章
14629瀏覽量
43138
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論