王妍力
(濟南信息工程學校,山東濟南,250103)
眾所周知,工業(yè)生產(chǎn)線管道較長,存儲罐多,各種閥門數(shù)不勝數(shù),在生產(chǎn)運行過程中可能會造成能量與物質(zhì)的意外逸散,產(chǎn)生安全事故。大部分工廠運維的主要任務就是實施對這些管道、閥門等設備進行檢測、維護,以免出現(xiàn)生產(chǎn)事故。尤其是化工生產(chǎn)線的很多生產(chǎn)工作區(qū)域是危險和有毒的,工作人員不能長時間停留,導致工作進度緩慢,效率低等問題。綜上所述,工業(yè)生產(chǎn)線急需一種遠程遙控的巡檢機器人。
本機器人的底盤采用金屬雙驅(qū)履帶車,12V 12Ah鋰電池供電。該設計由4部分組成,第一部分為視頻監(jiān)控部分:利用攝像頭采集現(xiàn)場視頻圖像,通過圖像發(fā)射單元將現(xiàn)場圖像傳送到后臺顯示屏上,方便操作員判斷分析現(xiàn)場,調(diào)整機器人的前進方向。第二部分為化工環(huán)境采集發(fā)送模塊,通過溫濕度傳感器SHT20和光照傳感器采集化工現(xiàn)場環(huán)境變量,將采集到的數(shù)據(jù)通過STM32整合后再利用EDP協(xié)議經(jīng)過ESP8266發(fā)送到云平臺上,作為數(shù)據(jù)的保存,方便工程師的分析。第三部分為車體控制通信部分,采用大功率的NRF24L01作為遙控信號發(fā)射模塊,首先開發(fā)簡單,成本低,體積小,傳輸效率較高,現(xiàn)一款較為成熟的模組。第四部分為后臺遙控通信部分,其控制方式采用搖桿式傳感器,單片機利用ADC采集到搖桿的信號,將需要執(zhí)行的命令由NRF24L01發(fā)出去,OLED是為了監(jiān)視其通信狀態(tài)。接收控制端接收到相應的信號,由單片機處理后分配給下級執(zhí)行,完成遙控控制[3~5]??蚣軋D如圖1所示。
圖1 系統(tǒng)整體設計框架圖
該機器人工作環(huán)境復雜,需要時時與后臺進行數(shù)據(jù)交換,控制核心必須抗干擾、高可靠,故該設計中采用的MCU是由意法半導體公司(ST)生產(chǎn)的STM32F103C8T6芯片,該芯片擁有較快的運算能力,豐富的外設資源,完全滿足該設計的需要。
其內(nèi)核為ARM Cortex-M3, 擁有待機為2μA超低功耗的性能,供電電壓2.0~3.6V并且兼容5V的I/O管腳等特點。芯片的部分原理圖見圖2。
本次設計顯示部分采用的是0.96寸的OLED,其分辨率和LCD一樣都是128×64,是一款低功耗的產(chǎn)品,整體功率低于0.1W,若只顯示漢字使用屏幕功耗只有0.06W,耗電量遠遠低于常見的TFT、LCD屏幕,可視角度近160°,幾乎成為一個平面。本設計采用的是SPI接口的OLED,時鐘引腳D0接PA7,數(shù)據(jù)引腳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電阻器,當搖動手柄的時候,電位器抽頭的對應的阻值也會發(fā)生變化。此時給搖桿加上電源,利用電阻分壓的原理,再用單片機的ADC去采集每個角度對應的電壓值來判斷需要控制的方向[6]。
模塊采用800線的攝像頭,外加一套2.1mm的鏡頭,拍攝到的畫面格外清晰。圖傳用的5.8G透傳模組,有48個工作頻道,兼容市場上的全部5.8G頻道;功耗特別小,只有600mW,200mA;圖傳模塊可以連接手機,讓手機作為一個顯示器,大大地減少來開發(fā)成本,只需下載一個APP即可[7]。
本次采用的SHT20與BH1750FVI都是I2C接口的,意味著只需4根線就可以通信,其中有兩條電源線,一條時鐘線,一條數(shù)據(jù)線。極大地節(jié)約了IO口使用,降低MCU的負擔,保證了數(shù)據(jù)通信的穩(wěn)定性。溫濕度傳感器原理圖如圖3所示,光照強度傳感器原理圖如圖4所示。
圖3 溫濕度傳感器原理圖
圖4 光照強度傳感器原理圖
發(fā)射部分:由于STM32F 103C8T6需要3.3V供電,雙軸搖桿需要的電源要穩(wěn)定,不能有雜波,以免影響ADC采集的精度。采用12V 12Ah的電池作為供電電源,所以采用TI公司TPS7333作為電源管理芯片,有著紋波較小,輸入輸出壓差很低的特點。
接收部分:接收部分對電源的要求不是很高,主要是給各個模塊來供電。預估后發(fā)現(xiàn)需要3.3V供電的模塊所需電流最大700mA,需要5V供電的模塊所需最大電流500mA。根據(jù)需要AMS1117-3.3和AMS1117-5.0這兩款穩(wěn)壓芯片就能達到要求,并且外圍電路比較簡單,價格也很便宜。
本機器所用的云平臺為中國移動公司的云平臺ONENET。該平臺可以根據(jù)開發(fā)者的需要來選擇所用到的協(xié)議,比如EDP、HTTP、MQTT等。ONENET云平臺是由中國移動創(chuàng)立的開放性的物聯(lián)網(wǎng)平臺,該平臺為了能讓開發(fā)者更容易地對接,平臺開發(fā)人員已經(jīng)將所有的接口已經(jīng)封裝好了,用戶只需調(diào)用固定的函數(shù),設定獨有的ID賬號和密鑰即可。有著方便快捷,免費,穩(wěn)定等特點。官方給出了完整的DEMO,開發(fā)者只需將自己所需要的功能添加進去,選定好通信協(xié)議即可。該機器人采用EDP協(xié)議,既能上傳數(shù)據(jù)又能下發(fā)數(shù)據(jù),在沒有數(shù)據(jù)傳輸?shù)臅r候只需向服務器發(fā)送心跳包來維持它們之間的連接,以免中斷造成數(shù)據(jù)的丟失。
該機器人的程序設計主要包括運動控制系統(tǒng)的設計、圖像回傳系統(tǒng)的設計、數(shù)據(jù)通信系統(tǒng)的設計和數(shù)據(jù)采集系統(tǒng)的設計見圖5,各個子程序共同配合完成機器人的控制作用。
圖5 機器人控制系統(tǒng)結(jié)構(gòu)圖
機器人的運動狀態(tài)主要是前進、后退、轉(zhuǎn)彎,控制機器人的運動狀態(tài)就是控制機器人兩個驅(qū)動電機的轉(zhuǎn)速。機器人底盤采用履帶鋁合金底盤,兩個電機通過減速齒輪驅(qū)動機器人運動。通過頻率為2kHz的PWM控制電機的轉(zhuǎn)速,當兩電機的轉(zhuǎn)速相近時,機器人直線前行;控制電機的PWM的脈寬不同,可以實現(xiàn)機器人的轉(zhuǎn)向[8]。
3.1.1 PID控制算法
機器人驅(qū)動電機采用增量式PID控制算法,在電機的減速齒輪上裝有500線的光電編碼器,STM32F103C8T6單片機計數(shù)光電編碼器的脈沖數(shù),通過計算得出PWM的脈沖寬度,形成閉環(huán)控制。為了程序方便,系統(tǒng)將編碼器的數(shù)值作為設定值,單片機采集的編碼器數(shù)值為實際值,轉(zhuǎn)速誤差()e t=設定值—編碼器數(shù)值。PID算法的核心就是通過誤差控制電機轉(zhuǎn)速,Δ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)為上兩次誤差。調(diào)整P、I、D的三個參數(shù),得到最終PWM的輸出。
3.1.2 前進、轉(zhuǎn)彎控制
機器人運動主要是前進、轉(zhuǎn)彎控制,后退就是與前進正好相反。前進時保持兩路PWM占空比不變,雙履帶轉(zhuǎn)速一樣,機器人實現(xiàn)直線行走。當需要右拐時,左輪PWM占空比增大,左輪加速,右輪停止轉(zhuǎn)動,實現(xiàn)右轉(zhuǎn)。左轉(zhuǎn)與右轉(zhuǎn)相反。當需要180°原地掉頭時,是左輪前進,右輪倒轉(zhuǎn)實現(xiàn)180°掉頭。
該機器人的通信系統(tǒng)主要由發(fā)送程序和接收程序構(gòu)成,發(fā)送程序首先進行系統(tǒng)自檢確定系統(tǒng)是否工作正常,系統(tǒng)通信正常的后就可以正常傳輸數(shù)據(jù)了,先將NRF24L01的初始化配置成發(fā)送模式,再利用單片機的ADC檢測搖桿的值,并且在OLED上顯示所采集到的數(shù)據(jù),然后通過NRF24L01將數(shù)據(jù)發(fā)送出去[9~10],完成遙控手柄的操作。數(shù)據(jù)的接收端通過接收到的指令控制機器人的運行,為了保證發(fā)送接收數(shù)據(jù)的準確,每次發(fā)送數(shù)據(jù)的最后兩位采用CRC16校驗。
數(shù)據(jù)采集系統(tǒng)主要任務是采集傳感器數(shù)值,該機器人每5ms采集一次傳感器數(shù)值,通過單片機自帶12位ADC讀取數(shù)據(jù)時采集到的數(shù)值會帶有誤差。為了減小采集誤差,程序設計中采用求平均值和滑窗的濾波算法。
3.3.1 平均濾波算法
單片機5ms讀一次ADC的數(shù)值,把數(shù)據(jù)裝入長度為10的數(shù)組中,對數(shù)組中的數(shù)值從小到大進行排序,即ADC_Data[ 10]= {a1,a2, ···,a10},其中a1<a2<a3。為了去除ADC采集中的較大干擾,去掉最小的2個數(shù)和最大的兩個數(shù),選擇數(shù)組中間的6個數(shù)求平均作為ADC的輸出值,這樣可以有效避免ADC的值的較大誤差帶給平均值的干擾。即ADC_Value=。通過上述算法,單片機每50ms得到一次精確的ADC數(shù)值,用于后續(xù)的計算。
3.3.2 滑窗濾波算法
經(jīng)過平均后的ADC的值有時跳變較大,還需要做平滑處理,防止機器人運動的震顫,此時該系統(tǒng)采用滑窗濾波的算法。經(jīng)試驗得知采用長度為10的滑窗算法數(shù)據(jù)跳變較少,平滑效果較好,將平均后的ADC值裝到一個長度為10的數(shù)組中,將這個數(shù)組的平均值作為最終使用值?;皵?shù)組的長度10保持不變,下一個ADC的值裝入數(shù)組作為第10個數(shù),將第一個數(shù)拋棄,每加入一個數(shù)據(jù),就會拋棄一個最前的數(shù)據(jù),每次都是10個數(shù)據(jù)求平均,這樣可以使得數(shù)據(jù)更加平滑。
該機器人主要采用STM32為控制核心,通過遠程手柄操作,實現(xiàn)了對工業(yè)生產(chǎn)線等復雜環(huán)境的溫度、濕度等量進行監(jiān)控。通過遠程遙控,機器人可以到達對人體有危險的場所,利用攝像頭可以隨時觀察危險的生產(chǎn)環(huán)境。該機器人實用強,尺寸較小,操作方便,具有一定的經(jīng)濟效益。