王妍力
(济南信息工程学校,山东济南,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为控制核心,通过远程手柄操作,实现了对工业生产线等复杂环境的温度、湿度等量进行监控。通过远程遥控,机器人可以到达对人体有危险的场所,利用摄像头可以随时观察危险的生产环境。该机器人实用强,尺寸较小,操作方便,具有一定的经济效益。