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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于Atmega16單片機(jī)的重物提升控制系統(tǒng)設(shè)計(jì)

          基于Atmega16單片機(jī)的重物提升控制系統(tǒng)設(shè)計(jì)

          作者: 時(shí)間:2011-07-20 來(lái)源:網(wǎng)絡(luò) 收藏

          5 位移量的計(jì)算
          微處理器內(nèi)包含3個(gè)獨(dú)立的定時(shí)器/計(jì)數(shù)器模塊,其中T/C0、T/C2是8位定時(shí)器/計(jì)數(shù)器模塊,T/C1是16位的定時(shí)器/計(jì)數(shù)器模塊。硬件中選擇T0、T1作為正反轉(zhuǎn)計(jì)數(shù)器,記錄光電編碼器輸出的正、負(fù)脈沖數(shù)。在軟件中一定要將T0、T1計(jì)數(shù)器進(jìn)行擴(kuò)展,使其有足夠的計(jì)數(shù)空間,擴(kuò)展位移測(cè)量范圍。筆者在軟件時(shí),將T0、T1進(jìn)行擴(kuò)展,使它們都是長(zhǎng)整數(shù)(32位)形式,利用的就是計(jì)數(shù)器滿產(chǎn)生溢出中斷的形式擴(kuò)展的。這樣T0計(jì)數(shù)256個(gè)脈沖產(chǎn)生中斷一次, T1計(jì)數(shù)65 536個(gè)脈沖產(chǎn)生中斷一次。
          T0、T1控制寄存器設(shè)置及產(chǎn)生溢出中斷程序?yàn)椋?br /> …
          TCCR0=0x06; //計(jì)數(shù)脈沖由T0引腳輸入,下降沿有效。
          TCCR1B=0x06; //計(jì)數(shù)脈沖由T1引腳輸入,下降沿驅(qū)動(dòng)
          有效。

            #pragma interrupt_handler timer1_ovf_isr:9//正計(jì)數(shù) 16bits
          void timer1_ovf_isr(void){
             cnt1++; //32位計(jì)數(shù)
            }
            #pragma interrupt_handler timer0_ovf_isr:10 //負(fù)計(jì)數(shù)8bits
            void timer0_ovf_isr(void){
             long c;
             cnt0++; //32位計(jì)數(shù)
             c=(cnt0>>8); //防止cnt0,cnt1溢出
             if(c (cnt1>=c))
             {cnt1-=c; //計(jì)算計(jì)數(shù)差值
             cnt0=cnt00xff; //只保留低8位
          } }
          設(shè)計(jì)中,選擇型號(hào)為S38-J3V100光電編碼器,輸出編碼是500碼/轉(zhuǎn),則脈沖當(dāng)量是πd/500,當(dāng)前的位移量就是總脈沖數(shù)與脈沖當(dāng)量的乘積。軟件計(jì)算程序如下:
            …
            posicnt=(cnt116)|TCNT1; //正脈沖數(shù)
            negcnt=(cnt08)|TCNT0; //負(fù)脈沖數(shù)
            totalcnt =posicnt-negcnt; //產(chǎn)生位移量大的總脈沖數(shù)
            curPosi=(totalcnt*(meterCyl*1000+ CentCyl));
            curPosi/=PLS_PER_ROUND; //當(dāng)前的位移量

            執(zhí)行運(yùn)行命令,微處理器就要對(duì)設(shè)定的位移量進(jìn)行計(jì)算,把位移量大小轉(zhuǎn)換成脈沖數(shù)的多少。在運(yùn)行中進(jìn)行脈沖數(shù)的比較,如果相等,則停止運(yùn)行,表示已經(jīng)達(dá)到目標(biāo)位置。軟件計(jì)算程序如下:
          sysStatus = SYS_RUN;
          PosiSet=meterPosi*1000+CentPosi; //毫米計(jì)算
          cntSet=(PosiSet*PLS_PER_ROUND)/(CentCyl+
          meter Cyl*1000);
          if(cntSet>totalcnt) Command=CMD_FWD;
          //執(zhí)行正轉(zhuǎn)命令
          else if(cntSettotalcnt) Command=CMD_REV;
          //執(zhí)行反轉(zhuǎn)命令
          else sysStatus=SYS_IDLE; //停止?fàn)顟B(tài)
          本方案設(shè)計(jì)的在實(shí)際運(yùn)行過(guò)程中獲得了良好的動(dòng)態(tài)性能,控制精確,智能化程度高。利用光電編碼器作為位移傳感器,能獲取高精度控制信號(hào)。高性價(jià)比的使成本大大降低,提高了軟件設(shè)計(jì)的靈活性,簡(jiǎn)化了硬件電路設(shè)計(jì),具有很好的實(shí)用價(jià)值。
          參考文獻(xiàn)
          [1] 李勁松.實(shí)軸增量式光電編碼器測(cè)量電路的設(shè)計(jì)[J].實(shí)驗(yàn)室研究與探索 2007.26(2): 12~14.
          [2] Atmel Corporation.ATMEG16 用戶手冊(cè)[Z].Atmel Corporation,2002.
          [3] /Atmega16L Datasheet: 8 b Microcont roller with 128K bytes in 2 System Programmable Flash[Z].
          [4] 閻石.數(shù)字電子技術(shù)基礎(chǔ)[M].北京:高等教育出版社, 1997.
          [5] 沈文,詹衛(wèi)前. AVRC語(yǔ)言開(kāi)發(fā)入門指導(dǎo)[M]. 北京:清華大學(xué)出版社,2003.
          [6] 馬潮,詹衛(wèi)前,耿德根著.ATmega 8原理及應(yīng)用手冊(cè)[M]. 清華大學(xué)出版社,1998.


          上一頁(yè) 1 2 下一頁(yè)

          評(píng)論


          相關(guān)推薦

          技術(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); })();