陶冶 李驰新
摘要:系统以Arduino单片机为控制核心,超声波传感器测距,L298N驱动4个直流电机带动小车运行,利用Arduino语言编程控制小车运动轨迹。当检测到小车前方有障碍物时,单片机发指令让小车左转一定角度,无障碍物则直行并继续探测,小车还具有红外寻迹功能,按照预先设置的轨道运行并完成特定任务。
关键词:Arduino单片机;超声波传感器;避障
中图分类号:TP31 文献标识码:A
文章编号:1009-3044(2019)15-0222-02
随着现代计算机技术的不断发展和普及,机器人进入各行各业并使人们的生活方式更加便捷。 机器人要实现避障和引导功能就要有感知功能,红外传感器给机器人一个视觉感知功能[1]。以Arduino单片机为控制核心的智能避障机器人,主要研究小车在一个特定的环境里自动运作的避障功能[2]。利用超声波传感器检测轨迹上的障碍物,通过单片机程序控制小车直行或偏转一定角度继续运行,不断探测和实施控制。
1 设计原理与方法
本系统中直流电机的正传、反转、加速、减速的智能控制,由PWM控制系统的控制实现[3]。 调制脉冲信号由Arduino Uno单片机产生并控制直流电机工作[4]。该PWM 控制系统由设计控制模块和驱动模块组成。避障机器人采用四轮驱动,后轮是支撑和转向的万向轮,前轮用两个电机。
2 硬件设计
避障机器人的硬件组成:Arduino单片机、电机驱动模块、超声波传感器、红外传感器、电源、直流电机模块。电源给整个小车供电,避障机器人以Arduino单片机为核心,通过电机驱动模块控制直流电机的运行,实现机器人按预期规则运动[5]。车身的最前端安装有超声波传感器,通过收发超声波探测障碍物。当检测到障碍物,单片机程序做出向左旋转的操作,没有检测到就继续直行,然后继续循环检测,从而实现机器人的循迹避障功能。硬件框架图如图1所示。
2.1 单片机模块
本设计采用Atmel Atmega328微处理。其模块为:5V稳压电路,程序下载电路,电源接口,6路AD采样,USB供电,ISP下载接口,IO备用接口等。Arduino Uno实物图如图2所示。
2.2 电机、电机驱动模块
本设计采用L298N的H桥电路。通过单片机控制占空比调整电机转速,H桥电路效率非常高,实现转速和方向的简单控制,稳定性高、速度快、驱动能力强。L298N有过压保护、过电流保护、反压保护功能,当出现异常时保护电机和电路[6]。这种调速方式有调速范围广、调速特性优良、过载能力大、调整平滑、无级快速反转、制动和启动等优点。L298N电路原理图如图3所示。
2.3 避障模块
超声波测距模块HC-SR04,提供非接触式2CM-400CM距离的感测功能,测量精确度达到3mm;模块组成:超声波接收器,发射器和控制电路。避障模块实物图如图4所示。
基本工作原理:
(1)采用10us的高电平信号触发TRIG测距;
(2)自动检测时发送8个40khz的方波,模块检测是否有自动信号返回;
(3)ECHO输出一个高电平代表有信号返回,超声波从发射到返回的时间就是高电平持续时间。距离=(声速(340M/S)*高电平时间)/2;
3 软件设计
3.1 Arduino语言
Arduino可以让我快速使用与Macromedia Flash, Processing, Max/MSP, Pure Data等软件。Arduino可以使用各种传感器、控制器、电子元件、步进电机、LED等装置[7]。Arduino基于源码开放的IDE界面,可以与上面软件交互,也可以独立运行。
3.2 Arduino IDE
Arduino IDE运行界面如图5所示。Arduino语言是一种类c的语言。在这个界面里有我编程时最常用的东西,当我把鼠标放在上面就会在右侧出现按键的功能。
下载程序到机器人控制器Arduino中的操作如图6所示,在此标示了位置上传功能。最右边的图标是我需要熟知的串口监视器,快捷键是:Ctrl+Shift+M。点这个图标的前提是插上了串口设备,当然Arduino插在USB上也可以,Arduino Uno主板上内置了USB转串口芯片[8]。
4 系统调试
避障机器人的系统调试分两大模块:超声波测距模块和L298N驱动模块。先把两大模塊分别独立调试,正常后把所有硬件模块组合起来进行综合调试。
4.1 电机调试
在电机驱动板上。有EA,I1,I2,EB,I3,I4六个端子用于控制电机。EA,EB为两路电机的控制使能,PWM调制实现电机转速控制。程序编译下载后出现小问题,通过右侧车轮的电机线修改解决了小车不停旋转的现象。
4.2 调试超声波模块
超声波传感器的引脚:发射引脚、接收引脚、电源VCC,地GND, Arduino Uno的对应引脚分别连接这四根插线,完成测试程序的下载和烧制[9],测试超声波模块结果如图7所示。
5 结束语
智能机器人可以精确操作,提高效率解决难题,基于Arduino智能小车系统实现了调节偏离和自动避障的功能,通过远程监测和自动报警实现了人机实时交互,实现小车根据外部环境和远程指令,做出前进、后退和转向等动作,这样的避障小车还用于环境探测等多种用途,减少了人们的工作危险系数,解决了恶劣环境下勘探的需求,具有一定的实用价值。
参考文献:
[1] 于洋.基于Arduino的自动避障及通信控制智能小车系统的研究与设计[J].吉林大学,2017.
[2] 刘洪涛,熊家. 嵌入式应用程序设计综合教程:微课版[M].北京:人民邮电出版社,2017.
[3] 孙建朋. 基于Arduino的智能小车避障系统设计[J].黑龙江科技信息,2016(15).
[4]王红红. 基于双桥矩阵变换器的异步电动机控制系统[J].山东工业技术,2018(7).
[5] 彭芳.基于PLC的步进电动机控制系统设计[J].电子世界,2019(4).
[6]徐根耀.电子元器件与电子制作[M].北京:机械工业出版社,2017.
[7] 赵建伟.机器人系统设计及其应用技术[M].北京:清华大学出版社,2017.
[8] 王飞,杨娟娟.基于Visual Basic的串口通讯和Arduino的智能小车控制系统设计[J].科技与创新,2016(1).
[9] 李飞.“智能化”电子产品中单片机技术的应用[J].电子技术与软件工程,2019(6).
【通联编辑:梁书】