咨詢電話
ENGLISH0755-88840386發(fā)布時間:2020-11-03 11:27:44 |來源:網(wǎng)絡(luò)轉(zhuǎn)載
0引言
在以工控機控制的飼料生產(chǎn)中,計算機通過RS-232與稱重顯示器傳送數(shù)據(jù),讀入當前稱重值.進而控制輸出原料倉門的開啟與關(guān)閉來完成配料過程。原先使用的稱重顯示器為其他J商的產(chǎn)品,成熟穩(wěn)定,功能多樣,但價格十分昂貴?,F(xiàn)在以AT89C52構(gòu)成單片機系統(tǒng),完成配料系統(tǒng)所需的功能:
①有校秤功能,可以設(shè)置增益因子;
②可設(shè)置顯示與通信的參數(shù);
③通過串口接收計算機指令;也可顯示毛重皮重兩種狀態(tài);
⑤可保留所設(shè)置的參數(shù),以便下次開機時使用。
1硬件組成
儀表硬件組成如圖1所示
系統(tǒng)主要由信號放大與模數(shù)轉(zhuǎn)換、看門狗與參數(shù)存儲、串口通信、鍵盤與顯示等4個模塊構(gòu)成:
1.1信號放大與模數(shù)轉(zhuǎn)換
信號放大電路使用運算放大芯片7650,將稱量傳感器的4~20mA信號放大成ADC芯片所需的量程,在本系統(tǒng)中放大100倍。
模數(shù)轉(zhuǎn)換芯片使用Crystal的CS5524,該芯片為四路24位形式,片內(nèi)包括1個檢測放大器,1個可編程增益放大器,1個多路轉(zhuǎn)換器,數(shù)字濾波器,以及自校準和系統(tǒng)校準電路匚該芯片設(shè)計為可自身提供負電源。工作在32kHz晶振的情況下,數(shù)字濾波器可提供1.88Hz,3.76Hz,7.51Hz,15Hz,30Hz.61,6Hz,84.5Hz和101.1Hz的輸出刷新頻率。對于選定的輸出速率.數(shù)字濾波器可以在一個轉(zhuǎn)換周期內(nèi)達到完全的精確度。工作在15Hz或以下時,數(shù)字濾波器可以同時抑50Hz/60Hz(±3Hz)的線性干擾。本系統(tǒng)采用單路差分輸入。
系統(tǒng)中,只用其中的一路輸入,編程設(shè)定模數(shù)轉(zhuǎn)換芯片為0~2.5V量程,單極性電壓,7.51Hz的輸出刷新率。由于輸出給傳感器的激勵電壓本身不穩(wěn)定和工業(yè)現(xiàn)場所帶來的干擾,使得24位測量值中后8位不穩(wěn),所以實際系統(tǒng)中采用前16位,轉(zhuǎn)換成十進制數(shù)為65536,采用一位小數(shù)顯示,則最大能稱重6500多kg,符合各廠家的要求。另外在CS5524布板過程中,要注意模擬電源應(yīng)比數(shù)字電源先供電,才能保證芯片的正常啟動。
1.2看門狗與參數(shù)存儲
看門狗與參數(shù)存儲采用Xicor公司X25O45,其中包括三部分:看門狗定時器、電壓監(jiān)控和EEPROMc這種三個功能封裝在一起的組合降低了系統(tǒng)的成本并減少了對電路板空間的要求,同時只占用單片機5位1/0資源。
看門狗定時器對系統(tǒng)提供了獨立的保護系統(tǒng),配合軟件上的設(shè)置可以防止程序走飛;X25045低*檢測電路,可以保護系統(tǒng)使之免受低電壓狀態(tài)的影響.當*降到最小轉(zhuǎn)換點(4.5V)以下時,系統(tǒng)復(fù)位.復(fù)位一直保持到*返回旦穩(wěn)定為止;EEPROM提供了4096位空間,內(nèi)部按512x8來組織,本系統(tǒng)利用它來存儲與顯示和通信有關(guān)的參數(shù)以及校稱后確定的增益因子。
采用X25045之后,不僅提高了系統(tǒng)的抗干擾性.同時可以保存用戶設(shè)置的參數(shù),免除了用戶每一次上電都需設(shè)置參數(shù)的麻煩。
1.3串口通信
采用MAX232專用集成芯片,電路簡單。單片機通過串口與1臺工控機相連,實時接收從工控機中傳來的數(shù)據(jù),完成相應(yīng)功能,其中包括向工控機發(fā)送稱量數(shù)據(jù)和設(shè)置毛重值。
1.4鍵盤與顯示
為節(jié)省單片機I/O,數(shù)碼顯示采用串行方式,使用MAX7219這是一塊高集成、串行輸入的共陰極顯示驅(qū)動器,它有8位LED數(shù)字7段碼接口,3線串行接口與AT89C52相連,本系統(tǒng)使用其中的6位,5位BCD編碼顯示稱重結(jié)果,另有1位獨立位尋址用來顯示狀態(tài),分別指示毛重、凈重、動態(tài)和零位四種狀態(tài)。
鍵盤方面用4個鍵完成各種功能,包括切換凈重、毛重狀態(tài)、設(shè)置各種參數(shù)和校秤。由于鍵盤數(shù)目的關(guān)系,有些功能只能用組合鍵來完成,同時考慮到操作人員可能的誤操作,類似于校秤之類的功能也需要用組合鍵來完成。同時,利用單片機I/O中的一位設(shè)置跳線,在軟件中進行判斷,使能或禁止鍵盤操作,從根本上杜絕了誤操作的可能。
2軟件編程
軟件簡要流程如圖2所示。軟件設(shè)計中必須有與各個硬件模塊進行數(shù)據(jù)交互的底層函數(shù),從而完成外圍芯片的各種功能。由于MAX232只是進行電平轉(zhuǎn)換的芯片,所以它不需要底層函數(shù)的支持。而AD,e2prom,顯示芯片都有相應(yīng)的底層函數(shù)。在主程序的設(shè)計中,先進行系統(tǒng)初始化,其中包括對單片機本身的設(shè)置,如堆棧指針,定時器,串行口和中斷優(yōu)先級;另外通過底層函數(shù)初始化外圍芯片,從e2prom中讀入保存的數(shù)據(jù)。
圖2軟件簡要流程圖
初始化之后,使能三個中斷:
①AD中斷,通過5524的SDO接入89C52的INT。腳,由于在5524每次A/D轉(zhuǎn)換之后,SDO都會變?yōu)榈碗娖?,這樣可以在INT。的中斷處理程序中讀入轉(zhuǎn)換的值。
②串行口中斷,負責接收和發(fā)送數(shù)據(jù)。
③定時器中斷,負責讀入輸入和輸岀顯示的刷新,在具體實現(xiàn)中采用了基于有限狀態(tài)機的方法,狀態(tài)機入口代碼示意如下:
MOVA,SYS_STATOS;SYS_STATUS存放現(xiàn)在系統(tǒng)所處的狀態(tài)
RLA
ADDA,SYS_STATOS;因為LIMP編碼占3個字節(jié),所以SYS_STATUS*3->A
MOVDFTR,#STATUSENTRY
JMP@A+DPTR
STATUSENTRY:LJMPSTATUSOO
LJMPSTATUS01
LJMPSTATUS02
一般系統(tǒng)處于顯示凈重狀態(tài)(01),但是如果有鍵按下將使得系統(tǒng)狀態(tài)發(fā)生改變,進入顯示毛重狀態(tài)(00),或參數(shù)設(shè)置狀態(tài)(02及以后)。所以在各狀態(tài)的處理程序中,有兩項任務(wù):第一,刷新輸岀,根據(jù)現(xiàn)在的狀態(tài),輸岀相應(yīng)的顯示;第二,處理輸入,對于引起狀態(tài)改變的按鍵,將SYS_STATUS的值相應(yīng)改變,使得下次定時中斷發(fā)生時,能進入新的狀態(tài)處理程序。
軟件中幾點要注意的問題;
①在串口傳輸稱量結(jié)果時按一定格式要傳送18個字節(jié),其中包括以ASCH碼表示的6位稱量結(jié)果(5位數(shù)字,1位小數(shù)點)。由于89C52的串口只有一個字節(jié)大小的緩沖區(qū),所以需要經(jīng)過18次的發(fā)送中斷服務(wù)程序才能將一次稱量結(jié)果發(fā)送岀去,在這期間新的A/D轉(zhuǎn)換的值已經(jīng)讀人。但往串口緩沖區(qū)送的時候應(yīng)該注意,如果完整的18個字節(jié)的傳送已經(jīng)結(jié)束,則允許傳送,否則不能改變還在傳送過程中的緩沖區(qū)的值,無論是校秤過程中的確定增益還是釆集A/D后的乘以增益因子都需要用到多字節(jié)的乘除法,在本系統(tǒng)中統(tǒng)一用四字節(jié)除以二字節(jié)的除法來加以完成。設(shè)讀入的原始變化值為a=ABCD(雙字節(jié))h,校秤中對應(yīng)用戶的變化值為b=EFGH(雙字節(jié))h由用戶通過面板輸入,增益因子由下式得岀
c=a*1000h/d=AB CDOOOh/EF GHh
對于校秤之后任意讀入的數(shù)值d,用戶所需的數(shù)據(jù)也可以通過d*lOOOH/c得岀。顯然,由于這一類似于定點數(shù)的運算,必將引入一定的誤差,每一次校秤時所引入的誤差最大為E/ABCD,取分子分母同為最大估算得岀:15/65535=0.024%。這一引人的誤差在系統(tǒng)誤差的許可范圍之內(nèi)。
3結(jié)束語
該稱重顯示器取代原先使用的稱量儀表,結(jié)合計算機端配料控制系統(tǒng),已在多個飼料生產(chǎn)廠運行達二年多,達到了在穩(wěn)定運行的基礎(chǔ)上降低系統(tǒng)成本的效果。
文章來源于網(wǎng)絡(luò)轉(zhuǎn)載,侵刪