基于MCU+CPLD的新型光柵數(shù)顯系統(tǒng)設(shè)計
1 引言
本文引用地址:http://www.ex-cimer.com/article/84924.htm光柵數(shù)顯系統(tǒng)主要用于普通機床,可直接顯示機床加工的長度值,有助于提高加工精度和效率。目前國內(nèi)市場上的光柵數(shù)顯系統(tǒng)大多采用國外集成電路實現(xiàn),研發(fā)成本高,且不便于操作人員使用。針對這種狀況,研發(fā)了基于MCU+CPLD的新型光柵數(shù)顯系統(tǒng)。該系統(tǒng)具有計數(shù)精度高、成本低、操作方便以及升級快等特點,能夠處理高達5 MHz/s的正交脈沖,并在掉電時有效存儲當前長度值,其數(shù)碼管可顯示關(guān)鍵的長度值,點陣式液晶屏還可顯示相關(guān)的提示信息。
2 系統(tǒng)工作原理
利用CPLD實現(xiàn)正交脈沖處理邏輯電路,而可逆計數(shù)器則用于處理計數(shù)光柵尺輸出的正交脈沖,CPLD的高速并行處理能力可保證光柵尺輸出信號無遺漏采樣,從而確保計數(shù)的可靠性??赡嬗嫈?shù)器的值通過MCU一系列運算后轉(zhuǎn)換為機床加工的長度值,MCU再將其長度值回送至CPLD并在數(shù)碼管上顯示。
此外,CPLD還具有7×8鍵盤按鍵檢測和去抖功能,將處理后的可靠按鍵送至MCU。MCU主要用于液晶屏的顯示控制、掉電數(shù)據(jù)保存,以及復(fù)雜的數(shù)學運算。系統(tǒng)工作原理框圖如圖1所示。
3 正交脈沖信號采集處理
3.1 正交脈沖采集
光柵尺輸出一組正交脈沖信號,即相位差為90°的兩路方波,如圖2所示。當光柵尺正向移動一個柵距時,光柵尺輸出一個00-01-11-10-00循環(huán),A路方波相位超前于B路90°;當光柵尺反向移動一個柵距時,光柵傳感器輸出一個00-10-11-01-00循環(huán),A路方波相位滯后B路90°。
分析A,B兩路方波的邏輯狀態(tài)發(fā)現(xiàn)A,B兩路方波在任意時刻下只有一路信號發(fā)生邏輯狀態(tài)變化。如果在邏輯狀態(tài)變化前A,B兩路的狀態(tài)相同,那么變化后的邏輯狀態(tài)肯定相異;如果變化前A,B兩路方波邏輯狀態(tài)相異,那么變化后邏輯狀態(tài)肯定相同。只需對這兩路信號異或,就能提取光柵尺運動的方向信號updown以及與運動距離成正比的計數(shù)脈沖cp。
由圖2看出,光柵尺移動一個柵距將輸出4個cp脈沖,系統(tǒng)測量的最小分辨率提高至1/4柵距,通常稱為四裂相或四倍頻。CPLD在每個clk的上升沿檢測A,B兩路方波的狀態(tài),首先分別對當前檢測的狀態(tài)A0,B0和上次檢測的狀態(tài)A1,B1相異或,然后將兩次異或值再異或。如果最后異或值為1,則說明A,B兩路方波發(fā)生變化,則向可逆計數(shù)器輸入一個高電平寬度為1個clk周期的計數(shù)脈沖cp,實現(xiàn)邏輯如圖3所示。
3.2 可逆計數(shù)器
將提取的方向信號updown和計數(shù)脈沖cp輸入至可逆計數(shù)器,實現(xiàn)對光柵尺輸出的正交脈沖計數(shù)。可逆計數(shù)器模塊的VHDL程序如下:
3.3 clk的取值
由于CPLD的采樣時鐘clk必須大于8倍光柵尺輸出的正交脈沖,因此系統(tǒng)不會丟失信號。該系統(tǒng)設(shè)計使用40 MHz有源晶體振蕩器作為CPLD的采樣時鐘源,可記錄的最大光柵傳感器輸出信號頻率為5 MHz。如果使用50線/mm的光柵尺,經(jīng)過CPLD的四裂相細分后,計算該光柵尺接該系統(tǒng)的最大不漏數(shù)加工速度為20 μm×5 MHz=100 m/s,最小分辨率為5μm。遠遠超出機床運行的極限速度,完全滿足實際需求。
3.4 EPM240簡介
選用Altera公司的 EPM240作為CPLD,EPM240是MAX II系列器件中的一員。MAX II CPLD系列的體系結(jié)構(gòu)使其在所有CPLD系列器件的單位I/O引腳的功耗和成本最低;支持高達300 MHz的內(nèi)部時鐘頻率,面向通用低密度邏輯應(yīng)用,MAX II CPLD可替代高功耗和高成本ASSP以及標準邏輯CPLD。
EPM240含有240個邏輯單元(LE),等效于192個宏單元;8 192 bit的用戶Flash存儲器,可滿足用戶小容量信息存儲要求;最大用戶I/O數(shù)為80,最快速度為4.5 ns,完全滿足系統(tǒng)設(shè)計要求。
4 MCU掉電數(shù)據(jù)存儲
掉電數(shù)據(jù)存儲是系統(tǒng)設(shè)計的另一重要功能,要求高可靠性。系統(tǒng)在掉電時應(yīng)保存光柵尺的當前位置信息,下次開機時通過調(diào)用上次掉電時保存的位置信息恢復(fù)系統(tǒng)。因此,掉電瞬間,掉電報警電路將迅速響應(yīng),向MCU發(fā)出報警信號;MCU檢測到報警信號后,馬上進行相應(yīng)處理,將當時光柵尺的當前位置信息存入EEPROM。其硬件電路如圖4所示。
為了提高MCU的掉電響應(yīng)速度,增強系統(tǒng)可靠性,系統(tǒng)設(shè)計采用新的增強型51單片機STC-89C516RD。該器件具有1 KB RAM和高達64 KB大容量ROM,ISP功能,指令周期有6clock和12clock兩種可選模式。使用20 MHz晶體振蕩器,采用6clock模式燒寫時,單指令周期的程序執(zhí)行時間僅為0.3μs,比普通51單片機在最高24 MHz晶體振蕩器下的運行速度要快得多。因此,大大縮短了掉電數(shù)據(jù)存儲程序的執(zhí)行時間。
4.1 掉電報警電路
選用超小型高精度電壓檢測器S80848,內(nèi)部檢測電壓固定為4.8 V,精度為±2%,最大響應(yīng)時間為60μs。S80848采用標準5 V供電,電源正常時輸出高電平;當電源電壓降至4.8 V時,則輸出低電平。將S80848的輸出腳連接至MCU的INT0,并將MCU的INT0設(shè)置為電平觸發(fā)。因此,電源電壓只要低于4.8 V就會使MCU進入INT0中斷,MCU在中斷程序中保存位置信息。
4.2 EEPROM選取
當MCU對EEPROM的寫操作完成后,EEP-ROM需用10 ms的最大自寫入時間將信息寫入存儲單元。為了使用更多的時間用于EEPROM自寫入,選用低壓EEPROM,即AT24C64-2.7 V,其工作電壓為5.5 V~2.7 V,容量為64 KB,每頁為32 B,最大寫入次數(shù)為1 000 000。
4.3 掉電時間計算
選用工作電壓為4.5 V~5.5 V的STC89C516RD。當電源電壓降至4.5 V以下時,MCU不能可靠工作。MCU的INT0的中斷服務(wù)程序只能使用電源電壓從4.8 V降至4.5 V的這段時間,所有處理必須在該段時間內(nèi)完成。因此中斷程序設(shè)計時應(yīng)盡量考慮使其執(zhí)行時間最短,中斷應(yīng)先將所有存儲的數(shù)據(jù)存入一個數(shù)組,然后將該數(shù)組的所有元素寫入AT24C64,當然該數(shù)組的元素數(shù)必須小于AT24C64一頁的長度,即必須小于32 B。
當輸出電壓為5 V時,最大電流為Imax=0.8 A,等效負載R=5/I=6.25 Ω,與5 V電源并聯(lián)的電容C=4 700μF,則系統(tǒng)時間常數(shù)為τ=RC=0.029 s。設(shè)發(fā)生掉電t=0,根據(jù)公式u(t)=Vccexp(-t/τ)=5exp(-t/0.029)可知:t=1 183μs時,電源電壓Vcc從5 V降至4.8 V;t=3 055μs時,Vcc降至4.5 V;t=17 869μs時,Vcc降到2.7 V。MCU的中斷服務(wù)程序時間為3 055-1 183=1872μs,故大于實測中斷服務(wù)程序時間1 350μs;EEPROM自寫入有效時間為17 869-3 055=14 814μs,故完全滿足EEPROM寫入要求。
4.4 中斷服務(wù)程序
為了避免MCU頻繁寫入EEPROM,使用次數(shù)超出最大有效寫入次數(shù),中斷程序?qū)χ袛噍斎胍_上的電平進行必要濾波。濾波算法為:系統(tǒng)進入中斷程序后,首先關(guān)閉中斷,然后連續(xù)10次判斷INT0的電平,如果每次判斷得到的電平 值都為低,則繼續(xù)往下執(zhí)行中斷服務(wù)程序,只要有一次為高則立即退出中斷服務(wù)程序。完成寫入數(shù)據(jù),要確保INT0上的低電平解除后再返回中斷,否則等待,直至低電平解除。中斷服務(wù)程序流程圖如圖5所示。
5 結(jié)束語
詳細介紹光柵數(shù)顯系統(tǒng)設(shè)計,采用CPLD可大大簡化系統(tǒng)硬件設(shè)計,降低系統(tǒng)成本,增強系統(tǒng)可靠性和靈活性。選用STC89C516RD,可避免擴展外部存儲器,從而簡化單片機的外圍電路設(shè)計。
評論