【導讀】使用電位器可以很方便在信號源的驅動下形成一個幅值可以調節的交流信號源。這比起使用通常的可編程直流電源,或者DAC輸出電壓來說,輸出的是幅度可以變的交流信號源,可以用于很多的自動測量環節。
01緣起
1.為什么討論電子電位器?
為什么要討論使用一個 DAC[1]來作為一個電位器呢?這里面主要原因如下:
● 使用電位器可以很方便在信號源的驅動下形成一個幅值可以調節的交流信號源。這比起使用通常的可編程直流電源,或者DAC輸出電壓來說,輸出的是幅度可以變的交流信號源,可以用于很多的自動測量環節。
● 為什么不直接使用 機械電位器[2]來改變信號源的幅值呢?還是一個原因,那就是自動可編程改變信號的幅值。
● 現在有數字電位器,比如 X9C102,X9C103,X9C104[3],AD5272等,為什么不使用它們來實現對交流信號源進行幅值改變呢?這里面一個主要原因就是器件的頻帶寬度[4](https://zhuoqing.blog.csdn.net/article/details/104134132 "X9C102,X9C103,X9C104"),AD5272等,為什么不使用它們來實現對交流信號源進行幅值改變呢?這里面一個主要原因就是器件的頻帶寬度[^4068]的問題。相比于機械電位器,這些電子電位器(變阻器)都具有相對較窄的工作頻帶寬度,對于高頻信號不適合。
2.為什么使用DAC做電位器?
● DAC用作電位器改變交流信號原理;
● 使用DAC來分壓交流信號的優點是什么?
● 是否能夠克服前面數字電位器的頻帶過窄的問題?
寫這些話的時候,我還不知道具體答案,下面就通過實驗來驗證一下吧。
02實驗電路
最近,剛剛購買了幾片16bit的DAC芯片 DAC8830IDR[5](價格6.6),具有SPI接口,基于該DAC來驗證一下前面的思路的可行性。
1.實驗電路設計
由于DAC8830使用SPI接口來設置輸出電壓,使用STC8G1K(SOP16)作為控制器來完成對它的信號控制。
1)SCH [6]
▲ 原理圖設計
2)PCB
對于實驗原理圖進行LAYOUT,盡可以滿足單面PCB板制作的工藝要求??焖僦瓢嬷蟮玫綄膶嶒炿娐钒濉?/div>
▲ 實驗電路板的PCB設計
2.MCU軟件編程[7]
1) DA8830訪問子程序
使用STC8G的SPI端口對DA8830進行訪問。根據DA8830的SPI讀寫時序,相應的DAC8830寫入轉換(16bit)數據的子程序為:
void DAC8830Set(unsigned int nDAC) {
OFF(DAC8830_CS);
SPISendChar((unsigned char)(nDAC >> 8));
SPISendChar((unsigned char)nDAC);
ON(DAC8830_CS);
}
▲ DA8830的SPI讀寫時序
對應的DA8830的CS,SPK的波形為:
▲ 示波器觀察到DA8830的CS,CLK的波形
從上面波形可以看出,DAC8830Set()函數的執行時間在STC8G1K17(35MHz)執行中的時間大約為。
在靜態下,通過兩個電阻組成的參考電壓分壓電路,生成大約2.5V的參考電壓。實際測量電壓為:。
根據DA8830數據手冊,DAC8830的參考電壓輸入阻抗大約為:。因此,理論計算所得到的參考電壓為:
這個數值比起前面實際測量得到的要大,這說明對應的DA8830的參考電壓管腳的阻抗比起還要小。
為了便于測量數據波形,調用DA8830Set()函數中的輸入參數為。那么輸出電壓計算值應該為:
實際測量DA8830的輸出電壓為:。
2) 輸出電壓波形
▲ 每1ms寫入DAC8830遞增數據的CS,DI數據波形
寫入遞增的數據,輸出波形。
for(;;) {
WaitTime(1);
//----------------------------------------------------------------------
DAC8830Set(nShowCount);
nShowCount += 0x200;
//----------------------------------------------------------------------
}
此時Dout輸出遞增的鋸齒波形。
▲ 輸出遞增的鋸齒波形
03參考電壓與輸出信號
下面經過幾組實驗,來驗證DAC的參考電壓對于輸出信號的影響。
1.參考電壓的有效范圍
在DAC8830的數據手冊中,對于參考電壓的輸入范圍給定的是1.25V ~ Vpp。下面通過一組實驗來測試實際的有效輸入參考電壓范圍:
下面通過在某一給定的DAC8830的設置下,給定Vref,測量對應的實際輸出。將三種不同設置下的輸出電壓與參考電壓之間的關系繪制在一起。從圖中可以看到,實際上,DA8830的參考電壓對于輸出電壓的等比例的影響范圍是在整個的工作電壓(0~5V)之內都有效。
▲ 將三種不同設置下的參考電壓與輸出電壓繪制在一起
2.輸入交變的參考電壓
1)在Vref加入交流電壓波形
在Vref中加入100Hz左右正弦波,設置DAC8830轉換值為0x7fff,輸出的電壓波形如下圖所示??梢钥吹捷敵觯˙lue)的電壓波形等于Vref(Cyan)的一半。
▲ DAC8830的Dout(Cyan)與Vref(Blue)的波形
當設置為0xffff的時候,輸入的波形就與輸入一致了。
▲ DAC8830的Dout(Cyan)與Vref(Blue)的波形
2)輸入高頻方波波形
為了測試從Vref到Vout之間的頻帶寬度,在Vref中加入高頻方波信號,觀察輸出的Vout的信號。
▲ 加入高頻方波信號Vref(Blue)觀察輸出信號Vout(Cyan)
將波形再次展開,觀察輸出的過渡過程。
展開波形,對比輸入輸出波形,可以觀察到Vref到Vout之間的帶寬應該超過1MHz。按照DAC8830數據手冊上關于參考電壓 -3dB帶寬的參數,典型值為1.3MHz。
▲ 加入高頻方波信號Vref(Blue)與輸出信號Vout(Cyan)波形
3.使用DAC對交流信號進行調幅
下面將固定的交流電壓(有直流分量,使得信號始終大于零)施加在Vref,測量Vout隨著DAC8830的設置值的變化情況。
施加的電壓頻率,幅值。
輸出電壓值如設置數值之間的關系為:
▲ 輸出電壓值與設置值之間的關系
可以看到整體上輸出與設置值之間的關系呈現非常好的線性關系。
注意到在曲線的一開始似乎有一些略微的非線性。下面重新采集設置值范圍在(0,0x3ff)范圍內的輸出電壓與設置值之間的關系曲線。
▲ 輸出電壓值與設置值之間的關系
可以看到在起始的時候,由于系統存在噪聲,使得輸出的電流電壓與設定值之間存在一定的非線性。當理論輸出電壓小于系統地線上的噪聲電壓時,使用交流萬用表測量得到的數值就會偏大。
下面重新對頻率為的信號測量輸出電壓與設定值之間的關系。結果與1kHz的情形相同。只是輸出整體的增益下降了。
▲ 輸出電壓值與設置值之間的關系
增益變化了9%左右。
4.信號超量程
當輸入信號的幅值超過DAC8830d的工作電壓,或者低于0V,輸出都會出現截止。
▲ 輸入信號超過+5V,低于0V的情況
結論
通過前面的實驗,可以看到,使用DAC8830來當做電位器獲得幅度可變的交流信號源是可行的。它具有很寬的信號帶寬,并且輸出信號的幅值與設置信號之間具有非常好的線性關系,只是在信號比較小的時候輸出會受到系統和芯片本身的噪聲影響。
當輸入信號超出了DAC8830的工作電壓,或者低于0V時,輸出信號都會截止。所以在使用的時候,需要通過一定的信號偏置的方式將交流信號平移到始終在0~5V(DAC8830工作電壓)范圍之后進行調試,然后可以再通過隔直電容去掉信號中的偏移量。
參考資料
[1] DAC: https://baike.baidu.com/item/%E6%95%B0%E6%A8%A1%E8%BD%AC%E6%8D%A2%E5%99%A8/4634384?fromtitle=DAC&fromid=1196661&fr=aladdin
[2] 機械電位器: https://zhuoqing.blog.csdn.net/article/details/104089780
[3] X9C102,X9C103,X9C104: https://zhuoqing.blog.csdn.net/article/details/104134132
[4] 頻帶寬度: 器件的輸出增益隨著信號頻率的改變而下降,最終形成的最大等效輸出帶寬
推薦閱讀: