雖然現(xiàn)在有很多可以用來當(dāng)做變阻器的器件:比如場(chǎng)效應(yīng)管、X9C103數(shù)字電位器,但是由于存在非線性、寄生電容,所以在很多測(cè)量場(chǎng)合還是需要機(jī)械變阻器來完成。
■ 說明
在2020/9/18日,由于外部機(jī)械碰撞,使得BLUETOOTH接口斷裂,整個(gè)模塊就報(bào)廢掉了。
01設(shè)計(jì)原理
機(jī)械變阻器
機(jī)械變阻器的控制器是由STM32F103為核心,外部使用兩個(gè)A4950做起小型直流電機(jī)驅(qū)動(dòng)器。通過ZIGBEE串口模塊接收控制命名。
在控制上還有八個(gè)IO端口,可以通過命令任意配置成OUT,IN。
八個(gè)IO口通過左右兩個(gè)相同的六管腳插座輸出,從左到右分配定義為:
另外一個(gè)端口與畫面定義相同,只是BIT的序號(hào)從4到8.
變阻器的執(zhí)行部件是由帶有減速齒輪箱的直流電機(jī)。直流電機(jī)配有霍爾轉(zhuǎn)速嗎盤。
該電機(jī)通過軟塑料管可以與多圈電位器相連,通過轉(zhuǎn)動(dòng)帶動(dòng)電位器轉(zhuǎn)動(dòng)。
控制命令
控制命令的說明文檔:
DesignCenter\MyResearch\202\機(jī)械可變電阻
控制命令在軟件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))
測(cè)試結(jié)果
通過以下代碼,使得變阻器變動(dòng),通過DM3068數(shù)字萬(wàn)用表測(cè)量電阻。 變阻器的引腳三個(gè),從右到左,分別是滑動(dòng)端,固定端1,固定端2.
指令中,如果RUN的參數(shù)為正,則滑動(dòng)端與固定端2的電阻減少,與固定端1的電阻增加。 移動(dòng)總步數(shù)大約為4500。
由于使用ZIGBEE進(jìn)行命令控制,其中會(huì)出現(xiàn)丟失命令數(shù)據(jù)包的情況,所以在移動(dòng)過程中電阻的變化會(huì)出現(xiàn)暫留的情況。
下面是對(duì)于第二個(gè)電阻測(cè)試的結(jié)果。每移動(dòng)一次,測(cè)量滑動(dòng)端至固定端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)注
114文章
16838瀏覽量
182235 -
場(chǎng)效應(yīng)管
+關(guān)注
關(guān)注
47文章
1184瀏覽量
65251 -
數(shù)字電位器
+關(guān)注
關(guān)注
4文章
267瀏覽量
83726 -
變阻器
+關(guān)注
關(guān)注
0文章
95瀏覽量
16621
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦

工程機(jī)械控制器廠家 控制器國(guó)產(chǎn)替代 #國(guó)產(chǎn)控制器#控制器廠家#控制器品牌
運(yùn)動(dòng)控制器接電子尺的工作原理

工程機(jī)械控制器如何選型?控制器選型指南 #控制器 #車載控制器 #整車控制器 #控制器選型

Y1620工程機(jī)械主機(jī)控制器 車載智能控制器 CAN總線 #工程機(jī)械控制器 #整車控制器 #車載控制器

LabVIEW運(yùn)動(dòng)控制(一):EtherCAT運(yùn)動(dòng)控制器的SCARA機(jī)械手應(yīng)用 #正運(yùn)動(dòng)技術(shù) #運(yùn)動(dòng)控制器
UCD90320定序器和系統(tǒng)健康控制器PMBus命令參考

滑動(dòng)變阻器有哪些分類?

車載智能控制器 工程機(jī)械控制器 CAN總線控制器 碩博電子 #控制器 #can總線 #國(guó)產(chǎn)化替代

機(jī)械壓力控制器使用與調(diào)整方法
機(jī)械式壓力控制器的基本工作原理

微控制器與運(yùn)動(dòng)控制器的區(qū)別
運(yùn)動(dòng)控制器的控制形式有哪些
EtherCAT運(yùn)動(dòng)控制器Delta機(jī)械手應(yīng)用

評(píng)論