黃昊,劉俊靈,胡騰達(dá),石軍鋒
(西南大學(xué)工程技術(shù)學(xué)院,重慶市,400716)
豬肉在我國肉類產(chǎn)品消耗中一直占據(jù)主導(dǎo)地位,近兩年由于新冠疫情和豬瘟的影響,我國養(yǎng)殖豬存欄量銳減,豬肉價格漲幅明顯。并且我國生豬養(yǎng)殖業(yè)機(jī)械化水平僅為30%,傳統(tǒng)人工飼喂的效率不高,盡管國家出臺相關(guān)政策使得價格有所回落,但是仍明顯高于往年肉價[1-2]。相較于美國、加拿大和歐盟等發(fā)達(dá)國家地區(qū),我國的現(xiàn)代化養(yǎng)殖業(yè)才剛剛起步。目前國外眾多高校研究所以及大型公司已廣泛開展了現(xiàn)代化母豬養(yǎng)殖的研究,包括豬臉識別、豬的行為跟蹤、母豬的發(fā)情狀況監(jiān)測等[3-5]。在國外的智能母豬飼喂系統(tǒng)中,較為完備且被廣泛使用的有荷蘭Velos系統(tǒng)、美國Osborne全自動母豬飼喂站(TEAM)和加拿大的Gestal哺乳母豬管理系統(tǒng)等[6-7]。
自精準(zhǔn)農(nóng)業(yè)、智慧農(nóng)業(yè)提出以來,我國在智能養(yǎng)豬方面涌現(xiàn)出許多成果。王衡等[8]使用STM32作為主控,與方波發(fā)生器電路、雙極板系統(tǒng)和LCD顯示屏構(gòu)成了一種豬食槽剩余量的監(jiān)測設(shè)備,將銅板之間的間距轉(zhuǎn)化為電容大小的變化來采集飼料余量的數(shù)據(jù);楊亮等[9]以RFID、壓力傳感模塊和紅外傳感模塊等多個傳感器為基礎(chǔ),通過檢測發(fā)情母豬對公豬的主動靠近次數(shù)來對發(fā)情母豬進(jìn)行實時標(biāo)記;杜虹等[10]設(shè)計了一款智能小車,通過PLC軟件系統(tǒng)與觸摸屏配合控制,給總共四個飼喂槽進(jìn)行飼料的補(bǔ)充;張澤峰[11]設(shè)計了一款母豬體溫紅外監(jiān)測系統(tǒng),應(yīng)用AGC、多種濾波和二維數(shù)組溫度處理的方法,對不同時期的母豬進(jìn)行實時體溫監(jiān)控,防止其出現(xiàn)異常升溫;潘松[12]、李喜武等[13]在幼豬培育上進(jìn)行試驗研究,保證了新生小豬飲水和生長環(huán)境。除此之外,國內(nèi)也已經(jīng)有多家公司開始研發(fā)并推出商業(yè)化的母豬飼喂系統(tǒng)[14-15],但是在功能上只是較為簡單地下料下水,缺少對動作執(zhí)行是否可靠進(jìn)行回執(zhí)以及對母豬體征狀態(tài)的監(jiān)控,相比于市面上應(yīng)用已久的國外同類型產(chǎn)品缺乏競爭力。
本研究設(shè)計的智能母豬飼喂系統(tǒng),除實現(xiàn)了按需精確下料下水功能以外,還增加了由流量計、漫反射光電傳感器組成的下料下水可靠性檢測系統(tǒng)以及非接觸式測溫系統(tǒng),旨在提高智能化母豬飼喂系統(tǒng)的可靠性和實用性,降低人工飼喂中由于飼料浪費而損失的成本,實時監(jiān)測母豬的體溫狀態(tài),從而實現(xiàn)母豬的智能飼喂。
智能化母豬飼喂系統(tǒng)主要由控制系統(tǒng)和機(jī)械結(jié)構(gòu)兩部分組成。其中控制系統(tǒng)主要包括硬件模塊(控制板、傳感器和執(zhí)行機(jī)構(gòu))以及相應(yīng)的控制軟件組成,整體結(jié)構(gòu)如圖1所示。
圖1 智能化母豬飼喂控制系統(tǒng)整體結(jié)構(gòu)Fig. 1 Whole structure of intelligent sowfeeding control system
控制板包括控制母板和接口板兩部分。控制母板以Exynos4412作為主控,負(fù)責(zé)向下級發(fā)送動作指令,處理反饋的電平信號以及和云端通信;接口板作為轉(zhuǎn)換電路,接收到主控的信號后通過調(diào)壓電阻、繼電器開關(guān)以及功能芯片的作用調(diào)度傳感器、執(zhí)行機(jī)構(gòu)進(jìn)行工作,并將其反饋的電信號——GPIO以及IRQ傳輸給母板,由主控進(jìn)行再處理。其中傳感器包括進(jìn)出口門接近開關(guān)、下料光電開關(guān)、下水流量計、ABSD-01A非接觸式溫度計和RFID耳標(biāo)閱讀器,執(zhí)行機(jī)構(gòu)包括進(jìn)門推桿電機(jī)、下料電機(jī)和下水電磁閥。
控制軟件部分以嵌入式Linux作為操作系統(tǒng),向上下層提供主要的API接口;底層驅(qū)動負(fù)責(zé)激活初始化相關(guān)硬件,以platform虛擬總線的形式在系統(tǒng)中注冊設(shè)備號、生成設(shè)備節(jié)點以及向上層提供相應(yīng)的硬件操作接口函數(shù);最后由應(yīng)用層承擔(dān)整個飼喂邏輯,調(diào)用系統(tǒng)和驅(qū)動提供的API對硬件進(jìn)行操控,完成對硬件動作的指令發(fā)送、底層反饋信息的處理和數(shù)據(jù)的云端交互[16]。
飼喂控制系統(tǒng)硬件部分需要完成進(jìn)門控制、下水下料控制以及監(jiān)測、RFID耳標(biāo)識別、溫度采集和出門信號采集等基本功能。具體傳感器和執(zhí)行機(jī)構(gòu)分類與功能說明如表1所示。
光電開關(guān)、接近開關(guān)和流量計均為PNP型,工作模式采用高電平觸發(fā)。在門開閉、電機(jī)落料和水閥注水時通過信號線向接口板發(fā)送電信號,接口板對信號進(jìn)行電平轉(zhuǎn)換后發(fā)送給MCU,最后由MCU中運(yùn)行的主程序進(jìn)行統(tǒng)一處理;RFID耳標(biāo)閱讀器為ISO11784/11785標(biāo)準(zhǔn),采集模式為主動上傳,讀取距離45 cm±10%。裝置位于飼喂系統(tǒng)的食槽右側(cè),當(dāng)豬將頭伸到食槽里面時,便可讀取耳標(biāo)信息,通過與后臺記錄進(jìn)行核對就能知道相應(yīng)母豬的今日飼喂量;溫度傳感器采用工業(yè)級非接觸式紅外測溫儀,安裝在食槽的正上方,在豬吃食時能夠準(zhǔn)確測量到豬的體溫。
表1 傳感器與執(zhí)行機(jī)構(gòu)功能Tab. 1 Sensor and actuator functions
進(jìn)口門使用推桿電機(jī)鎖定,正向供電推桿伸出即可將門鎖死,反向供電推桿收回門可正常開閉;下料電機(jī)為五線制雨刮電機(jī),將轉(zhuǎn)動部分連接傳動軸,再在軸上外加傳動螺紋,通過螺旋旋轉(zhuǎn)的方式給母豬下料;下水閥使用四分口徑電磁閥,僅通過電流的通斷即可控制水的開閉。
各個傳感器即執(zhí)行機(jī)構(gòu)在飼喂站的安裝位置如圖2所示。
圖2 飼喂站傳感器/執(zhí)行機(jī)構(gòu)安裝位置示意圖Fig. 2 Diagram of sensor/actuator installationlocation in feeding station1.進(jìn)門接近開關(guān) 2.進(jìn)門推桿電機(jī) 3.RFID耳標(biāo)閱讀器4.非接觸式溫度傳感器 5.落料光電開關(guān) 6.下料電機(jī)7.下水閥、流量計 8.出門接近開關(guān)
控制母板采用Exynos4412作為主控MCU,工作主頻為1.5 GHz。母板的基本電路包括串口電路、RS485電路、網(wǎng)口電路、電源管理電路、USB-HUB電路、EMMC電路和DDR3電路。其主要功能為承載操作系統(tǒng)、電源管理、內(nèi)存分配、命令下發(fā)、定時器啟動、GPIO以及IRQ中斷號的申請、處理和設(shè)備號注冊,還負(fù)責(zé)與底層設(shè)備進(jìn)行RS232、RS485和網(wǎng)絡(luò)通信。相關(guān)引腳如圖3所示。
為控制執(zhí)行機(jī)構(gòu)與收集傳感器信號,本設(shè)計一共用到了主控芯片的18路GPIO和2路AD轉(zhuǎn)換引腳。其中AD轉(zhuǎn)換用來處理溫度信號與流量計脈沖;GPIO一部分用來控制執(zhí)行機(jī)構(gòu)進(jìn)行下料下水,另一部分用來對傳感器反饋的高電平進(jìn)行計數(shù)。
圖3 Exynos4412部分引腳圖Fig. 3 Partial pin diagram of Exynos4412
接口板電路設(shè)計目的主要包括:(1)對輸入電壓進(jìn)行調(diào)制,確保執(zhí)行機(jī)構(gòu)在額定電壓下運(yùn)行;(2)轉(zhuǎn)換MCU的GPIO信號,使得主程序能夠通過繼電器對電機(jī)進(jìn)行控制;(3)通過運(yùn)算放大器和電阻調(diào)壓電路對傳感設(shè)備的反饋數(shù)據(jù)進(jìn)行轉(zhuǎn)換。
2.3.1 電阻調(diào)壓以及其他雜項電路
前三個基礎(chǔ)模塊為:電壓轉(zhuǎn)換電路——負(fù)責(zé)將24 V輸入調(diào)制到傳感器和執(zhí)行機(jī)構(gòu)額定的工作電壓,由于轉(zhuǎn)換前后壓差較大,所以選用DCDC來進(jìn)行調(diào)制,如圖4(a)所示。其中XL2596S-5.0固定輸出5 V電壓,XL2596S-ADJ根據(jù)兩個反饋電阻分別輸出6 V和15 V電壓,在輸出端由肖特基二極管、屏蔽電感和濾波電容進(jìn)行整流即可得到波形規(guī)律的直流電。
(a) DC-DC
(b) 三色共陽LED指示燈
(c) 電阻調(diào)壓電路圖4 基礎(chǔ)模塊電路圖Fig. 4 Basic module circuit
LED信號燈電路——通過GPIO將基極電壓拉高,集電極與發(fā)射極導(dǎo)通,進(jìn)而點亮LED。選用三色共陽LED指示燈,每次只亮一種燈色,以三種不同的信號燈以及閃爍頻率來表示整個控制系統(tǒng)的工作狀態(tài),如圖4(b)所示。電阻調(diào)壓電路——由于傳感器的信號電壓與母板GPIO電壓差距較大,直接通信高電壓沖擊會損壞處理器,所以在信號輸出端需要串聯(lián)電阻負(fù)責(zé)將進(jìn)出門接近開關(guān)和下料光電開關(guān)的高電平信號轉(zhuǎn)換到主控芯片GPIO規(guī)定的1.8 V,如圖4(c)所示。
2.3.2 繼電器控制模塊
繼電控制模塊的主控芯片采用了ULN2003集成達(dá)林頓管IC芯片,每一對達(dá)林頓管都串聯(lián)一個2.7 K的基極電阻,可以直接與負(fù)載連接,對于繼電器類型的感性負(fù)載則需要將COM端連接到VCC處避免反向擊穿。
整個控制由主控芯片與24 V常開繼電器配合完成,集電極控制線圈的開閉,防止由于電流較小而達(dá)林頓管無法完全導(dǎo)通的情況(圖5)。首先由MCU發(fā)出GPIO信號使得左側(cè)控制引腳變?yōu)楦唠娖剑w管飽和導(dǎo)通,繼電器控制端與地連通形成回路,進(jìn)而彈片從常開端撥到常閉端,向電機(jī)供電。
2.3.3 運(yùn)算放大電路
運(yùn)算放大電路負(fù)責(zé)處理流量計和溫度計的模擬信號,由4運(yùn)放LM324芯片和高精度OPA234芯片組成,如圖6所示。
對于溫度信號,由于ABSD-01A的輸出信號為4~20 mA電流信號,而主控MCU的AD轉(zhuǎn)換采用電壓信號,并且其最佳采集區(qū)間為0~1.8 V,所以在輸出端并聯(lián)一個高精度250 Ω電阻將其轉(zhuǎn)換為電壓信號,以電阻的電壓為測量值進(jìn)行計算。4~20 mA對應(yīng)溫度計的-20 ℃~80 ℃量程,轉(zhuǎn)換后為1~5 V,當(dāng)采集對象為豬時,所需實際測溫范圍約在10 ℃~40 ℃。因此設(shè)計采用加法器、減法器和跟隨器,將運(yùn)算放大后的電壓移動至0~2 V區(qū)間,與MCU的最佳采集對應(yīng),由此來獲得準(zhǔn)確的溫度數(shù)字信號。
流量計的輸出為5 V方波信號,可以直接將信號縮放,所以對于流量計的電平信號只需要將5 V電壓轉(zhuǎn)換到0~1.8 V區(qū)間,再交給主控進(jìn)行計數(shù)處理即可。通過計數(shù),將實際下水量與處理器統(tǒng)計的脈沖數(shù)一一對應(yīng),用函數(shù)進(jìn)行擬合,即可得到對應(yīng)關(guān)系進(jìn)而控制并監(jiān)測下水量。
圖5 繼電器控制電路Fig. 5 Relay control circuit
圖6 運(yùn)算放大電路Fig. 6 Operational amplifier circuit
本文設(shè)計的控制系統(tǒng)軟件基于Linux開發(fā),采用了platform虛擬總線的驅(qū)動注冊方式。引入driver-bus與device-bus兩條鏈表,將驅(qū)動信息與設(shè)備信息分離實現(xiàn)去耦合化。在一個完整的字符設(shè)備驅(qū)動中,需要完善file_operations和platform_driver兩個函數(shù)。file_operations向內(nèi)核申請設(shè)備功能,然后向上傳遞API,提供給應(yīng)用層操縱硬件的接口;platform_driver在內(nèi)核中注冊設(shè)備,初始化相關(guān)的功能引腳,將其設(shè)定為指定高電平或者低電平,最后實現(xiàn)設(shè)備注銷釋放函數(shù),當(dāng)不再使用對應(yīng)設(shè)備時釋放該驅(qū)動的所有接口[17]。
驅(qū)動結(jié)構(gòu)如圖7所示。
在驅(qū)動注冊時,會隱式調(diào)用內(nèi)核中的platform_match函數(shù),此時總線探針(detector,如圖8所示)分別檢查driver_bus和device_bus上的name和id_table。當(dāng)兩者對應(yīng)時,則驅(qū)動中probe函數(shù)執(zhí)行,注冊設(shè)備號、生成設(shè)備節(jié)點并初始化設(shè)備。
圖7 驅(qū)動結(jié)構(gòu)
圖8 總線探針Fig. 8 Bus detector
3.1.1 執(zhí)行機(jī)構(gòu)驅(qū)動
整個電路共有5個繼電器,一共控制4個電機(jī),其中前兩個繼電器協(xié)作控制進(jìn)口門推桿電機(jī),分別與電機(jī)的正負(fù)極相連。由于需要正反接來實現(xiàn)推桿的伸縮,所以要求兩個繼電器在同一時刻進(jìn)行反相操作完成正負(fù)極調(diào)換,具體實現(xiàn)邏輯如圖9所示。
圖9 電機(jī)驅(qū)動邏輯Fig. 9 Motor driven logic
在驅(qū)動層每個繼電器的控制引腳分配一個GPIO,通過ioctl來拉低拉高引腳電平,借助三極管的導(dǎo)通特性進(jìn)行控制。對于其他的三個電機(jī),工作需求只有電路的開閉所以只需要一個繼電器即可,每次對單個繼電器進(jìn)行操作就能夠達(dá)到對下料電機(jī)、下水電磁閥的控制。
3.1.2 傳感器驅(qū)動
傳感器以采集信號為全部工作任務(wù),通過信號線反饋電平信號。
接近開關(guān)、光電開關(guān)和流量計的底層驅(qū)動僅向上層提供poll接口,通過申請設(shè)備節(jié)點對文件描述符進(jìn)行監(jiān)聽。當(dāng)沒有事件發(fā)生時則掛起設(shè)備減少對CPU的占用,一旦有電平變化則喚醒監(jiān)聽對事件進(jìn)行計數(shù)處理。
溫度傳感器的底層實現(xiàn)相對復(fù)雜,包括通用的讀、ioctl和poll接口,還需要鎖、系統(tǒng)等待隊列、內(nèi)核定時器以及中斷的支持。首先在系統(tǒng)初始化時申請溫度采集的專用隊列(s3c24xx_adc_read),然后將溫度傳感器的溫度采集動作通過ioctl與內(nèi)核定時器綁定,每過一定時間進(jìn)行一次采集,在采集前后附加互斥鎖的上鎖與解鎖。并在驅(qū)動層設(shè)定對應(yīng)閾值,當(dāng)超過閾值時則觸發(fā)中斷,中斷動作為上報當(dāng)前溫度對應(yīng)的AD值并重載定時器。
應(yīng)用層負(fù)責(zé)整個系統(tǒng)的邏輯,包括對信號的處理、控制豬的飼喂量、收集底層機(jī)構(gòu)的狀態(tài)、處理傳感器傳遞的信號、對執(zhí)行結(jié)構(gòu)下發(fā)命令以及向后臺提交飼喂?fàn)顩r等。其整體邏輯如圖10所示。
圖10 飼喂邏輯流程圖Fig. 10 Flow chart of feeding
整個流程的正常飼喂邏輯大致可以分為以下4個階段。
1) 豬打開進(jìn)口門進(jìn)入飼喂站,將入口門鎖死防止多頭豬同時進(jìn)入。
2) 豬走過過道,將頭伸入食槽,耳標(biāo)閱讀器讀取耳標(biāo)信息,與后臺數(shù)據(jù)庫交互、比對獲得每日飼喂量和今日飼料余量,同時溫度傳感器記錄母豬體溫并上報。若在一定時間內(nèi)只有溫度信號無耳標(biāo)信號則臨時作為無耳標(biāo)豬飼喂。
3) 下料電機(jī)下料,每次下料間隔1 min保證母豬能將上一次的飼料吃完,避免堆積浪費或腐敗發(fā)霉。
4) 豬吃完飼料,從出口門離開飼喂系統(tǒng),出口門鎖死取消。
正常的飼喂邏輯作為主線程在應(yīng)用層運(yùn)行,除此之外還有后臺通信線程,發(fā)送心跳包保證服務(wù)器與本地客戶端的正常socket連接;飼喂上傳進(jìn)程,實時同步本地、云端的飼喂數(shù)據(jù),確保飼喂量的精確;信號處理線程,處理底層反饋的所有信號;異常處理線程,處理正常流程以外的異常情況;定時器中斷,對所有的執(zhí)行機(jī)構(gòu)、信號采集機(jī)構(gòu)增加一個或多個定時器,在規(guī)定時間內(nèi)監(jiān)測動作是否可靠執(zhí)行,各線程邏輯如圖11所示。
(a) 后臺通信線程
(b) 飼喂上傳線程
(c) 信號處理線程
(d) 定時器中斷
(e) 異常處理函數(shù)圖11 飼喂控制各線程邏輯Fig. 11 Feed control’s logic of each thread
但是在實際飼喂中,可能會有異常情況產(chǎn)生,總體可分為機(jī)械故障和豬只異常行為導(dǎo)致的故障。機(jī)械故障為豬走進(jìn)飼喂站后,下料電機(jī)沒有正常進(jìn)行下料。豬只行為異常包括:(1)豬拱開進(jìn)口門但是未進(jìn)入,導(dǎo)致門鎖死但飼喂站內(nèi)并沒有豬在進(jìn)食;(2)當(dāng)前豬長時間在飼喂站內(nèi)停留導(dǎo)致其他豬只無法進(jìn)食。以上兩大類異常均由定時器來處理,對于機(jī)械異常,當(dāng)下料電機(jī)下料時光電開關(guān)會進(jìn)行信號采集,若在一定時間內(nèi)沒有收到光電開關(guān)反饋的信息則判定下料出錯,點亮飼喂站的紅色指示燈示意飼養(yǎng)員進(jìn)行故障排查;對于豬只異常行為錯誤,設(shè)定了每頭母豬的最大進(jìn)食時間和判定飼喂站里是否有豬的最大等待時間——最大進(jìn)食時間指每一頭母豬最多能在飼喂站內(nèi)停留的最長時間,當(dāng)超過這個時間時還沒有觸發(fā)開門的標(biāo)志量,那么控制系統(tǒng)會強(qiáng)制打開進(jìn)口門放下一頭母豬將前一頭豬拱出飼喂站;最大等待時間在進(jìn)口門鎖死時啟動,當(dāng)一定時間內(nèi)沒有采集到任何豬的信息(耳標(biāo)號和溫度),那么則視為門打開后沒有豬進(jìn)入飼喂站,此時也會打開進(jìn)口門。
設(shè)備安裝在重慶市合川區(qū)龍市鎮(zhèn)某豬場,圖12為試驗場景圖片。選取了5頭母豬作為試驗對象,時間為2020年12月—2021年2月,5頭豬的飼喂計劃根據(jù)其生產(chǎn)周期、體型及季節(jié)確定[18-20]。飼喂邏輯遵循控制進(jìn)食量但不限制進(jìn)食時間的機(jī)制,下料配比參照豬場飼養(yǎng)員提供的料水比5∶2進(jìn)行配制。飼喂量重置時間為每天零點。
圖12 母豬飼喂試驗場景Fig. 12 Sow feeding experiment scene
下料電機(jī)帶動螺旋輸送器旋轉(zhuǎn)從而將飼料投喂給母豬,由于機(jī)械結(jié)構(gòu)上螺旋導(dǎo)程已經(jīng)固定,所以每一次轉(zhuǎn)動產(chǎn)生的下料量是固定的。將每圈投送的飼料進(jìn)行單獨稱重,測量其波動范圍。圖13統(tǒng)計了20次單圈下料,其中實際下料量為每次稱重得到的示數(shù),根據(jù)趨勢線最終將單圈下料量確定為22 g,而實際下料在22 g 上下波動,主要是由于粉料堆積容易形成空洞,導(dǎo)致螺旋輸送器每個導(dǎo)程空間內(nèi)的飼料量有一定的誤差。計算可得,最大下料誤差為3.6%,下料精度高于95%,能夠?qū)崿F(xiàn)精確下料要求。
圖13 單圈實際下料量Fig. 13 Actual feeding quantity in one turn
水量檢測傳感器為渦輪式脈沖流量計,當(dāng)水流經(jīng)過渦輪會帶動其轉(zhuǎn)動,轉(zhuǎn)動時信號線產(chǎn)生4.3 V方波脈沖信號。標(biāo)定試驗多次進(jìn)行下水,每次下水時使用100 mL規(guī)格量筒測得當(dāng)次下水的水量大小x,再通過程序收集脈沖數(shù)y,將x和y采用較為平滑的冪函數(shù)來擬合得到5~75 mL范圍內(nèi)水流量和脈沖數(shù)之間的函數(shù)關(guān)系式。水量定標(biāo)如圖14所示。
圖14 脈沖數(shù)與實際水量標(biāo)定Fig. 14 Number of pulses calibrated withactual amount of water
將擬合之后的公式寫入主程序,通過程序直接設(shè)定下水命令,運(yùn)行程序后再次測量實際下水量與程序設(shè)定值的誤差。在5~40 mL區(qū)間內(nèi)每5 mL進(jìn)行一次對比,由圖15可知,下水誤差最大值為3.75%,并且當(dāng)水量要求較小時系統(tǒng)能夠達(dá)到精準(zhǔn)輸出,符合下水要求。
圖15 實際下水量與程序設(shè)定值誤差Fig. 15 Error between actual water flow and program set value
紅外溫度傳感器進(jìn)行模數(shù)轉(zhuǎn)換后,在內(nèi)核中的示數(shù)為16進(jìn)制AD值,為方便管理人員監(jiān)測,需要將其轉(zhuǎn)換成實際溫度。通過人工定標(biāo)確定AD值與實際溫度之間的轉(zhuǎn)換公式,定標(biāo)儀器選用06A-FLIRT62101紅外相機(jī)(圖16)。
圖16 高精度紅外相機(jī)標(biāo)定Fig. 16 High precision infrared camera calibration
由于溫度傳感器監(jiān)測的溫度為體表溫度,并且豬在吃食過程中會晃動身體、每頭豬體型不一,所以進(jìn)行測量時的測溫位置會有所不同,實際測溫位置包括豬頭后側(cè)、豬后頸、豬前腿根部和豬背。又因為本試驗時間跨度較大、室溫晝夜差距懸殊等因素,造成了豬的體表溫度變化較大。在整個試驗過程中,豬的體表溫度在20 ℃~35 ℃范圍內(nèi)波動。
定標(biāo)試驗采集豬身體表溫度后與AD值一一對應(yīng),使用一次函數(shù)進(jìn)行擬合,具體數(shù)據(jù)如圖17所示。通過數(shù)據(jù)擬合后將函數(shù)關(guān)系式寫入程序,由程序直接將MCU處理后的AD值轉(zhuǎn)換為溫度并上傳。采集、對比AD轉(zhuǎn)換后的溫度值與定標(biāo)儀器顯示的溫度值之間的差異。由圖18可以看出,定標(biāo)求得的函數(shù)關(guān)系式推導(dǎo)出的溫度與實際溫度誤差為±0.2 ℃,能夠達(dá)到精準(zhǔn)測溫的要求。
圖17 溫度函數(shù)定標(biāo)Fig. 17 Temperature function scaling
圖18 溫度測量誤差Fig. 18 Temperature measurement error
本文設(shè)計了一種全自動化智能母豬飼喂控制系統(tǒng),從硬件電路、核心板引腳分配、驅(qū)動調(diào)用和應(yīng)用層邏輯框架搭建這四個方面進(jìn)行研究。設(shè)計制作了硬件與核心板通信的接口板,并基于Linux-API編寫相關(guān)的驅(qū)動,通過IRQ中斷、poll輪詢和內(nèi)核定時器保證底層執(zhí)行機(jī)構(gòu)和傳感器的正常運(yùn)行;進(jìn)行試驗之前,對下料電機(jī)、下水閥的執(zhí)行精度進(jìn)行校準(zhǔn),確保有效、準(zhǔn)確的對母豬進(jìn)行飼喂;在應(yīng)用層,制定喂豬流程以及異常處理邏輯,并通過socket重連和心跳包提供穩(wěn)定的網(wǎng)絡(luò)連接,實時與后臺通信同步當(dāng)前飼喂量。
試驗結(jié)果表明,該控制系統(tǒng)能夠?qū)崿F(xiàn)無人化母豬智能飼喂,通過數(shù)據(jù)采集和線性擬合之后,控制系統(tǒng)下料誤差小于3.6%,下水誤差小于3.75%;能夠?qū)崟r監(jiān)測豬只的體溫信號,重復(fù)測溫誤差為±0.2 ℃;而且借助接近開關(guān)、光電開關(guān)以及流量計等傳感器,可以保證系統(tǒng)可靠的完成飼喂任務(wù)。與傳統(tǒng)人工飼喂相比,智能母豬飼喂控制系統(tǒng)能夠節(jié)省人力資源,提高母豬飼喂效率以及降低飼料的浪費,促進(jìn)豬只的生長并,進(jìn)一步減緩我國目前面臨的豬肉壓力。