咨詢電話
ENGLISH0755-88840386發(fā)布時(shí)間:2020-10-13 14:01:33 |來源:
在畜牧養(yǎng)殖行業(yè),常需要對(duì)多種飼料按科學(xué)的比例進(jìn)行配料,而在大型牧場(chǎng),若采用傳統(tǒng)的人工稱量配料,會(huì)耗費(fèi)大量的時(shí)間。近年來,隨著畜牧養(yǎng)殖業(yè)的發(fā)展,為了提高養(yǎng)殖效能,許多畜牧養(yǎng)殖場(chǎng)對(duì)精準(zhǔn)車載配料系統(tǒng)的需求越來越多囚,將配料稱重顯示儀配備在飼養(yǎng)車上,可以在飼養(yǎng)車輛行進(jìn)過程中邊配料邊喂養(yǎng),從而節(jié)省很多時(shí)間,為此要求配料稱重儀表具有高的可靠性和高的配料精度。在此,選用ARM單片機(jī)STM32F407,設(shè)計(jì)了一款能夠在飼養(yǎng)車行進(jìn)中輸出精準(zhǔn)重量的車載配料稱重顯示儀。
1車載配料稱重顯示儀硬件設(shè)計(jì)
STM32F407單片機(jī)是ST公司基于ARMCortexM4內(nèi)核的微控制器,主頻可達(dá)168MHz;片內(nèi)集成了先進(jìn)的外設(shè),其可配置的GPIO多達(dá)114個(gè),通訊接口有15種:PC,SPI,串行接口、CAN接口、外存接口等,內(nèi)部的Flash存儲(chǔ)器可用于非易失性數(shù)據(jù)存儲(chǔ)囲。故在此選用STM32F407作為控制核心,用于接收來自內(nèi)置信號(hào)釆集模塊或外置數(shù)字傳感器的數(shù)據(jù),檢測(cè)儀表按鍵組的狀態(tài),實(shí)現(xiàn)各種參數(shù)的設(shè)置、工作模式的設(shè)置、多界面的切換等,并驅(qū)動(dòng)5位數(shù)碼管顯示。
該儀表結(jié)構(gòu)框圖如圖1所示。STM32F407通過CAN總線接收重量數(shù)據(jù),通過按鍵組接收用戶的操作信號(hào),其片內(nèi)Flash用于存儲(chǔ)儀表參數(shù),LED數(shù)碼管用于重量顯示及狀態(tài)提示,聲光提醒模塊用于配料提醒及故障提醒,485接口用于驅(qū)動(dòng)點(diǎn)陣式LED大顯示屏,USART接口可用于程序升級(jí),WiFi模塊可用于與管理平臺(tái)通訊。
圖1儀表結(jié)構(gòu)框圖
Fig.1Instalmentstructureblockdiagram
儀表內(nèi)置的信號(hào)采集模塊,用于采集處理模擬傳感器的信號(hào),其結(jié)構(gòu)框圖如圖2所示,包含信號(hào)調(diào)理電路、A/D轉(zhuǎn)換電路、MCU處理及CAN接口電路。信號(hào)調(diào)理電路將模擬傳感器的mV級(jí)信號(hào)進(jìn)行調(diào)理放大,A/D轉(zhuǎn)換電路將調(diào)理放大后的信號(hào)轉(zhuǎn)換為數(shù)字信號(hào),并將轉(zhuǎn)換結(jié)果輸出給采集模塊MCU進(jìn)行處理,該MCU將此數(shù)字值轉(zhuǎn)換成重量值,通過CAN接口傳輸給STM32F407。
圖2信號(hào)釆集模塊結(jié)構(gòu)框圖
Fig.2Structureblockdiagramofsignalacquisitionmodule
若儀表外采用數(shù)字傳感器,則不需要信號(hào)采集模塊的處理,STM32F407通過CAN接口接收數(shù)據(jù)即可。CAN收發(fā)器的電路原理如圖3所示。
電源調(diào)理模塊用于給儀表內(nèi)各模塊及元器件供電。
采用GPIO端口接收來自按鍵組的用戶操作信號(hào)。按鍵組含有1個(gè)電源開關(guān)鍵、5個(gè)功能鍵。其中電源開關(guān)鍵可實(shí)現(xiàn)儀表的一鍵開關(guān)機(jī);功能鍵可單獨(dú)使用,也可組合使用,用于儀表參數(shù)設(shè)置、標(biāo)定、稱重模式設(shè)置、多界面的切換及各流程的狀態(tài)切換等。
采用GPIO端口輸出開關(guān)量信號(hào),驅(qū)動(dòng)聲光提醒模塊,用于在配料過程中,配料重量接近設(shè)置范圍時(shí)給配料人員提供聲音提示或燈光提醒。當(dāng)儀表出現(xiàn)故障時(shí),STM32F407也會(huì)驅(qū)動(dòng)聲光報(bào)警。
STM32F407通過SPI接口控制LED顯示驅(qū)動(dòng)芯片,驅(qū)動(dòng)LED數(shù)碼管顯示,用于顯示稱重模式下的重量,同時(shí)在各界面的流程控制中進(jìn)行相應(yīng)狀態(tài)提示。
儀表的485接口電路用于STM32F407與點(diǎn)陣式LED大顯示屏的通訊。通過大顯示屏顯示相關(guān)信息。
USART接口用于ISP程序升級(jí)。
WiFi模塊可用于將重量上傳至系統(tǒng)管理平臺(tái),管理平臺(tái)也可向儀表發(fā)送廣播信息等。當(dāng)儀表檢測(cè)到故障時(shí),可將故障碼通過WiFi發(fā)送至平臺(tái)。
2軟件設(shè)計(jì)
2.1總體流程
總體流程如圖4所示。儀表在上電對(duì)各外設(shè)初始化后,讀出Flash內(nèi)的參數(shù),并使能一鍵開關(guān)機(jī)電路的電源驅(qū)動(dòng),通過CAN接口讀取采集模塊的關(guān)鍵參數(shù),然后進(jìn)入主界面稱重界面,顯示重量/超載等信息。同時(shí),開啟定時(shí)器中斷、CAN中斷,在定時(shí)器中斷中每250ms發(fā)送1次讀取釆集模塊重量的CAN指令,在CAN中斷中接收來自采集模塊的數(shù)據(jù)。開啟各按鍵端口的外部中斷,在外部中斷中對(duì)按下的功能鍵進(jìn)行消抖,消抖后對(duì)按鍵標(biāo)志置1,此時(shí)STM32F407結(jié)合功能鍵的狀態(tài)執(zhí)行功能操作或狀態(tài)切換,并進(jìn)行各狀態(tài)下的顯示;若檢測(cè)到開關(guān)機(jī)鍵長(zhǎng)按下,則斷電關(guān)機(jī);若未檢測(cè)到開關(guān)機(jī)鍵按下,則在各界面一直循環(huán)下去。
在稱重界面下,模式0或模式1時(shí),結(jié)合Flash存儲(chǔ)的參數(shù)對(duì)重量修正,將重量/超載等信息進(jìn)行顯示,并結(jié)合功能鍵執(zhí)行相應(yīng)的功能操作或狀態(tài)切換,也可由功能鍵進(jìn)入設(shè)置界面。
在設(shè)置界面下,可進(jìn)入多參數(shù)設(shè)置、滿程目標(biāo)值設(shè)置、標(biāo)定、修正設(shè)定、超載門限設(shè)定、工作模式設(shè)定、稱重單位設(shè)定等二級(jí)界面。首先進(jìn)入菜單選擇界面,此時(shí)結(jié)合按鍵可進(jìn)行二級(jí)界面的選擇;在各二級(jí)界面下,可結(jié)合功能鍵執(zhí)行相應(yīng)的狀態(tài)切換,也可由功能鍵退出設(shè)置界面,進(jìn)入稱重界面。同時(shí),在各界面流程控制中,驅(qū)動(dòng)數(shù)碼管進(jìn)行實(shí)時(shí)狀態(tài)顯7K。
2.2CAN接口編程
由于CAN總線具有可靠性高、功能完善、成本較低等諸多優(yōu)點(diǎn),目前已廣泛應(yīng)用于汽車工業(yè)、工業(yè)控制等領(lǐng)域間??紤]到其具有可靠的錯(cuò)誤檢測(cè)和出錯(cuò)處理功能,在此采用CAN接口實(shí)現(xiàn)STM32F407與采集模塊的數(shù)據(jù)傳輸,波特率采用500kb/so
CAN2接口發(fā)送1幀數(shù)據(jù)的程序代碼如下:unsignedcharCAN2_Send_Msg(unsignedchar*msg,unsignedcharlen)//msg:發(fā)送數(shù)據(jù)指針Jen:數(shù)據(jù)長(zhǎng)度(最大為8)
{
unsignedcharmbox;
unsignedshortinti=0;
CanTxMsgTxMessage;
TxMessage.StdId=0x0559;〃標(biāo)準(zhǔn)幀IDTxMessage.RTR=O;//消息類型為數(shù)據(jù)幀TxMessage.IDE=CAN_ID_STD;//幀格式:標(biāo)準(zhǔn)幀TxMessage.DLC=len;fbr(i=O;i
TxMessage.Data[i]=msg[i];
}
mbox=CAN_Transmit(CAN2>&TxMessage);//發(fā)送
i=0;
while((CAN_TransmitStatus(CAN2,mbox)==CAN_TxStatus_Failed)
&&(i<0XFFF))i++;〃等待發(fā)送結(jié)束
if(i>=0XFFF)return1;
return0;
(
另外,在數(shù)據(jù)幀中均增加了校驗(yàn)數(shù)據(jù),接收方收到數(shù)據(jù)幀進(jìn)行解析時(shí)按照約定的格式計(jì)算校驗(yàn)值,若該校驗(yàn)結(jié)果與數(shù)據(jù)幀中的校驗(yàn)數(shù)據(jù)一致,則做出相應(yīng)的回復(fù)或處理,否則不予處理。
數(shù)據(jù)幀中的數(shù)據(jù)約定格式見表1,其中含有幀頭、幀尾、數(shù)據(jù)、校驗(yàn)等信息。
2.3流程控制操作錯(cuò)誤保護(hù)
在各一級(jí)界面、二級(jí)界面的流程控制中,各狀態(tài)的切換以輸入條件和當(dāng)前狀態(tài)為依據(jù),輸入條件
主要是各功能鍵的狀態(tài),另外在不同界面中還包括其他對(duì)應(yīng)條件。
具體工作過程為:判斷當(dāng)前外界輸入條件是否滿足當(dāng)前界面、當(dāng)前狀態(tài)下的輸入條件,若滿足則狀態(tài)轉(zhuǎn)換為下一狀態(tài);否則停留在當(dāng)前狀態(tài)。
2.4參數(shù)存儲(chǔ)保護(hù)
為防止Flash內(nèi)部的參數(shù)丟失,釆用備份的方式,將數(shù)據(jù)分別存儲(chǔ)于2個(gè)不同的扇區(qū)。
在對(duì)參數(shù)進(jìn)行存儲(chǔ)時(shí),首先對(duì)待存儲(chǔ)數(shù)據(jù)進(jìn)行CRC16校驗(yàn),將數(shù)據(jù)和校驗(yàn)值存入后,再將數(shù)據(jù)讀出進(jìn)行CRC16校驗(yàn),將計(jì)算所得校驗(yàn)值與讀出的校驗(yàn)值進(jìn)行比對(duì)。若相等,說明存儲(chǔ)正確,否則將再次存儲(chǔ)原始參數(shù),重復(fù)以上步驟;重復(fù)存儲(chǔ)3次仍不能正確存儲(chǔ),則顯示“Err”提示。
在每次讀取時(shí),先讀出存儲(chǔ)扇區(qū)的數(shù)據(jù)進(jìn)行CRC16校驗(yàn),若計(jì)算所得校驗(yàn)值與讀出的校驗(yàn)值相等,說明參數(shù)正確;否則參數(shù)錯(cuò)誤,則將備份扇區(qū)的數(shù)據(jù)讀出進(jìn)行判斷,若參數(shù)正確則采用該備份數(shù)據(jù),并將該數(shù)據(jù)再次存儲(chǔ);若參數(shù)仍錯(cuò)誤,則采用程序中預(yù)先定義的數(shù)組同中的出廠默認(rèn)參數(shù)。
3測(cè)試試驗(yàn)
3.1采集精度測(cè)試
該儀表在正式使用前分別接模擬傳感器、比率校準(zhǔn)器進(jìn)行全面的精度測(cè)試,試驗(yàn)結(jié)果見表2。在常溫下,信號(hào)源為模擬傳感器時(shí),系統(tǒng)綜合精度為2.2x10』;在-30~70T溫度范圍內(nèi),系統(tǒng)綜合精度為5x10%完全可滿足牧場(chǎng)配料的精度要求。
3.2振動(dòng)試驗(yàn)
在振動(dòng)試驗(yàn)機(jī)上,采用表3所列的振動(dòng)頻率、功率譜密度和加速度進(jìn)行32h的振動(dòng)試驗(yàn),其振動(dòng)頻譜如圖5所示。振動(dòng)停止后,儀表仍能正常工作,表明振動(dòng)對(duì)儀表性能無明顯影響。
4結(jié)論
采用單片機(jī)STM32F407實(shí)現(xiàn)儀表的多界面流程控制和CAN通訊釆集,不僅具有較高的可靠性,而且編程采用標(biāo)準(zhǔn)C語(yǔ)言,便于程序的修改與優(yōu)化。所設(shè)計(jì)的畜牧車配料稱重儀表具有可靠性高、可操作性強(qiáng)、配料精度高等優(yōu)點(diǎn)。該設(shè)備操作方便,實(shí)現(xiàn)了人機(jī)對(duì)話,目前已在河南某牧場(chǎng)中投入使用。經(jīng)試驗(yàn)證明:該儀表工作穩(wěn)定,可以滿足牧場(chǎng)配料控制的要求。
文章來源于網(wǎng)絡(luò)轉(zhuǎn)載,侵刪