(北京信息职业技术学院图书馆 北京 100015)
本题目设计的是超声波避障小车,类似于生活中使用的扫地机器人。由于采用了Ardunio与超声波传感器,Ardunio平台为开源软件且模块化编程,主芯片能耗低、灵敏度高、该项目对于高职院校师生启发性强。
避障小车主控模块(图1)由以下几部分组成:Arduino板、Arduino电机驱动板、Arduino扩展板等等。
图1 避障小车主控模块
Arduino超声波避障模块主要依靠Arduino单片机进行分析控制,基于超声波传感器数据,(左,中,右方向)分析,进一步实现避障小车前进、后退、左右以及掉头等各个动作。
图2为超声波避障小车工作流程,工作中首先通过超声波模块采集数据、读入数据到Arduino-UNO、单片机分析判断,进一步控制马达转速,决定前进后退。
图2 避障小车工作流程
电机驱动模块主要功能是将单片机相关信号通过驱动模块转化为小车实际功率。本设计中采用的电机专用驱动芯片L298N,L298N耐高电压并且具有高电流驱动能力。一般接收TTL逻辑电平,工程师用来驱动感性负载(像继电器,电机等等)。L298N芯片有一个电源VCC引脚、地GND引脚、四个电机驱动引脚、四个PWM引脚。VCC引脚可以接12V电源用来给芯片和电动机供电。还可将板内5V 电压传给单片机供电。可实现电机正反转、转矩大、调速快、性能好、可同时驱动两台直流电机。
超声波测距借助类似于蝙蝠的超声波来实现,在Ardunio中具体的工作原理与程序是:超声波传感器发射头发超声波,接收头收超声波,该模块发送8个40khz的方波,HC-SR04自动检测是否有信号返回,若有信号返回,则Echo端口输出一个高电平脉冲给单片机相关I/O口,高电平持续时间于是就等于超声波从发射到返回时间。
方案1:晶宏STC89C52单片机作为核心处理器。STC89C52:低功耗、高性能8位单片机,它含4k Bytes ISP(In-system programmable)Flash只读程序存储器,器件采用高密度、非易失性技术制造,可以反复擦1万次以上。兼容MCS-51指令系统和80C51引脚,片内集成8位CPU和ISP Flash存储器,利用STC89C52的I/O口采集传感器信号并实时驱动控制步进电机。晶宏STC89C52单片机把必需控制内容都集成于一个很小的集成电路芯片。它若按功能划分,由如下内部组件组成,即串行口、定时器/计数器、中断系统微处理器、数据存储器、程序存储器、并行I/O口、及特殊功能寄存器。它们由片内单一总线连接并且基本结构依旧是CPU+外围芯片的传统模式,对各种功能模块的控制采用特殊功能寄存器来控制。
方案2:Arduino Uno用的芯片基本就是ATmega328p,Arduino Uno核心处理器即ATmega328p-AVR芯片,闪存容量为32KB、上电复位、可编程、低功耗、高性能、8位控制器;采用RISC体系结构、高耐力、非易失内存、含内部校准振荡器,同时具有外部和内部中断源。
综合上面分析,同时结合ATmega328p在Arduino Uno开发板上集成了大量现成的库文件,十分方便实用。所以在智能小车创新项目中采用了第二种解决方案。
超声波避障小车工作原理:打开电源,超声波传感器初始化,分析小车正向障碍物距离。若数值在安全距离内小车则直行,若小于安全距离,超声波传感器测量左右方向障碍物距离,且对左右向距离进行分析判断,小车下一步需要选取合理路径。
智能小车(图3所示)具体工作原理:智能小车安装超声波传感器后程序依据路况判定,若前方距离大于设定值,则前进;不然,左右方向都小于某设定值,后退;再不然,判断左右方向距离后再决定行驶路线或者自行掉头避障。
图3 小车外观图
本文介绍了基于Arduino超声波避障小车的结构和组成,阐明了超声波避障小车开发关键流程。具有一定编程基础的大学生可以很方便的创新与二次迭代开发,也可以广泛应用到大学生电子设计竞赛中去。