基于单片机的避障小车的设计说明书——机电一体化专业课程设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

20届机电一体化专业课程设计
基于单片机的避障小车的设计说明书姓名
学号
学院
专业
班级
导师
日期
2019年11月
前言
STC89C51/52是STC89系列单片机里应用非常广泛的一款,在自动控制或者电控领域里享有很高的应用价值,以其易用性和兼容性以及不错的稳定性受到了广大电子设计及爱好者的好评。

本次设计主要是利用电路开发板、单片机最小系统、超声波、红外传感器模块以及电机L293D等相关元器件完成避障小车的制作,以STC89为主控芯片,利用超声波对距离的准确检测来将前方的障碍探测出来并且通过超声波的接收模块回传到小车,实现前进过程中的避障功能。

目录
1 绪论 (1)
1.1 研究目的及意义 (1)
1.2 项目主要研究内容 (1)
2 总体设计方案及论证 (1)
2.1总体方案设计 (1)
2.2 硬件设计 (2)
2.2.1电源设计 (2)
2.2.2电机驱动设计 (3)
2.2.3超声波测试模块 (3)
2.2.4红外避障模块 (4)
2.2.5 52单片机主控系统设计 (5)
2.3 软件分析 (6)
2.3.1 直流电机控制模块 (6)
2.3.2舵机云台控制模块 (7)
2.4软件与硬件的整合 (8)
2.4.1调试超声波模块 (8)
2.4.2 电机调试 (8)
3 总结 (8)
致谢 (9)
参考文献 (9)
6 附录 (10)
6.1 开发板原理总图 (10)
6.2 程序 (10)
1绪论
1.1研究目的及意义
随着汽车工业的快速发展,关于汽车的研究也越来越受到人们的关注。

智能汽车概念的提出给汽车产业带来机遇也带了挑战。

汽车的智能化必将是未来汽车产业发展的趋势,在这样的背景下,我们开展了基于超声波、红外的智能小车的避障研究。

超声波、作为智能车避障的一种重要手段,以其避障实现方便,计算简单,易于做到实时控制,测量精度也能达到实用的要求,在未来汽车智能化进程中必将得到广泛应用。

我国作为一个世界大国,在高科技领域也必须占据一席之地,未来汽车的智能化是汽车产业发展必然的,在这种情况下研究超声波在智能车避障上的应用具有深远意义,这将对我国未来智能汽车的研究在世界高科技领域占据领先地位具有重要作用。

1.2项目主要研究内容
超声波在距离检测方面的定位还是较准确的。

超声波传感器主要发射高频超声波,在遇到障碍物时发生像光一样的反射和散射,在经过多次发射之后再回到超声波接受端口会产生较严重的路程差,从而影响对距离的检测进而影响对障碍物的较准确定位。

所以考虑到这个问题,在进行此次课设实验时要求外部环境的影响必须降到最低,再通过软件内部校准优化消除外部物理条件造成的误差从而达到对障碍物的较准确定位。

2总体设计方案及论证
2.1总体方案设计
系统采用STC89系列的8位微控制器STC89C52单片机作为核心控制单元用于智能车系统的控制,在超声波检测到障碍物之后,主控芯片根据距离值控制直流电机的转动,在转动的方案上将首先尝试左/右转,若转不过去就根据程序控制小车后退,并且向相反的方向转动。

系统总体的设计方框图如图2-1-1所示:
图2-1-1 系统总体方案图
2.2 硬件设计
2.2.1 电源设计
电源部分的设计主要采用L293D 双H 桥驱动芯片,使用此芯片搭建的电路的优点是简单、实用并且可同时驱动两路直流电机。

并且完全能够满足避障小车单片机控制系统和L293D 芯片的逻辑供电的供电需要。

此芯片有3个引脚,分别为使能端EN1、输入IN1端和输入IN2端,通常情况下可以提供峰值1.2A 的电流,在散热足够的情况下可以提供大于1.2A 的电流。

电机的驱动电压范围为4.5V-36V ,模块工作电压稳定在5V ,正负误差不超过0.2V 。

芯片如图2-2-1所示。

基于这样的情况再结合电机的工作电压,选取了12V电源作为芯片的输入电源,搭建的电源部分电路如图2-2-2。

图2-2-1 双H 桥驱动芯片
STC89C52 主控模块 电源模块
路经检测模块
直流电机驱动
模块 避障模块
2.2.2 电机驱动设计
电机驱动部分主要采用一片L293D和主控芯片STC89C52单片机直接相连构成驱动电路。

L293D芯片直插式的15个引脚,其中有两个使能端EN1和EN2,四个输入端IN1、IN2、IN3和IN4,四个输出端OUT1、OUT2、OUT3和OUT4,一个VSS(5V时性能最好)逻辑电源电压输入端、功率电源电压输入端。

L293D可同时驱动两个电机,最大输出电流为1.2A,鉴于它的良好性能和价格,选取L293D作为电机驱动芯片,L293D芯片如图2-2-2。

STC89C52的两个端口直接分别与L293D的两个使能端EN1、EN2相连,控制电机转停的目的。

PD0-PD3端口分别与L293D的引脚IN1、IN2、IN3、IN4相连通过电平变化控制电机在持续高速状态下的转向。

L293D的四个输出端直接与两个电机相连驱动电机。

图2-2-2 L2983D芯片
2.2.3 超声波测试模块
由于超声波指向性强,能量消耗缓慢,在介质中传播的距离较远,因而超声波经常用于距离的测量,如测距仪和物位测量仪等都可以通过超声波来实现。

利用超声波检测往往比较迅速、方便、计算简单、易于做到实时控制,并且在测量精度方面能达到工业实用的要求,因此在移动机器人研制上也得到了广泛的应用。

为了使移动机器人能自动避障行走,就必须装备测距系统,以使其及时获取距障碍物的距离信息(距离和方向)。

介绍了三方向(前、左、右)超声波测距系统,就是为机器人了解其前方、左侧和右侧的环境而提供一个运动距离信息。

使用固定在车头的超声波与红外避障模块完成避障实验, LCD1602液晶显示超声波测距信息。

左边红外避障传感器检测到障碍物,右转躲避;
右边红外避障传感器检测到障碍物,左转躲避;
否则前进;
使用超声波每隔60毫秒进行一次测距,当距离小于设定值(30厘米)时执行停车、后退、原地掉头;
LCD1602液晶显示测距距离;
图2.2.3.1 超声波模块实物图
图2.2.3.2 超声波模块电路图
2.2.4 红外避障模块
该传感器模块对环境光线适应能力强,其具有一对红外线发射与接收管,发射管发射出一定频率的红外线,当检测方向遇到障碍物(反射面)时,红外线反射回来被接收管接收,经过比较器电路处理之后,绿色指示灯会亮起,同时信号输出接口输出
数字信号(一个低电平信号),可通过电位器旋钮调节检测距离,有效距离范围 2~30cm,工作电压为3.3V-5V。

该传感器的探测距离可以通过电位器调节、具有干扰小、便于装配、使用方便等特点,可以广泛应用于机器人避障、避障小车、流水线计数及黑白线循迹等众多场合。

图2.2.4 红外避障模块指示灯
2.2.5 52单片机主控系统设计
主控系统主要采用STC89C52单片机作为中央处理器,系统主要包含ISP下载端口用于现在单片机程序、超声波连接端口用于和超声波模块的连接输入检测信号和输出指令信号、L293D连接端口用于和驱动电路的连接,输出电机转动信号和各类指示灯用于指示测试信号等。

控制系统部分电路如图2-2-5所示:
图2-2-5 主控系统原理图
2.3 软件分析
2.3.1 直流电机控制模块
在单片机的应用领域里面,电机控制的方法比较多,主流的控制方案有以下几种:方案一:串电阻调速系统。

方案二:静止可控整流器。

简称V-M系统。

方案三:脉宽调速系统。

(1)由于PWM调速系统的开关频率较高,仅靠电枢电感的滤波作用就可以获得脉动很小的直流电流,电枢电流容易连续,系统的低速运行平稳,调速范围较宽,可达1:10000左右。

由于电流波形比V-M系统好,在相同的平均电流下,电动机的损耗和发热都比较小。

(2)同样由于开关频率高,若与快速响应的电机相配合,系统可以获得很宽的频带,因此快速响应性能好,动态抗扰能力强。

(3)由于电力电子器件只工作在开关状态,主电路损耗较小,装置效率较高。

根据以上综合比较,以及本设计中受控电机的容量和直流电机调速的发展方向,本设计采用了STC89C52单片机的PWM输出调速,结合L293D芯片,能够实现比较好的控制效果,在小车避障的过程中,也可以直接控制L293D芯片,改变电机的运转情况,实现简易的转向与后退等功能。

图 2.3.1 电机控制流程图
2.3.2 舵机云台控制模块
舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。

目前在高档遥控玩具,如航模,包括飞机模型,潜艇模型;遥控机器人中已经使用得比较普遍。

舵机是一种俗称,其实是一种伺服马达。

一般舵机旋转的角度范围是0 度到180 度。

舵机有很多规格,但所有的舵机都有外接三根线,分别用棕、红、橙三种颜色进行区分,由于舵机品牌不同,颜色也会有所差异,棕色为接地线,红色为电源正极线,橙色为信号线。

舵机的转动的角度是通过调节PWM(脉冲宽度调制)信号的占空比来实现的,标准 PWM(脉冲宽度调制)信号的周期固定为 20ms(50Hz),脉宽由 0.5ms 到2.5ms 之间,脉宽和舵机的转角0°~180°相对应。

对应的控制关系是:
0.5ms-------------0度;
1.0ms------------45度;
1.5ms------------90度;
2.0ms-----------135度;
2.5ms-----------180度;
我们可以通过程序产生这样的PWM波来实现控制舵机转动的角度。

图2.3.2 舵机云台控制模块
2.4 软件与硬件的整合
在本次设计过程中,考虑到各个模块之间的控制复杂性,我们将电机控制,超声波测距分开调试,当两个模块都可以正常工作之后,再将它们结合起来调试,采取了“分而治之”的思想。

2.4.1 调试超声波模块
在调试超声波的时候,主要思想是用定时器检测超声波会送信号维持高电平的时间,用串口示波器将测得的数据显示在串口示波器上,根据返回的结果,确定达到转弯距离以内所需要的时间,然后利用时间控制电机。

2.4.2 电机调试
在点击调试的过程中,我们首先将STC89C52的PWM输出在示波器上反映出来,确保PWM波的输出正常,并且能够根据用户设定的比较值产生不同形式的输出,在比较匹配发生之后,调节其占空比,实现电机的速度控制,在控制电机转动的时候,采用直接控制L293D芯片的方式,实现左转,右转,后退等功能。

3 总结
本超声波避障小车的设计基于单片机原理和传感器原理,以STC89C52单片机为主控芯片,采用L293D和12V直流电机为驱动元件,通过软件编程制作了一整套结构完整,功能模块化,反应较为灵敏的超声波避障小车。

经过对该避障小车的避障测试实验,实验结果证明该避障小车能够很好的按照预期完成避障动作,并且能够快速运动灵敏避障,效果良好,运行稳定性较好。

但是该超声波避障小车还存在着许多的不足,比如说只能对正前方一定角度内进行探测,使用的是一路超声波而不是多路超声波探测,并且为了简化,默认的只是向同一个方向转弯等,这些都是有待进一步发展和提高的,这与制作者自身的对与障碍检测距离分析、自动控制信号处理、图像处理等诸多技术的有限性分不开的,还需要研究制作者的学习和探索。

我们遇到的困难主要在于对超声波模块的使用方法不了解,实验室的模块并没有
配套的资料,而网上也比较难找到它的手册资料,最后我们选择参考模板程序,然后对其进行改进使之适于自己的需求,这样也减少了从头到尾重复编写代码的时间。

我们总结得出:能用简单方法解决的问题便不用复杂的技术。

致谢
在课程设计完成过程中,我们团队遇到过许多难以解决的困难。

在此非常感谢指导老师对我们团队耐心而细致的指导,老师总是在百忙之中聚集大家解决设计的困难,同时老师一次次纠正一些难以发现的错误,让我们十分敬佩指导老师的专业水平以外,认真负责的精神也给了我们巨大的影响,严谨的治学和科学研究的精神也是我们永远学习的榜样。

随着设计的一步步完成,我们要再次感谢指导老师,老师认真负责,平易近人。

在老师的悉心及细心的指导下,我们不仅学到了扎实的专业知识,也为即将走上工作的路垫实了基础,在设计过程中,为我们付出了大量的精力与时间,静心的辅导,认真的工作态度及诲人不倦的精神让我们受益匪浅,在此向他表示衷心的感谢及诚挚的敬意。

最后感谢所有给予我们帮助的老师与同学,在这个过程中下,我们互相增长了许多知识,在此我们团队表示深深的感激之情。

参考文献
[1] 邵贝贝. 嵌入式实时操作系统[LC/OS-Ⅱ(第2版)[M]. 北京.清华大学出版
社.2004
[2] 邵贝贝. 单片机嵌入式应用的在线开发方法[M].北京.清华大学出社.2004
[3] 王晓明. 电动机的单片机控制[M].北京. 北京航空航天大学出版社.2002
[4] 臧杰,阎岩. 汽车构造[M]. 北京. 机械工业出版社.2005
[5] 安鹏,马伟.S12单片机模块应用及程序调试[J]. 电子产品世界. 2006.第211
期. 162-163
[7] 童诗白,华成英.模拟电子技术基础[M].北京. 高等教育出版社.2000
[8] 沈长生.常用电子元器件使用一读通[M].北京. 人民邮电出版社.2004
[9] 宗光华.机器人的创意设计与实践[M].北京. 北京航空航天大学出社.2004
[10] 张伟等.Protel DXP高级应用[M].北京. 人民邮电出版社.2002
[11] 张文春. 汽车理论[M].北京.机械工业出版社.2005
[12] 江海波,王卓然,耿德根编著.深入浅出AVR单片机.中国电力出版社,2008.
[13] 袁新娜,与红英编著.超声波传感器在智能小车避障系统中的应用.[A]中北大学(2009)08-0085-04
6附录
1)开发板原理总图
2)程序
Void UltrasonicAvoid(uint val)
{
uint Dis;//距离暂存变量
Dis = GetDistance();//获取超声波测距距离,单位:毫米
LCD1602_Dis_OneChar(0,0,’F’);//F表示前方距离
If(Dis < val)
{
SmartCarStops();//停车
Delay1ms(100);
SmartCarBack(LeftSpeed,RightSpeed);//后退
Delay1ms(50);//延时50ms
SmartCarLeftTurn(LeftSpeed,RightSpeed);//原地左转
Delay1ms(100);//延时100ms
}
}
Else
{
for(Dis=0;Dis<1800;Dis++)//测距周期不低于60ms 这里借用Di
{
IR_Avoid();//红外避障
}
}
/*红外避障*/
Void IR_Avoid()
{
If(UAvoidSensorLeft == 0)
{
SmartCarRight(LeftSpeed,RightSpeed);//右转
}else if(UAvoidSensorRight == 0)
{
SmartCarLeft(LeftSpeed,RightSpeed);//左转
}else
{
SmartCarForward(LeftSpeed,RightSpeed);//前进
}
}
Main.c
Void main()
{
LeftSpeed = 150;//设置左轮速度
RightSpeed = 150;//设置右轮速度
IntRegInit();//中断寄存器初始化
Timer0Init();//PWM调速初始化
Timer1Init();//初始化定时器
Init_LCD1602();//LCD1602初始化
ServoFront();//初始化舵机朝向
LCD1602_Dis_Str(0,0,”Please press the”);//LCD1602写字符串
LCD1602_Dis_Srt(0,1,”S2 to start”)//LCD1602写字符串请按下S2启动小车
Keyscan();//按S2按键启动
LCD1602_Clear_Screen();//LCD1602清屏
While(1)
{
UltransonicAvoid(300);//超声波避障,LCD1602显示距离,形参设置触发距离}
}。

相关文档
最新文档