
江阴职业技术学院
项目设计报告
项目超声波避障小车的设计与制作
专 业
学生
班 级
学 号
指导教师
完成日期
摘 要
智能小车是一种能够通过编程手段完成特定任务的小型化机器人它具有制作成本低廉电路结构简单程序调试方便等优点由于具有很强的趣味性智能小车深受广大机器人爱好者以及高校学生的喜爱
本论文介绍的是具有自动避障功能的智能小车的设计与制作以下简称智能小车论文对智能小车的方案选择设计思路以及软硬件的功能和工作原理进行了详细的分析和论述经实践验收测试该智能小车的电路结构简单调试方便系统反映快速灵活设计方案正确可行各项指标稳定可靠
Abstract
Smart cars can be programmed to perform a specific task means the miniaturization of robot it has to make cost is low circuit simple structure convenient program test Because of it has strong interest intelligent robot car favored by the majority of the university students enthusiasts and love
This paper introduces the is a automatic obstacle avoidance function of intelligent car design and production hereinafter referred to as the smart car the thesis to the intelligence of the car scheme selection design idea and the implementation of hardware and software function and working principle of a detailed analysis and discusses After practice acceptance test this intelligent car circuit structure is simple convenient debug fast flexible system reflect correct and feasible design scheme each index is steady and reliable
摘 要 I
Abstract II
目 录 III
第一章 绪论 1
11项目研究背景及意义 1
12项目主要研究容 1
13设计思路 1
14应用场合和功能 2
第二章 总体方案 3
21总体方案概述 3
22 总体电路原理图 3
第三章 各模块功能介绍 4
31障碍物测距系统 4
32显示模块 5
33驱动模块 10
34电源模块 12
第四章 软件设计 13
41 程序设计流程图 13
42 关键程序设计 14
第五章 系统调试 17
51 调试的思路 17
52 各模块的调试 17
53 调试心得 19
第六章 结论与展望 20
61 结论 20
62 展望 20
致 谢 21
参考资料 22
附录 23
1元器件清单 23
2样机实物照片 24
3电路原理图 25
相关程序 26
第一章 绪论
11项目研究背景及意义
智能作为现代社会的新产物是以后的发展方向他可以按照预先设定的 模式在一个特定的环境里自动的运作无需人为管理便可以完成预期所要达 到的或是更高的目标本设计主要体现多功能小车的智能模式设计中的理论 方案分析方法及特色与创新点等可以为自动运输机器人采矿勘探机器人 家用自动清洁机器人等自动半自动机器人的设计与普及有一定的参考意义同 时小车可以作为玩具的发展对象为中国玩具市场技术含量的缺乏进行一定的 弥补实现经济收益形成商业价值 超声波作为智能车避障的一种重要手段以其避障实现方便计算简单 易于做到实时控制测量精度也能达到实用的要求在未来汽车智能化进程中 必将得到广泛应用我国作为一个世界大国在高科技领域也必须占据一席之 地未来汽车的智能化是汽车产业发展必然的在这种情况下研究超声波在智 能车避障上的应用具有深远意义这将对我国未来智能汽车的研究在世界高科 技领域占据领先地位具有重要作用 本智能小车系统最诱人的前景就是可用于未来的智能汽车上了当驾驶员 因疏忽或打瞌睡时这样的智能汽车的设计就能体现出它的作用如果汽车偏离 车道或距障碍物小于安全距离时汽车就会发出警报提醒驾驶员注意如果 驾驶员没有及时作出反应汽车就会自动减速或停靠于路边 这样的小车还可以用于月球探测等的无人探月车帮助我们传达月球上更 多的信息让我们更加的了解月球为将来登月做好充分准备 这样的小车在科学考察探测车上也有广阔的应用前景在科学考察中有 很多危险且人们无法涉足的地方这时智能科学考察车就能够派上用场在 它上面装上摄像机代替人们进行许多无法进行的工作
12项目主要研究容
本设计题目为智能避障小车设计主要研究小车的避障功能小车遇到障碍物时当距离障碍物大于40cmPWM信号自增驱动电机加速小车加速前进当小于30cm时PWM信号自减驱动电机减速小车减速前进并且小车采取相应的避障措施这里探测装置必不可少因为超声波在距离检测方面的较准确定位所以采用超声波传感器作为探测装置由于超声波遇到障碍物时发生像光一样的反射和散射在经过多次发射之后再回到超声波检测端口会产生较严重的路程差从而影响对距离的检测进而影响对障碍物的较准确定位通过软件部校准优化消除外部物理条件造成的误差从而达到对障碍物的较准确定位
13设计思路
直流电机PWM控制系统的主要功能包括实现对直流电机的加速减速并且可以调整电机的转速能够很方便的实现电机的智能控制主体电路即直流电机 PWM 控制模块这部分电路主要由 ATS52 单片机 的 IO 端口定时计数器外部中断扩展等控制直流电机的加速减速以及转弯并且可以调整电机的转速能够很方便的实现电机的智能控制 其间是通过 ATS52 单片机产生脉宽可调的脉冲信号并输入到 L298 驱动芯片来 控制直流电机工作的该直流电机 PWM 控制系统由以下电路模块组成设计控制部分 主要由 ATS52 单片机的外部中断扩展电路组成直流电机PWM控制实现部分主要由电机和 L298 直流电机驱动模块组成设计显示部分LCD 数码显示部分实现对超声波测的距离的实时显示
14应用场合和功能
应用场合智能小车是一种能够通过编程手段完成特定任务的小型化机器人它具有制作成本低廉电路结构简单程序调试方便等优点由于具有很强的趣味性智能小车深受广大机器人爱好者以及高校学生的喜爱同时在玩具的应用上深受小朋友的青睐
功能本小车使用ATS52单片机作为主控芯片它通过超声波测距来获取小车距离障碍物的距离并且用LED显示出来当小车与障碍物的距离大于40cm时小车会沿直线前进当小车与障碍物的距离小于30cm时小车转弯以避开障碍物并且此时蜂鸣器报警在避开障碍物后小车会沿直线前进
第二章 总体方案
21总体方案概述
本小车使用ATS52单片机作为主控芯片它通过超声波测距来获取小车距离障碍物的距离并且用LCD显示出来当小车与障碍物的距离大于40cm时小车会沿直线前进当小车与障碍物的距离小于30cm时小车转弯以避开障碍物并且此时蜂鸣器报警在避开障碍物后小车会沿直线前进简要框图如图2-1
图 21简要框图
22 总体电路原理图
第三章 各模块功能介绍
31障碍物测距系统
方案一超声波视觉
优点价格合理夜间不受影响易于多目标测量和分类分辨率好缺点测量围小对天气变化敏感不能直接测量距离算法复杂处理速度慢
方案二激光雷达MMW雷达
优点夜间不受影响不受灯光天气影响缺点对水灰尘灯光敏感价格贵
探测障碍的最简单的方法是使用超声波传感器它是利用向目标发射超声波脉冲计算其往返时间来判定距离的算法简单价格合理所以我们选择超声波传感器
超声波测距原理
首先利用单片机输出一个40kHz的触发信号把触发信号通过TRIG管脚输入到超声波测距模块再由超声波测距模块的发射器向某一方向发射超声波在发射时刻的同时单片机通过软件开始计时超声波在空气中传播途中碰到障碍物返回超声波测距模块的接收器收到反射波后通过产生一个回应信号并通过ECHO脚反馈给单片机此时单片机就立即停止计时时序图如图1所示由于超声波在空气中的传播速度为340ms根据计时器记录的时间t就可以计算出发射点距障碍物的距离即S VT2通过单片机来算出距离
图31超声波测距原理 32显示模块
方案一用LCD显示
优点辐射小显示容多 低耗能散热小显示的画面稳定不闪烁缺点不适合做图图像还原不好有可视围
方案二用LED显示
优点亮度高成本低缺点不能显示汉字显示容较少
对于本课题的要求我们选择LCD实现功能显示容多低功耗显示画面稳定不闪烁硬件电路设计简单
字符型液晶显示模块是一种专门用于显示字母数字符号等点阵式LCD目前常用161162202和402行等的模块下面以太阳人电子的1602字符型液晶显示器为例介绍其用法一般1602字符型液晶显示器实物如图
图 3211602字符型液晶显示器1602LCD主要技术参数
显示容量16×2个字符
芯片工作电压4555V
工作电流20mA 50V
模块最佳工作电压50V字符尺寸295×435 W×H mm
引脚功能说明1602LCD采用标准的14脚无背光或16脚带背光接口各引脚接口说明如表所示编号 符号 引脚说明 编号 符号 引脚说明 1 VSS 电源地 9 D2 数据 2 VDD 电源正极 10 D3 数据 3 VL 液晶显示偏压 11 D4 数据 4 RS 数据命令选择 12 D5 数据 5 RW 读写选择 13 D6 数据 6 E 使能信号 14 D7 数据 7 D0 数据 15 BLA 背光源正极 8 D1 数据 16 BLK 背光源负极 表-2-1引脚接口说明表
第1脚VSS为地电源
第2脚VDD接5V正电源
第3脚VL为液晶显示器对比度调整端接正电源时对比度最弱接地时对比度最高对比度过高时会产生鬼影使用时可以通过一个10K的电位器调整对比度
第4脚RS为寄存器选择高电平时选择数据寄存器低电平时选择指令寄存器
第5脚RW为读写信号线高电平时进行读操作低电平时进行写操作当RS和RW共同为低电平时可以写入指令或者显示地址当RS为低电平RW为高电平时可以读忙信号当RS为高电平RW为低电平时可以写入数据
第6脚E端为使能端当E端由高电平跳变成低电平时液晶模块执行命令
第7~14脚D0~D7为8位双向数据线
第15脚背光源正极
第16脚背光源负极
1602LCD的指令说明及时序1602液晶模块部的控制器共有11条控制指令如表-2-2所示序号 指令 RS RW D7 D6 D5 D4 D3 D2 D1 D0 1 清显示 0 0 0 0 0 0 0 0 0 1 2 光标返回 0 0 0 0 0 0 0 0 1 3 置输入模式 0 0 0 0 0 0 0 1 ID S 4 显示开关控制 0 0 0 0 0 0 1 D C B 5 光标或字符移位 0 0 0 0 0 1 SC RL 6 置功能 0 0 0 0 1 DL N F 7 置字符发生存贮器地址 0 0 0 1 字符发生存贮器地址 8 置数据存贮器地址 0 0 1 显示数据存贮器地址 9 读忙标志或地址 0 1 BF 计数器地址 10 写数到CGRAM或DDRAM 1 0 要写的数据容 11 从CGRAM或DDRAM读数 1 1 读出的数据容 表-2-2控制命令表
1602液晶模块的读写操作屏幕和光标的操作都是通过指令编程来实现的说明1为高电平0为低电平
指令1清显示指令码01H光标复位到地址00H位置
指令2光标复位光标返回到地址00H
指令3光标和显示模式设置 ID光标移动方向高电平右移低电平左移 S屏幕上所有文字是否左移或者右移高电平表示有效低电平则无效
指令4显示开关控制 D控制整体显示的开与关高电平表示开显示低电平表示关显示 C控制光标的开与关高电平表示有光标低电平表示无光标 B控制光标是否闪烁高电平闪烁低电平不闪烁
指令5光标或显示移位 SC高电平时移动显示的文字低电平时移动光标
指令6功能设置命令 DL高电平时为4位总线低电平时为8位总线 N低电平时为单行显示高电平时双行显示 F 低电平时显示5x7的点阵字符高电平时显示5x10的点阵字符
指令7字符发生器RAM地址设置
指令8DDRAM地址设置
指令9读忙信号和光标地址 BF为忙标志位高电平表示忙此时模块不能接收命令或者数据如果为低电平表示不忙
指令10写数据
指令11读数据
与HD44780相兼容的芯片时序表如下读状态 输入 RS LRW HE H 输出 D0D7 状态字 写指令 输入 RS LRW LD0D7 指令码E 高脉冲 输出 无 读数据 输入 RS HRW HE H 输出 D0D7 数据 写数据 输入 RS HRW LD0D7 数据E 高脉冲 输出 无 表-2-3基本操作时序表
读写操作时序如图和所示
图 322 读操作时序
图 323 写操作时序
33驱动模块
方案一采用ULN2003驱动它是由7组达林顿晶体管阵列和相应的电阻网络以及钳位二极管网络构成具有同时驱动7组负载的能力一般用于高速大功率驱动电路所以我们不采用这个方案
方案二采用由双极性管组成的H桥电路L298N用单片机控制晶体管使之工作在占空比可调的开关状态精确调整电机转速这种电路由于工作在管子的饱和截止模式下则效率非常高H桥电路保证了可以简单地实现转速和方向的控制电子开关的速度很快稳定性也很高而且它有更强的驱动能力L298N有过电流保护功能当出现电机卡死时可以保护电路和电机等
L298N有过电流保护功能当出现电机卡死时可以保护电路和电机
等所以我们选择L298N
下图为L298部图
图33L298部原理图
L298各引脚功能如下表
引脚 功能 115 SEN1SEN2 分别为两个H桥的电流反馈脚不用时可以接地 23 1Y11Y2 输出端与对应输入端IN1IN2同逻辑 4 VS 驱动电压最小值需比输入的低电平电压高25V 57 IN1IN2 输入端TTL电平兼容 611 EN1EN2 使能端低电平禁止输出 8 GND 地 9 VSS 逻辑电源457V 1012 IN3IN4 输入端TTL电平兼容 1314 2Y12Y2 输出端与对应输入端IN3IN4同逻辑 表3-3-1 封装引脚及功能
驱动电机的运行IO端口状态与电机制动对照表如下
IN1 IN2 IN3 IN4 EN1 EN2 转速 1 0 1 0 1 1 正转 0 1 0 1 1 1 反转 1 1 1 1 1 1 停止 0 0 0 0 1 1 停止 X X X X 0 0 停止 表3-3-2 IO端口状态与电机制动对照表
34电源模块
我们选择采用5v的的稳压电源
优点稳定可靠且有各种成熟电路可供选用
缺点各模块都采用电源会使系统复杂且可能影响电路电平
综合电源模块的缺优点和电路的实际需求我们采用了两块稳压电源一块给小车的电机驱动供电一块给小车的芯片供电这样弥补了单个电源供电出现电力不足的情况
第四章 软件设计
41 程序设计流程图
本设计系统软件采用模块化结构由主程序、定时子程序电机驱动子程序、中断子程序显示子程序、算法子程序构成主程序流程图如图41所示
图 41主程序流程图 42 关键程序设计
PWM产生程序设计
void Timer2 void interrupt 5
TF2 0
RCAP2H 0x0fe
RCAP2L 0x33
click
if click 100 click 0
if click ZK1
PWM1 1
else
PWM1 0
if click ZK2
PWM2 1
else
PWM2 0
2超声波的发射与接受程序设计
void zd3 interrupt 3
TH1 0x0f8
TL1 0x30
timer
if timer 200
timer 0
TX 1
_nop_
_nop_
_nop_
_nop_
_nop_
_nop_
_nop_
_nop_
_nop_
_nop_
_nop_
_nop_
_nop_
_nop_
_nop_
_nop_
_nop_
_nop_
_nop_
_nop_
_nop_
TX 0
31602的初始化程序的设计
void ini_lcd1602
write_lcd1602 0x380
delay 1
write_lcd1602 0x0c0
delay 1
write_lcd1602 0x060
delay 1
write_lcd1602 0x010
delay 1
41602的写程序的设计
void write_lcd1602 uchar cmduchar i
lcd_mang
rs i
rw 0
e 0
_nop_
_nop_
e 1
_nop_
_nop_
P0 cmd
_nop_
_nop_
_nop_
_nop_
e 0
51602的判忙程序的设计
void lcd_mang
rs 0
rw 1
e 1
_nop_
_nop_
_nop_
_nop_
while P00x80
e 0
第五章 系统调试
51 调试的思路
本设计的智能避障小车一共分为四大模块分别是L298驱动模块超声波测距模块LCD显示模块以及蜂鸣器报警模块调试的时候我们可以把四大模块分别调试最后再把所有模块组合起来再进行最后的整机调试这样一个调试的思路
52 各模块的调试
521 LCD的调试首先根据电路图将显示模块焊好再用万用表检查电路是否出现短路一切都正常的情况下将LCD测试程序烧到芯片中观察LCD的显示是否正确如图521一开始可能什么都不显示这个时候我们只需调整LCD 3脚的变阻器阻值即可
图 521LCD测试图
522 超声波的调试
超声波模块一共有四个脚一个是VCC一个是GND还有两个分别是超声波的发射和接收引脚连接电路时候只需引出四根插线分别连接到S52的对应引脚烧制好测试程序测试结果图如522本设计四根插线分别连接到VCCGND还有发射和接收引脚分别为P30和P32口
图 522超声波测试图
523 蜂鸣器报警调试
蜂鸣器的连接很简单只需用一个PNP管来做驱动当低电平到来时蜂鸣器发出声音当高电平到来时没有声音本设计中蜂鸣器连接到P34口如图523所示
图523蜂鸣器报警电路 53 调试心得
通过系统的调试我们可以学到更多的知识我们也可以发现仿真和实物调试不同的地方程序设计的结果可能往往和实物调试出的结果不一样这就需要我们去思考去斟酌去改进以达到预期效果通过程序和硬件的调试我们可以更深刻的理解各功能模块之间的联系也可以明白各调试的步骤
在调试的过程中我也遇到许多问题例如我在宿舍调试好小车之后带到班级时候在插上电源试图让小车跑起来时候发现超声波模块失去了作用LCD不再显示数据了后来我用电脑USB口供电发现也不可以检查了许久才发现是超声波模块上的电源线和地线的两根插线出现了断路换线之后LCD正常显示数值小车正常行驶整个调试过程需要硬件和软件结合起来调试要仔细检查电路认真思考程序
硬件部分调试的步骤
检查原理图连接是否正确用万用表检查是否有虚焊引脚短路现象检查原理图与上引脚是否一致680欧的电阻焊成了68千欧这使我深深感受到理论与实际间的差距在调试过程中发现插上编程器后不能烧制程序通过检查电路发现ATS52芯片的使能端没有接VCC改好之后重新烧制发现还是不可以通过再次检查发现是共阴管的驱动芯片74LS245的引脚出现焊接错误通过这些调试提高了我检查电路的能力以及巩固了电路图的知识通过这样的设计提高了我的动手能力每天在实验室除了焊接线路板还可以上机编程使我软件调试知识也提高了本设计采用的是S52单片机这主要是因为该单片机的稳定性比较好还可以采用其它系列的单片机比如采用陵阳单片机就可以简化编程但其稳定性不是很好
62 展望
1在本课题的基础上我们可以在小车的底座下面装一个吸尘装置这样就可以在小车行驶的过程中吸除一些预先放好的小纸屑
2设计出两辆小车一辆小车放在另一辆的前面当前面一辆小车起动时候后面一辆小车也起动前面一辆小车转弯的时候后面一辆也跟着转弯前面一辆小车停止时后面一辆也跟着停止
致 谢
历时三个月的毕业设计已经告一段落经过自己不断的搜索努力以及白老师的耐心指导和热情帮助本设计已经基本完成在这段时间里白老师严谨的治学态度和热忱的工作作风令我十分钦佩他的指导使我受益非浅
通过这次毕业设计使我深刻地认识到学好专业知识的重要性也理解了理论联系实际的含义并且检验了大学四年的学习成果虽然在这次设计中对于知识的运用和衔接还不够熟练但是我将在以后的工作和学习中继续努力不断完善这三个月的设计是对过去所学知识的系统提高和扩充的过程为今后的发展打下了良好的基础
由于自身水平有限设计中一定存在很多不足之处敬请各位老师批评指正
参考资料
1 负图传感器集成电路手册第一版化学工业2004590~591
2华MCS-51系列单片机实用接口技术第三版1997年
3红润实用自动控制科技大学1990年1月
4康华光电子技术基础高等教育1983年10月
5潘新民微型计算机控制技术人民邮电技术1988年3月
6依军单片机微型接口技术人民邮电技术19年3月
7广弟单片机基础航空航天大学2001
8汉才单片机原理及其接口技术清华大学1996
9王毅单片机器件应用手册人民邮电1995
附录
1元器件清单
序号 元件名称 数量 参数 1 ATS52单片机 1 2 超声波模块 1 3 L298n 1 4 智能避障小车底盘 1 5 蜂鸣器 1 6 LCD液晶屏 1 2样机实物照片
3电路原理图
相关程序
include
include
define uchar unsigned char
define uint unsigned int
unsigned char i
sbit rs P26 定义引脚
sbit rw P25
sbit e P27
sbit TX P30 触发信号引脚
sbit FM P34
sbit PWM1 P36 pwm信号输出
sbit PWM2 P37
static char click 0
unsigned char ZK1ZK2
unsigned int time 0
unsigned int timer 0
unsigned long S
bit flag 0
unsigned char code ASCII[19] 01234567-MJU LI
static unsigned char DisNum 0 显示用指针
unsigned long S 0
unsigned char disbuff[11] 0
void Conut void
time TH0256TL0
TH0 0
TL0 0
S time17 100
disbuff[0] 13
disbuff[1] 14
disbuff[2] 15
disbuff[3] 16
disbuff[4] 17
disbuff[5] 18
disbuff[6] S1000100
disbuff[7] 10
disbuff[8] S1*******0
disbuff[9] S100010 10
disbuff[10] 12
void delay_1 void 误差 0us
unsigned char ab
for b 215b 0b--
for a 45a 0a--
void delay uchar a
uchar i
while a--
for i 0i 250i
_nop_
_nop_
_nop_
_nop_
判忙
void lcd_mang
rs 0
rw 1
e 1
_nop_
_nop_
_nop_
_nop_
while P00x80
e 0
1602的写
void write_lcd1602 uchar cmduchar i 当i为0的时候为向1602写指令为1写数据
lcd_mang
rs i
rw 0
e 0
_nop_
_nop_
e 1
_nop_
_nop_
P0 cmd
_nop_
_nop_
_nop_
_nop_
e 0
1602的初始化
void ini_lcd1602
write_lcd1602 0x380
delay 1
write_lcd1602 0x0c0
delay 1
write_lcd1602 0x060
delay 1
write_lcd1602 0x010
delay 1
void Timer2Interrupt
RCAP2H 0x0fe
RCAP2L 0x33
ET2 1 允许T2定时器中断
EA 1 打开总中断
TR2 1 启动T2定时器
void zd0 interrupt 1
flag 1
void zd3 interrupt 3 T1中断用来扫描数码管和计800MS启动模块
TH1 0x0f8
TL1 0x30
timer
if timer 200
timer 0
TX 1 800MS 启动一次模块
_nop_
_nop_
_nop_
_nop_
_nop_
_nop_
_nop_
_nop_
_nop_
_nop_
_nop_
_nop_
_nop_
_nop_
_nop_
_nop_
_nop_
_nop_
_nop_
_nop_
_nop_
TX 0
void Timer2 void interrupt 5
TF2 0 T2定时器发生溢出中断时需要用户自己清除溢出标记
RCAP2H 0x0fe
RCAP2L 0x33 恢复定时器初始值
click
if click 100 click 0
if click ZK1
PWM1 1
else
PWM1 0
if click ZK2
PWM2 1
else
PWM2 0
主函数
void main
TMOD 0x19 设T0为方式1GATE 1
TH0 0
TL0 0
TH1 0x0f8 2MS定时
TL1 0x30
ET0 1 允许T0中断
ET1 1 允许T1中断
TR1 1 开启定时器
Timer2Interrupt
EA 1 开启总中断
ZK1 20
ZK2 20
ini_lcd1602
while 1
while INT0 0 当RX为零时等待
TR0 1
while INT0 1 当RX为1计数并等待
TR0 0 关闭计数
Conut 计算
if S 40 控制加速
FM 1
P1 0xaf
ZK1 ZK1-5
ZK2 ZK2-5
else
if S 30 控制转向
FM 0
ZK1 ZK15
ZK2 ZK25
P1 0X8F
delay_1
if ZK1 99 ZK1 1
if ZK1 1 ZK1 10
if ZK2 99 ZK2 1
if ZK2 1 ZK2 10
write_lcd1602 0x800
for i 0i 10i
write_lcd1602 ASCII[disbuff[i]]1
- III -
- 31 -
