<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 步進電機的調(diào)焦系統(tǒng)設(shè)計

          步進電機的調(diào)焦系統(tǒng)設(shè)計

          作者: 時間:2016-12-21 來源:網(wǎng)絡(luò) 收藏

          3 軟件設(shè)計:

          由于電機的運行和轉(zhuǎn)動步數(shù)以及兩步之間間隔時間有關(guān)系,故采用計時器計時的方法來計算時間,F(xiàn)240初始化程序如下:

          void Initcpu(void) //初始化F240程序
          { *WDCR=0x6f; // 禁止自帶的看門狗功能;
          *CKCR1=0x69; // 外部輸入晶振為20MHZ,F(xiàn)240工作在20MHZ;
          *CKCR0=0xc3; // 系統(tǒng)時鐘為10MHZ;
          *SYSCR=0x4000; } // F240輸出頻率CLKOUT=IOPC1(I/O管腳);

          F240初始化后,計時器的基本計時時間為0.1?s,考慮到F240定時器是16位計數(shù)器,這難以滿足計算長時間的需求,所以采用通過計算進入定時器中斷的次數(shù)來計算長時間的方法。例如設(shè)置定時器周期寄存器值為800即*T1PR=800,那么進一次定時器中斷時間為800*0.1= 80?s如果計時為1s的話,則只需進12500次中斷即可,以此類推;故定義的數(shù)組內(nèi)容表示如下:

          int table[ ]= { 25,800,255, //第1行
          . . . . . . } //第n行

          其中25為電機步數(shù);800為定時器周期寄存器值;255每兩步間所要進入定時器中斷的次數(shù)。實現(xiàn)準(zhǔn)確地控制步進電機控制器關(guān)鍵在于由F240 I/O口產(chǎn)生規(guī)定的脈沖信號,提供給步進電機控制器從而驅(qū)動步進電機正確轉(zhuǎn)動,程序中包括F240初始化、電機正轉(zhuǎn)、等待、電機反轉(zhuǎn)幾個程序模塊。程序流 程圖如圖2所示:


          圖2 程序流程圖

          以下是實現(xiàn)電機正轉(zhuǎn)的程序。程序中變量解釋:step:用于存儲數(shù)組中電機步數(shù);every step:用于存儲數(shù)組中每兩步間所要進定時中斷的次數(shù);flag:數(shù)組行數(shù)標(biāo)志(程序假設(shè)需正轉(zhuǎn)36組)。

          void interrupt INT2_ISR()
          { while (*EVIVRA==0x0027) //是否是定時器中斷
          { if(flag<36) //用來完成正轉(zhuǎn)
          {
          if (steptotal==step) //是否走完數(shù)組每行規(guī)定的步數(shù)
          { flag++; //數(shù)組行標(biāo)志加1
          steptotal=0; //電機轉(zhuǎn)動步數(shù)清零
          step=table[++j]; //更新電機運行步數(shù)數(shù)據(jù)
          *T1PR=table[++j]; //更新定時器定時周期
          everystep=table[++j]; //更新需要進入定時器中斷次數(shù)
          *T1CNT=0; } //從零開始計時,啟動定時器
          i++; //循環(huán)標(biāo)志位加1
          if(i==1) *PADATDIR=0xff05; // 提供下降沿,正轉(zhuǎn),不脫機
          else{ if (i==everystep)
          { i=0;
          steptotal++; } //電機每轉(zhuǎn)一步標(biāo)志位加1
          else
          *PADATDIR=0xff04; //CP腳為高電平為產(chǎn)生下降沿準(zhǔn)備,正轉(zhuǎn),不脫機
          }
          *IMR=0x02; //開定時器中斷
          enable(); //開啟F240總中斷
          }
          }

          4 實驗結(jié)果及其注意事項

          電機轉(zhuǎn)動的步數(shù)和時間坐標(biāo)都是由主機端通過MATLAB仿真取得的,因此實際調(diào)焦曲線的與理想曲線的擬合程度大大提高了;步進電機控制器采用四相八拍運行 方式,并且由DSP進行控制,步進機精確地按照步進角(0.9度)轉(zhuǎn)動。實際應(yīng)用該調(diào)焦系統(tǒng)調(diào)整攝影鏡頭,拍攝運動軌跡已知的目標(biāo),達到了滿意的效果。

          定時器時間的準(zhǔn)確計算對高精度地測量一些物理量是非常重要的。當(dāng)需要定時器計算的時間比較長時,定時器計數(shù)還不夠,這時就需要利用定時器自身的中斷,即短時間定時一到就進入定時器中斷服務(wù)子程序,利用進入的次數(shù)來達到計時的目的。

          5 結(jié)束語

          本文對基于DSPTMS320F240利用步進驅(qū)動器UP-4HB03M控制步進電機進行了研究,改進了傳統(tǒng)的工程中調(diào)焦方式,精度大大提高, 經(jīng)測試系統(tǒng)運行穩(wěn)定,由于DSP操作方便,而且采用C語言方式編寫,易于日后的代碼修改和程序移植。


          上一頁 1 2 下一頁

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();