王 丹
(河南省煤炭科學(xué)研究院有限公司,河南 鄭州 450001)
隨著電子技術(shù)的發(fā)展,衡器技術(shù)也在不斷進(jìn)步和提高。本文設(shè)計(jì)的廉價(jià)電子秤硬件部分主要是光電斷路器中斷模塊、矩陣鍵盤(pán)模塊、單片機(jī)最小系統(tǒng)模塊、LED顯示模塊。該廉價(jià)電子秤的自動(dòng)稱重功能由彈簧秤及光電斷路器電路構(gòu)成的中斷模塊完成,價(jià)格輸入由鍵盤(pán)模塊完成,自動(dòng)計(jì)算功能由單片機(jī)系統(tǒng)完成,計(jì)算結(jié)果由單片機(jī)送至LED顯示模塊,由LED顯示模塊進(jìn)行顯示。
由于該設(shè)計(jì)是廉價(jià)電子秤的設(shè)計(jì),材料選用原則是成本盡量低,主要體現(xiàn)在傳感器的選用上。該設(shè)計(jì)可以選用多種傳感器,如位移(距離)傳感器、角度傳感器、壓力傳感器。位移傳感器、角度傳感器雖可與彈簧秤讀數(shù)保持一致,但其價(jià)格居高,不予采用。壓力傳感器完全可脫離彈簧秤而獨(dú)自測(cè)重,這可能與彈簧秤得到的讀數(shù)不符,故亦不采用。最終定為光電斷路器。
1.2.1 特性與工作原理
光電斷路器是將電信號(hào)變換為光信號(hào)的發(fā)光元件與將少量光信號(hào)變換為電信號(hào)的受光元件組合成一體化結(jié)構(gòu)的光敏傳感器。其種類很多,大致可分為透光型與光反射型。透光型是發(fā)光與受光元件之間有一定間隔而對(duì)向配置的光敏傳感器,結(jié)構(gòu)如圖1(a)所示,主要用于檢測(cè)發(fā)光與受光元件之間通過(guò)的物體。光反射型是在發(fā)光與受光元件之間放置遮光板而并向配置的光敏傳感器,結(jié)構(gòu)如圖1(b)所示,由受光元件檢測(cè)物體反射發(fā)光元件發(fā)出的光,從而達(dá)到檢測(cè)物體的目的。
圖1 光電斷路器結(jié)構(gòu)示意Fig.1 Structure of photoelectric circuit breaker
透光型光電斷路器在檢測(cè)物體時(shí),發(fā)光二極管流經(jīng)恒定電流,由光敏晶體管接收其發(fā)出的紅外光,作為光敏晶體管的集電極電流。物體通過(guò)發(fā)光與受光元件之間時(shí),紅外光被物體遮擋,光敏晶體管的集電極電流變小,若能獲取該電流的變化,就可檢測(cè)物體通達(dá)的情況。
1.2.2 基本應(yīng)用電路
光電斷路器的基本輸出方式如圖2所示,光電斷路器采用GP1S05,也可采用其他光電斷路器元件[1-3]。光電斷路器的輸出形式有集電極輸出與發(fā)射極輸出。圖2(a)為集電極輸出電路,其響應(yīng)頻率為數(shù)十kHz,可作為控制電機(jī)運(yùn)轉(zhuǎn)的傳感器。圖2(b)為發(fā)射極輸出電路,性能與圖2(a)所示電路類似,但電壓利用率較低,入射光信號(hào)與輸出信號(hào)同相位,響應(yīng)頻率也與圖2(a)所示電路相同。
圖2 光電斷路器的基本輸出方式Fig.2 Basic output mode of photoelectric circuit breaker
該設(shè)計(jì)實(shí)際上是一個(gè)計(jì)數(shù)器的設(shè)計(jì),將質(zhì)量的更變等價(jià)為計(jì)數(shù)值的更變。光電斷路器提供計(jì)數(shù)脈沖。為了使光電斷路器能提供計(jì)數(shù)脈沖,故又設(shè)計(jì)了計(jì)數(shù)器盤(pán),配合彈簧秤,將彈簧秤測(cè)得質(zhì)量轉(zhuǎn)化為光電斷路器的脈沖,單片機(jī)系統(tǒng)則是將計(jì)數(shù)脈沖解釋為質(zhì)量信息,并與價(jià)格信息作以處理,送入LED顯示模塊,予以顯示。
所設(shè)計(jì)的計(jì)數(shù)盤(pán)如圖3所示。將計(jì)數(shù)盤(pán)邊緣切割成鋸齒狀,光電斷路器安裝在計(jì)數(shù)盤(pán)邊緣。光計(jì)數(shù)盤(pán)轉(zhuǎn)動(dòng)時(shí),便可向光電斷路器提供轉(zhuǎn)信息,光電斷路器便可提供計(jì)數(shù)脈沖。
圖3 計(jì)數(shù)盤(pán)的制作Fig.3 Making of counting disk
該設(shè)計(jì)鍵盤(pán)模塊采用通用4×4矩陣鍵盤(pán)原理如圖4所示。在軟件上加以改進(jìn),只需2次掃描,便可得到按鍵特征碼。
圖4 鍵盤(pán)模塊原理Fig.4 Principle of keyboard module
單片機(jī)最小系統(tǒng)選用51單片機(jī)系列中的AT89S52單片機(jī)。AT89S52是一個(gè)低功耗高性能的CMOS 8位單片機(jī),片內(nèi)含8 KBytes ISP(In-system programmable,在線系統(tǒng)編程)的可反復(fù)擦寫(xiě)1 000次的Flash ROM(Read Only Memory,只讀存儲(chǔ)器),256×8 bit RAM (Random Access Memory,隨機(jī)存取存儲(chǔ)器)[4-8]。
單片機(jī)最小系統(tǒng)的電路原理圖如圖5所示。該電路可看作由單片機(jī)AT89S52(U1)、復(fù)位電路(K1、C3、R2構(gòu)成)、振蕩電路(C1、C2、X1構(gòu)成)、電源指示(R1、D1構(gòu)成)、程序下載接口(JP1)組成。
圖5 單片機(jī)最小系統(tǒng)電路原理Fig.5 Principle of minimum system circuit of single chip microcomputer
在該最小系統(tǒng)中,對(duì)單片機(jī)31引腳(EA/VPP)接高電平,以期單片機(jī)在復(fù)位后從內(nèi)部ROM的0000H開(kāi)始執(zhí)行;若此引腳接低電平,復(fù)位后直接從外部ROM的0000H開(kāi)始執(zhí)行,由于該系統(tǒng)為最小系統(tǒng),不外設(shè)ROM。
(1)晶振路。若晶振X1取11.059 2 MHz,可以準(zhǔn)確地得到9 600波特率和19 200波特率,用于串口通信場(chǎng)合;若X1取12 MHz,則單片機(jī)可產(chǎn)生微秒級(jí)間歇,方便定時(shí)。二者對(duì)于此設(shè)計(jì)而言,都無(wú)多大影響,故設(shè)計(jì)該系統(tǒng)時(shí),隨意選取了11.0592 MHz的晶振。
(2)復(fù)位電路。由電容C3、電阻R2構(gòu)成。結(jié)合“電容電壓不能突變”的性質(zhì)可知,當(dāng)系統(tǒng)一上電,RST腳的高電平持續(xù)兩個(gè)機(jī)器周期以上就將單片機(jī)復(fù)位。并且,這個(gè)高電平持續(xù)時(shí)間由電路的RC值來(lái)決定。
對(duì)于復(fù)位電路,可供計(jì)算高電平持續(xù)時(shí)間:
Ut=U0+(U1-U0)×[1-exp(-t/RC)]
(1)
t=RC×ln[(U1-U0)/U1-Ut]
(2)
在室溫下,一般高電平電壓是3.5 V,將U0=0 V,U1=5 V,Ut=3.5 V,R=1 000 Ω,C= 10 ×10-6F代入式(2)得:t=0.012 s,即該設(shè)計(jì)上電后RST管腳高電平保持時(shí)間為1.2 ms,比2個(gè)機(jī)器周期2 μs長(zhǎng)得多??芍想姀?fù)位比較可靠。
上電運(yùn)行后,進(jìn)行初始化,之后進(jìn)行鍵盤(pán)掃描。若有鍵按下,進(jìn)行鍵識(shí)別。識(shí)別結(jié)果:0~10,即所按下的鍵為10個(gè)數(shù)字鍵中的一個(gè)或小數(shù)點(diǎn),則接下來(lái)進(jìn)行價(jià)格的更改;若鍵值為11,即清零鍵,則清零當(dāng)前價(jià)格。若鍵值為14,即累計(jì)加鍵,則將當(dāng)前金額累加入合計(jì)值。若鍵值為13,則更改LED顯存,使之顯示總計(jì)值,并關(guān)閉計(jì)算。若鍵值為12,即退出鍵,則退出合計(jì)值顯示,開(kāi)始計(jì)算,進(jìn)入正常狀態(tài)。若鍵值為15,即置零鍵,則清零重量。
下面對(duì)驅(qū)動(dòng)函數(shù)的流程圖加以說(shuō)明。
(1)由于驅(qū)動(dòng)函數(shù)要對(duì)按鍵進(jìn)行去抖動(dòng)處理,這使得流程圖略顯復(fù)雜,現(xiàn)從流程詳圖中提取出鍵盤(pán)去抖動(dòng)步驟,如圖6所示。
圖6 按鍵去抖動(dòng)Fig.6 Key to remove jitter
從圖6中可看出,只是在“有鍵初按”或“有鍵初松”時(shí),才會(huì)去避抖動(dòng)及執(zhí)行其后的代碼。“有鍵初按”與“有鍵初松”的辨別,靠當(dāng)前鍵盤(pán)狀態(tài)與此次掃描有無(wú)按鍵按下二者組合來(lái)確定。
(2)鍵盤(pán)主要用于設(shè)定單價(jià),為了便于輸入,將單價(jià)分為整數(shù)部分和小數(shù)部分。在輸入單價(jià)時(shí),先輸入整數(shù),完畢后,再輸入小數(shù)。整數(shù)輸入完畢的標(biāo)志有二:①輸入了小數(shù)點(diǎn);②整數(shù)值大于9(即整數(shù)部分已為1個(gè)2位數(shù)了),比如,若輸入0.95可只按“.”、“9”、“5”,輸入的“.”,輸入12.35可依次輸入“1”、“2”、“3”、“5”即為整數(shù)輸入有2種方式,這2種方式導(dǎo)致了價(jià)格的輸入有2種。
小數(shù)部分的輸入與整數(shù)部分輸入不同,區(qū)別主要為輸入整數(shù)時(shí),輸入的第一個(gè)數(shù)為整數(shù)的個(gè)位,若未輸入完畢,之后輸入的數(shù)為其十位數(shù),而輸入小數(shù)部分時(shí),輸入的第一個(gè)數(shù)為小數(shù)部分的十位,而后才能輸入個(gè)位數(shù)。這點(diǎn)在原程序能明顯分辨出來(lái)。
(3)對(duì)各種“清零”的解釋?!扒辶沔I”對(duì)單價(jià)進(jìn)行清零,“調(diào)零鍵”對(duì)質(zhì)量進(jìn)行清零,“退出鍵”即退出合計(jì)顯示狀態(tài),開(kāi)始新的累加,它要對(duì)合計(jì)進(jìn)行清零。①“清零鍵”對(duì)價(jià)格清零后,要設(shè)定整數(shù)輸入使能,小數(shù)輸入失效。由于該設(shè)計(jì)為避免混亂,不能循環(huán)輸入單價(jià),輸入一次單價(jià)后,必須按一次清零鍵,才能再次輸入新單價(jià)。故清零鍵才多此一項(xiàng)任務(wù)。②“調(diào)零鍵”對(duì)質(zhì)量清零,雖然簡(jiǎn)單,但帶來(lái)了2大好處:一是系統(tǒng)上電后,質(zhì)量顯示可能不為零,按此鍵對(duì)其調(diào)零;二是使累計(jì)加操作更加方便。比如:顧客在稱完某一物品后,可按“累計(jì)鍵”將當(dāng)次金額累加入合計(jì)金額后,可不必從彈簧秤上取下物品,此時(shí)只需按“調(diào)零鍵”,質(zhì)量自動(dòng)清零,接著可繼續(xù)往彈簧秤上放物品二,并可重新設(shè)置單價(jià)、再次累加操作。只要物品總質(zhì)量不超過(guò)彈簧秤量程,便可重復(fù)進(jìn)行上述操作。這一特點(diǎn),可大大提高交易效率。③“退出鍵”,即退出合計(jì)顯示狀態(tài)。按“合計(jì)鍵”后,單價(jià)輸入與顯示、質(zhì)量輸入、清零與顯示將不可用,金額處將顯示合計(jì)金額,此狀態(tài)為合計(jì)顯示狀態(tài)。退出此狀態(tài)的方法有:按一下“退出鍵”,退出合計(jì)顯示狀態(tài);復(fù)位系統(tǒng)?!巴顺鲦I”的任務(wù)是“譯碼使能”,即退出合計(jì)顯示狀態(tài)時(shí),要允許譯碼。之所以進(jìn)入合計(jì)顯示狀態(tài)后關(guān)閉譯碼,是為了節(jié)約單片機(jī)時(shí)間,減少單片機(jī)負(fù)擔(dān)。
由于設(shè)計(jì)最終要由硬件來(lái)實(shí)現(xiàn),硬件的變更必會(huì)帶來(lái)軟件的重寫(xiě)。為了避免硬件的改動(dòng)對(duì)軟件的較大影響,硬件分塊設(shè)計(jì),再為各塊編寫(xiě)各自的軟件接口,這樣某一模塊的改動(dòng)只會(huì)影響它的軟件接口,對(duì)其他模塊的軟件接口并無(wú)須改動(dòng)。該設(shè)計(jì)的實(shí)現(xiàn)過(guò)程中,大部分時(shí)間是在進(jìn)行硬件的調(diào)試,即該設(shè)計(jì)受硬件影響較大。硬件的不可重塑靠軟件是無(wú)法解決的。計(jì)數(shù)盤(pán)的制作結(jié)果并不理想,光電斷路器的固定亦不如人意。該設(shè)計(jì)的幾個(gè)便于使用的優(yōu)點(diǎn)(亦是電子秤所沒(méi)有的),都由軟件提供。這些優(yōu)點(diǎn)在調(diào)試過(guò)程中已調(diào)試正確。至此,該設(shè)計(jì)實(shí)物效果的不太理想,估計(jì)隨著計(jì)數(shù)盤(pán)的精確切割、光電斷路器的準(zhǔn)確固定,效果會(huì)有所改善。