機械變阻器電位器

      網友投稿 696 2022-05-29

      雖然現在有很多可以用來當做變阻器的器件:比如場效應管、X9C103數字電位器,但是由于存在非線性、寄生電容,所以在很多測量場合還是需要機械變阻器來完成。

      ■ 說明

      在2020/9/18日,由于外部機械碰撞,使得BLUETOOTH接口斷裂,整個模塊就報廢掉了。

      01

      設計原理

      機械變阻器

      機械變阻器的控制器是由STM32F103為核心,外部使用兩個A4950做起小型直流電機驅動器。通過ZIGBEE串口模塊接收控制命名。

      在控制上還有八個IO端口,可以通過命令任意配置成OUT,IN。

      八個IO口通過左右兩個相同的六管腳插座輸出,從左到右分配定義為:

      另外一個端口與畫面定義相同,只是BIT的序號從4到8.

      變阻器的執行部件是由帶有減速齒輪箱的直流電機。直流電機配有霍爾轉速嗎盤。

      該電機通過軟塑料管可以與多圈電位器相連,通過轉動帶動電位器轉動。

      控制命令

      控制命令的說明文檔:

      DesignCenter\MyResearch2\機械可變電阻

      控制命令在軟件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); }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      33

      34

      35

      36

      37

      38

      39

      40

      41

      42

      43

      機械變阻器、電位器

      44

      45

      46

      47

      48

      49

      50

      51

      52

      53

      54

      55

      56

      57

      58

      59

      60

      61

      62

      63

      64

      65

      66

      67

      68

      69

      在JPGA25DOP中帶有Python調用命令程序函數,相應的命令見下面的代碼:

      #!/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))

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      33

      34

      35

      36

      37

      38

      39

      測試結果

      通過以下代碼,使得變阻器變動,通過DM3068數字萬用表測量電阻。

      變阻器的引腳三個,從右到左,分別是滑動端,固定端1,固定端2.

      指令中,如果RUN的參數為正,則滑動端與固定端2的電阻減少,與固定端1的電阻增加。

      移動總步數大約為4500。

      由于使用ZIGBEE進行命令控制,其中會出現丟失命令數據包的情況,所以在移動過程中電阻的變化會出現暫留的情況。

      下面是對于第二個電阻測試的結果。每移動一次,測量滑動端至固定端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)

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      33

      34

      35

      36

      37

      38

      39

      40

      41

      42

      43

      44

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:Linux分配home容量給根目錄
      下一篇:[跟著官方文檔學pytest][四][學習筆記]
      相關文章
      亚洲精品福利你懂| 亚洲国产精品一区| 亚洲精品中文字幕无乱码麻豆| 亚洲综合久久成人69| 亚洲国产一区国产亚洲| 无码乱人伦一区二区亚洲| 亚洲欧洲日产国产综合网| 亚洲av不卡一区二区三区| 亚洲精品高清视频| 亚洲精品在线免费观看| 亚洲精品熟女国产| 亚洲免费电影网站| 亚洲xxxx视频| 亚洲精品无码av片| 精品亚洲福利一区二区| 婷婷综合缴情亚洲狠狠尤物| 国产大陆亚洲精品国产| 亚洲男人的天堂在线va拉文| 亚洲中文字幕无码爆乳av中文| AV在线亚洲男人的天堂| 国产日产亚洲系列| 亚洲春色在线视频| 日本久久久久亚洲中字幕| 亚洲精品免费在线| 亚洲国产精品免费观看| 亚洲免费网站观看视频| 国产精品亚洲一区二区三区在线观看 | 久久精品国产亚洲av影院| 亚洲精品国产第1页| 国产亚洲精品bv在线观看| 亚洲s码欧洲m码吹潮| 亚洲无码视频在线| 亚洲国产精品成人精品无码区 | 婷婷亚洲综合五月天小说在线 | 亚洲视频免费在线看| 亚洲an日韩专区在线| 亚洲成在人线aⅴ免费毛片 | 亚洲成a人无码av波多野按摩 | 久久亚洲最大成人网4438| 亚洲国产精品无码第一区二区三区| 精品亚洲福利一区二区|