溫鑫偉,馬 瑋,余科松,刁 珊,武志明
(山西農業大學 a.農業工程學院;b.園藝學院,山西 晉中 030801)
中國處于季風氣候控制區,夏季高溫多雨,病蟲害發生嚴重[1]。據國家統計局資料顯示,2019年我國農藥使用量為139.17萬t,且農業生產中利用農藥進行化學防治農作物病蟲害是我國最主要的防治方法之一[2]。目前,我國大多數地區防治病蟲害仍采用大容量、全覆蓋的農藥噴灑方式,只有20%~30%的農藥沉積在靶標區,其余的通過徑流、滲漏、飄移等方式流失到土壤中,破壞生態環境;同時,農藥藥液配比精度多依靠操作者的經驗,嚴重影響了農產品安全[3-5]。因此,實現農藥減量,提高農藥利用率成為了施藥技術發展的必然趨勢。植保無人機作為現代農業的新產物,由于具有作業效率高、效果好、省水省藥等優點,在近幾年來,得到了迅猛的發展[6]。據統計,農業植保無人機的工作效率超過了傳統人工噴灑效率的60%以上,極大地避免了農藥的浪費,對減少濫用農藥引起的環境問題有著重要的影響[7-8]。因此,農藥的精準實時變量噴灑技術和植保無人機的結合,成為了現代農業提高農藥利用率最佳的解決方案[9-10]。但是,目前市面上的植保無人機在遇到小地塊、無法規劃的地塊和障礙物附近時,只能手動作業。在手動作業過程中,無人機的飛行速度和農藥噴灑的流量均由人為控制,易出現漏噴、重噴和噴灑不均的情況。為解決此問題,設計了一種實時變量農藥噴灑控制系統,可以根據設置好的畝用量,實現無人機飛行速度和噴灑流量實時匹配,達到提高農藥利用率的目的。
系統采用大疆T30植保無人機作為系統搭建的平臺,如圖1所示。

圖1 大疆T30植保無人機Fig.1 DJI T30 plant protection UAV
大疆T30植保無人機是目前國內最先進和典型的多旋翼植保無人機之一。系統由GPS北斗定位模塊、流量計、STM32F103ZET6核心板、USART HMI 串口屏、隔膜泵、離心噴頭、電子調速器(ESC)、L298N電機控制器、433MHz無線數傳模塊、54V直流電池電源及電源穩壓降壓板組成,可分為4個模塊,分別為數據采集模塊、數據處理模塊、動作執行模塊及電源供電模快。實時變量噴灑控制系統技術方案框圖如圖2所示。其中,數據采集模塊負責采集植保無人機飛行速度及隔膜泵流量等參數;數據處理模塊負責對采集到的數據進行處理,并下達相應的執行指令;動作執行模塊負責對數據處理模塊下達的指令進行執行,控制隔膜泵的流量大小,調節離心噴頭的轉速,并將需要顯示的信息,通過433MHz傳輸給USART HMI 串口屏顯示;電源供電模塊負責給整個系統進行供電。整個系統的供電接口和各模塊之間的連接,都采用插拔接口設計,組裝、拆卸簡單方便,并將數據處理模塊和電源供電模塊進行了防水處理,將單片機的下載接口預留出來,方便后期的程序調試和升級。

圖2 實時變量噴灑控制系統技術方案框圖Fig.2 Block diagram of the technical scheme of real-time variable spraying control system
電源開關開啟后,系統需要等待大約3s進行系統的初始化;初始化完成后,USART HMI 串口屏會顯示當前的衛星數、經緯度、海波高度及無人機飛行速度等信息參數。工作時,用戶通過USART HMI 串口屏觸屏選擇智能模式,再跳轉頁面,輸入畝用量;等待輸入完成后,點擊確認按鈕,數據就會通過433MHz無線數傳模塊發送給STM32單片機單片機根據北斗GPS定位模塊和流量計采集到數據經過計算后,輸出合適的PWM信號控制隔膜泵的農藥流量和離心噴頭轉速,從而達到實時變量農藥噴灑的目的。同時,也可以選擇自定義模式,輸入所需的農藥流量和離心噴頭的轉速,實現自定義農藥噴灑的目的。
在植保作業對象、植保無人機噴藥幅寬、作業高度及所用農藥畝用量確定后,隔膜泵抽取藥箱的農藥流量和植保無人機的飛行速度是成正相關關系[11]。植保無人機在不同的飛行速度時所需施藥流量的計算式為
Q=60MWv
(1)
式中Q—理論流量(L/min);
M—農藥單位面積使用量(L/m2);
W—噴幅(m);
v—飛行速度(m/s)。
為了更加精確地控制農藥的流量,引入了PID算法。 控制器將流量計采集到的實際流量和理論流量比較后,經過PID計算得出一個輸出信號,將該輸出信號轉化為PWM信號,并將PWM信號輸出至L298N電機驅動器來控制隔膜泵,最終實現農藥流量的精確控制。本次采用增量式PID算法,增量式數字PID控制表達式為
△u(k)=KP[e(k)-e(k-1)]+KIe(k)+KD[e(k)-2e(k-1)+e(k-2)]
(2)

由于采用增量式PID控制,實際的輸出表達式為
u(k)=u(k-1)+Δu(k)
(3)
其中,u(k)為當前輸出;u(k-1)為上一次輸出。因此,當前輸出等于上次輸出和本次調節量的和。
2.1.1 主控制器
本設計采用ST公司生產的ARM控制器STM32F103ZET6單片機作為主控制器,具有64kB SRAM、512kB Flash、2個基本定時器、4個通用定時器、2個高級定時器、2個DMA控制器、3個SPI、2個IIC、5個串口及112個通用IO口等豐富的資源配置;使用STM32F103ZET6最小系統作為主控制系統,包括主控制芯片、時鐘電路、復位電路和調試電路[12-14]。
2.1.2 數據采集模塊
數據采集模塊由北斗GPS定位模塊和流量計模塊組成。本設計使用北斗GPS定位模塊為ATK-S1216F8-BD GPS/北斗模塊,同外部設備的通信接口采用 UART(串口)方式,輸出的GPS/北斗定位數據采用NMEA-0183協議(默認),控制協議為SkyTraq協議[15]。NMEA 0183 是美國國家海洋電子協會( National Marine Electronics Association)為海用電子設備制定的標準格式,目前也已成為GPS/北斗導航設備統一的RTCM( Radio Technical Commission for Maritime services)標準協議[16]。北斗GPS模塊用于采集植保無人機飛行速度、經緯度、海拔高度等無人機飛行參數信息,通過串口通訊將數據實時發送給主控制器。流量計選用YF-S201流量計傳感器,用于采集隔膜泵出水口的流量,主控制器通過外部中斷讀取產生的脈沖數,經過內部計算得到農藥的實時流量。
2.1.3 動作執行模塊
動作執行模塊由24V 7A L298N電機驅動器、隔膜泵、無刷電調及離心噴頭組成。L298N電機驅動器用于控制隔膜泵藥液流量,通過接收單片機發來的PWM信號,來改變輸出電壓,其輸出的電壓與輸入的脈沖占空比成線性關系,從而改變流量大小。無刷電調配合離心噴頭通過接收單片機的PWM信號來改變霧滴大小。
2.1.4 電源供電模塊
電源供電模塊采用分級降壓的方式。電源選用的是54V 6000mAh的鋰電池,通過一級降壓模塊將電壓降為24V,用于供離心噴頭和隔膜泵使用。二級降壓模塊將電壓從24V降為5V,供單片機、流量計和GPS&BD模塊使用。人機交互模塊單獨使用12.4V 2000mAh的航模鋰電池通過降壓模塊降為5V供電。
2.1.5 人機交互模塊
人機交互模塊由USART HMI智能串口屏和433MHz無線通信模塊組成。串口屏功能強大,具有多種組態控件,如按鈕控件、進度條控件、文本控件、指針控件等[17]。系統在運行過程中可以通過串口通訊根據廠家給定的指令集進行數據的修改和回傳,且它本身自帶處理器和flash,不會占用太多單片機資源。其界面UI設計,通過廠家提供的上位機軟件進行圖形化編程,大大縮短了人機交互開發周期。USART HMI智能串口屏作為地面手持設備,在植保無人機作業時,通過433MHz無線通信模塊與植保無人機上的主控制器進行通訊。433MHz無線通信模塊具有傳輸距離遠、通訊協議簡單及傳輸數據穩定等特點,可滿足設計需求。
系統軟件設計由數據采集部分、動作執行部分和上位機部分組成。
2.2.1 數據采集部分程序設計
數據采集部分程序設計由北斗GPS信息采集部分和流量計數據采集部分組成。
北斗GPS模塊與單片機的UART3進行通信,在主程序中,先進行串口初始化,在初始化中將波特率設為38 400,設置定位信息更新速度為5Hz,判斷GPS模塊是否在位;當串口3接收到數據后,傳給NMEA-0183解析函數,按照NMEA-0183協議進行解析,完成后將其存儲等待其他程序調用。流量計與單片機PE2引腳連接,將該引腳復用為外部中斷2,外部中斷配置為下降沿觸發,中斷服務函數內累加觸發脈沖,在滴答定時器的中斷服務函數里將1s內累計的脈沖數換算為頻率f,可根據公式計算出流量Q,即
(4)
式中Q—水泵流量(L /min);
f—脈沖頻率(Hz);
s—時間(s)。
2.2.2 動作執行部分程序設計
動作執行部分程序設計由隔膜泵驅動部分和離心噴頭驅動部分組成。
單片機通用定時器3的通道2用來輸出PWM信號控制隔膜泵,其PWM信號為固定頻率1kHz,占空比調節為0~100%,步長為1%。在程序中,首先調用TIM3_PWM_Init(arr,psc)函數初始化PWM配置,通過調用TIM_SetCompare2(TIM_TypeDef*TIMx,uint16_t Compare2)函數改變占空比來調節農藥流量。為了更加精確地控制流量,引入了增量式 PID 算法,代碼如下:
float PID (float temp_val)
{
/*傳入目標值*/
pid.target_val = temp_val;
/*計算目標值與實際值的誤差*/
pid.err=pid.target_val-pid.actual_val;
/*PID算法實現*/
Float increment_val = pid.Kp*(pid.err - pid. err_next)+pid.Ki*pid.err + pid.Kd*(pid.err -2 * pid.err_next + pid.err_last);
/*累加*/
pid.actual_val += increment_val;
/*傳遞誤差*/
pid.err_last = pid.err_next;
pid.err_next = pid.err;
/*返回當前實際值*/
returnpid.actual_val;
}
單片機通用定時器2的通道2輸出PWM信號用來控制離心噴頭,由于使用無刷電調控制,其PWM信號頻率為47.1965Hz,占空比調節為0~7.5%,步長為0.75%。由于是以大疆T30為開發平臺,因此使用了6個離心噴頭,并將單片機輸出的PWM信號用分線板將信號分到6個電調上用于控制離心噴頭。
2.2.3 上位機軟件設計
使用USART HMI串口屏作為上位機,在程序方面主要分為兩方面:一方面是上位機UI設計,通過廠家提供的USART HMI上位機軟件進行圖形化編程;另一方面是根據廠家給的指令集編寫相應的數據包解析程序和數據包編碼程序,實現和USART HMI串口屏通訊。在此,重點介紹上位機UI設計,上位機界面如圖3所示。首先,在USART HMI上位機軟件新建工程,通過界面右側的頁面新建頁面,界面左下角圖片庫用于背景;界面左側是相應的控件可以直接拖拉到頁面上,界面右下角屬性框修改控件屬性,界面底側為事件,如按鍵控件在按下前和按下后都算是一個事件,在事件下面進行編程,就可在事件發生后運行代碼。上位機工作流程圖如圖4所示。
系統的響應時間是衡量一個設備性能好壞的重要指標之一,本次測試分為系統開機初始化響應時間測試和串口屏與主控制器通訊系統時間響應測試。
系統開機初始化響應時間測試為在室外開闊環境下,從打開總電源到系統正常運行所需時間,試驗次數為10次,平均值為3.5s。現場測試圖如圖5所示。串口屏與主控制器通訊系統時間響應測試為在系統正常運行時,在串口屏離主設備1m和1km的距離,通過串口屏里的自定義模式設置隔膜泵流量和離心噴頭的轉速,記錄從串口屏點擊確定按鈕到主設備開始運行的時間;試驗次數為10次,在串口屏離主設備1m 的距離,平均響應時間為10ms;在串口屏離主設備1km 的距離,平均響應時間為45ms。

圖3 上位機界面Fig.3 PC interface

圖4 上位機工作流程圖Fig.4 Work flow chart of upper computer

圖5 現場測試圖Fig.5 Field test diagram
為了測試系統在植保無人機作業中,農藥流量跟隨植保無人機飛行速度的實時變化及對流量的控制性能,根據實際作業經驗,設置幅寬為常用值5m,1hm2農藥用量為常用值22.5L和30L,對7個不同飛行速度下系統1min的實際流量和預期流量進行測試。由于在植保無人機飛行過程中進行測試無實施性,因此選擇在室內無風環境下,通過串口屏手動輸入飛行速度,測量系統實際流量。測試結果如表1和表2所示。由表 1、表2可知:預期流量和實際流量最小誤差為1.2%,最大為 4.4%,整體誤差不超過4.5%,處在誤差范圍內。分析最大流量誤差較大的原因,可能有兩點:一是在實際測試時有誤差;二是使用的隔膜泵精度較差。

表1 用量22.5 L/hm2系統流量控制性能測試數據Table 1 The usage per hectare is 22.5L/hm2 system flow control performance test data

表2 用量30 L/hm2系統流量控制性能測試數據Table 2 The usage per hectare is 30 L/hm2 system flow control performance test data

續表2
1)設計了一種基于STM32F103ZET6單片機的實時農藥變量控制系統和一種基于PWM技術與增量式 PID 算法相結合的農藥流量控制方法。工作時,通過北斗GPS定位模塊采集無人機飛行速度等無人機姿態參數,通過無線通信和串口通訊協議完成數據傳輸,實現了植保無人機在手動作業模式下,施藥流量隨植保無人機飛行速度變化而實時匹配。對系統響應時間性能和系統流量控制性能進行了測試,結果表明:系統開機初始化時間為3.5s,在地面站離主設備1m~1km距離之間,系統響應時間為10~45ms之間;農藥流量控制系統的實際流量和理論流量之間的平均誤差為2.2%,系統性能和控藥精度都滿足試驗預期,完成了設計要求。
2)基于USART HMI串口屏設計了系統的上位機,可通過屏幕實時顯示系統的作業參數,同時通過433MHz無線通信模塊實現了遠距離控制,滿足了實際作業需求。
3)系統中噴頭為離心噴頭,相比壓力式噴頭霧化效果更好,霧滴覆蓋率和霧滴粒徑范圍更廣,且可以在上位機上直接設置噴頭轉速來改變霧滴粒徑。
4)根據試驗數據分析,在施藥流量低于1L/min和高于3.5L/min相對誤差會高于3%,后續還需要通過優化PID算法和采用更高精度、更大功率的隔膜泵來改進設計。