小车循迹控制系统设计.docx
- 文档编号:16307887
- 上传时间:2023-07-12
- 格式:DOCX
- 页数:19
- 大小:118.02KB
小车循迹控制系统设计.docx
《小车循迹控制系统设计.docx》由会员分享,可在线阅读,更多相关《小车循迹控制系统设计.docx(19页珍藏版)》请在冰点文库上搜索。
小车循迹控制系统设计
武汉理工大学华夏学院
课程设计
课程名称单片机原理及应用课程设计题目小车循迹控制系统设计(路线5)
专业
班级
学号—
姓名
成绩
指导教师夏婷
2014年7月3日
课程设计任务书
学生姓名:
专业班级:
指导教师:
夏婷工作单位:
信息工程系
设计题目:
小车循迹控制系统设计(路线5)
初女台条件:
1、硬件设备:
MCS-51单片机最小系统板、四个QTI传感器、两个舵机、两个车轮、锂电池、ISP下载线、面包板;
2、软件环境:
KeilC51、progispF载器。
设计任务:
(在规定的时间内完成下列任务)
1.完成硬件设计并连线,以MCS-51单片机为控制核心,根据4个QTI传感器采集到的数据控制舵机的运转,进而控制车轮的速度和方向,并画出硬件原理图和实验连线图:
2.用C语言编程实现以下小车行驶线路(地图见下页):
起始点f黄点fA点,旋转360度〜中心点〜起始点。
时间安扌非:
各时间段的任务可以交替进行
时间
设计内容
第一天
介绍题目,实物演示、分任务、查找相关资料
第二天
进行需求分析,完成总体设计
第三天
硬件详细设计,连接实验电路,软件详细设计,编写程序;第三天须提交硬件原理图、实验接线图及程序流程图的电子版
第四天
调试程序、测试系统、答辩;
第五天
答辩后完成设计报告。
设计报告撰写格式要求:
(按提供的设计报告统一格式撰写)
设计报告应包含以卞内容:
1设计任务与要求
2总体方案与说明
3硬件原理图与说明
⑤软件主要模块流程图与说明
⑦系统调式、问题分析与解决方案;
⑨小结与体会
附录:
源程序(必须有简单注释)
指导教师签名:
页好、
教研室主任(或责任教师)签名:
1
小车行驶线路地图如卜•:
第1章需求分析1
1.1课程设计题目1
1.2课程设计目的任务及内容和要求1
1.3软硬件运行坏境及开发工具1
第2章概要设计2
2.1设计原理及实现方法错误!
未定义书签。
2.2主要芯片说明3
2.2.1传感器3
2.2.2面包板3
2.2.3单片机最小系统板3
第3章详细设计4
3.1硬件设计与实现4
3.2系统主程序流程5
3.3功能模块详细设计7
3.3.1起始点到黄点路线模块设计7
3.3.2黄点到A点路线模块设计8
3.3.3A点到中心点路线模块设计8
3.3.4中心点到起点模块设计8
第4章系统调试与操作说明9
4.1系统调试9
4.1.1直线调试9
4.1.2达到A点旋转360调试9
4.2问题分析与解决9
4.3操作说明9
第5章课程设计总结与体会10
参考文献10
附录11
步进电机控制程序:
11
第1章需求分析
1.1课程设计题目
小车循迹控制系统设计(路线5)。
1-2个人任务如下
使用KeilCSl编程软件采用C语言编程实现小车从起始点〜黄色点,旋转135度这一模块功能设计和总体调试,同时不断修正小车的路线。
1.3软硬件运行环境及开发工具
以MCS-51单片机为控制核心,根据4个QTI传感器采集的数据控制舵机的运转,Windowsxp操作系统PC机一台。
KeilCSl编程软件、progispF载器、串II调试小助手等软件。
第2章概要设计
2.1设计原理及实现方法
2.1.1舵机控制和驱动原理
舵机常用的控制信号是一个周期为20亳秒左右,宽度为1亳秒到2亳秒的脉冲信号。
当舵机收到该信号后,会马上激发出一个与之相同的,宽度为1.5亳秒的负向标准的中位脉冲。
之后二个脉冲在一个加法器中进行相加得到了所谓的差值脉冲。
输入信号脉冲如果宽于负向的标准脉冲,得到的就是正的差值脉冲。
如果输入脉冲比标准脉冲窄,相加后得到的肯定是负的脉冲。
此差值脉冲放人后就是驱动舵机正反转动的动力信号。
舵机电机的转动,通过齿轮组减速后,同时驱动转盘和标准脉冲宽度调节电位器转动。
直到标准脉冲与输入脉冲宽度完全相同时,差值脉冲消失时才会停止转动!
2.1.2小车的软硬件设计原理
小车前面有4个qti感应器来随时采集数据,当探测为黑线的时候,返回值为1,当探测为白线的时候,返回值是0,只有当中间两个qti返回值全为1的时候,才走在黑线上,根据返回的状态来控制小车舵机的速度。
同时将整个过程分为四个子模块来实现,分别为起点到黄点,黄点到A点,A点到中心点,中心点到起始点。
在运动过程中还需设计旋转135度和360度和90度的旋转子模块,当小车偏离轨迹候后,需设计修正子模块。
最后为了使小车停到指定区域,还需编写停止子模块。
2.1.3小车前进功能实现
此模块原理是向小车输出若干个PWM波,波形的占空比可控制小车移动,通过时间宽度和延时产生信号,作用于电机,从而控制其运动。
在本次设计中,向小车PWM波过程已经被模块化在头文件中,即motion()函数中,通过对motion()函数的三个参数进行设置来实现控制电机转动从而控制小车前进。
我们小组设计的前进参数是motor_motion(1470,1530,1),其中1470表示左轮慢速前进,1530表示右轮慢速前进,1表示给的脉冲数即小车所走的步数。
2.1.4小车旋转功能实现
小车旋转的原理是调整两轮的移动方式、速度及移动步数。
因实际情况所制,当需旋转360度时,若左右轮同时旋转无法达到预期结果,因此,我们的解决方案是左右旋转,右轮静止不动,经过多次调试测出旋转所需的步数290,最终得出的结果为:
motor_motion(1300,1500,290),其中,1300表示左轮快速前进,1500表示右轮静止不动,290表示小车所走的步数;同样的方法,当需旋转90度和135度时,经过多次试测出旋转所需的步数分别是55、83.5o
2.2主要芯片说明
2.2.1传感器
QTI(QuickTrackInfrared)传感器是一种红外传感器,它利用光电接收管探测其所面对的表面反射光强度。
当QTI传感器面对一个很暗的表面时,反射光强度很低;面对一个很亮的表面时,反射光的强度很高。
因此不同强度的反射光导致传感器输出不同,即探测到不同颜色的物体输出不同的电平信号。
在本系统中所使用到的QTI传感器他侧刀黑色物体时输出高电平,探测到白色物体时输出低电平。
2.2.2面包板
面包板是由于板子上有很多小插孔,很像面包中的小孔,因此得名,专为电子电路的无焊接实验设计制造的。
由于各种电子元器件可根据需要随意插入或拔出,免去了焊接,节省了电路的组装时间,而且元件可以重复使用,所以非常适合电子电路的组装、调试和训练。
2.2.3单片机最小系统板
单片机最小系统是在以51单片机为基础上扩展,使其能更方便的运用于测试系统中。
它主要有电源、复位、振荡电路以及扩展部分等部分组成。
最小系统原理图如图2.1所示:
VCC
U1ATS9S52
P1.0
1
Pl1
—
P1T
Pl3
4
Pl4
§
Pl5
6
Pl6
7
Pl7
8
9
P3.0
10
P31
11
P32
12
P3.3
13
P3」
14
—P3515
P3616
P3.717
P1.0Pl.lPl.2
P1.3
Pl.4
P1.5/MOSIP16MISOP1.7/SCKRSTP3.0RXD
P3.1T?
gD
P3.2^TOpj.snm
P14T0P3.5T1P3.6至
P3.7茹
XTAL2XTAL]GND
VCCPOOP0.1P0.2P0.3P0.4P0.5P0.6P0.7
EAATP.ALEPROGPSENP2.7P2.6
5432102.2.2.2.2.2.pppppP
18
图2.1单片机最小系统电路图
39P0.0
38P01
rP0.2
36P0.3
35P0」
34P0.5
33P06
32P05
31
30
29
2SP2.7
2"P26
26P25
25P24
24P2.3
23P2.2
22P21
21P20
第3章详细设计
3.1硬件设计与实现
小车是由多个硬件零件组装而成,每个零件负责不同的功能,根据设计任务和要实现的主要功能,来进行硬件设计。
硕件设计原理图如下:
QT2
€
QT3
0
左舵机
AT90C62
IT
voc
Hal
22—
22U
2J—
0;
-g_
a
右舵机
pia
P34/TO
Pt.6
P3.5/T1
P1.0
P3.0/WR
P17
P37/RD
34
22
图3.1硬件原理图protues
硕件设计接线图如下:
3.2系统主程序流程
本系统设计了四个模块,分别为起点到黄点,黄点到A点,A点到中心点,中心点到起始点四个路线模块。
通过对每个功能模块的调用实现系统要求的功能。
系统主流程图如下:
图3.3系统主程序流程图
3.3功能模块详细设计
3.3.1起始点到黄点路线模块设计
起点到黄点,主要是从开始就前进,在前进过程中不停检测传感器传过来的信号。
通过判断小车是否偏离路线后决定是否修正方向,如果检测到0111信号,则旋转135度。
程序代码如下:
motor_motion(1300,1700,1);
//没有到黄点让小车继续前进直到黄点
辻(p21_state()==0&&p22_state()==0&&p23_state()==0&&p24_state()==l)
//如果4个qti返回信息为0001则说明小车行进到了黄点
{
motor_motion(1300,1500,83.5);
//如果走到黄点就不用再继续前进,就该让小车向右转动135度角
}
3.3.2黄点到A点路线模块设计
黄点到A点,主要是从开始就前进,在前进过程中不停检测传感器传过来的信号,通过判断小车是否偏离路线后决定是否修正。
如果检测到0000信号,则旋转360度。
程序流程图如下:
图3.4黄点到A点模块流程图
3.3.3A点到中心点路线模块设计
A点到中心点,主要是从开始就前进,在前进过程中不停检测传感器传过来的信号,通过判断小车是否偏离路线后决定是否修正。
当第一次检测到1111信号时,这表示已经到达中心点,则旋转90度。
3.3.4中心点到起点模块设计
中心点到起点循迹过程中,不断地通过传感器检测信号,进行路线修正。
当再次检测到1111信号时,这表示己经到达起点,则让小车停止行驶。
第4章系统调试与操作说明
4.1系统调试
4.1.1直线调试
主要是判断小车是否能沿着黑线向前走,方法:
让程序只有函数motor_motion
(1470,1530,1),其中1470表示左轮慢速前进,1530表示右轮慢速前进,1表示给的脉冲数即小车所走的步数。
并烧写到小车中,把小车放在一条黑线上,看它是否能一直在黑线上前进,若不能,再qti是否连接正确,直至小车能一直走在直线上。
4.1.2达到黄点旋转135度调试
主要判断小车能否到达黄点,并成功旋转135度,方法:
将自己模块程序烧写到小车中,放在一个白颜色的板子上面,观察小车能否旋转135度,注意看其角度是否正常,并多次修改脉冲数,直至能够刚好旋转135度。
4.2问题分析与解决
在系统调试过程中,我们遇到了许多的问题。
通过不断分析这些问题和不断重复调试最终都得到了很好的解决。
下面列举几个突出的问题:
问题:
调试的时候,总是在旋转360度的时候,脉冲给的数目不准确,要么转多了,要么没转够。
解决方案:
解决方案:
进过多次调试试验,最后调试为102才刚刚差不多,然后再加上一个延时和冲出E点的函数,才解决这个问题。
4.3操作说明
(1)在Ke订C51中写好的程序进行编译生成.hex文件;
(2)通过ISPF载线和progisp软件将已生成的.hex文件烧写到单片机中:
(3)当烧写成功后,拔掉下载线,然后在已设定好的路径上,摆正小车的位置;
(4)开小车上的开关,观察小车是否按照预定的路径进行行驶。
第5章课程设计总结与体会
经过为期一周的单片机课程设计,我颇有感触。
课程设计是我们专业课程知识综合应用的实践训练,让我们相互学习,相互监督,学会了合作。
这次课设最人的收获就是熟悉单片机的用途,这次的课程设计非常的有意思。
也是我们第一次合作进行动手实验。
本次课程设计,老师要求我们每6个人为一组,分别进行小车行走的几种路线。
一开始,老师给我们讲解了这次课程设计中的一些难点,这样方便我们在做实验的时候少走很多弯路。
在老师讲解完之后,我们就开始做起实验,一开始按着步骤做,但是在测试中发现很多目的都不能达到,于是我们又回头检查错误,经过多次检查,我们发现实验中很多器材有问题,这些坏器材让我们浪费了大量的时间和精力。
我们这次实验里小车按要求是两个车轮一个前进一个后退来达到原地旋转360度的目的,但是在实验过程中,我们组用的小车不能进行这种行为,于是我们只能选择单轮旋转,使其达到旋转360度的目的,但途中又发现一次脉冲只能使小车旋转320度左右,脉冲一旦过犬,小车就停止运动,最后我们又添加了一次脉冲,使其达到旋转360度的目的。
这次课程设计教会我们如何完成团队任务,合理分配任务。
让我们学会了相互合作,相互学习。
参考文献
[11蔡美琴,MCS-51系列单片机系统及其应用(第二版),高等教育岀版社,2004
[2]李华,MCS—51系列单片机实用接【I技术,北京:
航空航天人学出版社,2003
[3]蔡方凯,单片机原理及基于单片机的嵌入式系统设计,北京:
中国水利水电出版社,2007
设计者:
夏衡
日期:
2014年7月3口
附录
步进电机控制程序:
#include
#include”Global.h”
#includendelav.hH
#includeHqti.hM
#include”motion.h”
#include
main()
{
〃主要是完成黄点旋转135度,白点旋转360度,中心点旋转90度wliile(l)
{
motoi_motion(1470,1530,1);〃直走
if((P22_state()&&(!
P23_state()))||(P2l_state()&&(!
P22_state0)&&(!
P23_state())&&(!
P24_state())))
{
motoi_motion(1470,1700.1);〃左转修正
}
if(((!
P22_state())&&P23_state())||((!
P2CstateQ)&&(!
P22_stateQ)&&(!
P23_stateQ)&&P24_stateQ))
{
motoi_motion(1300,1550.1);〃右转修正
}
〃黄点点旋转135度
&&(!
P24_state()))
if((!
P21_state())&&(!
P22_state())&&(!
P23_stateQ)
motor_motion(1300.1500,255);
motor_motion(1300J500,35);
motoi_motion(1300,1700.10);
}
〃白点旋转360度
if((!
P21_state())&&(P22_state())&&(P23_stateQ)&&(P24_state())){
motor_motion(1300,1500,120);
}
〃中心点旋转90度后,跳出循坏,以便停止
if((P2l_state())&&(P22_state())&&(P23_state())&&(P24_state()))motor_motion(1300,1500.55);//90度break;
}
}
〃停止模块
while(l)
{
motoi_motion(1470,1530J);〃直走
if((P22_state()&&(!
P23_state()))||(P2l_state()&&(!
P22_state0)&&(!
P23_state())&&(!
P24_state())))
{
motoi_motion(1470,1700.1);〃左转修正
}
if(((!
P22_state())&&P23_state())||((!
P2CstateQ)&&
(!
P22_stateQ)&&(!
P23_stateQ)&&P24_stateQ))
{
motoi_motion(1300,1550,1);〃右转修正
}
〃起始点停止
if((P2l_stateQ)&&(P22_stateQ)&&(P23_stateQ)&&(P24_stateQ))
{
〃死循环,停止
while(l)
{
motor_motion(1500.1500,1);
}
}
}
设计过程及答辩回答问题记载:
1.小车到达黄点后没有停下來,这是什么原因?
答:
一开始我们给小车探测头设定的信号是1110,但后來发现应该是有颜色的点信号应该是1,于是我们将设定的信号改为0111后,小车能在黄点进行下一步行为。
2.小车在探测到黄色点之后转的角度不够怎么办?
答:
我们一开始在黄点设置的脉冲是100,发现小车转的度数不够之后将其调成120后,发现小车能够达到所需角度。
指导教师评语:
评分:
签名:
年月日
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 小车 控制系统 设计