当前位置:首页 期刊杂志

基于Arduino的智能迷你小车设计

时间:2024-09-03

天津职业技术师范大学工程实训中心 刘卫华 戴健雄

引言:本文设计将传统智能循迹小车系统和开源电子设计Arduino结合设计智能循迹小车系统,并通过PID算法实现智能调节。论文介绍了设计的思路和一些用到的基本的原理及系统的硬件、软件设计知识。

1 Arduino简介

Arduino是一个基于开放源代码的软硬体平台,构建于开放原始码simple I/O介面版,并且具有使用类似Java,C语言的Processing/Wiring开发环境。Arduino能通过各种各样的传感器来感知环境,通过控制灯光、电机和其他的装置来反馈、影响环境。板子上的微控制器可以通过Arduino的编程语言来编写程序,编译成二进制文件,烧录进微控制器。对Arduino的编程是利用Arduino编程语言和Arduino开发环境来实现的。基于Arduino的项目设计,可以只包含Arduino软件平台,也可以结合Arduino相应的硬件电路设计。

2 功能需求

设计微型小车,能在如图1所示的参数测试场景中实现自动循迹或红外摇控控制。

图1 测试场景及参数

根据要求,硬件应全面兼容Arduino,并具有通信和下载接口,具有光电传感器能感知地面黑线,具有可控驱动电机,具有红外摇控接收装置,具有一定的人机接口,LED指示和按键等。

3 电路硬件设计

根据小车的功能,设计的系统方框图2所示。

图2 系统方框图

为了实现的微型化,以及充分发挥Arduino开放性,在功能框图的基础上增加了串口、ISP下载口、红外线接收、按键及两个LED指示灯,并对标准的Arduino电路进行了简化,取消外围晶振电路和复位电路。主控芯片使用了AVR ATMEGA8L,低电压单片机。光电传感器使用了SANYO光电反射管SIP-315-34。本小车没有倒退动作,所以不需要电机的反转。为了实现的转弯等动作,要求通过改变控制信号的高低电平比例(即PWM)来控制电机的转速。为了实现小车的红外功能,并充分利用主控芯片的资源,增加一只一体化红外接收头NB0038;将RXD和TXD及地线通过排针引出,可通过专门的USB转TTL串口线与小车进行通信;增加了一个按键和两个LED指示电路,用于电路调试及功能指示。

4 软件设计

下面将介绍如何使小车实现自主循迹,并具有一定的智能性。

设计的主程序流程图如图3所示。

图3 主程序流程图

为了实现走直线以及转弯等动作,这就要求小车的两个电机转速可调。使用PWM(脉冲宽度调节)的技术,通过改变脉冲高电平的比例(占空比)来改变等效有效值。在Arduino中我们使用AnalogWrite(pin,Value)来实现数字IO口PWM输出,输出的PWM信号频率大约400Hz。 本设计中pin取值为9和10分别对应电机1和2,Value设置输出的信号占空比,范围0-255,0对应电机停转,255为最快转速。

本设计中,使用脉冲光来排除环境光线的干扰,并按顺序扫描来防止传感器之间的相互干扰。微控制器先关闭LED并扫描传感器,采样输出电压,打开LED并且再次采样输出电压。两次采样的差值作为LED的光敏电流和环境光线被排除后的输出电压。其余的传感器也按上述顺序进行扫描。流程图如图4所示。

通过相同的方法分别采集了传感器在黑线和白纸上的值,分别存入mySensB和mySensW数组。将被跟踪的线的位置是与中心值对比,定位误差同比例、积分、差分滤波器一起被处理来生成控制命令,控制左右轮使小车按轨迹快速行驶。

图4 传感器采集流程图

5 实际测试结果

系统测试过程中,采取顺时针和逆时针两个方向的测试方法,以此来检测智能小车左右转的效果。

经过顺时针、逆时针各10次,每次1圈的实际测试。系统在顺时针运动时,主要执行右转和直行这两种运动控制;在逆时针运动时,主要执行左转和直行这两种运动控制。在每组测试过程中,逆时针的运动时间相对顺时针的运动时间较长,则可大致得出结论:左转控制的响应时间慢于右转控制。另外,起点位于弯道的运行时间要长于起点位于直道的运行时间。实物小车如图5所示。

图5 实物小车

6 结论

本设计可用于电子、自动化等专业的实训课程训练,可以由学生参考本电路,设计电路板及机械等,也可提供设计好的智能小车平台,实现Arduino平台的编程学习、代码算法学习以及应用平台进行竞赛活动。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!