新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于AVR單片機的輪胎模具內徑測量系統

        基于AVR單片機的輪胎模具內徑測量系統

        作者: 時間:2012-09-02 來源:網絡 收藏

        步進電機脈沖的產生由定時器1和定時器2實現,ATmega16控制器接收到上位機的命令后,首先獲取需要轉動的步數,然后根據相應命令打開相應定時器的計數功能。控制程序中用定時器1控制二路脈沖輸出,定時器2控制一路脈沖輸出,從而完成3路電機的控制。
        定時器2使用CTC模式,匹配中斷使能。通過匹配中斷,在OCR2端口可以輸出脈沖,通過設定寄存器OCR2寄存器的值可以改變輸山脈沖頻率。定時器1使用相位與頻率修正模式,在不同串口命令下分別設置ICR1、OCR1A和OCR1B寄存器的值并打開不同的匹配中斷,從而可以分別在OC1A和OC1B端口輸出匹配脈沖。其輸出頻率控制和定時器2原理一樣,只是還需要改變計數上限值ICR1。由于3路電機不同時運動,因此每次只有一個定時器處于打開狀態,其余則需要關閉。
        在程序運行中,設置了一個全局變量保存電機運行的步數。在收到上位機的命令后,控制程序首先將該步數寫入片內EEPROM中再執行。由于EEPROM數據掉電不丟失,因此掉電后復位時可以從EEPROM中取出數據然后執行下一次操作。
        3.2 手輪微調控制
        手輪的作用主要是實現微調設備找到合適的點。電子手輪一共有兩路脈沖輸出,兩路脈沖相位差決定了手輪的旋轉方向。手輪的控制采用定時器0,使用計數模式。定時器0沒置為CTC模式,上升沿觸發,OCR0為1,計數初始值為0,中斷使能。當外部上升沿觸發時計數到1時觸發中斷,在中斷子程序里面根據手輪狀態產生相應的脈沖輸出。
        在手輪中斷子程序中,首先將計數器自動清零等待下一個手輪脈沖。然后判斷正反信號和手輪檔位狀態,ATmega16根據狀態信息通過延時方法產生一定數量的脈沖控制步進電機。手輪狀態共有Z、Y、X 3個方向,X1、X10、X100 3個檔位。若手輪在X檔位則在相應端口(該端口同時也是定時器脈沖輸出口)輸出一定數目的脈沖。改變延時的大小可以改變輸出頻率,但是由于延時輸出脈沖的最大頻率決定于晶振,因此輸出脈沖受到一定影響。延遲方法產生的脈沖不能精確控制步進電機的步進角度,但是可以用于微調。
        手輪的正反信號通過D觸發器來判斷。將手輪脈沖A作為CLK信號,脈沖B為CP信號,復位端和置位端接高電平。當手輪正轉時脈沖A脈沖與脈沖B的相位差為正90度,D觸發器輸出高電平;若反轉A脈沖與B脈沖的相位差為負90度,輸出低電平。
        3.3 串口模塊
        上位機和主要采用UART異步通信,收發按字節處理。接收上位機命令時采用UART查詢方法實現數據接收。其通信格式為:起始字+控制字節+步數+結束字,數據使用國際通用標準ASCII碼格式,如表1所示。

        本文引用地址:http://www.104case.com/article/170955.htm

        h.JPG


        設計過程中使用ICC編譯器編寫控制程序,可以使用atoi函數將ASCII碼格式步數轉化為整型數據。

        i.JPG


        單片機對上位機通信主要是使用兩個字節數據發送手輪狀態信息和行程開關狀態信息。單片機在接收到查詢命令后,將兩字節狀態信息返回給上位機,每次執行步進電機命令后也需要向上位機發送狀態信息,將執行結果返回給上位機。其定義如表2所示。

        4 結束語
        文中單片機設計了一套內徑,可以接收電子手輪和上位機信息分時控制多路步進電機并能控制光柵尺讀數。
        設備經過安裝后,選取標準鋼板作為測試目標,在垂直方向選定若干個測試點,結果證明其誤差在2μm以內。然后選取子午線作為測試目標,與人工測量數據進行對比,測量誤差在4 μm以內,達到設計要求。

        接地電阻相關文章:接地電阻測試方法


        行程開關相關文章:行程開關原理

        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 延安市| 渑池县| 潜江市| 江川县| 北票市| 平顶山市| 华亭县| 仙游县| 额济纳旗| 通榆县| 辽中县| 乌海市| 尚义县| 黎城县| 称多县| 弥渡县| 郯城县| 临西县| 商洛市| 蒙城县| 延吉市| 化州市| 沭阳县| 新丰县| 尼勒克县| 崇左市| 子洲县| 新河县| 大城县| 湘阴县| 广南县| 时尚| 通辽市| 宿松县| 泗阳县| 新巴尔虎左旗| 桂平市| 札达县| 株洲县| 开平市| 修武县|