簡介
本文記錄了基于 D5272 三組電子變阻器電路模塊的設(shè)計。該模塊可以用于基于面包板搭建的各種實驗電路的測試功能。相比于“機械變阻器[1]”,該模塊更加小巧,通道多,設(shè)計比較方便。可以直接精確設(shè)置各通道的電阻值。
確定是,電子變阻器的頻率響應(yīng)比起機械變阻器要小。這部分詳細(xì)參見“AD5272 數(shù)字變阻器[2]”中的內(nèi)容。
電路設(shè)計
工程文件:
?D:zhuoqingAltiumDesignerTools2020DigitRheostatDigitRheostat.PcbDoc?
?
1. 原理圖設(shè)計
▲ 電路原理圖
?
2. PCB 設(shè)計
設(shè)計電路板,使其適合快速制版。獲得快速制版后的電路板,經(jīng)過焊接形成測試電路板圓形。
▲ PCB 設(shè)計
▲ 安裝有藍牙通信模塊后的電路板及其外部接口
?
三個電子變阻器的量程分別為:
通道號 | 變阻器的量程 |
---|---|
1 | 20kΩ |
2 | 20kΩ |
3 | 50kΩ |
軟件設(shè)計
?D:zhuoqingwindowC51STCToolsDigitRheostatDigitRheostat.uvproj?
?
//***************************************
//????????????????????PROCESS?THE?DEBUG?BUFFER
//------------------------------------------------------------------------------
void?SerialDebugProcessBuffer(void)?{
????unsigned?int?nNumber;
????unsigned?int?nAddress;
????????????
????SerialDebugBuffer2Argument();
????if(g_ucSDANumber?*?0)?return;
????if(strcmp("hello",????????????????(char?*)STD_ARG[0])?*?0)
????????printf("%s?is?ready?!rn",?VERSION_STRING);
????
????else?IFARG0("ad5272set")?{
????????sscanf(SDA(1),?"%d",?&nNumber);
????????sscanf(SDA(2),?"%d",?&nAddress);
????????AD5272SetAddress(nAddress);
????????AD5272WriteRDAC(nNumber);
????}
????else?printf("Error?command?:?%s?!rn",?STD_ARG[0]);
}
控制軟件說明:
發(fā)送命令的格式為:
?ad5272 number address?
?
number:0~1023 :設(shè)置電阻從最小增加到最大量程。address: 0,1,2 :分別對應(yīng)著三個變阻器。從左到右分別是 CH0,CH2,CH1
特性測試
1. 電子變阻器應(yīng)用電壓范圍
使用一個電阻與 AD5272 串聯(lián),接入測試交流信號,測量分壓在 AD5272 上的輸出電壓波形。具體實驗電路如下圖所示:
▲ 實驗電路
?
通過分壓輸出的波形可以看到 AD5272 的端口電壓大體上不能夠小于 0V,不能夠大于其工作電壓(5V)。如果超出了這個范圍,信號就被鉗位在 0~5V 之間。
因此在實際應(yīng)用中,一方面需要避免電子變阻器工作電壓超出這個范圍,另外在電子變阻器上需要加上保護串聯(lián)電阻,以免超出電壓范圍之后出現(xiàn)過大的輸入電流或者輸出電壓。
▲ 分壓電阻實驗波形
?
下圖顯示了 AD5272 電阻變化過程中,其上的分壓信號開始飽和過程。
▲ 逐步增加電子變阻器的值,輸出波形變化情況
?
繪制上述動圖的 PYTHON 程序為:
#!/usr/local/bin/python
#?-*-?coding:?gbk?-*-
#******************************
#?TEST2.PY?????????????????????--?by?Dr.?ZhuoQing?2020-04-25
#
#?Note:
#******************************
from?headm?import?*
from?tsmodule.tshardware????import?*
from?tsmodule.tsdraw????????import?*
gifid?=?5
tsgifff()
for?i?in?range(17):
????data?=?int(1024?/?16?*?i?/?10)
????if?data?>=?1024:?data?=?1023
????zbcmd(b'ad5272set?%d?1'%data)
????time.sleep(.2)
????tsgifaa()
dop2gif(gifid?=?gifid)
printf('a')
#------------------------------------------------------------
#????????END?OF?FILE?:?TEST2.PY
#******************************
參考文獻:
AD5272 數(shù)字變阻器[3]
機械變阻器[4]
Reference
[1]機械變阻器: https://zhuoqing.blog.csdn.net/article/details/104089780
[2]AD5272 數(shù)字變阻器: https://zhuoqing.blog.csdn.net/article/details/105605305