蠕动式爬杆机器人控制系统设计
蠕动式爬杆机器人控制系统设计,蠕动,式爬杆,机器人,控制系统,设计
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 蓝牙 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 目录目 录摘 要IIIAbstractIV1 绪 论11.1 论文的选题背景11.2 爬杆机器人研究状况及发展方向12 蠕动式爬杆机器人的概述32.1 蠕动式爬杆机器人的组成及其功能32.2 蠕动式爬杆机器人的运动分析52.2.1 蠕动式爬杆机器人的运动组成52.2.2 蠕动式爬杆机器人的运动分解及示意图53 蠕动式爬杆机器人的硬件电路设计83.1 硬件控制系统整体框图的设计83.2 控制板及各个元器件的选择93.2.1电机驱动的选择103.2.2传感器的选择103.2.3蓝牙遥控的选择123.2.4 显示器的选择123.2.5电源模块的选择143.2.6 开关的选择153.2.7 控制主板的选择93.3 硬件电路图的设计164 蠕动式爬杆机器人的软件设计184.1 软件控制系统流程图184.2 控制程序的设计194.2.1开发环境194.2.2程序的设计205 蠕动式爬杆机器人的前景256 结 论26参考文献27附 录28致 谢34IV 摘要蠕动式爬杆机器人控制系统设计摘 要工业化的发展,城市化的不断推进,促成了管道系统的不断成熟。在现有的移动机器人中它们都具有自己的专一性和通用性的特点。广泛的应用于海陆空等全方位探测与运输。针对于管道类圆柱状的攀爬机器人的研究尚不成熟。为了满足现在的社会需求,我们准备设计一款可以在管道等杆子上攀爬的机器人。本文首先对蠕动式爬杆机器人的一种介绍,区别于现有移动式机器人的比较。通过对其组成的结构和运动状态的分析,结合此机器人的优缺点,与需要工作的要求和环境来设计这款机器人。基于ARDUINO开发板下与多种传感器的配合以完成所需工作。通过对其控制系统结构框图的设计与其软件流程图的设计综合设计其硬件电路和源程序。并对蠕动式爬杆机器人的优缺点进行分析,未来发展的方向提供可行的支持。关键词:蠕动式爬杆机器人;ARDUINO;硬件电路;源程序;未来发展 AbstractThe Control System Design of Squirmy Climbing Pole Robot AbstractThe 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 论文的选题背景随着工业化发展,城市化的不断推进,冶炼行业的成熟发展,管道也成为了这个社会各个行业不可缺少的组织构架。也推进了针对于管道攀爬的机器人的各类研究。现有的移动机器人一般分为以下几种,路面越障机器人(如图1.1),水下机器人(如图1.2)与空中飞行机器人(如图1.3),一般用于探测,测绘,搬运,救援等功能。都具有自己的专业性与通用性。然而针对某一特殊工作环境下都需要一定的成本1。图1.3图1.1图1.2 根据研究调查,爬杆机器人特别适用于工矿企业,因为此类企业拥有成熟的管道系统,需要机器人进行定期的巡检。针对于爬杆巡检机器人国内国外都有一定程度的研究,一般由分为管道内部检测,与管道表面检测。一般管道的周围的环境检测数据有高度,温度,湿度的检测,通过数据的分析,排查与预防管道故障。然而一般这类问题的检测很少有作业人员,爬杆位置的偏僻,人员行动的安全都是限制因素。然而工厂事故的原因也有不少来源于管道的泄露2。因此本文主要研究一种针对于管道等杆状物攀爬的爬杆机器人。1.2 爬杆机器人状况及研究方向蠕动式爬杆机器人是一项特殊的移动机器人的设计思想,主要适用于细长管道的攀爬功能。根据攀爬机器人的工作环境设计的适应性的攀爬机构,以实现在圆柱状杆面的攀爬。攀爬机器人是特种机器人领域范围内的一个关键研究方向,与此也成为当前机器人研究方向的重点。在过去的一些年,研究出了各种各样的仿生机器人。比较典型的仿壁虎爬壁机器人、仿人型机器人等。这些机器人主要从外形结构和功有仿蛇机器人、能上对生物进行模仿,攀爬机器人的设计也是从一些爬树动物的运动方式上得到启发。它把地面上机器人移动技术与吸附技术有机结合起来,能够在垂直壁面上夹紧运动,而且可以携带工具进行作业。传统的攀爬机器人的设计,主要分类行走式和吸附式的运动模式。本文将设计一款可以蠕动前进,并夹紧的设计结构。大多数的机器人适用于某一具体行业,更具有其单一性,与专一性的特点。在市场上现在的移动式机器人工作环境的限制已经不能满足现在的日常生活工作的需求。然而本次重点更多在于其控制系统的设计。它适用于路灯杆,斜拉桥拉索等等圆柱状表面的水平,温度,湿度,气体等人难以到达的位置的检测,减少人工的操作。本机器人通过蓝牙传输,能够实时检测位置环境的变化。来满足环境所需的基本要求。这里设计了一款控制系统。其驱动系统,传动系统,行走机构,检测系统,机身的设计,通过无线数据传输系统,使用遥控终端的操作来达到目的。参考相关的系统设计,来完成蠕动式爬杆机器人的控制系统设计。本质思想与操作实际为通过数字信号的输入,控制伺服电机的旋转,完成需要的工作状态,实现整体的运动合成,达到运动的需求。简单的运动,但需要采集一些数据,存储在数据库。本次设计的机器人,可以简单快捷方便的进行一下周围环境的检测,为常见故障进行常规的排查。蠕动式爬杆机器人的设计主要分为机械结构的设计与控制系统的设计。此文是对蠕动式爬杆机器人的控制系统设计进行研究。基于ARDUINO开发板(如图1.4)和功能要求下进行蠕动式爬杆机器人的硬件电路设计与软件源程序的设计。 图1.4根据蠕动式爬杆机器人的运动要求,我们选取常见的竖直杆状物进行研究。机器人在爬杆上有上升下降,前进后退,停止的动作。都是通过伺服电机之间的配合来进行驱动,完成所需要完成的动作。机器人硬件的控制系统又分为主控制器的模块,电机驱动模块,信号反馈模块,通信模块,电源模块等组成。由于选取ARDUINO,所以自带一些模块,有些模块需要额外的添加。34 第二章 蠕动式爬杆机器人的概述2 蠕动式爬杆机器人的概述2.1 蠕动式爬杆机器人的组成及其功能(1)行走与导向结构 主要由一组机构,来完成机器人前后伸缩动作。通过两个柱状的定位杆进行方向的定位,使其在固定的导轨上运动,配合连杆装置,逐步完善机器人前后行进动作的规范性,标准性。再配合两个夹爪的张合实现对爬杆的夹紧动作。通过两组的动作的叠加,使我们机器人可以满足初步的动作需求。(图2.1)(图2.2)图2.2 蠕动式爬杆机器人整体构架bnb图2.1 蠕动式爬杆机器人整体构架a (2) 爬行驱动装置 通过机器人整体的受力分析,选择合适的伺服电机。来驱动主运动,与两个夹爪的运动。通过对舵机旋转角度的控制,来实现运动所需求的各种状态。(3) 电源 使用可充电的外接电源供电,经过分压与稳压模块来满足整个机器的电源需求。其中需要供电的有舵机,显示器,传感器,LED小灯,等其他电子元件。(4) 传感器 该机器人需要两个压力传感器来检测夹爪处的压力,当达到一定值的时候夹爪电机停止运动,保持夹紧状态。用来保护舵机,以免发热而导致舵机的损坏。因为舵机在没有停止命令下会持续夹紧,此时的电能的转换将会以热能形式转换,而不是所需的机械能。还需要一个温度湿度的传感器,用来检测周围环境的状态。进行数据的采集与分析。为了实现测高的功能我们选取气压传感器,再通过一定的数学公式来推算出此刻机器人所在的高度3。(5)手机端蓝牙遥控 整套设备我们采用安卓端app软件来进行远端的蓝牙遥控控制4。手机蓝牙会把运动信号发送到机器端,来实现远端控制。并且将所测量到的数据反馈给手机,达到手机与机器双显示数据。所以需要选择一款合适的蓝牙模块。(6)显示窗口机器人检测的数据虽然由蓝牙传输到手机,但是在现实工作中也需要在机器人本身上安装一个显示装置用来在特殊的时候直接在机器人身上观测到数据,主要用于初期调试阶段。方便对数据的观测和记录。(7) 单片机 ARDUINO单片机的作用有它可以通过多种不同的传感器来对周围进行检查。微控制器在板子上其可以经过ARDUINO的编出来的程序语言来工作,将编译成出来的的二进制的文件,拷进微控制器里等待着最终的使用5。 2.2 蠕动式爬杆机器人的运动分析2.2.1 蠕动式爬杆机器人的运动组成蠕动式爬杆机器人是由各个舵机的动作配合来完成所需要的工作动作要求67。其中分为这样几个状态:停机状态,开机状态开机时张开两个手抓主电机也处于图示的位置,放置机器人到爬杆上,双爪夹紧进入准备状态。前进动作,停止动作,后退动作。将机器取下有一个张开动作,然后关机。(如图2.3)2.2.2 蠕动式爬杆机器人的运动分解及示意图舵机2夹爪2夹爪1舵机1连杆机构舵机3图2.3机器人的示意图(1)初始状态:两个夹爪都处于闭合状态,主舵机处于伸开的状态。(手抓闭合如图2.4)(手抓张开如图2.5所示)(主舵机伸开如图2.6所示)(主舵机伸缩如图2.7所示)图2.5手抓张开状态图2.4手抓夹紧状态图2.6 机器伸开状态图2.7 机器收缩状态(2)张开状态:打开夹爪1和夹爪2,用于接下里抓紧爬杆的工作。(如图2.8)图2.8 夹爪1打开夹爪2打开(3) 闭合状态:此时夹爪1与夹爪2全部闭合(抓紧),来抓紧爬杆。准备进入上升或者下降的动作(如图2.9所示)夹爪1闭合夹爪2闭合图2.9 (4)上升动作:首先夹爪2张开,然后主舵机3缩,夹爪2闭合。这是上升动作的半个循环,然后夹爪1张开,主舵机3伸开,夹爪1闭合。此时上升动作的一个循环结束。(5) 停止动作:主舵机3停止运动,夹爪1与夹爪2同时夹紧。(6) 下降动作:首先夹爪1打开,然后主舵机3缩,夹爪1闭合,这是下降的半个循环。然后夹爪2打开,主舵机3伸开,夹爪2闭合,此时下降的一个循环结束。(7) 卸下状态:夹爪1和夹爪2同时张开。方便取下机器人8。 第三章 蠕动式爬杆机器人的硬件电路设计3 蠕动式爬杆机器人的硬件电路设计3.1 硬件控制系统整体框图的设计前期我们主体设计了蠕动式爬杆机器人的结构设计与电路设计,首先对机器人的结构进行了理论的设计与多次的优化,最终确定了较为合适的安全的机械结构。在对机械结构的确定过后我们就开始对此机器人的硬件电路进行了设计与分析。通过对其理论的上的设计,选择了合适的电子元件,然后对各个元件的功能的执行最后完成整体硬件框架的设计。以达到设计初期的目的,实现了整个硬件的基础支撑。根据要求的功能在进行真个机器人的源程序的设计与分析8。我们首先要对机器人的整个控制系统进行一个整体的设计。设计目的是为了实现机器人的远程控制,通过蓝牙对机器人的控制与检测数据的反馈。通过控制系统来对舵机进行驱动,然后通过其传动装置,最终实现简单的攀爬动作。由于攀爬时需要对夹爪的夹紧力进行一定的约束。不能使舵机转的太过,而导致夹爪过于紧,所以检测到的压力会以电压信号反馈回来,用来控制舵机,当达到一定的电压然后控制舵机停止运动910。在整个过程中测得的气压值,温度值,湿度值数据都要反馈给手机,用来监测数据。通过对整体功能的分析,最终设计了如图所示的控制系统的整体框图(如图3.1)。 图3.1控制系统整体框图3.2 控制板及各个元器件的选择3.2.1主板的选择选择一款合适的主板,我们选择其产品下的NANO型号ARDUINO NANO(如图3.2)与之前的USB版ARDUINO DUEMILANOVE 相比较,ARDUINO NANO在体积上占有很大的优势,ARDUINO既可以用来单独开发出需要独立运行,并且具有互动效果的电子产品;也可以用来开发出与电脑相连接,可以和其他软件共同完成工作11。图3.2 arduino nanoARDUINO NANO的技术参数:1. 共14个数字的输入端口和输出端口D2-D13,TX,RX。2. 有8个模拟的输入端口A0-A73. 1对TTL电平串口收发端口RX/TX46个PWM端口,D3 D5 D6 D9 D10 D115采用AtmelAtmega328P-PU单片机6. 支持USB的下载及供电7支持外接5V12V直流电源供电8支持9V的电池供电9. 支持ISP的下载10.供电方式:USB供电,VIN供电,外部5V电压输入3.2.2电机驱动的选择通过对机器人的受力分析,与其抓紧的方式,我们要选取大扭矩的舵机进行驱动。由于两个夹爪舵机和主驱动舵机都需要很大的扭矩,所以我们选择JX6221型号的舵机(如图3.3所示)。电压8.4V,最大工作扭矩32.3kg.cm。图3.3 JX6221舵机 3.2.3传感器的选择(1)力传感器的选择 作用:用于测量夹爪间的压力,而使舵机停止转动,来达到夹爪的夹紧作用。 选择:选择常用的应变片作为压力传感器BF1K-3AA应变计高精度电阻式应变片1000欧。(如图3.4)图3.4 压力传感器原理:将应变片通过胶水黏在需要测量的物体上,使他跟着物体的形状变化而跟着形变,这样由于其跟着形变里面的金属条也会跟着变长变短。金属的电阻也会跟着金属的伸长量缩短量而进一步变化。通过这个原理应变片才可以工作,在这里属于对应变片的变化来反应物体的变化。一般应变片的材料是铜铬合金,电阻的变化率是一个常数,在这里他们之间的应变的关系是一个正比的关系。(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所示)作用:通过测量当处的气压来计算机器所在高度。压力范围:300至1100hPa(可以测得海拔范围在-500米到9000米)电源电压:1.8V3.6引脚说明:VIN 电源输入3.3vGND 接地SCL 时钟线SAD 数据线图3.7 BMP180气压传感器3.2.4蓝牙遥控的选择选择TELESKY HC-06 无线蓝牙串口透传模块板,通过对安卓手机上下载SPP软件对机器人进行远端的遥控控制。设置波特率为9600。(如图3.8所示,图3.9为HC-06的使用说明)。图3.8 TELESKY HC-06 图3.9 HC-06使用说明3.2.5显示器的选择选择合适的显示器,对所测量的数据进行实时的反馈。这里我们选择LCD1602显示器,可以一次显示32个字符(16*02)。由4个数据线和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电源模块的选择电源模块是整个控制系统工作依赖的基础。各个模块所需要的电压也是不一样的,所以要在电路中设计不同的电源电压来满足各个元器件的工作要求。电路中需要的电源有舵机,各个传感器与控制芯片皆可以通过12V稳压为系统进行供电,通过LM2596S(如图3.12)电源模块对12V稳压电源进行可调节降压稳压,(电源转换电路如图3.14)。此外还需要一个LM7805(如图3.13)将12稳压电源降压到3.5V给压力传感器与温湿度传感器进行供电(电源转换电路如图3.15)。 图3.13图3.12图3.14 LM2596s电源转换电路图图3.15 LM7805电源转换电路图图10.43.2.7开关的选择 选择6角开关(如图3.16),使用起来方便快捷,较高的触发性。图3.16六角开关的工作原理:断开前1、3和4、6连接闭合后1、2和4、5连接(如图3.17所示,3.18为六角开关电路图)图3.18六角开关电路图图3.17 六角开关原理图3.3 硬件电路图的设计对硬件电路的电路元件进行选择分析过后13,就要对电路的设计进行进一步的规划。选择了合适的元件,又要有合适的电路接线,将所有元件连接起来实现一个整体。通过整体的配合,最终实现功能。由于我们使用的是ARDUINO NANO的一款板子,其使用的是ATMEGA328P-PU芯片。其中有用到的引脚有ADC(Analog-to-Digital Converter),将连续的变量的模拟信号转换成为离散的数字的信号,(模拟转数字),温度的量化,声音的收集,等与之相关工作。在此机器人中需要用到的有压力传感器,需要将压力的转换用作电压信号,进行体现。也就是说此时的每个电压就可以代表一个压力值。电压是可以通过数字信号量化的,而压力是不可以的。其中VCC代表着电源输入,GND代表的是地,RST代表的是复位脚,SCK、MISO、MOSI这三个引脚是SPI通讯需要的时钟和数据脚,我们会在安装显示器的时候用到这三个引脚。VCC、GND、RST的接线方法可以需要去看单片机中对应的用户的手册,上面有着典型电路,面对不同型号的单片机的接法是不同的,SCK、MISO、MOSI这三个接到需要通信的芯片上对应的脚就可以了,但是要注意一点,单片机上的MISO要接到芯片上的MOSI。其中TXD,和RXD 分别是发送数据和接受数据。根据ARDUINO NANO的介绍,选择正确的接线方式。设计出蠕动式爬杆机器人的硬件电路图(如图3.19所示)。图3.19 控制系统硬件电路图 第四章 蠕动式爬杆机器人的软件设计4 蠕动式爬杆机器人的软件设计4.1 软件控制系统流程图通过了对其控制系统结构框图的初步设计过后,我们就要开始针对其软件的设计进行更系统化的设计,根据机器人的功能实现和控制系统结构框图综合要求,绘制了如下的软件控制系统流程图14(如图4.1)。 开始采集压力传感器信号与舵机位置图4.1软件控制系统流程图NONOYESYES是否满足实现机器前后运动舵机控制指令停止指令舵机运动是否有指令等待接受命令系统初始化首先开机,将机器人进去待机状态,此时机器人将处于接收命令的状态。当机器人接收到任意一个命令的时候,系统会识别所发出的指令,其中包含机器上,下,停止,爪子张开,闭合的状态。当发出张开命令的时候,两个爪子同时张开。当发出抓紧的命令的时候两个爪子同时夹紧。当发出上升的命令的时候,执行上升的命令。发出停止命令的时候,停止一切动作。当发出下降命令的时候,机器下降。再次过程中,检测的压力值用来控制舵机的运动是否停止。整个闭环系统为了使机器攀爬的更稳定,与此同时保护电机。4.2 控制程序的设计4.2.1开发环境 开发环境Arduino IDE学习Arduino 单片机能大致理解其内部硬件的结构和寄存器的一些设定,仅仅知道它的一些端口功能就可以了;要会简易的C语言,就可使用Arduino 单片机来编写一些程序。Arduino 软件语言需要掌握几个指令,而且部分的指令有很强的可读性,大概明白一些C语言也可以轻易的入门,快捷的应用。Arduino 的设计思想就是要开源,软件,硬件的完全公开,不保留技术的公开。针对周边输入输出设备的Arduino 的编程,很多常用的输入输出设备都已经带有一些样式文件,在此平台上进行简易的改正,就可以编写出来自己需要的复杂程序,完成功能多元化的作品。Arduino 因为它的开源特点,也就意味着从Arduino 相关的一些官网,讨论组,兴趣社下得到一些帮助,在共享的资源的帮助下,整合自己得到的资源,能够更容易的完成自己的作品。Arduino 及周边产品加个都比较容易接受,在成本的比较下,学习和制作的成本减少,增加了使用者与开发者。可以直接通过自己的usb端口来下载程序15。4.2.2程序的设计首先对串口,电机,蓝牙,温湿度传感器,显示器等的定义。#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); 蓝牙引脚的定义 SoftwareSerial lys(9, 8); static const long LYSBaud = 9600;温度湿度传感器引脚的定义dht.setup(10);气压计定义A4 A5引脚等定义详细见源程序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); 显示器读数的显示 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) ); /显示高度蓝牙的定义,用于接下来接收命令void gasLoop() lys.listen(); while (lys.available() c = lys.read(); 蓝牙发送温湿度和高度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) );关于舵机的控制首先对各个电机进行单独的子程序设计舵机1 舵机2 原理一致由于设计可以加紧30mm到80mm的杆子,需要舵机运行4周及1440所以我们是用360可连续旋转舵机。为了满足循环周期和运动速度在设计要求,我们对延迟和旋转角度进行进一步计算得到如下程序void dj1_jj() /1加紧 myservo1.write(pos1); delay(15); pos1+; if(pos11440)pos1=1440; void dj1_sk() /1松开 myservo1.write(pos1); delay(15); pos1-; if(pos190)pos3=90; void dj3_xj() / 拉缩 myservo3.write(pos3); delay(15); pos3-; if(pos30)pos3=0; 以上是子程序的设计,主程序就是各个子程序的共同作用。蓝牙通过接收各个指令a b c d e f其中a是两夹爪加紧if(c=a)while(yl12|pos11440) dj1_jj() ; /1加紧while(yl22|pos20&pos20) dj1_sk() ; /1,2松开dj2_sk() ; c是主舵机伸开else if(c=c)while(pos30) / 伸展 dj3_ss() ; d是主舵机收缩else if(c=d)while(pos390) / 拉缩 dj3_xj() ; e是上升else if(c=e) while(yl12&pos10) dj2_sk() ; /2舵机松开while(pos30)dj3_ss() ; /3舵机上收缩 while(yl22&pos20) dj1_sk() ; /1舵机松开while(pos390)dj3_xj() ; /3舵机下伸开f是下降else if(c=f) while(yl22&pos20) dj1_sk() ; /1舵机松开while(pos30)dj3_xj() ; /3舵机下降缩 while(yl12&pos10) dj2_sk() ; /2舵机松开while(pos390)dj3_ss() ; /3舵机抬升伸开 第五章 蠕动式爬杆机器人的前景5 蠕动式爬杆机器人的前景通过了对爬杆机器人的前期设计与研究,完全满足不了现有社会的需求,所以在此设计的基础下可以衍生很多类型的服务型机器人。将其设计为一个搭载平台可以设计出复杂功能的巡检机器人,通过安装摄像设备,可以观测工作人员难以去观察的狭窄区域。也可以通过红外距离识别进行自我避障的功能。也可以安装复杂的气体检测传感器,识别管道是否有气体液体等泄露。通过装置工作平台,可以达到输送物料的目的。安装有喷涂装置可以喷漆,涂保护膜等作用。蠕动式爬杆机器人在结构的角度,为未来爬杆型机器人提供结构参考,避免复杂的机械结构与复杂的控制系统。可以更方便,快捷,经济的情况下完成所需要完成的工作任务。目前设计的机器人的工作环境还是比较局限的,只适用于30mm-80mm直径的柱状杆子管道类的攀爬。对于弯道的管道还没有进一步的研究,这也是未来研究的一个新的领域,为了满足工业化管道的巡检维护的工作需求,和城乡建设中,部分工作的需求,还需要不断的改进和完善。 第六章 学习与收获6 学习与收获在本次的蠕动式管道机器人的控制系统设计中,接触到了简单的机器人的控制原理,通过对arduino的学习,对于此次设计的完成起至关重要的作用。学习了关于整个控制系统的结构框图的设计,各类传感器的工作原理。选择合适的原配件,关于蓝牙遥控小车的基本知识原理。在arduino开发环境下进行简单的编程,来实现机器人的运动的理论程序。整个控制机器人夹爪的是一个闭环的系统。通过对压力的反馈,来实现机器人抓住杆子的稳定性。通过对机器人运动的分解,各个舵机工作的状态,来分析其运动的特点,可以通过程序完美的将其表达出来。通过书籍,文献以及论坛学习简单的程序语言,并对其加工,使之可以在此机器人上可以完美的运行。本次设计综合了书本知识,课外知识,网络学习和同学导师的讨论,共同完成。培养了自己独立的自学能力,和与同学之间的合作能力。 参考文献参考文献1 祝俊. 管道检测机器人的运动控制研究D. 华南理工大学 2012 2 李著信,苏毅,吕宏庆,孟浩龙. 管道在线检测技术及检测机器人研究J. 后勤工程学院学报. 2006(04)3党安明.传感器与检测技术,北京:北京大学出版社,2011.4 蔡传武,管贻生,周雪峰,江励,朱海飞,吴文强,张宪民,张宏. 双手爪式仿生攀爬机器人的摇杆控制J. 机器人. 2012(03) 5郭天祥.新概念51单片机C语言教程-入门提高开发拓展全攻略,北京:电子工业出版社,2008.6 任恒靓. 一种自主机器人动态路径规划系统设计D. 内蒙古科技大学 2017 7林瑞光,电机与拖动基础,杭州:浙江大学出版社,2002. 8李正熙.电动机实用控制电路,北京:化学工业出版社,2006. 9吴功平,肖晓晖,郭应龙,胡基才. 架空高压输电线自动爬行机器人的研制J. 中国机械工程,2006(03):237-240.10肖志光. 双手爪攀爬机器人自主抓夹的研究D.华南理工大学,2013. 11赵松年,张奇鹏. 机电一体化机械系统设计M . 第一版,北京:机械工业出版社,1996 12王海波.机电一体化设计基础M,北京:化学工业出版社,2012 13 刘彩霞,龚德利. 螺旋轮式小型管道机器人及其驱动控制系统研究J. 制造业自动化. 2014(15) 14 蒋侠飞. 一种管内蠕动机器人设计与研究D. 北方工业大学 2017 15贾朝川,杨婷,符茂胜. 管外爬行机器人及其控制系统设计J. 皖西学院学报,2014,30(02):20-23. 附录附 录控制系统源程序#include /串口#include /温湿度#include /舵机#include /显示#include #include SFE_BMP180 pressure;/ 创建一个气压计对象double baseline; / 基准气压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 /蓝牙static const long LYSBaud = 9600;/-#define lgs Serial /串口static const long LGSBaud = 9600;void bmp180_setup() /bmp1 Serial.begin(9600); Serial.println(REBOOT); /获得基准气压 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() /-蓝牙串口 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(pos11440)pos1=1440; void dj1_sk() /1松开 myservo1.write(pos1); delay(15); pos1-; if(pos11440)pos2=1440; void dj2_sk() /2松开 myservo2.write(pos2); delay(15); pos2-; if(pos290)pos3=90; void dj3_xj() / 拉缩 myservo3.write(pos3); delay(15); pos3-; if(pos30)pos3=0; void setup() DHT_setup() ; /dht11温湿度传感器初始化 dj_setup() ; /舵机初始化 LCD1602_setup() ; /lcd初始化void loop() double a,p;DHT_loop(); /读取温度湿度数值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);/获得基于基准气压的高度值 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) );/蓝牙发送温湿度和高度;if(c=a)while(yl12|pos11440) dj1_jj() ; /1加紧while(yl22|pos20&pos20) dj1_sk() ; /1,2松开dj2_sk() ; else if(c=c)while(pos30) / 伸展 dj3_ss() ; else if(c=d)while(pos390) / 拉缩 dj3_xj() ; else if(c=e) while(yl12&pos10) dj2_sk() ; /2舵机松开while(pos30)dj3_ss() ; /3舵机上
收藏