王妍力
(濟南信息工程學校,山東濟南,250103)
眾所周知,工業生產線管道較長,存儲罐多,各種閥門數不勝數,在生產運行過程中可能會造成能量與物質的意外逸散,產生安全事故。大部分工廠運維的主要任務就是實施對這些管道、閥門等設備進行檢測、維護,以免出現生產事故。尤其是化工生產線的很多生產工作區域是危險和有毒的,工作人員不能長時間停留,導致工作進度緩慢,效率低等問題。綜上所述,工業生產線急需一種遠程遙控的巡檢機器人。
本機器人的底盤采用金屬雙驅履帶車,12V 12Ah鋰電池供電。該設計由4部分組成,第一部分為視頻監控部分:利用攝像頭采集現場視頻圖像,通過圖像發射單元將現場圖像傳送到后臺顯示屏上,方便操作員判斷分析現場,調整機器人的前進方向。第二部分為化工環境采集發送模塊,通過溫濕度傳感器SHT20和光照傳感器采集化工現場環境變量,將采集到的數據通過STM32整合后再利用EDP協議經過ESP8266發送到云平臺上,作為數據的保存,方便工程師的分析。第三部分為車體控制通信部分,采用大功率的NRF24L01作為遙控信號發射模塊,首先開發簡單,成本低,體積小,傳輸效率較高,現一款較為成熟的模組。第四部分為后臺遙控通信部分,其控制方式采用搖桿式傳感器,單片機利用ADC采集到搖桿的信號,將需要執行的命令由NRF24L01發出去,OLED是為了監視其通信狀態。接收控制端接收到相應的信號,由單片機處理后分配給下級執行,完成遙控控制[3~5]。框架圖如圖1所示。

圖1 系統整體設計框架圖
該機器人工作環境復雜,需要時時與后臺進行數據交換,控制核心必須抗干擾、高可靠,故該設計中采用的MCU是由意法半導體公司(ST)生產的STM32F103C8T6芯片,該芯片擁有較快的運算能力,豐富的外設資源,完全滿足該設計的需要。
其內核為ARM Cortex-M3, 擁有待機為2μA超低功耗的性能,供電電壓2.0~3.6V并且兼容5V的I/O管腳等特點。芯片的部分原理圖見圖2。
本次設計顯示部分采用的是0.96寸的OLED,其分辨率和LCD一樣都是128×64,是一款低功耗的產品,整體功率低于0.1W,若只顯示漢字使用屏幕功耗只有0.06W,耗電量遠遠低于常見的TFT、LCD屏幕,可視角度近160°,幾乎成為一個平面。本設計采用的是SPI接口的OLED,時鐘引腳D0接PA7,數據引腳D1連接PA6,復位引腳RES連接PA5,命令選擇引腳連接PA4,見圖2。
本設計采用的無線遙控模塊為增強型的NRF24L01,功率相比同尺寸的模塊大,同樣傳輸距離可以達到5km,為機器人的通信提供可靠保障。它工作在2.4~2.5GHz頻段,該頻段是世界通用的ISM頻段。有著高速率、多頻點、超小型、低成本等特點,常用于一些要求低功耗、低成本、短距離的場合。模式控制引腳CE接STM32的PA15,片選線CSN接STM32的PA12,時鐘線SCK接STM32的PB13,MOSI、MISO分別 接STM32的PB15、PB14,中 斷 引 腳IRQ接STM32的PA11,見圖2。

圖2 主控核心原理圖
本設計方向組件采用的十字搖桿PS2,它是一個雙向10K電阻器,當搖動手柄的時候,電位器抽頭的對應的阻值也會發生變化。此時給搖桿加上電源,利用電阻分壓的原理,再用單片機的ADC去采集每個角度對應的電壓值來判斷需要控制的方向[6]。
模塊采用800線的攝像頭,外加一套2.1mm的鏡頭,拍攝到的畫面格外清晰。圖傳用的5.8G透傳模組,有48個工作頻道,兼容市場上的全部5.8G頻道;功耗特別小,只有600mW,200mA;圖傳模塊可以連接手機,讓手機作為一個顯示器,大大地減少來開發成本,只需下載一個APP即可[7]。
本次采用的SHT20與BH1750FVI都是I2C接口的,意味著只需4根線就可以通信,其中有兩條電源線,一條時鐘線,一條數據線。極大地節約了IO口使用,降低MCU的負擔,保證了數據通信的穩定性。溫濕度傳感器原理圖如圖3所示,光照強度傳感器原理圖如圖4所示。

圖3 溫濕度傳感器原理圖

圖4 光照強度傳感器原理圖
發射部分:由于STM32F 103C8T6需要3.3V供電,雙軸搖桿需要的電源要穩定,不能有雜波,以免影響ADC采集的精度。采用12V 12Ah的電池作為供電電源,所以采用TI公司TPS7333作為電源管理芯片,有著紋波較小,輸入輸出壓差很低的特點。
接收部分:接收部分對電源的要求不是很高,主要是給各個模塊來供電。預估后發現需要3.3V供電的模塊所需電流最大700mA,需要5V供電的模塊所需最大電流500mA。根據需要AMS1117-3.3和AMS1117-5.0這兩款穩壓芯片就能達到要求,并且外圍電路比較簡單,價格也很便宜。
本機器所用的云平臺為中國移動公司的云平臺ONENET。該平臺可以根據開發者的需要來選擇所用到的協議,比如EDP、HTTP、MQTT等。ONENET云平臺是由中國移動創立的開放性的物聯網平臺,該平臺為了能讓開發者更容易地對接,平臺開發人員已經將所有的接口已經封裝好了,用戶只需調用固定的函數,設定獨有的ID賬號和密鑰即可。有著方便快捷,免費,穩定等特點。官方給出了完整的DEMO,開發者只需將自己所需要的功能添加進去,選定好通信協議即可。該機器人采用EDP協議,既能上傳數據又能下發數據,在沒有數據傳輸的時候只需向服務器發送心跳包來維持它們之間的連接,以免中斷造成數據的丟失。
該機器人的程序設計主要包括運動控制系統的設計、圖像回傳系統的設計、數據通信系統的設計和數據采集系統的設計見圖5,各個子程序共同配合完成機器人的控制作用。

圖5 機器人控制系統結構圖
機器人的運動狀態主要是前進、后退、轉彎,控制機器人的運動狀態就是控制機器人兩個驅動電機的轉速。機器人底盤采用履帶鋁合金底盤,兩個電機通過減速齒輪驅動機器人運動。通過頻率為2kHz的PWM控制電機的轉速,當兩電機的轉速相近時,機器人直線前行;控制電機的PWM的脈寬不同,可以實現機器人的轉向[8]。
3.1.1 PID控制算法
機器人驅動電機采用增量式PID控制算法,在電機的減速齒輪上裝有500線的光電編碼器,STM32F103C8T6單片機計數光電編碼器的脈沖數,通過計算得出PWM的脈沖寬度,形成閉環控制。為了程序方便,系統將編碼器的數值作為設定值,單片機采集的編碼器數值為實際值,轉速誤差()e t=設定值—編碼器數值。PID算法的核心就是通過誤差控制電機轉速,Δu(t) =P· [e(t)-e(t-1)] +I·e(t) +D·[e(t)- 2e(t-1)+e(t- 2)],式中e(t)為誤差,e(t-1)為上次誤差,e(t-2)為上兩次誤差。調整P、I、D的三個參數,得到最終PWM的輸出。
3.1.2 前進、轉彎控制
機器人運動主要是前進、轉彎控制,后退就是與前進正好相反。前進時保持兩路PWM占空比不變,雙履帶轉速一樣,機器人實現直線行走。當需要右拐時,左輪PWM占空比增大,左輪加速,右輪停止轉動,實現右轉。左轉與右轉相反。當需要180°原地掉頭時,是左輪前進,右輪倒轉實現180°掉頭。
該機器人的通信系統主要由發送程序和接收程序構成,發送程序首先進行系統自檢確定系統是否工作正常,系統通信正常的后就可以正常傳輸數據了,先將NRF24L01的初始化配置成發送模式,再利用單片機的ADC檢測搖桿的值,并且在OLED上顯示所采集到的數據,然后通過NRF24L01將數據發送出去[9~10],完成遙控手柄的操作。數據的接收端通過接收到的指令控制機器人的運行,為了保證發送接收數據的準確,每次發送數據的最后兩位采用CRC16校驗。
數據采集系統主要任務是采集傳感器數值,該機器人每5ms采集一次傳感器數值,通過單片機自帶12位ADC讀取數據時采集到的數值會帶有誤差。為了減小采集誤差,程序設計中采用求平均值和滑窗的濾波算法。
3.3.1 平均濾波算法
單片機5ms讀一次ADC的數值,把數據裝入長度為10的數組中,對數組中的數值從小到大進行排序,即ADC_Data[ 10]= {a1,a2, ···,a10},其中a1<a2<a3。為了去除ADC采集中的較大干擾,去掉最小的2個數和最大的兩個數,選擇數組中間的6個數求平均作為ADC的輸出值,這樣可以有效避免ADC的值的較大誤差帶給平均值的干擾。即ADC_Value=。通過上述算法,單片機每50ms得到一次精確的ADC數值,用于后續的計算。
3.3.2 滑窗濾波算法
經過平均后的ADC的值有時跳變較大,還需要做平滑處理,防止機器人運動的震顫,此時該系統采用滑窗濾波的算法。經試驗得知采用長度為10的滑窗算法數據跳變較少,平滑效果較好,將平均后的ADC值裝到一個長度為10的數組中,將這個數組的平均值作為最終使用值。滑窗數組的長度10保持不變,下一個ADC的值裝入數組作為第10個數,將第一個數拋棄,每加入一個數據,就會拋棄一個最前的數據,每次都是10個數據求平均,這樣可以使得數據更加平滑。
該機器人主要采用STM32為控制核心,通過遠程手柄操作,實現了對工業生產線等復雜環境的溫度、濕度等量進行監控。通過遠程遙控,機器人可以到達對人體有危險的場所,利用攝像頭可以隨時觀察危險的生產環境。該機器人實用強,尺寸較小,操作方便,具有一定的經濟效益。