新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于Atmega16單片機的重物提升控制系統設計

        基于Atmega16單片機的重物提升控制系統設計

        作者: 時間:2011-07-20 來源:網絡 收藏

        5 位移量的計算
        微處理器內包含3個獨立的定時器/計數器模塊,其中T/C0、T/C2是8位定時器/計數器模塊,T/C1是16位的定時器/計數器模塊。硬件中選擇T0、T1作為正反轉計數器,記錄光電編碼器輸出的正、負脈沖數。在軟件中一定要將T0、T1計數器進行擴展,使其有足夠的計數空間,擴展位移測量范圍。筆者在軟件時,將T0、T1進行擴展,使它們都是長整數(32位)形式,利用的就是計數器滿產生溢出中斷的形式擴展的。這樣T0計數256個脈沖產生中斷一次, T1計數65 536個脈沖產生中斷一次。
        T0、T1控制寄存器設置及產生溢出中斷程序為:

        TCCR0=0x06; //計數脈沖由T0引腳輸入,下降沿有效。
        TCCR1B=0x06; //計數脈沖由T1引腳輸入,下降沿驅動
        有效。

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

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


        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 木兰县| 肥东县| 兴城市| 望谟县| 洞口县| 连城县| 镇平县| 邯郸县| 辽阳市| 雷山县| 收藏| 白玉县| 普洱| 浮梁县| 永春县| 海盐县| 甘洛县| 江陵县| 梓潼县| 石首市| 五大连池市| 根河市| 大方县| 汶上县| 徐州市| 沾化县| 和平区| 汤阴县| 包头市| 崇左市| 新竹县| 苍山县| 兴义市| 宁夏| 桂平市| 密云县| 肃南| 南开区| 天镇县| 阜平县| 靖安县|