基于Arduino開發(fā)環(huán)境的光電編碼器檢測儀設(shè)計方案
Arduino是一款基于單片機系統(tǒng)的電子產(chǎn)品開發(fā)平臺,它的軟硬件系統(tǒng)都具有高度的模塊化,而且軟件系統(tǒng)是完全開源的。其硬件系統(tǒng)也是高度模塊化的,在核心控制板的外圍有開關(guān)量輸入/輸出模塊、各種模擬量傳感器輸入模塊、總線類傳感器的輸入模塊,還有網(wǎng)絡(luò)通信模塊[1-2].Arduino有自己特有的編程語言。其語法規(guī)則類似C/C++語言,IDE環(huán)境和語言把單片機與硬件相關(guān)的一些參數(shù)都參數(shù)化并進行了很好的封裝,把端口都打包,寄存器、地址指針之類的基本不用管,大大降低了軟件開發(fā)難度。因此不用開發(fā)者去了解其硬件結(jié)構(gòu)即可對其編程,實現(xiàn)設(shè)計者的設(shè)計意圖和創(chuàng)意[3].
本文引用地址:http://m.butianyuan.cn/article/201612/327592.htm本文提出了一種基于Arduino開發(fā)環(huán)境的光電編碼器檢測儀設(shè)計方案,能夠?qū)怆娋幋a器的好壞進行判斷,實現(xiàn)光電編碼器正轉(zhuǎn)與反轉(zhuǎn)時的脈沖計數(shù)。
1 整體設(shè)計
該檢測儀主要由調(diào)理電路、Arduino控制板、液晶顯示電路等組成,如圖1所示。
CLKA和CLKB為光電編碼器輸出的兩路相位相差90°的編碼信號。調(diào)理電路用來對這兩路信號進行整形濾波等信號處理,最后送至Arduino控制板。Arduino控制板用來實現(xiàn)光編碼器脈沖個數(shù)的計數(shù),正轉(zhuǎn)、反轉(zhuǎn)兩種脈沖信號的判別。液晶顯示電路用來顯示檢測的參數(shù),同時對不同型號光電編碼器進行選擇控制。
2 硬件部分設(shè)計
2.1 調(diào)理電路
信號調(diào)理電路用于檢測信號的調(diào)理,主要是把待測交流信號,經(jīng)過濾波、放大、選通、有效值轉(zhuǎn)換、限幅等處理,送到微控制器進行測量。
圖2為調(diào)理電路框圖,光電編碼器輸出的兩路相位相差90°的正弦波信號A、B,經(jīng)施密特觸發(fā)器變?yōu)閍、b兩組方波信號。A 分為兩組:一路經(jīng)微分電路,在方波的上升沿形成脈沖信號d,再由門電路輸出,形成正轉(zhuǎn)脈沖,另一路經(jīng)反相器,形成反相方波c,再經(jīng)微分電路形成脈沖信號e,由門電路輸出反相脈沖g.b組方波直接連到兩個門電路的控制端,作為兩個門電路的選通信號。
光電編碼器正轉(zhuǎn)時,b組信號超前90°,它的方波正半波對應(yīng)不經(jīng)反相器a組方波的上升沿,正半波又使門電路選通,d組脈沖通過門電路形成正轉(zhuǎn)脈沖;而c組方波的上升沿對應(yīng)b組方波負(fù)半波,此時雖然微分電路輸出e脈沖,但門電路關(guān)閉,不能輸出反相脈沖g.當(dāng)編碼器反轉(zhuǎn)時,情況正好相反。最終輸出的脈沖分別送入控制檢測電路進行計數(shù)。
2.2 Arduino控制板
本檢測儀采用了意大利最新開發(fā)的Arduino Due微控制器。Arduino Due 是一塊基于Atmel SAM3X8ECPU 的微控制器板。它是第一塊基于32 位ARM 核心的Arduino,使用32位ARM核心的Due相較于以往的使用8位AVR核心的其他Arduino更強大:32位核心在一個時鐘能處理32位的數(shù)據(jù)??刂瓢灏?4個數(shù)字I/O引腳(其中12路PWM輸出),12個模擬輸入通道,2個模擬輸出通道(DAC),I/O口總輸出電流為130 mA.3.3 V端口輸出能力為800 mA,5 V 端口輸出能力為800 mA,FLASH 512 KB(所有空間都可以儲存用戶程序),SRAM96 KB(兩個部分:64 KB and 32 KB),時鐘速率[4-5]為84 MHz.
由于Arduino due的工作電壓為3.3 V,I/O口可承載電壓也為3.3 V,所以經(jīng)過調(diào)理電路產(chǎn)生的5 V 脈沖不能直接處理。本檢測儀通過SN74lVC4245 芯片把5 V的脈沖整形為3.3 V的脈沖。
2.3 液晶顯示電路
本設(shè)計中采用了國產(chǎn)開發(fā)的可編程智能LCD(即Programmable Smart LCD,簡稱PS-LCD)。PS-LCD 是一種包含LCD顯示屏、LCD控制器、觸摸屏、人機界面處理系統(tǒng)和通信接口于一體的智能顯示模組,通過可選的通信接口與外部控制單元(如:51單片機、ARM、DSP、PC、PLC、總線設(shè)備等)連接,實現(xiàn)系統(tǒng)的人機交互界面。
新建Designer工程,定義界面分辨率、界面切換效果和主界面等;設(shè)置背景、加入/設(shè)置控件、定義事件動作等;PS-LCD的采用Java Script的腳本語言,Java Script是因特網(wǎng)上最流行的腳本語言,它存在于全世界所有Web 瀏覽器中,能夠增強用戶與Web 站點和Web 應(yīng)用程序之間的交互。本液晶顯示屏通過腳本編寫實時地顯示微控制器采集送過來的脈沖個數(shù),并進行判斷。
用LCD 模擬器驗證界面效果和通信過程,重復(fù)前面步驟直到滿意為止。
PS-LCD 作為先進的智能人機界面產(chǎn)品,能通過通信接口輕松靈活地與外部控制單元實現(xiàn)數(shù)據(jù)交互。目前,PS-LCD支持兩種通信協(xié)議:CTP(Cooky Talking Pro-tocol)協(xié)議和用戶自定義(UserDefine)協(xié)議。本檢測儀采用的是CTP協(xié)議。
在CTP通信模式下,PS-LCD在收到通信命令后,會立刻執(zhí)行,結(jié)束后會向主控制器返回結(jié)果。由于PS-LCD的串口通信協(xié)議跟微控制器Arduino Due的通信協(xié)議不一致,在通信過程中要進行轉(zhuǎn)換和控制。為了取消PS-LCD 命令執(zhí)行結(jié)果的自動回復(fù)消息,在CTP 通信模式下,通過調(diào)用ctpSet(“reply”,0)函數(shù)取消PS-LCD 的自動回復(fù)。PS-LCD同時通過通信協(xié)議產(chǎn)生的串口信號來控制微控制器的工作,真正實現(xiàn)人機互動的效果[6].
生成界面輸出文件spf,然后將spf文件通過PS-LCD專用軟件工具Flex下載到PS-LCD驗證最終界面效果。
本檢測儀PS-LCD最終的檢測界面如圖3所示。
3 軟件部分設(shè)計
3.1 脈沖計數(shù)子程序
為了能更加準(zhǔn)確地對脈沖進行測試,采用外部中斷進行計數(shù),Arduino due 控制板的54個數(shù)字I/O引腳,均可以作為中斷端口。編寫的主要計數(shù)程序如下[7-10]:
3.2 液晶顯示程序
根據(jù)所要測試的光電編碼器,選擇不同的型號,不同型號的光電編碼器定義不同的發(fā)送信號,以LBJ-001-2048 型光電編碼器為例,選擇按鈕的腳本編寫子程序如下:
其中sysCom0.write(0×41)為寫入串口發(fā)送緩沖區(qū),串口向外部發(fā)送1 字節(jié)數(shù)據(jù)0×41,即是字符‘A'.當(dāng)Arduino微控板接收到串口送過來的'A’字符時,即可判斷出待測試的光電編碼器型號為LBJ-001-2048,啟動相對應(yīng)的程序進行測試。同理當(dāng)選擇第二種型號測試時,Arduino微控板將接收到串口送過來的‘B’字符時,即可判斷出待測試的光電編碼器型號為SE0932II-5400P/r,啟動相對應(yīng)的程序進行測試。
4 結(jié)語
本文著重介紹了基于Arduino開發(fā)環(huán)境的光電編碼器檢測儀的設(shè)計,并實現(xiàn)Arduino微控板與PS-LCD的通信控制問題。由于Arduino是一個開放的單片機開發(fā)人機互動產(chǎn)品的軟硬件平臺,對于基于Arduino開發(fā)環(huán)境的電子制作競賽、電子藝術(shù)品創(chuàng)意開發(fā)、電子檢測產(chǎn)品等方面具有較好的參考價值。
評論