基于AVR單片機的輪胎模具內徑測量系統
步進電機脈沖的產生由定時器1和定時器2實現,ATmega16控制器接收到上位機的命令后,首先獲取需要轉動的步數,然后根據相應命令打開相應定時器的計數功能??刂瞥绦蛑杏枚〞r器1控制二路脈沖輸出,定時器2控制一路脈沖輸出,從而完成3路電機的控制。
定時器2使用CTC模式,匹配中斷使能。通過匹配中斷,在OCR2端口可以輸出脈沖,通過設定寄存器OCR2寄存器的值可以改變輸山脈沖頻率。定時器1使用相位與頻率修正模式,在不同串口命令下分別設置ICR1、OCR1A和OCR1B寄存器的值并打開不同的匹配中斷,從而可以分別在OC1A和OC1B端口輸出匹配脈沖。其輸出頻率控制和定時器2原理一樣,只是還需要改變計數上限值ICR1。由于3路電機不同時運動,因此每次只有一個定時器處于打開狀態(tài),其余則需要關閉。
在程序運行中,設置了一個全局變量保存電機運行的步數。在收到上位機的命令后,控制程序首先將該步數寫入片內EEPROM中再執(zhí)行。由于EEPROM數據掉電不丟失,因此系統掉電后復位時可以從EEPROM中取出數據然后執(zhí)行下一次操作。
3.2 手輪微調控制
手輪的作用主要是實現微調設備找到合適的測量點。電子手輪一共有兩路脈沖輸出,兩路脈沖相位差決定了手輪的旋轉方向。手輪的控制采用定時器0,使用計數模式。定時器0沒置為CTC模式,上升沿觸發(fā),OCR0為1,計數初始值為0,中斷使能。當外部上升沿觸發(fā)時計數到1時觸發(fā)中斷,在中斷子程序里面根據手輪狀態(tài)產生相應的脈沖輸出。
在手輪中斷子程序中,首先將計數器自動清零等待下一個手輪脈沖。然后判斷正反信號和手輪檔位狀態(tài),ATmega16根據狀態(tài)信息通過延時方法產生一定數量的脈沖控制步進電機。手輪狀態(tài)共有Z、Y、X 3個方向,X1、X10、X100 3個檔位。若手輪在X檔位則在相應端口(該端口同時也是定時器脈沖輸出口)輸出一定數目的脈沖。改變延時的大小可以改變輸出頻率,但是由于延時輸出脈沖的最大頻率決定于晶振,因此輸出脈沖受到一定影響。延遲方法產生的脈沖不能精確控制步進電機的步進角度,但是可以用于微調。
手輪的正反信號通過D觸發(fā)器來判斷。將手輪脈沖A作為CLK信號,脈沖B為CP信號,復位端和置位端接高電平。當手輪正轉時脈沖A脈沖與脈沖B的相位差為正90度,D觸發(fā)器輸出高電平;若反轉A脈沖與B脈沖的相位差為負90度,輸出低電平。
3.3 串口模塊
上位機和單片機主要采用UART異步通信,收發(fā)按字節(jié)處理。單片機接收上位機命令時采用UART查詢方法實現數據接收。其通信格式為:起始字+控制字節(jié)+步數+結束字,數據使用國際通用標準ASCII碼格式,如表1所示。本文引用地址:http://m.butianyuan.cn/article/170955.htm
設計過程中使用ICCAVR編譯器編寫單片機控制程序,可以使用atoi函數將ASCII碼格式步數轉化為整型數據。
單片機對上位機通信主要是使用兩個字節(jié)數據發(fā)送手輪狀態(tài)信息和行程開關狀態(tài)信息。單片機在接收到查詢命令后,將兩字節(jié)狀態(tài)信息返回給上位機,每次執(zhí)行步進電機命令后也需要向上位機發(fā)送狀態(tài)信息,將執(zhí)行結果返回給上位機。其定義如表2所示。
4 結束語
文中基于AVR單片機設計了一套輪胎模具內徑測量系統,可以接收電子手輪和上位機信息分時控制多路步進電機并能控制光柵尺讀數。
該系統設備經過安裝后,選取標準鋼板作為測試目標,在垂直方向選定若干個測試點,結果證明其測量誤差在2μm以內。然后選取子午線輪胎模具作為測試目標,與人工測量數據進行對比,測量誤差在4 μm以內,達到設計要求。
接地電阻相關文章:接地電阻測試方法
行程開關相關文章:行程開關原理
評論