蠕動式爬桿機器人控制系統(tǒng)設(shè)計
蠕動式爬桿機器人控制系統(tǒng)設(shè)計,蠕動,式爬桿,機器人,控制系統(tǒng),設(shè)計
1 1 2 2 3 3 4 4 D D C C B B A A CSTCE16M0V53-R0 16MHZ GND GND VCC3.3 100pF C1 GND T e x t 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1602 LCD P1 1602-LCD D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12 D13 A0 A1 A2 A3 A4 A5 D 1 3 A 0 A 1 A 2 A 3 1K R11 RPot VCC GND 1K R12 res VCC GND 1 2 3 4 P3 藍(lán)牙 1 2 3 4 P4 DHT11 VCC GND 10K R41 GND VCC RX1 TX1 TX2 RX2 (ADC0)PC0) 23 (ADC1)PC1 24 (ADC2)PC2 25 (ADC3)PC3 26 (ADC4)PC4 27 (ADC5)PC5 28 (AIN0)PD6 12 (AIN1)PD7 13 (ICP)PB0 14 (INT0)PD2 4 (INT1)PD3 5 (MISO)PB4 18 (MOSI)PB3 17 (OC1)PB1 15 (RXD)PD0 2 (SCK)PB5 19 (SS)PB2 16 (T0)PD4 6 (T1)PD5 11 (TXD)PD1 3 AGND 22 AREF 21 AVCC 20 GND 8 RESET 1 VCC 7 XTAL1 9 XTAL2 10 (ADC6)PC6 29 (ADC7)PC7 30 ZU1 ATMEGA328P-PU A6 A7 KG SW6 VCC12 VCC 1 GND 2 GND 3 DC DC-012A GND D1 LED-貼片-直插 10K R13 GND VCC 1 2 3 4 P2 串口 VCC GND 1 2 3 P5 舵機 1 2 3 P6 舵機 1 2 3 P7 舵機 VCC-dj GND Vin 1 OUT 2 GND 3 F B 4 O N / O F F 5 U2 lm2596s 1K R21 6nF C21 500pF C22 500pF C23 D2 10mH L21 1K R22 RPot VCC-dj VCC12 IN 1 2 OUT 3 GND U3 LM7805 VCC12 VCC GND 47pF C31 47pF C32 1 2 3 4 P8 氣壓計 VCC GND 1 2 3 P9 壓力傳感器 1 2 3 P10 壓力傳感器 VCC VCC GND GND D 1 1 D 1 2 Board Stack Report 目錄
目 錄
摘 要 III
Abstract IV
1 緒 論 1
1.1 論文的選題背景 1
1.2 爬桿機器人研究狀況及發(fā)展方向 1
2 蠕動式爬桿機器人的概述 3
2.1 蠕動式爬桿機器人的組成及其功能 3
2.2 蠕動式爬桿機器人的運動分析 5
2.2.1 蠕動式爬桿機器人的運動組成 5
2.2.2 蠕動式爬桿機器人的運動分解及示意圖 5
3 蠕動式爬桿機器人的硬件電路設(shè)計 8
3.1 硬件控制系統(tǒng)整體框圖的設(shè)計 8
3.2 控制板及各個元器件的選擇 9
3.2.1電機驅(qū)動的選擇 10
3.2.2傳感器的選擇 10
3.2.3藍(lán)牙遙控的選擇 12
3.2.4 顯示器的選擇 12
3.2.5電源模塊的選擇 14
3.2.6 開關(guān)的選擇 15
3.2.7 控制主板的選擇 9
3.3 硬件電路圖的設(shè)計 16
4 蠕動式爬桿機器人的軟件設(shè)計 18
4.1 軟件控制系統(tǒng)流程圖 18
4.2 控制程序的設(shè)計 19
4.2.1開發(fā)環(huán)境 19
4.2.2程序的設(shè)計 20
5 蠕動式爬桿機器人的前景 25
6 結(jié) 論 26
參考文獻 27
附 錄 28
致 謝 34
IV
摘要
蠕動式爬桿機器人控制系統(tǒng)設(shè)計
摘 要
工業(yè)化的發(fā)展,城市化的不斷推進,促成了管道系統(tǒng)的不斷成熟。在現(xiàn)有的移動機器人中它們都具有自己的專一性和通用性的特點。廣泛的應(yīng)用于海陸空等全方位探測與運輸。針對于管道類圓柱狀的攀爬機器人的研究尚不成熟。
為了滿足現(xiàn)在的社會需求,我們準(zhǔn)備設(shè)計一款可以在管道等桿子上攀爬的機器人。本文首先對蠕動式爬桿機器人的一種介紹,區(qū)別于現(xiàn)有移動式機器人的比較。通過對其組成的結(jié)構(gòu)和運動狀態(tài)的分析,結(jié)合此機器人的優(yōu)缺點,與需要工作的要求和環(huán)境來設(shè)計這款機器人。基于ARDUINO開發(fā)板下與多種傳感器的配合以完成所需工作。通過對其控制系統(tǒng)結(jié)構(gòu)框圖的設(shè)計與其軟件流程圖的設(shè)計綜合設(shè)計其硬件電路和源程序。并對蠕動式爬桿機器人的優(yōu)缺點進行分析,未來發(fā)展的方向提供可行的支持。
關(guān)鍵詞:蠕動式爬桿機器人;ARDUINO;硬件電路;源程序;未來發(fā)展
Abstract
The Control System Design of Squirmy Climbing Pole Robot
Abstract
The development of industrialization and the continuous development of urbanization have contributed to the continuous maturity of the pipeline system.In the existing mobile robots, they have their own specificity and universality.It is widely used in sea, land, air and other comprehensive exploration and transportation.It is not mature to study the climbing robot of tubular column.
To meet the current social needs, we are ready to design a robot that can climb on a pole.This paper first introduces a kind of introduction to Squirmy Climbing Pole robot, which is different from the comparison of existing mobile robot.Based on the analysis of the structure and motion state of the robot, this robot is designed with the advantages and disadvantages of the robot and the requirements and environment of the work.Based on the ARDUINO development board with various sensors to complete the required work.The hardware circuit and source program are designed by the design of the structure block diagram of the control system and the software flow chart.
The advantages and disadvantages of Squirmy Climbing Pole robot are analyzed, and provide viable support for future development.
Key words: Peristaltic Pipe Robot; ARDUINO; Hardware Circuit ;Source Program;
Future Development
第一章 緒論
1緒 論
1.1 論文的選題背景
隨著工業(yè)化發(fā)展,城市化的不斷推進,冶煉行業(yè)的成熟發(fā)展,管道也成為了這個社會各個行業(yè)不可缺少的組織構(gòu)架。也推進了針對于管道攀爬的機器人的各類研究?,F(xiàn)有的移動機器人一般分為以下幾種,路面越障機器人(如圖1.1),水下機器人(如圖1.2)與空中飛行機器人(如圖1.3),一般用于探測,測繪,搬運,救援等功能。都具有自己的專業(yè)性與通用性。然而針對某一特殊工作環(huán)境下都需要一定的成本[1]。
圖1.3
圖1.1
圖1.2
根據(jù)研究調(diào)查,爬桿機器人特別適用于工礦企業(yè),因為此類企業(yè)擁有成熟的管道系統(tǒng),需要機器人進行定期的巡檢。針對于爬桿巡檢機器人國內(nèi)國外都有一定程度的研究,一般由分為管道內(nèi)部檢測,與管道表面檢測。一般管道的周圍的環(huán)境檢測數(shù)據(jù)有高度,溫度,濕度的檢測,通過數(shù)據(jù)的分析,排查與預(yù)防管道故障。然而一般這類問題的檢測很少有作業(yè)人員,爬桿位置的偏僻,人員行動的安全都是限制因素。然而工廠事故的原因也有不少來源于管道的泄露[2]。因此本文主要研究一種針對于管道等桿狀物攀爬的爬桿機器人。
1.2 爬桿機器人狀況及研究方向
蠕動式爬桿機器人是一項特殊的移動機器人的設(shè)計思想,主要適用于細(xì)長管道的攀爬功能。根據(jù)攀爬機器人的工作環(huán)境設(shè)計的適應(yīng)性的攀爬機構(gòu),以實現(xiàn)在圓柱狀桿面的攀爬。
攀爬機器人是特種機器人領(lǐng)域范圍內(nèi)的一個關(guān)鍵研究方向,與此也成為當(dāng)前機器人研究方向的重點。在過去的一些年,研究出了各種各樣的仿生機器人。比較典型的仿壁虎爬壁機器人、仿人型機器人等。這些機器人主要從外形結(jié)構(gòu)和功有仿蛇機器人、能上對生物進行模仿,攀爬機器人的設(shè)計也是從一些爬樹動物的運動方式上得到啟發(fā)。它把地面上機器人移動技術(shù)與吸附技術(shù)有機結(jié)合起來,能夠在垂直壁面上夾緊運動,而且可以攜帶工具進行作業(yè)。
傳統(tǒng)的攀爬機器人的設(shè)計,主要分類行走式和吸附式的運動模式。本文將設(shè)計一款可以蠕動前進,并夾緊的設(shè)計結(jié)構(gòu)。大多數(shù)的機器人適用于某一具體行業(yè),更具有其單一性,與專一性的特點。在市場上現(xiàn)在的移動式機器人工作環(huán)境的限制已經(jīng)不能滿足現(xiàn)在的日常生活工作的需求。然而本次重點更多在于其控制系統(tǒng)的設(shè)計。它適用于路燈桿,斜拉橋拉索等等圓柱狀表面的水平,溫度,濕度,氣體等人難以到達(dá)的位置的檢測,減少人工的操作。本機器人通過藍(lán)牙傳輸,能夠?qū)崟r檢測位置環(huán)境的變化。來滿足環(huán)境所需的基本要求。
這里設(shè)計了一款控制系統(tǒng)。其驅(qū)動系統(tǒng),傳動系統(tǒng),行走機構(gòu),檢測系統(tǒng),機身的設(shè)計,通過無線數(shù)據(jù)傳輸系統(tǒng),使用遙控終端的操作來達(dá)到目的。
參考相關(guān)的系統(tǒng)設(shè)計,來完成蠕動式爬桿機器人的控制系統(tǒng)設(shè)計。本質(zhì)思想與操作實際為通過數(shù)字信號的輸入,控制伺服電機的旋轉(zhuǎn),完成需要的工作狀態(tài),實現(xiàn)整體的運動合成,達(dá)到運動的需求。簡單的運動,但需要采集一些數(shù)據(jù),存儲在數(shù)據(jù)庫。
本次設(shè)計的機器人,可以簡單快捷方便的進行一下周圍環(huán)境的檢測,為常見故障進行常規(guī)的排查。蠕動式爬桿機器人的設(shè)計主要分為機械結(jié)構(gòu)的設(shè)計與控制系統(tǒng)的設(shè)計。此文是對蠕動式爬桿機器人的控制系統(tǒng)設(shè)計進行研究?;贏RDUINO開發(fā)板(如圖1.4)和功能要求下進行蠕動式爬桿機器人的硬件電路設(shè)計與軟件源程序的設(shè)計。
圖1.4
根據(jù)蠕動式爬桿機器人的運動要求,我們選取常見的豎直桿狀物進行研究。機器人在爬桿上有上升下降,前進后退,停止的動作。都是通過伺服電機之間的配合來進行驅(qū)動,完成所需要完成的動作。機器人硬件的控制系統(tǒng)又分為主控制器的模塊,電機驅(qū)動模塊,信號反饋模塊,通信模塊,電源模塊等組成。由于選取ARDUINO,所以自帶一些模塊,有些模塊需要額外的添加。
34
第二章 蠕動式爬桿機器人的概述
2 蠕動式爬桿機器人的概述
2.1 蠕動式爬桿機器人的組成及其功能
(1)行走與導(dǎo)向結(jié)構(gòu)
主要由一組機構(gòu),來完成機器人前后伸縮動作。通過兩個柱狀的定位桿進行方向的定位,使其在固定的導(dǎo)軌上運動,配合連桿裝置,逐步完善機器人前后行進動作的規(guī)范性,標(biāo)準(zhǔn)性。再配合兩個夾爪的張合實現(xiàn)對爬桿的夾緊動作。通過兩組的動作的疊加,使我們機器人可以滿足初步的動作需求。(圖2.1)(圖2.2)
圖2.2 蠕動式爬桿機器人整體構(gòu)架b
nb
圖2.1 蠕動式爬桿機器人整體構(gòu)架a
(2) 爬行驅(qū)動裝置
通過機器人整體的受力分析,選擇合適的伺服電機。來驅(qū)動主運動,與兩個夾爪的運動。通過對舵機旋轉(zhuǎn)角度的控制,來實現(xiàn)運動所需求的各種狀態(tài)。
(3) 電源
使用可充電的外接電源供電,經(jīng)過分壓與穩(wěn)壓模塊來滿足整個機器的電源需求。其中需要供電的有舵機,顯示器,傳感器,LED小燈,等其他電子元件。
(4) 傳感器
該機器人需要兩個壓力傳感器來檢測夾爪處的壓力,當(dāng)達(dá)到一定值的時候夾爪電機停止運動,保持夾緊狀態(tài)。用來保護舵機,以免發(fā)熱而導(dǎo)致舵機的損壞。因為舵機在沒有停止命令下會持續(xù)夾緊,此時的電能的轉(zhuǎn)換將會以熱能形式轉(zhuǎn)換,而不是所需的機械能。還需要一個溫度濕度的傳感器,用來檢測周圍環(huán)境的狀態(tài)。進行數(shù)據(jù)的采集與分析。為了實現(xiàn)測高的功能我們選取氣壓傳感器,再通過一定的數(shù)學(xué)公式來推算出此刻機器人所在的高度[3]。
(5)手機端藍(lán)牙遙控
整套設(shè)備我們采用安卓端app軟件來進行遠(yuǎn)端的藍(lán)牙遙控控制[4]。手機藍(lán)牙會把運動信號發(fā)送到機器端,來實現(xiàn)遠(yuǎn)端控制。并且將所測量到的數(shù)據(jù)反饋給手機,達(dá)到手機與機器雙顯示數(shù)據(jù)。所以需要選擇一款合適的藍(lán)牙模塊。
(6)顯示窗口
機器人檢測的數(shù)據(jù)雖然由藍(lán)牙傳輸?shù)绞謾C,但是在現(xiàn)實工作中也需要在機器人本身上安裝一個顯示裝置用來在特殊的時候直接在機器人身上觀測到數(shù)據(jù),主要用于初期調(diào)試階段。方便對數(shù)據(jù)的觀測和記錄。
(7) 單片機
ARDUINO單片機的作用有它可以通過多種不同的傳感器來對周圍進行檢查。微控制器在板子上其可以經(jīng)過ARDUINO的編出來的程序語言來工作,將編譯成出來的的二進制的文件,拷進微控制器里等待著最終的使用[5]。
2.2 蠕動式爬桿機器人的運動分析
2.2.1 蠕動式爬桿機器人的運動組成
蠕動式爬桿機器人是由各個舵機的動作配合來完成所需要的工作動作要求[6][7]。其中分為這樣幾個狀態(tài):停機狀態(tài),開機狀態(tài)開機時張開兩個手抓主電機也處于圖示的位置,放置機器人到爬桿上,雙爪夾緊進入準(zhǔn)備狀態(tài)。前進動作,停止動作,后退動作。將機器取下有一個張開動作,然后關(guān)機。(如圖2.3)
2.2.2 蠕動式爬桿機器人的運動分解及示意圖
舵機2
夾爪2
夾爪1
舵機1
連桿機構(gòu)
舵機3
圖2.3機器人的示意圖
(1)初始狀態(tài):兩個夾爪都處于閉合狀態(tài),主舵機處于伸開的狀態(tài)。(手抓閉合如圖2.4)(手抓張開如圖2.5所示)(主舵機伸開如圖2.6所示)(主舵機伸縮如圖2.7所示)
圖2.5手抓張開狀態(tài)
圖2.4手抓夾緊狀態(tài)
圖2.6 機器伸開狀態(tài)
圖2.7 機器收縮狀態(tài)
(2)張開狀態(tài):打開夾爪1和夾爪2,用于接下里抓緊爬桿的工作。(如圖2.8)
圖2.8
夾爪1打開
夾爪2打開
(3) 閉合狀態(tài):此時夾爪1與夾爪2全部閉合(抓緊),來抓緊爬桿。準(zhǔn)備進入上升或者下降的動作(如圖2.9所示)
夾爪1閉合
夾爪2閉合
圖2.9
(4)上升動作:首先夾爪2張開,然后主舵機3縮,夾爪2閉合。這是上升動作的半個循環(huán),然后夾爪1張開,主舵機3伸開,夾爪1閉合。此時上升動作的一個循環(huán)結(jié)束。
(5) 停止動作:主舵機3停止運動,夾爪1與夾爪2同時夾緊。
(6) 下降動作:首先夾爪1打開,然后主舵機3縮,夾爪1閉合,這是下降的半個循環(huán)。然后夾爪2打開,主舵機3伸開,夾爪2閉合,此時下降的一個循環(huán)結(jié)束。
(7) 卸下狀態(tài):夾爪1和夾爪2同時張開。方便取下機器人[8]。
第三章 蠕動式爬桿機器人的硬件電路設(shè)計
3 蠕動式爬桿機器人的硬件電路設(shè)計
3.1 硬件控制系統(tǒng)整體框圖的設(shè)計
前期我們主體設(shè)計了蠕動式爬桿機器人的結(jié)構(gòu)設(shè)計與電路設(shè)計,首先對機器人的結(jié)構(gòu)進行了理論的設(shè)計與多次的優(yōu)化,最終確定了較為合適的安全的機械結(jié)構(gòu)。在對機械結(jié)構(gòu)的確定過后我們就開始對此機器人的硬件電路進行了設(shè)計與分析。通過對其理論的上的設(shè)計,選擇了合適的電子元件,然后對各個元件的功能的執(zhí)行最后完成整體硬件框架的設(shè)計。以達(dá)到設(shè)計初期的目的,實現(xiàn)了整個硬件的基礎(chǔ)支撐。根據(jù)要求的功能在進行真?zhèn)€機器人的源程序的設(shè)計與分析[8]。
我們首先要對機器人的整個控制系統(tǒng)進行一個整體的設(shè)計。設(shè)計目的是為了實現(xiàn)機器人的遠(yuǎn)程控制,通過藍(lán)牙對機器人的控制與檢測數(shù)據(jù)的反饋。通過控制系統(tǒng)來對舵機進行驅(qū)動,然后通過其傳動裝置,最終實現(xiàn)簡單的攀爬動作。由于攀爬時需要對夾爪的夾緊力進行一定的約束。不能使舵機轉(zhuǎn)的太過,而導(dǎo)致夾爪過于緊,所以檢測到的壓力會以電壓信號反饋回來,用來控制舵機,當(dāng)達(dá)到一定的電壓然后控制舵機停止運動[9][10]。在整個過程中測得的氣壓值,溫度值,濕度值數(shù)據(jù)都要反饋給手機,用來監(jiān)測數(shù)據(jù)。
通過對整體功能的分析,最終設(shè)計了如圖所示的控制系統(tǒng)的整體框圖(如圖3.1)。
圖3.1控制系統(tǒng)整體框圖
3.2 控制板及各個元器件的選擇
3.2.1主板的選擇
選擇一款合適的主板,我們選擇其產(chǎn)品下的NANO型號ARDUINO NANO(如圖3.2)與之前的USB版ARDUINO DUEMILANOVE 相比較,ARDUINO NANO在體積上占有很大的優(yōu)勢,ARDUINO既可以用來單獨開發(fā)出需要獨立運行,并且具有互動效果的電子產(chǎn)品;也可以用來開發(fā)出與電腦相連接,可以和其他軟件共同完成工作[11]。
圖3.2 arduino nano
ARDUINO NANO的技術(shù)參數(shù):
1. 共14個數(shù)字的輸入端口和輸出端口D2-D13,TX,RX。
2. 有8個模擬的輸入端口A0-A7
3. 1對TTL電平串口收發(fā)端口RX/TX
4.6個PWM端口,D3 D5 D6 D9 D10 D11
5.采用AtmelAtmega328P-PU單片機
6. 支持USB的下載及供電
7.支持外接5V~12V直流電源供電
8.支持9V的電池供電
9. 支持ISP的下載
10.供電方式:USB供電,VIN供電,外部5V電壓輸入
3.2.2電機驅(qū)動的選擇
通過對機器人的受力分析,與其抓緊的方式,我們要選取大扭矩的舵機進行驅(qū)動。由于兩個夾爪舵機和主驅(qū)動舵機都需要很大的扭矩,所以我們選擇JX6221型號的舵機(如圖3.3所示)。電壓8.4V,最大工作扭矩32.3kg.cm。
圖3.3 JX6221舵機
3.2.3傳感器的選擇
(1)力傳感器的選擇
作用:用于測量夾爪間的壓力,而使舵機停止轉(zhuǎn)動,來達(dá)到夾爪的夾緊作用。 選擇:選擇常用的應(yīng)變片作為壓力傳感器BF1K-3AA應(yīng)變計高精度電阻式應(yīng)變片1000歐。(如圖3.4)
圖3.4 壓力傳感器
原理:將應(yīng)變片通過膠水黏在需要測量的物體上,使他跟著物體的形狀變化而跟著形變,這樣由于其跟著形變里面的金屬條也會跟著變長變短。金屬的電阻也會跟著金屬的伸長量縮短量而進一步變化。通過這個原理應(yīng)變片才可以工作,在這里屬于對應(yīng)變片的變化來反應(yīng)物體的變化。一般應(yīng)變片的材料是銅鉻合金,電阻的變化率是一個常數(shù),在這里他們之間的應(yīng)變的關(guān)系是一個正比的關(guān)系。
(2) 溫濕度傳感器的選擇
作用: 用于測量不同位置的溫度與濕度。
選擇:DHT11溫濕度傳感器(如圖3.5所示)
濕度的測量范圍在20%到95%之間,濕度的測量誤差±5%
溫度的測量范圍在(0度到50度),溫度實際測量的誤差±2%。
工作電壓3.3v到5v。(圖3.6為常見電路圖,表3.1為DHT11引腳說明)
圖3.5 DHT11溫濕度傳感器
圖3.6 DHT11 常用電路
表 3.1 DHT11引腳說明
(3) 氣壓傳感器的選擇
選擇BMP180氣壓傳感器。體積小,耗能比較低,有較高的精確度(如圖3.7所示)
作用:通過測量當(dāng)處的氣壓來計算機器所在高度。
壓力范圍:300至1100hPa(可以測得海拔范圍在-500米到9000米)
電源電壓:1.8V~3.6
引腳說明:VIN 電源輸入3.3v
GND ?接地
SCL ? 時鐘線
SAD ??數(shù)據(jù)線
圖3.7 BMP180氣壓傳感器
3.2.4藍(lán)牙遙控的選擇
選擇TELESKY HC-06 無線藍(lán)牙串口透傳模塊板,通過對安卓手機上下載SPP軟件對機器人進行遠(yuǎn)端的遙控控制。設(shè)置波特率為9600。(如圖3.8所示,圖3.9為HC-06的使用說明)。
圖3.8 TELESKY HC-06
圖3.9 HC-06使用說明
3.2.5顯示器的選擇
選擇合適的顯示器,對所測量的數(shù)據(jù)進行實時的反饋。這里我們選擇LCD1602顯示器,可以一次顯示32個字符(16*02)。由4個數(shù)據(jù)線和3個控制線組成,所連接的方式由ARDUINO庫的要求所來。(如圖3.10)LCD1062的引腳說明如表3.2所示。
圖3.10 LCD1602
表3.2 LCD1602 引腳說明
在本次使用的LCD1602顯示中 需要用到引腳 1.2.3.4.5.6.11.12.13.14.15.16
其電路圖如3.11所示。
圖3.11 LCD電路圖
3.2.6電源模塊的選擇
電源模塊是整個控制系統(tǒng)工作依賴的基礎(chǔ)。各個模塊所需要的電壓也是不一樣的,所以要在電路中設(shè)計不同的電源電壓來滿足各個元器件的工作要求。電路中需要的電源有舵機,各個傳感器與控制芯片皆可以通過12V穩(wěn)壓為系統(tǒng)進行供電,通過LM2596S(如圖3.12)電源模塊對12V穩(wěn)壓電源進行可調(diào)節(jié)降壓穩(wěn)壓,(電源轉(zhuǎn)換電路如圖3.14)。此外還需要一個LM7805(如圖3.13)將12穩(wěn)壓電源降壓到3.5V給壓力傳感器與溫濕度傳感器進行供電(電源轉(zhuǎn)換電路如圖3.15)。
圖3.13
圖3.12
圖3.14 LM2596s電源轉(zhuǎn)換電路圖
圖3.15 LM7805電源轉(zhuǎn)換電路圖
圖10.4
3.2.7開關(guān)的選擇
選擇6角開關(guān)(如圖3.16),使用起來方便快捷,較高的觸發(fā)性。
圖3.16
六角開關(guān)的工作原理:斷開前1、3和4、6連接
閉合后1、2和4、5連接(如圖3.17所示,3.18為六角開關(guān)電路圖)
圖3.18六角開關(guān)電路圖
圖3.17 六角開關(guān)原理圖
3.3 硬件電路圖的設(shè)計
對硬件電路的電路元件進行選擇分析過后[13],就要對電路的設(shè)計進行進一步的規(guī)劃。選擇了合適的元件,又要有合適的電路接線,將所有元件連接起來實現(xiàn)一個整體。通過整體的配合,最終實現(xiàn)功能。
由于我們使用的是ARDUINO NANO的一款板子,其使用的是ATMEGA328P-PU芯片。其中有用到的引腳有ADC(Analog-to-Digital Converter),將連續(xù)的變量的模擬信號轉(zhuǎn)換成為離散的數(shù)字的信號,(模擬轉(zhuǎn)數(shù)字),溫度的量化,聲音的收集,等與之相關(guān)工作。在此機器人中需要用到的有壓力傳感器,需要將壓力的轉(zhuǎn)換用作電壓信號,進行體現(xiàn)。也就是說此時的每個電壓就可以代表一個壓力值。電壓是可以通過數(shù)字信號量化的,而壓力是不可以的。
其中VCC代表著電源輸入,GND代表的是地,RST代表的是復(fù)位腳,SCK、MISO、MOSI這三個引腳是SPI通訊需要的時鐘和數(shù)據(jù)腳,我們會在安裝顯示器的時候用到這三個引腳。
VCC、GND、RST的接線方法可以需要去看單片機中對應(yīng)的用戶的手冊,上面有著典型電路,面對不同型號的單片機的接法是不同的,SCK、MISO、MOSI這三個接到需要通信的芯片上對應(yīng)的腳就可以了,但是要注意一點,單片機上的MISO要接到芯片上的MOSI。
其中TXD,和RXD 分別是發(fā)送數(shù)據(jù)和接受數(shù)據(jù)。
根據(jù)ARDUINO NANO的介紹,選擇正確的接線方式。設(shè)計出蠕動式爬桿機器人的硬件電路圖(如圖3.19所示)。
圖3.19 控制系統(tǒng)硬件電路圖
第四章 蠕動式爬桿機器人的軟件設(shè)計
4 蠕動式爬桿機器人的軟件設(shè)計
4.1 軟件控制系統(tǒng)流程圖
通過了對其控制系統(tǒng)結(jié)構(gòu)框圖的初步設(shè)計過后,我們就要開始針對其軟件的設(shè)計進行更系統(tǒng)化的設(shè)計,根據(jù)機器人的功能實現(xiàn)和控制系統(tǒng)結(jié)構(gòu)框圖綜合要求,繪制了如下的軟件控制系統(tǒng)流程圖[14](如圖4.1)。
開始
采集壓力傳感器信號與舵機位置
圖4.1軟件控制系統(tǒng)流程圖
NO
NO
YES
YES
是否滿足
實現(xiàn)機器前后運動
舵機控制指令
停止指令
舵機運動
是否有指令
等待接受命令
系統(tǒng)初始化
首先開機,將機器人進去待機狀態(tài),此時機器人將處于接收命令的狀態(tài)。當(dāng)機器人接收到任意一個命令的時候,系統(tǒng)會識別所發(fā)出的指令,其中包含機器上,下,停止,爪子張開,閉合的狀態(tài)。當(dāng)發(fā)出張開命令的時候,兩個爪子同時張開。當(dāng)發(fā)出抓緊的命令的時候兩個爪子同時夾緊。當(dāng)發(fā)出上升的命令的時候,執(zhí)行上升的命令。發(fā)出停止命令的時候,停止一切動作。當(dāng)發(fā)出下降命令的時候,機器下降。再次過程中,檢測的壓力值用來控制舵機的運動是否停止。整個閉環(huán)系統(tǒng)為了使機器攀爬的更穩(wěn)定,與此同時保護電機。
4.2 控制程序的設(shè)計
4.2.1開發(fā)環(huán)境
開發(fā)環(huán)境Arduino IDE
學(xué)習(xí)Arduino 單片機能大致理解其內(nèi)部硬件的結(jié)構(gòu)和寄存器的一些設(shè)定,僅僅知道它的一些端口功能就可以了;要會簡易的C語言,就可使用Arduino 單片機來編寫一些程序。Arduino 軟件語言需要掌握幾個指令,而且部分的指令有很強的可讀性,大概明白一些C語言也可以輕易的入門,快捷的應(yīng)用。Arduino 的設(shè)計思想就是要開源,軟件,硬件的完全公開,不保留技術(shù)的公開。針對周邊輸入輸出設(shè)備的Arduino 的編程,很多常用的輸入輸出設(shè)備都已經(jīng)帶有一些樣式文件,在此平臺上進行簡易的改正,就可以編寫出來自己需要的復(fù)雜程序,完成功能多元化的作品。Arduino 因為它的開源特點,也就意味著從Arduino 相關(guān)的一些官網(wǎng),討論組,興趣社下得到一些幫助,在共享的資源的幫助下,整合自己得到的資源,能夠更容易的完成自己的作品。Arduino 及周邊產(chǎn)品加個都比較容易接受,在成本的比較下,學(xué)習(xí)和制作的成本減少,增加了使用者與開發(fā)者??梢灾苯油ㄟ^自己的usb端口來下載程序[15]。
4.2.2程序的設(shè)計
首先對串口,電機,藍(lán)牙,溫濕度傳感器,顯示器等的定義。
#include //串口
#include //溫濕度
#include //舵機
#include //顯示
#include
#include
然后對其各自的引腳接口進行定義,其目的就是為了使各自原件能夠在各自的位置起到工作的作用。
定義舵機引腳
void dj_setup()
{
myservo1.attach(3);
myservo2.attach(4);
myservo3.attach(5);
}
lcd1602接口定義
LiquidCrystal lcd(13, 12, 11, A3, A2, A1, A0);
藍(lán)牙引腳的定義
SoftwareSerial lys(9, 8);
static const long LYSBaud = 9600;
溫度濕度傳感器引腳的定義
dht.setup(10);
氣壓計定義A4 A5引腳等定義詳細(xì)見源程序
void setup() {
DHT_setup() ; //dht11溫濕度傳感器初始化
dj_setup() ; //舵機初始化
LCD1602_setup() ; //lcd初始化
}
壓力傳感器電壓的讀取與計算
yl1= analogRead(A6); //讀取A6口的電壓值
yl2= analogRead(A7); //讀取A7口的電壓值
yl1=yl1 * (5 / 1024.0*100); //算出電壓值
yl2=yl2 * (5 / 1024.0*100);
顯示器讀數(shù)的顯示
LCD1602_Show(7, 0, String(F("S:"))+String(dhtH) + String(F("%"))); // 顯示濕度
LCD1602_Show(0, 0, String(F("T:"))+String(dhtT) + String(F("C")) );// 顯示溫度
LCD1602_Show(0, 0, String(F("QY:"))+String(a)+ String(F("m")) ); //顯示高度
藍(lán)牙的定義,用于接下來接收命令
void gasLoop() {
lys.listen();
while (lys.available()) {
c = lys.read();
}}
藍(lán)牙發(fā)送溫濕度和高度
lys.print( String(F("S:"))+String(dhtH) + String(F("%"))+String(F("T:"))+String(dhtT) + String(F("C")) +String(F("QY:"))+String(a)+ String(F("m")) );
關(guān)于舵機的控制首先對各個電機進行單獨的子程序設(shè)計
舵機1 舵機2 原理一致
由于設(shè)計可以加緊30mm到80mm的桿子,需要舵機運行4周及1440°所以我們是用360°可連續(xù)旋轉(zhuǎn)舵機。為了滿足循環(huán)周期和運動速度在設(shè)計要求,我們對延遲和旋轉(zhuǎn)角度進行進一步計算得到如下程序
void dj1_jj() //1加緊
{
myservo1.write(pos1);
delay(15);
pos1++;
if(pos1>1440)pos1=1440;
}
void dj1_sk() //1松開
{
myservo1.write(pos1);
delay(15);
pos1--;
if(pos1<0)pos1=0;
}
舵機3是主運動舵機其設(shè)計如下,理想的角度下我們設(shè)計其在拉縮狀態(tài)下位于0°位,伸開的狀態(tài)下位于90°位。
void dj3_ss() // 伸展
{
myservo3.write(pos3);
delay(15);
pos3++;
if(pos3>90)pos3=90;
}
void dj3_xj() // 拉縮
{
myservo3.write(pos3);
delay(15);
pos3--;
if(pos3<0)pos3=0;
}
以上是子程序的設(shè)計,主程序就是各個子程序的共同作用。
藍(lán)牙通過接收各個指令a b c d e f
其中a是兩夾爪加緊
if(c=="a")
{while(yl1<2||pos1<1440)
{ dj1_jj() ; } //1加緊
while(yl2<2||pos2<1440)
{ dj2_jj() ; } //2加緊
}
b是兩夾爪張開
else if(c=="b"){
while(pos1>0&&pos2>0)
{ dj1_sk() ; //1,2松開
dj2_sk() ; }}
c是主舵機伸開
else if(c=="c"){
while(pos3>0) // 伸展
{ dj3_ss() ; }}
d是主舵機收縮
else if(c=="d"){
while(pos3<90) // 拉縮
{ dj3_xj() ; }}
e是上升
else if(c=="e")
{ while(yl1<2&&pos1<1440)
{ dj1_jj() ; } //1舵機加緊
while(pos2>0)
{ dj2_sk() ; } //2舵機松開
while(pos3>0)
{dj3_ss() ;} //3舵機上收縮
while(yl2<2&&pos2<1440)
{ dj2_jj() ; } //2舵機加緊
while(pos1>0)
{ dj1_sk() ; } //1舵機松開
while(pos3<90)
{dj3_xj() ;} //3舵機下伸開
}
f是下降
else if(c=="f")
{
while(yl2<2&&pos2<1440)
{ dj2_jj() ; } //2舵機加緊
while(pos1>0)
{ dj1_sk() ; } //1舵機松開
while(pos3>0)
{dj3_xj() ;} //3舵機下降縮
while(yl1<2&&pos1<1440)
{ dj1_jj() ; } //1舵機加緊
while(pos2>0)
{ dj2_sk() ; } //2舵機松開
while(pos3<90)
{dj3_ss() ;} //3舵機抬升伸開
}
第五章 蠕動式爬桿機器人的前景
5 蠕動式爬桿機器人的前景
通過了對爬桿機器人的前期設(shè)計與研究,完全滿足不了現(xiàn)有社會的需求,所以在此設(shè)計的基礎(chǔ)下可以衍生很多類型的服務(wù)型機器人。將其設(shè)計為一個搭載平臺可以設(shè)計出復(fù)雜功能的巡檢機器人,通過安裝攝像設(shè)備,可以觀測工作人員難以去觀察的狹窄區(qū)域。也可以通過紅外距離識別進行自我避障的功能。也可以安裝復(fù)雜的氣體檢測傳感器,識別管道是否有氣體液體等泄露。通過裝置工作平臺,可以達(dá)到輸送物料的目的。安裝有噴涂裝置可以噴漆,涂保護膜等作用。
蠕動式爬桿機器人在結(jié)構(gòu)的角度,為未來爬桿型機器人提供結(jié)構(gòu)參考,避免復(fù)雜的機械結(jié)構(gòu)與復(fù)雜的控制系統(tǒng)??梢愿奖悖旖荩?jīng)濟的情況下完成所需要完成的工作任務(wù)。
目前設(shè)計的機器人的工作環(huán)境還是比較局限的,只適用于30mm-80mm直徑的柱狀桿子管道類的攀爬。對于彎道的管道還沒有進一步的研究,這也是未來研究的一個新的領(lǐng)域,為了滿足工業(yè)化管道的巡檢維護的工作需求,和城鄉(xiāng)建設(shè)中,部分工作的需求,還需要不斷的改進和完善。
第六章 學(xué)習(xí)與收獲
6 學(xué)習(xí)與收獲
在本次的蠕動式管道機器人的控制系統(tǒng)設(shè)計中,接觸到了簡單的機器人的控制原理,通過對arduino的學(xué)習(xí),對于此次設(shè)計的完成起至關(guān)重要的作用。學(xué)習(xí)了關(guān)于整個控制系統(tǒng)的結(jié)構(gòu)框圖的設(shè)計,各類傳感器的工作原理。選擇合適的原配件,關(guān)于藍(lán)牙遙控小車的基本知識原理。在arduino開發(fā)環(huán)境下進行簡單的編程,來實現(xiàn)機器人的運動的理論程序。整個控制機器人夾爪的是一個閉環(huán)的系統(tǒng)。通過對壓力的反饋,來實現(xiàn)機器人抓住桿子的穩(wěn)定性。通過對機器人運動的分解,各個舵機工作的狀態(tài),來分析其運動的特點,可以通過程序完美的將其表達(dá)出來。通過書籍,文獻以及論壇學(xué)習(xí)簡單的程序語言,并對其加工,使之可以在此機器人上可以完美的運行。本次設(shè)計綜合了書本知識,課外知識,網(wǎng)絡(luò)學(xué)習(xí)和同學(xué)導(dǎo)師的討論,共同完成。培養(yǎng)了自己獨立的自學(xué)能力,和與同學(xué)之間的合作能力。
參考文獻
參考文獻
[1] ??? 管道檢測機器人的運動控制研究[D]. 華南理工大學(xué) 2012
[2] 李著信,蘇毅,呂宏慶,孟浩龍. 管道在線檢測技術(shù)及檢測機器人研究[J]. 后勤工程學(xué)院學(xué)報. 2006(04)
[3]黨安明.傳感器與檢測技術(shù),北京:北京大學(xué)出版社,2011.
[4] 蔡傳武,管貽生,周雪峰,江勵,朱海飛,吳文強,張憲民,張宏. 雙手爪式仿生攀爬機器人的搖桿控制[J]. 機器人. 2012(03)
[5]郭天祥.新概念51單片機C語言教程--入門提高開發(fā)拓展全攻略,北京:電子工業(yè)出版社,2008.
[6] 任恒靚. 一種自主機器人動態(tài)路徑規(guī)劃系統(tǒng)設(shè)計[D]. 內(nèi)蒙古科技大學(xué) 2017
[7]林瑞光,電機與拖動基礎(chǔ),杭州:浙江大學(xué)出版社,2002.
[8]李正熙.電動機實用控制電路,北京:化學(xué)工業(yè)出版社,2006.
[9]吳功平,肖曉暉,郭應(yīng)龍,胡基才. 架空高壓輸電線自動爬行機器人的研制[J]. 中國機械工
程,2006(03):237-240.
[10]肖志光. 雙手爪攀爬機器人自主抓夾的研究[D].華南理工大學(xué),2013.
[11]趙松年,張奇鵬. 機電一體化機械系統(tǒng)設(shè)計[M] . 第一版,北京:機械工業(yè)出版社,1996
[12]王海波.機電一體化設(shè)計基礎(chǔ)[M],北京:化學(xué)工業(yè)出版社,2012
[13] 劉彩霞,龔德利. 螺旋輪式小型管道機器人及其驅(qū)動控制系統(tǒng)研究[J]. 制造業(yè)自動化. 2014(15)
[14] 蔣俠飛. 一種管內(nèi)蠕動機器人設(shè)計與研究[D]. 北方工業(yè)大學(xué) 2017
[15]賈朝川,楊婷,符茂勝. 管外爬行機器人及其控制系統(tǒng)設(shè)計[J]. 皖西學(xué)院學(xué)報,2014,30(02):20-23.
附錄
附 錄
控制系統(tǒng)源程序
#include //串口
#include //溫濕度
#include //舵機
#include //顯示
#include
#include
SFE_BMP180 pressure;// 創(chuàng)建一個氣壓計對象
double baseline; // 基準(zhǔn)氣壓
LiquidCrystal lcd(13, 12, 11, A3, A2, A1, A0); //lcd1602接口定義
//溫濕度
DHT dht;
int dhtH, dhtT, dhtF;
//舵機
Servo myservo1;
Servo myservo2;
Servo myservo3;
int pos1 = 0;
int pos2 = 0;
int pos3 = 0;
char c;
int yl1=0;
int yl2=0;
//-------------------------------------------------------------------------
SoftwareSerial lys(9, 8); // RX, TX //藍(lán)牙
static const long LYSBaud = 9600;
//-------------------------------------------------------------------------
#define lgs Serial //串口
static const long LGSBaud = 9600;
void bmp180_setup() //bmp1
{
Serial.begin(9600);
Serial.println("REBOOT");
//獲得基準(zhǔn)氣壓
baseline = pressure.startPressure(3);}
void LCD1602_setup()
{
lcd.begin(16, 2);//columns and rows
lcd.print(F("LCD1602_setup_OK!")); //顯示初始化完成
}
void LCD1602_Clear()
{
lcd.clear();
}
void LCD1602_Show(int x, int y, String t)
{
lcd.setCursor(x, y);
lcd.print(t);
}
void gasLoop() {
//-------------------------------藍(lán)牙串口
lys.listen();
while (lys.available()) {
c = lys.read();
}}
void DHT_setup() { //溫濕度初始化
Serial.begin(9600);
dht.setup(10);
}
void DHT_loop() {
delay(dht.getMinimumSamplingPeriod()); //讀取溫濕度
dhtH = dht.getHumidity();
dhtT = dht.getTemperature();
}
void dj_setup()
{
myservo1.attach(3); // 定義舵機引腳
myservo2.attach(4);
myservo3.attach(5);
}
void dj1_jj() //1加緊
{
myservo1.write(pos1);
delay(12);
pos1++;
if(pos1>1440)pos1=1440;
}
void dj1_sk() //1松開
{
myservo1.write(pos1);
delay(15);
pos1--;
if(pos1<0)pos1=0;
}
void dj2_jj() //2加緊
{
myservo2.write(pos2);
delay(15);
pos2++;
if(pos2>1440)pos2=1440;
}
void dj2_sk() //2松開
{
myservo2.write(pos2);
delay(15);
pos2--;
if(pos2<0)pos2=0;
}
void dj3_ss() // 伸展
{
myservo3.write(pos3);
delay(15);
pos3++;
if(pos3>90)pos3=90;
}
void dj3_xj() // 拉縮
{
myservo3.write(pos3);
delay(15);
pos3--;
if(pos3<0)pos3=0;
}
void setup() {
DHT_setup() ; //dht11溫濕度傳感器初始化
dj_setup() ; //舵機初始化
LCD1602_setup() ; //lcd初始化
}
void loop() {
double a,p;
DHT_loop(); //讀取溫度濕度數(shù)值
gasLoop() ; //查看串口字符
yl1= analogRead(A6); //讀取A6口的電壓值
yl2= analogRead(A7); //讀取A7口的電壓值
yl1=yl1 * (5 / 1024.0*100); //算出電壓值
yl2=yl2 * (5 / 1024.0*100);
p = pressure.startPressure(3);// 獲得一個氣壓值
a = pressure.altitude(p,baseline);//獲得基于基準(zhǔn)氣壓的高度值
LCD1602_Show(7, 0, String(F("S:"))+String(dhtH) + String(F("%"))); // 顯示濕度
LCD1602_Show(0, 0, String(F("T:"))+String(dhtT) + String(F("C")) );// 顯示溫度
LCD1602_Show(0, 0, String(F("QY:"))+String(a)+ String(F("m")) ); //顯示高度
lys.print( String(F("S:"))+String(dhtH) + String(F("%"))+String(F("T:"))+String(dhtT) + String(F("C")) +String(F("QY:"))+String(a)+ String(F("m")) );
//藍(lán)牙發(fā)送溫濕度和高度;
if(c=="a")
{while(yl1<2||pos1<1440)
{ dj1_jj() ; } //1加緊
while(yl2<2||pos2<1440)
{ dj2_jj() ; } //2加緊
}
else if(c=="b"){
while(pos1>0&&pos2>0)
{ dj1_sk() ; //1,2松開
dj2_sk() ; }}
else if(c=="c"){
while(pos3>0) // 伸展
{ dj3_ss() ; }}
else if(c=="d"){
while(pos3<90) // 拉縮
{ dj3_xj() ; }}
else if(c=="e")
{ while(yl1<2&&pos1<1440)
{ dj1_jj() ; } //1舵機加緊
while(pos2>0)
{ dj2_sk() ; } //2舵機松開
while(pos3>0)
{dj3_ss() ;} //3舵機上
收藏