欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 技术交流认准下方 CSDN 官方提供的联系方式
概要
随着我国科学技术的进步,智能化作为现代社会的新产物开始越来越普及,各种高新技术也广泛应用于智能小车和机器人玩具制造领域,使智能机器人越来越多样化。智能小车是一个多种高新技术的集成体,它融合了机械、电子、传感器、计算机硬件、软件、人工智能等许多学科的知识,可以涉及到当今许多前沿领域的技术。智能小车的研究和开发正成为广泛关注的焦点。本设计是一种基于单片机控制的简易自动循迹小车系统,系统的设计主要分为总体方案设计、硬件和软件设计,其中每一部分均采用模块化设计原则,使得设计易读、易修改、易扩充。
整个小车平台主要以51单片机为控制核心,通过无线遥控实现前进后退和转向行驶,通过红外线以及超声波传感器,实现小车的自适应循迹、避障等功能。设计采用对比选择,模块独立,综合处理的研究方法。通过翻阅大量的相关文献资料,分析整理出有关信息,在此基础上列出不同的解决方案,结合实际情况对比方案优劣选出最优方案进行设计。从最小系统到无线遥控,红外线对黑线的自动循迹再到超声波自动避障,完成各模块设计。通过调试检测各模块,得到正确的信号输出,实现其应有的功能。
一、系统总体方案
通过对小车结构组成的各个部分进行分析,并同时考虑经济性和实现的复杂度,本文最终决定使用51开发板(STC89C52)做控制中心,使用直流电机进行驱动,同时选择L293D芯片对于电机的具体操作(启停、反转)进行调节。此外,本文选择的传感器是RPR220光电对管,让小车根据红外光进行路径判断,信息需要经过单片机进行判断和处理,而后实现小车路径的改变。另外,面对障碍物,小车可以采用超声波的手段进行测距,并反馈转向信息,单片机的I/O端口通过输出高低电平以及各自持续的时长来操作电机的启停和速度,若“0”的电平持续时间长,那么小车就应该减速,或者是刹车停止。最终希望实现的功能是自动驾驶和智能避障。整体的系统结构框架图如2.1所示。
图2.1 智能循迹小车控制系统结构框图
二、硬件系统设计
STC89C52开发板包含8位的CMOS结构,携带的RAM和可移除的EEROM都可以为其多样化编程提供便利。其功能是在传统的51基础上进行拓展,添加了新的引脚功能。但是可以做到向下兼容。STC89C52实物图如图3.1所示。
3.1 单片机控制模块
3.1.1 STC89C52简介
STC89C52开发板包含8位的CMOS结构,携带的RAM和可移除的EEROM都可以为其多样化编程提供便利。其功能是在传统的51基础上进行拓展,添加了新的引脚功能。但是可以做到向下兼容。STC89C52实物图如图3.1所示。
图3.1 单片机实物图
STC89C52具体介绍如下:
在图3.2中,可以看到该开发板有40个引脚和借考进行插排设计,能支持可接线的外围电路拓展。按照其引脚功能来分,可以分为四组。下面分别说明这些引脚的名称和功能。
图3.2 STC89C52引脚图
1.电源与地引脚
Vcc:电源端,需要接+5V高电平,也可以通过上拉电阻与电源相连。
Vss:地接口,是公共端
2.时钟电路引脚
X1和X2分别连接外部的石英片以及补偿电容的一侧,若时钟的提供者非8051,而是外部的钟,则X1需要接低电平(地),X2接时钟的输入一侧。
3.I/O端口引脚
本文使用的51开发板有4个总端口,分别其不同的功能。这些端口分别命名为PO以及P1,P2和P3,各自又有8个引脚,实现不同的作用,实际上,每个引脚按照硬件接线位置的不同,可以选择编码执行不同的复用功能(或分时复用)。
第一、P0口:普通的用法就是公共的I/O接口,可以接上拉电阻或者驱动其他的负载元件。另外,其也可以作为总线使用,具体的来说,就是在开发板需要外接缓存时,需要一个总控线,那么这时的P0口就得按时段跳转,执行不同的任务,做数据传输用或者地址总线(低8位)。
第二、P1口:普通的用法是做通用的接口,收集或者发出电平信息。而更多的功能体现体现与P0口一致,只是作为总线的高8位地址。
三、 软件系统设计
4.1PWM调速简介以及实现
PWM指的是利用占空比调节输出功率、能量,以及控制电压的波形(傅里叶分解),这里用到的是周期可变的矩形波。
PWM是智能行驶小车设计中一个很重要的应用,如果仅仅有输出电压时间的控制进行调速,那么只能改变小车的直线运动状态,那么如何改变其行驶方向呢?PWM调制提供了一个思路,就是让两个轮子按不同的转速驱动,这样可以实现左右方向的转换。当然,PWM也可以实现直线方向上的调速。
单片机系统没有自己的PWM输出模块,但是可以通过内部的时钟以及定时计数器来实现。具体操作如图4.1。假定占空比为D,一个周期的时长为T,具体实现时,需要注意到:
①对于中断程序的设计需要合理,一般只需要写计数即可,不要增加其他的内容。此外,计数的时间要符合要求,尽可能简单。
②计数的最高水平、以及设计的PWM占空比D要根据外部电路以及具体的设计要求决定。
图4.1 PWM时序图
本系统需要用到的定时器在程序中设置时间后,选择P2.4口和P2.5口输出响应的值。进而得到不同的方波以便用作不同的速度控制。若T0已经确定,那么下一步的设计就是设计电平的不同脉宽,按规定的休止时间脉冲波,2、4这两个端口可以直接与电机的驱动接口相连,得到速度的元件控制。一般来说,电机可以获得速率可以分为一百个水平,所以对应的有一百种PWM波形,一个T也就是对应完成的时间。
4.2主程序设计
通过上面的分析,得知了具体运作的原理。这里需要进行整体的分块处理
首先,编程目标在于完成小车的自动驾驶和躲避障碍物,由于传感的原理是源于红外线的感知,那么拓展的功能就是红外遥控。设计的主程序流图已经给出,如图4.2。因为速度控制需要PWM调控,那么驱动的模块需要另外编写。对于框图做出如下说明:初始化以及T0的设定是常规步骤,接下来需要让小车感知路线,进行第一次的红外线发射以及采集,记录数据。接下来小车需要跑起来,过程中再发射红外波,这里收集的数据就需要与上一次的进行对比,得到差异的大小。如果小车按照黑线运动,那么不用管。若差距很大,需要进行调速和转向的相关修正。
四、结论
本文通过实验设计,完成了小车自动寻迹的功能。具体来说就是使用红外传感器,结合硬件电路设计和程序仿真,共同完成功能实现。总体来看,小车初步实现了最初设想的目的,在不同的轨迹设计上,也能够有很好的反应能力。然而,本设计也存在一定的缺陷,就是小车不能够根据路况来改变自己的速度,在出现弯道的时候,智能小车不能够很好的转弯,而且刹车功能也出现了一定的问题。
这次毕业设计让我学会了很多知识,并且锻炼了实践动手能力。虽然在设计过程中遇到了很多困难,一个问题时时得不到解决。但是在同学的帮组下我还是一步一步慢慢把那些问题挨个解决了。我想这是我们在书本上学不到的发现问题,分析问题,解决问题的能力,就会为我日后的学习工作以及生活奠定基础,这是一份宝贵的财富。在日后,我也会将良好的习惯贯彻执行下去。