咨詢電話
ENGLISH0755-88840386發(fā)布時(shí)間:2020-10-21 10:45:32 |來源:網(wǎng)絡(luò)轉(zhuǎn)載
在畜牧養(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)的需求越來越多[1]將配料稱重顯示儀配備在飼養(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公司基于ARMCor鄄texM4內(nèi)核的微控制器主頻可達(dá)168MHz片內(nèi)集成了先進(jìn)的外設(shè)其可配置的GPIO多達(dá)114個(gè)通訊接口有15種院I2CSPI串行接口CAN接口外存接口等內(nèi)部的Flash存儲(chǔ)器可用于非易失性數(shù)據(jù)存儲(chǔ)[2]故在此選用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)通訊。
儀表內(nèi)置的信號(hào)采集模塊用于采集處理模擬傳感器的信號(hào)其結(jié)構(gòu)框圖如圖2所示包含信號(hào)調(diào)理電路AD轉(zhuǎn)換電路MCU處理及CAN接口電路信號(hào)調(diào)理電路將模擬傳感器的mV級(jí)信號(hào)進(jìn)行調(diào)理放大AD轉(zhuǎn)換電路將調(diào)理放大后的信號(hào)轉(zhuǎn)換為數(shù)字信號(hào)并將轉(zhuǎn)換結(jié)果輸出給采集模塊MCU進(jìn)行處理該MCU將此數(shù)字值轉(zhuǎn)換成重量值通過CAN接口傳輸給STM32F407。
若儀表外采用數(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)顯示。
2.2CAN接口編程
由于CAN總線具有可靠性高功能完善成本較低等諸多優(yōu)點(diǎn)目前已廣泛應(yīng)用于汽車工業(yè)工業(yè)控制等領(lǐng)域[3]考慮到其具有可靠的錯(cuò)誤檢測(cè)和出錯(cuò)處理功能在此采用CAN接口實(shí)現(xiàn)STM32F407與采集模塊的數(shù)據(jù)傳輸波特率采用500kb/s
CAN2接口發(fā)送1幀數(shù)據(jù)的程序代碼如下
另外在數(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ù)組[4]中的出廠默認(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.2伊10-4在-30耀70益溫度范圍內(nèi)系統(tǒng)綜合精度為5伊10-4完全可滿足牧場(chǎng)配料的精度要求。
3.2振動(dòng)試驗(yàn)
在振動(dòng)試驗(yàn)機(jī)上采用表3所列的振動(dòng)頻率功率譜密度和加速度進(jìn)行32h的振動(dòng)停止后儀表仍能正常工作表明振動(dòng)對(duì)儀表性能無明顯影響。
4結(jié)語
采用單片機(jī)STM32F407實(shí)現(xiàn)儀表的多界面流程控制和CAN通訊采集不僅具有較高的可靠性而且編程采用標(biāo)準(zhǔn)C語言便于程序的修改與優(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)載,侵刪