基于Arduino典型传感器智能避障小车的设计开发

2021-06-06 09:23:04付晓云
精密制造与自动化 2021年2期
关键词:直流电机舵机障碍物

付晓云

(沈阳理工大学 机械工程学院实验中心 沈阳110159)

智能车领域以美国、意大利、法国等国家处于领先地位,在智能车领域有着一系列研究成果。车辆与控制人员之间能够进行信息交流利用的是无线电及光缆技术,操作人员可以根据反馈的信息远程遥控车辆。与上述这些在智能车领域处于前沿的国家相比,我国在智能车方面的起步比较晚,但目前也取得了很大进步,清华大学研制的“THMR-V”的智能车就是其中之一。“THMR-V”的智能车能够在标准路面自动追踪车道线,在复杂的路面能够根据实际情况自行避障。但此智能车也有不足,只能在结构化道路上画有清晰白线处进行车道跟踪。

国防科技大学在车辆的自动驾驶技术方面起步较早,CITAVT系列无人驾驶车是其主要的研究成果,其中 CITAVT-IV型视觉导航自主车的主要目标是研究在结构化道路环境下的自主驾驶技术[1]。此类型无人驾驶车在视觉识别方面有所缺陷,有时不能正确识别道路出口。由此可以看出,智能车处于高速发展阶段,有关智能车的研究成果也比比皆是,但在智能化这条路上仍需做更多的努力。

1 智能避障小车的设计任务

智能小车选择使用超声波传感器模块以及红外线传感器模块来实现其避障功能。智能避障小车将分成两大部分进行设计,其一为小车行走设计,其二为小车避障设计。其动力由电机来实现,在Arduino中最常用的电机有直流电机、步进电机和舵机这3种电机,其中步进电机工作时以角位移作为输出形式,能够精确制动,它是通过脉冲信号来控制的,一个脉冲信号对应一个角度,转速通过控制脉冲频率来实现,频率越高,转速越高[2]。舵机属于伺服电机,同样是通过脉冲信号来控制其输出,与步进电机不同的是,舵机转动的角度取决于其脉冲持续的时间。舵机内部有一根轴,当舵机接收到脉冲信号时,这根输出轴就会转动一定的角度,而一旦控制信号改变,则输出轴的位置就会变化,即舵机转动[3]。L298n电机驱动模块具有4个输出端口,即OUT1、OUT2、OUT3和OUT4,这4个输出端口就相当于电源的正负极,每两个端口间接一个直流电机,所以L298n电机驱动模块只能驱动两个直流电机。同时其具有两个使能控制端口,分别是ENA和ENB,这两使能控制端口高电平有效,能够控制电机的停转[4]。这里所选用的是L298n电机驱动模块,此模块的优点是可由外接电源进行供电,可接12V的电源,当其上板载5V输出使能跳帽插上时,能够向外输出5V电压,这个5V电压即为逻辑输入电压,能够驱动直流电机工作运行。其中小车行走包括前进、后退、左转、右转以及停止这5个动作,通过L298n电机驱动模块驱动4个直流电机来实现;避障的要求包括小车行进时前方30cm处若存在障碍物其将自动停止前进,并检测左右两侧障碍物的距离,哪侧障碍物距离较远小车将向哪侧行驶,通过 HC-SR04超声波传感器模块与SG90舵机模块来实现。

Arduino是一款便捷灵活、方便上手的开源电子原型平台,本文的核心是由Arduino UNO处理器和软件Arduino IDE组成,编程灵活,支持C语言编程,易于设计[5]。所有的传感器都将与主板相连接。Arduino IDE用于编写程序,将编写好的程序上传到Arduino UNO开发板,小车就能够根据设定好的程序检测到前方障碍物,做出规避动作,实现避障功能。智能避障小车结构框图如图1所示。

图1 智能避障小车结构框图

2 智能避障小车的运动和控制要求

本智能小车行走部分采用4个直流电机组合形式,其中左右两侧的两个电机分别进行串联,用L298n电机驱动模块驱动两侧电机,通过控制数字引脚高低电平来实现小车前进、后退、左转、右转和停止等方向控制功能。

小车方向控制与逻辑输入引脚高低电平对应关系如表1所示。

表1 小车方向控制与逻辑输入对应表

超声波是一种机械波,具有一系列特点[6]。首先不同于普通声波的就是其振动频率高于20kHz,并且波长短,绕射现象小,这就直接导致超声波在传播时的方向性特别好。超声波对于液体、固体的穿透力很强,特别是在阳光不能穿透的固体中,基于这种性能,超声波在一些特殊场合能够起到极大的作用。本文选用的是HC-SR04超声波传感器,其具有4个引脚,分别“VCC”、“GND”、“Trig”以及“Echo”[7]。其中前两个引脚是正负极引脚,用于连接电源,“Trig”引脚用于发送超声波,“Echo”引脚用于接收超声波。小车采用超声传感器,探测前方是否有障碍物,超声传感器向前方发射一组方波信号,自动检测是否有信号返回,通过时间差,测定障碍物距离小车的位置[8],同时还配备有SG90舵机,将超声波传感器和舵机组装在一起,这样超声波传感器就可以跟随舵机旋转,用于检测小车左右两侧是否存在障碍物。

当小车在直行过程中检测到前方300 mm处存在障碍物时,会立即停止前进,同时舵机会带动超声波传感器分别向左右两侧旋转,如果系统检测到左侧障碍物的距离大于右边障碍物的距离,那么小车将向左转,反之如果小车右侧障碍物的距离大于左边障碍物的距离,小车将向右转。智能小车避障具体程序流程图如图2所示。

图2 智能避障小车程序流程图

3 智能小车的模块设计和选型

智能避障小车整体模块搭建的基本思路是采用4个直流电机作为动力输出元件,通过直流电机输出转矩带动轮胎旋转。由于同时驱动4个直流电机所需功率过大,因此不宜直接使用Arduino UNO开发板进行驱动,本例选取L298n电机驱动模块充当中间媒介,以此对直流电机进行驱动,从而达到驱动小车行进的目的。

HC-SR04超声波传感器与SG90舵机通过云台连接形成一个整体,即超声避障模块,此模块与Arduino UNO开发板相连接。智能小车整体系统搭建如图3所示。

图3 智能避障小车整体系统搭建图

3.1 超声波传感器与舵机实物连接

智能小车在避障时要求其能探测左右两侧障碍物的距离,因此需要超声波传感器能够旋转,为了满足此要求,决定在超声波传感器底部安装一个舵机,通过舵机旋转来带动超声波传感器旋转,实现探测两侧障碍物的目标。

舵机与超声波传感器通过 BST云台连接在一起,此云台上有两排引脚,其中U1排引脚与超声波传感器的引脚一致,用于与超声波传感器相连接。舵机与云台通过内齿轮啮合这种方式安装在云台底部,舵机上的3根线用于与P1排引脚中的3个相同引脚相连。P1排共有8个引脚,剩下5个引脚都是与Arduino UNO开发板相连的,其中一个引脚用于控制舵机,剩下4个引脚与超声波传感器的引脚一致,用于控制超声波传感器输出。实物搭建如图4所示。

图4 舵机与超声波传感器实物搭建图

3.2 行走设计

智能小车的一个基本要求就是能够自如地前进、后退、左转、右转以及停车,基于上述标准,决定采取直流电机充当小车动力元件,带动轮胎进行旋转。本例采用4个直流电机组合形式对小车进行方向控制,其中每两个直流电机串联,构成两个电机组合,左边电机组即控制小车左侧轮胎,右边电机组控制小车右侧轮胎。

由于4个直流电机同时工作功率较大,所需电压较大,因此不宜直接用Arduino UNO进行驱动,为此准备了L298n电机驱动模块进行驱动,如此能够成功带动电机。L298n电机驱动模块上具有两个使能控制端,可以进行PWM调速,ENA能够控制IN1和IN2,ENB能够控制IN3和IN4,对两侧电机进行速度控制。ENA使能控制端于Arduino UNO板上的 5号数字引脚相连,ENB使能控制端与Arduino UNO板上的 11号数字引脚相连。采用Arduino IDE编程软件进行程序编写工作,以此来实现控制小车的目的。小车包括前进、后退、左转、右转以及停止这5个方位控制[9]。

3.3 避障设计

本智能小车采用超声波传感器为核心来实现避障功能,超声波传感器能够发送超声波探测障碍物这一功能对于智能小车避障来说具有极大的意义。首先,当小车在行进过程中遇到前方障碍物时需要能够自主停止前进,本次方案将小车距离障碍物的距离设为 300 mm,即当小车行进途中,超声波传感器检测到距离前方障碍物小于300 mm时小车将立即停止运动。

在停止后,需要给小车一个方向指示,这时就需要舵机来发挥作用。SG90舵机和HC-SR04超声波传感器组成一个超声避障模块,超声波传感器会跟随舵机一起转动,在 180°范围内超声波传感器都能够检测到周围的障碍物。现对小车避障做出如下规定:当小车停止时,舵机会带动超声波传感器分别向左右两侧进行转动以探测周围情况,当超声波传感器检测到小车距离左侧障碍物比右侧障碍物远时,小车将向左转;反之,小车将向右转。基于上述说明,本智能小车将初步实现避障功能。

将SG90舵机、HC-SR04超声波传感器与云台连接之后,这整体的舵机云台需要与Arduino UNO开发板进行连接。云台中的P1排第一个引脚P2.7以及后 4个引脚 GND、Echo、Trig、VCC用于与Arduino UNO开发板数字引脚相连。

具体引脚连接如下:云台上的 P2.7引脚与Arduino UNO板上的10号数字引脚连接,用于控制舵机输出。云台上的后4个用脚用来控制超声波传感器,其中“Trig”与 8号数字引脚相连,“Echo”与9号数字引脚相连,VCC和GND作为超声波传感器的正负极将与Arduino UNO板上的5V和GND相连,但由于整套小车系统共有4个正负极需要相互连接,故需用到面包板来扩展引脚,使4个正极连接在一起,4个负极连接在一起,如此整套小车系统就能够得到充分供电,各个传感器各司其职,同时发挥作用,使小车能够成功避障。

3.4 智能小车实际测试结果

首先设置一下情景,在小车前进途中左右两侧各摆放障碍物,两个障碍物之间相距 600 mm,小车的起始位置位于两障碍物前方900 mm处,在横向距离上与右侧障碍物相距150 mm左右,与左侧障碍物相距450 mm左右接下来给小车接通电源,使小车向前行驶,小车在距前端障碍物300 mm处停止前进,探测过后,发现左侧障碍物的距离要比右侧大,小车向左转。小车左转后,前方 300 mm处仍有障碍物,经检测后,小车接着右转,此时小车前方无障碍物,小车驶出两个障碍物区域。根据小车实际运行轨迹可以看出小车达到了预期的设计目的,实现了避障的功能。

4 结语

整个小车系统全部搭建完成之后,已经可以实现避障功能,实现了最初的设计理念和设计方案,完成了行走和避障功能。在此基础上进行小车研究,应用于人类从事危险工作中具有实际的意义。

猜你喜欢
直流电机舵机障碍物
基于模糊PID的无刷直流电机速度控制系统的设计与仿真
大电机技术(2022年5期)2022-11-17 08:12:56
高低翻越
SelTrac®CBTC系统中非通信障碍物的设计和处理
含齿隙弹载舵机的全局反步模糊自适应控制
自动化学报(2019年6期)2019-07-23 01:18:36
基于dsPIC单片机的飞艇舵机控制实现
电子制作(2018年1期)2018-04-04 01:48:14
基于FPGA的双绕组无刷直流电机软件设计
电子制作(2017年1期)2017-05-17 03:54:12
基于高速同步485总线通信的多通道舵机控制器设计
基于模糊神经网络PID的无刷直流电机控制系统研究
一种改进的无刷直流电机控制方法
基于云模型的舵机同步控制