雖然現(xiàn)在有很多可以用來當(dāng)做變阻器的器件:比如場效應(yīng)管、X9C103數(shù)字電位器,但是由于存在非線性、寄生電容,所以在很多測量場合還是需要機械變阻器來完成。
■ 說明
在2020/9/18日,由于外部機械碰撞,使得BLUETOOTH接口斷裂,整個模塊就報廢掉了。
01設(shè)計原理
機械變阻器
機械變阻器的控制器是由STM32F103為核心,外部使用兩個A4950做起小型直流電機驅(qū)動器。通過ZIGBEE串口模塊接收控制命名。
在控制上還有八個IO端口,可以通過命令任意配置成OUT,IN。
八個IO口通過左右兩個相同的六管腳插座輸出,從左到右分配定義為:
另外一個端口與畫面定義相同,只是BIT的序號從4到8.
變阻器的執(zhí)行部件是由帶有減速齒輪箱的直流電機。直流電機配有霍爾轉(zhuǎn)速嗎盤。
該電機通過軟塑料管可以與多圈電位器相連,通過轉(zhuǎn)動帶動電位器轉(zhuǎn)動。
控制命令
控制命令的說明文檔:
DesignCenter\MyResearch\202\機械可變電阻
控制命令在軟件SerialText.C中表示:如下面代碼所示: //------------------------------------------------------------------------------ void SerialDebugProcessBuffer(void) { SerialDebugBuffer2Argument(); if(g_ucSDANumber == 0) return; if(strcmp("hello", (char *)STD_ARG[0]) == 0) printf("%s is ready !\r\n", VERSION_STRING); else IFARG0("11pwm1") { int nNumber; sscanf(SDA(1), "%d", &nNumber); SetPWM1(nNumber); }else IFARG0("11pwm2") { int nNumber; sscanf(SDA(1), "%d", &nNumber); SetPWM2(nNumber); } else IFARG0("11pwm12") { int nNumber; sscanf(SDA(1), "%d", &nNumber); SetPWM12(nNumber); } else IFARG0("varistorcount1") { int nNumber; sscanf(SDA(1), "%d", &nNumber); int nPWM = 20; if(STD_NUM > 2) { sscanf(SDA(2), "%d", &nPWM); if(nPWM > 50) nPWM = 50; } SetCount1(nNumber, nPWM); } else IFARG0("varistorcount2") { int nNumber; sscanf(SDA(1), "%d", &nNumber); int nPWM = 20; if(STD_NUM > 2) { sscanf(SDA(2), "%d", &nPWM); if(nPWM >= 50) nPWM = 50; } SetCount2(nNumber, nPWM); } else IFARG0("varistorsetbit") { int nNumber; sscanf(SDA(1), "%x", &nNumber); SetBit((unsigned char)nNumber); } else IFARG0("varistorclearbit") { int nNumber; sscanf(SDA(1), "%x", &nNumber); ClearBit((unsigned char)nNumber); } else IFARG0("varistorsetbitvalue") { int nNumber; sscanf(SDA(1), "%x", &nNumber); SetBitValue((unsigned char)nNumber); } else IFARG0("varistorgetstatus") { char szString[32]; sprintf(szString, "%d %d %d\r\n", GetBitValue(), GetCount1(), GetCount2()); printf("%s", szString); int nLength = strlen(szString); int i; for(i = 0; i < nLength; i ++) { UART2SendChar(szString[i]); } } else IFARG0("varistorsetbitoutin"){ int nNumber; sscanf(SDA(1), "%x", &nNumber); SetBitOutIn((unsigned char)nNumber); }
在JPGA25DOP中帶有Python調(diào)用命令程序函數(shù),相應(yīng)的命令見下面的代碼:
#!/usr/local/bin/python # -*- coding: gbk -*- #============================================================ # JPGA25.PY -- by Dr. ZhuoQing 2020-01-26 # # Note: #============================================================ from head import * from tsmodule.tshardware import * def jpgasetbitoutin(bit): ccloadSerial.write(b'varistorsetbitoutin %x\r'%bit) def jpgagetstatus(): if ccloadSerial.inWaiting() > 0: ccloadSerial.read(ccloadSerial.inWaiting()) ccloadSerial.write(b'varistorgetstatus\r') for i in range(100): if ccloadSerial.inWaiting() > 0: break time.sleep(0.01) time.sleep(0.01) return ccloadSerial.read(ccloadSerial.inWaiting()) def jpgasetbitvalue(bit): ccloadSerial.write(b'varistorsetbitvalue %x\r'%bit) def jpgarun1(step, speed=20): ccloadSerial.write(b'varistorcount1 %d %d\r'%(step, speed)) def jpgarun2(step, speed=20): ccloadSerial.write(b'varistorcount2 %d %d\r'%(step, speed))
測試結(jié)果
通過以下代碼,使得變阻器變動,通過DM3068數(shù)字萬用表測量電阻。 變阻器的引腳三個,從右到左,分別是滑動端,固定端1,固定端2.
指令中,如果RUN的參數(shù)為正,則滑動端與固定端2的電阻減少,與固定端1的電阻增加。 移動總步數(shù)大約為4500。
由于使用ZIGBEE進行命令控制,其中會出現(xiàn)丟失命令數(shù)據(jù)包的情況,所以在移動過程中電阻的變化會出現(xiàn)暫留的情況。
下面是對于第二個電阻測試的結(jié)果。每移動一次,測量滑動端至固定端2 之間的電阻。
#!/usr/local/bin/python # -*- coding: gbk -*- #============================================================ # EXE1.PY -- by Dr. ZhuoQing 2020-01-26 # # Note: #============================================================ from headm import * from tsmodule.tsvisa import * dm3068open() from jpga25 import * #------------------------------------------------------------ jpgarun2(5500, 50) #exit() time.sleep(2) #------------------------------------------------------------ resdim = [] pltgif = PlotGIF() for i in range(80): jpgarun2(-50, 20) time.sleep(.5) res = dm3068res() printff(i, res) resdim.append(res) plt.clf() plt.plot(resdim) plt.xlabel('Sample') plt.ylabel('Resistor(ohm)') plt.pause(.01) pltgif.append(plt) pltgif.save(r'd:\temp\res.gif', 50, 3000) jpgarun2(5500, 50)
編輯:hfy
-
控制器
+關(guān)注
關(guān)注
112文章
16361瀏覽量
178054 -
場效應(yīng)管
+關(guān)注
關(guān)注
46文章
1162瀏覽量
63940 -
數(shù)字電位器
+關(guān)注
關(guān)注
4文章
267瀏覽量
83228 -
變阻器
+關(guān)注
關(guān)注
0文章
95瀏覽量
16413
發(fā)布評論請先 登錄
相關(guān)推薦
評論