鄭均輝,王啟明
(平頂山學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,平頂山467000)
基于ARM的低速光電編碼器仿真接口設(shè)計(jì)*
鄭均輝,王啟明
(平頂山學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,平頂山467000)
編碼器可以把角位移,直線位移等機(jī)械信號(hào)轉(zhuǎn)換成電信號(hào),它主要用來偵測(cè)機(jī)械運(yùn)動(dòng)的速度、位置、角度、距離、計(jì)數(shù)等。以NXP的LPC2136 ARM處理器為核心,通過對(duì)光電編碼器的正交信號(hào)分析,利用UART通信技術(shù)實(shí)現(xiàn)對(duì)電機(jī)轉(zhuǎn)向及精確定位的數(shù)字化顯示,為編碼器應(yīng)用在低速的自動(dòng)智能控制領(lǐng)域提供了一個(gè)很好的解決方案。測(cè)試證實(shí)本設(shè)計(jì)對(duì)光電編碼器的計(jì)數(shù)與標(biāo)準(zhǔn)記測(cè)器的計(jì)數(shù)值在低速旋轉(zhuǎn)條件下非常準(zhǔn)確。
編碼器;ARM處理器;信號(hào)分析;UART通信;低速智能控制;電機(jī)控制
在工業(yè)控制領(lǐng)域通常需要用正交編碼器對(duì)各種角度、速度、位移等進(jìn)行精確測(cè)量[1]。目前,在一些高級(jí)ARM處理器中已經(jīng)集成了編碼器接口[2],如使用Cortex-M3內(nèi)核的STM32F系列、周立功的LM3S601/608微控制器等[3]。但是在實(shí)際控制中為了節(jié)約成本,需要使用價(jià)格比較低的微控制器,而這些卻沒有編碼器接口,因此就需要通過普通的控制器來仿真編碼器接口以滿足應(yīng)用需求。
在此主要研究NXP(恩智普)公司的LPC2136處理器在低速轉(zhuǎn)動(dòng)中模擬光電編碼器接口顯示編碼器正反轉(zhuǎn),并且對(duì)其轉(zhuǎn)動(dòng)定位進(jìn)行標(biāo)注,記錄轉(zhuǎn)動(dòng)圈數(shù)。重點(diǎn)介紹如何對(duì)編碼器進(jìn)行精確控制,并對(duì)獲得的數(shù)據(jù)進(jìn)行分析處理,得到準(zhǔn)確直觀的數(shù)字化顯示結(jié)果,把數(shù)據(jù)通過GPIO模擬SPI方式發(fā)送到七段碼顯示,同時(shí)通過UART口把數(shù)據(jù)送到PC在串口助手顯示。這種技術(shù)可應(yīng)用在工業(yè)控制精度要求相對(duì)較高的地方,比如發(fā)動(dòng)機(jī)的轉(zhuǎn)速測(cè)量控制、應(yīng)用在輪胎平衡機(jī)上準(zhǔn)確定位輪胎的不平衡點(diǎn)、煤礦架空乘人裝置準(zhǔn)確定位出事地點(diǎn)等自動(dòng)化控制應(yīng)用中。
編碼器(encoder)作為傳感產(chǎn)品的一大重要分支,能將信號(hào)或數(shù)據(jù)編制并轉(zhuǎn)換為可用以通信、傳輸和存儲(chǔ)之形式的設(shè)備[4]。編碼器最重要的應(yīng)用就是定位[5],目前其已經(jīng)越來越廣泛地被應(yīng)用于各種工控場(chǎng)合。如機(jī)床工具、航空航天、鐵道交通、新能源及港口機(jī)械等行業(yè),都在使用著大量的編碼器產(chǎn)品[6]。
光電編碼器,是一種通過光電轉(zhuǎn)換將輸出軸上的機(jī)械幾何位移量轉(zhuǎn)換成脈沖或數(shù)字量的傳感器,這是目前應(yīng)用最多的傳感器,光電編碼器是由光柵盤和光電檢測(cè)裝置組成[7]。光柵盤是在一定直徑的圓板上等分地開通若干個(gè)長(zhǎng)方形孔[8]。由于光電碼盤與電動(dòng)機(jī)同軸,電動(dòng)機(jī)旋轉(zhuǎn)時(shí),光柵盤與電動(dòng)機(jī)同速旋轉(zhuǎn),經(jīng)發(fā)光二極管等電子元件組成的檢測(cè)裝置檢測(cè)輸出若干脈沖信號(hào)。光電編碼器的正反轉(zhuǎn)判斷信號(hào)如圖1所示。A、B兩相信號(hào)是相差1/4周期,如果A提前B1/4周期則表明順時(shí)針旋轉(zhuǎn),若B提前A1/4周期則表明逆時(shí)針旋轉(zhuǎn)。
圖1 光電編碼器信號(hào)示意圖
3.1 硬件系統(tǒng)接口設(shè)計(jì)
采用型號(hào)為JVH-10BM-E5的光電編碼器,有A、B、Z三條信號(hào)線,在它內(nèi)部光柵盤共有100個(gè)柵格,即每旋轉(zhuǎn)3.6°就能發(fā)出一個(gè)沿變信號(hào)。硬件電路中使用了LPC2136中的P0.16、P0.17、P0.18引腳分別連接光電編碼器的信號(hào)線A、B、Z。使用其GPIO口P0.2、P0.3、P0.4來模擬SPI總線對(duì)數(shù)碼管的數(shù)據(jù)傳輸顯示,各個(gè)數(shù)碼管之間共陰極顯示,通過P0.6-P0.13控制數(shù)碼管段位,用74HC595模擬SPI來選通控制哪一個(gè)顯示。硬件系統(tǒng)原理如圖2所示。
圖2 硬件系統(tǒng)原理框架
3.2 硬件系統(tǒng)原理
LPC2136微控制器是基于一個(gè)支持實(shí)時(shí)仿真和嵌入式跟蹤的16/32位ARM7TDMI-S CPU,帶有256kB嵌入式高速Flash存儲(chǔ)器。其內(nèi)部具有2個(gè)32位可編程定時(shí)/計(jì)數(shù)器,均具有4路捕獲、4路比較匹配并輸出電路。定時(shí)器對(duì)外設(shè)時(shí)鐘(Pclk)周期進(jìn)行計(jì)數(shù),可選擇產(chǎn)生中斷或根據(jù)4個(gè)匹配寄存器的設(shè)定,在到達(dá)指定的定時(shí)值時(shí)執(zhí)行其他動(dòng)作(輸出高/底電平、反轉(zhuǎn)或者無動(dòng)作)。4個(gè)捕獲輸入,用于在輸入信號(hào)發(fā)生跳變時(shí)捕獲定時(shí)器值并產(chǎn)生中斷。
設(shè)計(jì)使用12MHz外部晶振,通過LPC2136定時(shí)器1的捕獲功能來獲取光電編碼器信號(hào)A、Z的信號(hào),通過配置P0.10的CAP1.0捕獲A信號(hào)的下降沿從而產(chǎn)生中斷。光電編碼器在正向旋轉(zhuǎn)時(shí),信號(hào)A的波形比信號(hào)B的波形提前90°。通過對(duì)A、B信號(hào)序列研究發(fā)現(xiàn),當(dāng)在信號(hào)A下降沿到來那一刻,如果信號(hào)B是高電平,則能判斷光電編碼器是在順時(shí)針旋轉(zhuǎn),反之,則能判斷光電編碼器是逆時(shí)針旋轉(zhuǎn)。因此,把LPC2136的P0.17設(shè)置成GPIO的輸入模式連接光電編碼器的信號(hào)B端,通過檢測(cè)信號(hào)A下降沿產(chǎn)生中斷的那一刻信號(hào)B的高低電平就能判斷出編碼器的正反轉(zhuǎn),通過4個(gè)數(shù)碼管與上位機(jī)同步顯示。
數(shù)碼管顯示時(shí)使用SPI接口的串行時(shí)鐘線(SCK)、主機(jī)輸入/從機(jī)輸出數(shù)據(jù)線MISO、主機(jī)輸出/從機(jī)輸入數(shù)據(jù)線MOSI等三條線來發(fā)送數(shù)據(jù)給74HC595使其不斷刷新,刷新頻率小于24Hz的時(shí)候會(huì)使人感覺發(fā)光閃爍,因此,刷新每個(gè)數(shù)碼管的時(shí)間間隔不能大于10ms,刷新頻率越高顯示亮度越大。
UART是一種通用串行數(shù)據(jù)總線,一般使用三條線,GND、RxD和TxD用于異步通信。該總線雙向通信,可以實(shí)現(xiàn)全雙工傳輸和接收。在本次嵌入式設(shè)計(jì)中,UART0用來與PC進(jìn)行通信,波特率設(shè)為9600bps,8個(gè)數(shù)據(jù)位,1個(gè)停止位。UART首先將接收到的并行數(shù)據(jù)轉(zhuǎn)換成串行數(shù)據(jù)來傳輸。消息幀從一個(gè)低位起始位開始,后面是7個(gè)或8個(gè)數(shù)據(jù)位,一個(gè)可用的奇偶位和一個(gè)或幾個(gè)高位停止位。接收器發(fā)現(xiàn)開始位時(shí)它就知道數(shù)據(jù)準(zhǔn)備發(fā)送,并嘗試與發(fā)送器時(shí)鐘頻率同步。如果選擇了奇偶,UART就在數(shù)據(jù)位后面加上奇偶位。奇偶位可用來幫助錯(cuò)誤校驗(yàn)。在接收過程中,UART從消息幀中去掉起始位和結(jié)束位,對(duì)進(jìn)來的字節(jié)進(jìn)行奇偶校驗(yàn),并將數(shù)據(jù)字節(jié)從串行轉(zhuǎn)換成并行。UART也產(chǎn)生額外的信號(hào)來指示發(fā)送和接收的狀態(tài)。
3.3 軟件系統(tǒng)設(shè)計(jì)
軟件設(shè)計(jì)流程如圖3所示。
圖3 MCU主流程
設(shè)計(jì)使用ADS1.2開發(fā)環(huán)境,EasyJtag在線調(diào)試下載工具,使用串口助手來接收LPC2136發(fā)送過來的編碼器數(shù)據(jù)。首先對(duì)LPC2136進(jìn)行初始化,配置IO口P0.17、P0.18引腳為數(shù)據(jù)輸入,配置UART0波特率為9600bps,采用查詢方式來獲取接收或發(fā)送完成時(shí)狀態(tài)。定時(shí)器1的P0.10為下降沿捕獲端口。模擬SPI時(shí)定義P0.2為CLK時(shí)鐘信號(hào),P0.3為DATA數(shù)據(jù)信號(hào),發(fā)送一字節(jié)數(shù)據(jù)循環(huán)8次,P0.4 LATCH鎖存信號(hào),等接收到8位數(shù)據(jù)后通過鎖存信號(hào)不斷復(fù)位或置位進(jìn)行位接收字節(jié)接收發(fā)送,通過不斷掃描來點(diǎn)亮數(shù)碼管。在使用IO模擬SPI時(shí)序發(fā)送數(shù)據(jù)時(shí)需要一定的時(shí)鐘周期來延時(shí),由于數(shù)碼管動(dòng)態(tài)顯示需要不斷刷新,故延時(shí)函數(shù)需調(diào)用點(diǎn)亮數(shù)碼管的語句,否則,多處使用延時(shí)函數(shù)數(shù)碼管就會(huì)產(chǎn)生閃爍。
程序初始化之后開始在捕獲中斷程序中設(shè)置變量flag_int=0xaa,主函數(shù)不斷循環(huán),當(dāng)判斷到flag_ int為0xaa后,來判斷P0.10的電平即正交編碼器B信號(hào)的輸出電平,如果為高,則編碼器順時(shí)針旋轉(zhuǎn),編碼器位置計(jì)數(shù)(程序中使用變量count)值加1;如果P0.10的電平為低,則編碼器逆時(shí)針旋轉(zhuǎn),編碼器位置計(jì)數(shù)值減1。由于使用的光電編碼器旋轉(zhuǎn)一周計(jì)數(shù)值為100,故在count=100時(shí),需對(duì)count清零,同時(shí)對(duì)光電編碼器的旋轉(zhuǎn)圈數(shù)加1。
正交編碼器低速仿真接口設(shè)計(jì)的主要算法如下。
詳細(xì)介紹了編碼器的工作原理、LPC2136 MCU的部分外設(shè)功能以及在低速狀態(tài)下如何通過普通單片機(jī)來模擬正交編碼器接口的硬件設(shè)計(jì)與軟件設(shè)計(jì)流程。通過單片機(jī)來模擬正交編碼器的設(shè)計(jì)為編碼器大范圍地應(yīng)用在低速自動(dòng)智能控制領(lǐng)域提供了一個(gè)很好的解決方案。在測(cè)試過程中,把編碼器信號(hào)同時(shí)輸入到創(chuàng)思杰ZN96系列智能記測(cè)器進(jìn)行對(duì)比,證實(shí)本設(shè)計(jì)對(duì)光電編碼器的計(jì)數(shù)與標(biāo)準(zhǔn)記測(cè)器計(jì)數(shù)值在低速旋轉(zhuǎn)條件下非常準(zhǔn)確。由于系統(tǒng)沒有對(duì)實(shí)際應(yīng)用中的各種機(jī)械干擾信號(hào)進(jìn)行濾波,故在實(shí)際應(yīng)用中必定受機(jī)械振動(dòng)干擾,產(chǎn)生較多的毛刺干擾信號(hào)可能使正交編碼器仿真接口出現(xiàn)部分誤差,因此就需要在工業(yè)應(yīng)用中進(jìn)一步增加硬件濾波或者軟件濾波消除誤差。同時(shí),如何在濾波成本與濾波性能之間取得較好的性價(jià)比,也需要進(jìn)一步探索研究。
[1] 賀玲玲.一種用旋轉(zhuǎn)電子編碼器檢測(cè)絕對(duì)角度位置的方法與實(shí)現(xiàn)[J].重慶工商大學(xué)學(xué)報(bào)(自然科學(xué)版),2009,26(5):472-476.He Lingling.Method of electronic rotary encoder detects the absolute angular position and implementation[J].Chongqing Technology and Business University(Natural Science),2009,26(5):472-476.
[2] 王明順,沈謀全.虛擬編碼器設(shè)計(jì)與轉(zhuǎn)速測(cè)量[J].儀器儀表學(xué)報(bào),2008,29(6):1300-1305. Wang Mingshun,Shen Mouquan.Virtual encoder design and speedmeasurement[J].JournalofScientific Instrument,2008,29(6):1300-1305.
[3] 蔡尚峰.自動(dòng)控制理論[M].北京:機(jī)械工業(yè)出版社,1980.Cai Shangfeng.Theory of automatic control[M].Beijing:Mechanical Industry Press,1980.
[4] 權(quán)超健,劉獻(xiàn)禮.光電編碼器輸出信號(hào)自動(dòng)調(diào)試技術(shù)研究[J].測(cè)控技術(shù),2014,33(3):38-42.Quan Chaojian,Liu Xianli.Optical encoder output signal automatic debugging technology research[J].measurement and control technology,2014,33(3):38-42.
[5] 王裕?。g碼器編碼器數(shù)字選擇器電子開關(guān)電源分冊(cè)[M].北京:科學(xué)技術(shù)文獻(xiàn)出版社,2006.Wang Yuchen.Decoder encoder digital electronic switching power supply selector[M].Beijing:Science Press,2006.
[6] 王淑紅.測(cè)控電路與器件[M].北京:清華大學(xué)出版社,2006.Wang Shuhong.Devices of measurement and control circuits[M].Beijing:Tsinghua University Press,2006.
[7] 周化仁,潘學(xué)盈,王宗信.檢測(cè)與轉(zhuǎn)換技術(shù)[M].北京:中國(guó)礦業(yè)大學(xué)出版社,1989.Zhou Huaren,Pan Xueying,Wang zongxin.Detection and conversiontechnology[M].Beijing:ChinaMining University Press,1989.
[8] 謝劍英.微型計(jì)算機(jī)控制技術(shù)[M].北京:國(guó)防工業(yè)出版社,1985.Xie Jianying.Microcomputer control technology[M].Beijing:National Defense Industry Press,1985.
Design on Low Speed Photoelectric Encoder Simulation Interface Base on ARM
Zheng Junhui,Wang Qiming
(College of Computer Science and Technology,Pingdingshan University,Pingdingshan 467002,China)
Angular displacement,linear displacement and other mechanical signals can be translated into electrical signals by encoder which is mainly used to detect the speed of mechanical motion,position,angle,distance,count,etc.The paper analyzes the quadrature signal of optical encoder,using LPC2136 ARM MCU of NXP semiconductors as the core and UART communication technology to realize the motor steering and precise positioning digital display,and provides a good solution for the encoder in the field of low-speed automatic intelligent control.The test results show that the count values of the photoelectric encoder counts and standard chronograph in the conditions of low-speed rotation are extremely exact.
Encoder;ARM processor;Signal analysis;UART communication;Low-speed intelligent control;Motor control
10.3969/j.issn.1002-2279.2015.04.022
TP391.8
A
1002-2279(2015)04-0085-04
河南省科技攻關(guān)基金(122102210258)
鄭均輝(1981-),男,四川省敘永縣人,講師,碩士研究生,主研方向:?jiǎn)纹瑱C(jī)開發(fā),人工智能等。
2015-01-04