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