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