小车循迹控制程序设计 精品.docx

上传人:b****1 文档编号:1635141 上传时间:2022-10-23 格式:DOCX 页数:20 大小:1.23MB
下载 相关 举报
小车循迹控制程序设计 精品.docx_第1页
第1页 / 共20页
小车循迹控制程序设计 精品.docx_第2页
第2页 / 共20页
小车循迹控制程序设计 精品.docx_第3页
第3页 / 共20页
小车循迹控制程序设计 精品.docx_第4页
第4页 / 共20页
小车循迹控制程序设计 精品.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

小车循迹控制程序设计 精品.docx

《小车循迹控制程序设计 精品.docx》由会员分享,可在线阅读,更多相关《小车循迹控制程序设计 精品.docx(20页珍藏版)》请在冰豆网上搜索。

小车循迹控制程序设计 精品.docx

小车循迹控制程序设计精品

武汉理工大学华夏学院

课外自主实验分析报告

 

实验名称小车循迹控制程序设计

 

专业软件工程

班级

学号

姓名

第1章实验分析3

1.1实验设计题目3

1.2实验设计任务3

1.2.1总体任务3

1.2.2详细任务3

1.2.3设计要求3

1.3软硬件运行环境及开发工具3

第2章概要设计4

2.1小车软硬件设计原理4

2.1.1小车硬件设计原理4

2.1.2小车软件设计原理4

2.2功能设计原理及实现方法4

2.2.1小车前进功能实现4

2.2.2小车旋转功能实现4

2.2.3小车偏移修正功能设计4

第3章详细设计9

3.1硬件设计与实现9

3.2系统主程序流程10

3.3功能模块详细设计10

3.3.1起始点到中心点路线模块设计10

3.3.2中心点到D点路线模块设计10

3.3.3D点到黑色点路线模块设计11

3.3.4白色点到中心点模块设计12

3.3.5中心点到起始点路线模块设计13

第4章系统调试与操作说明15

4.1系统调试15

4.1.1直线调试15

4.1.2达到黑色终点点调试15

4.3操作说明15

第5章总结和体会16

第6章参考文献16

附录:

1

课外实验设计计划

学生姓名:

万志雄专业班级:

软件1111

实验题目:

小车循迹控制系统设计(路线3)

实验器材:

1、硬件设备:

MCS-51单片机最小系统板、四个QTI传感器、两个舵机、

两个车轮、锂电池、ISP下载线、面包板;

2、软件环境:

KeilC51、progisp下载器。

实验任务:

(在规定的时间内完成下列任务)

1.完成硬件设计并连线,以MCS-51单片机为控制核心,根据4个QTI传感器采集到的数据控制舵机的运转,进而控制车轮的速度和方向,并画出硬件原理图和实验连线图;

2.用C语言编程实现以下小车行驶线路(地图见下页):

起始点→中心点→D点,旋转360度→黑色点,旋转180度→原路返回。

时间安排:

各时间段的任务可以交替进行

时间

设计内容

第一天

设计题目,实物演示、规划任务、查找相关资料

第二天

进行需求分析,完成总体设计

第三天

硬件详细设计,连接实验电路,软件详细设计,编写程序;

第四天

调试程序、测试系统、总结;

第五天

总结后完成设计报告。

指导教师签名:

2014年6月30日

教研室主任(或责任教师)签名:

2014年6月30日

 

 

目录

 

第1章实验分析

1.1实验设计题目

小车循迹控制系统设计(路线3)

1.2实验设计任务及要求

1.2.1实验总体任务

(1)硬件部分:

完成硬件设计并连线,以MCS-51单片机为控制核心,随时采集4个QTI传感器的数据控制舵机的运转,进而控制车轮的速度和方向。

(2)软件部分:

用C语言编程实现小车行驶线路:

起始点→中心点→D点(旋转360度)→黑色点→然后旋转180度→原路返回。

1.2.2任务

使用KeilC51编程软件采用C语言编程实现小车路线3的总体调试,同时不断修正小车的路线。

1.2.3实验设计要求

完成硬件原理图设计、小车模型构建、软件编程、调试、运行等一整套工作任务。

控制软件使用C语言编程;系统联调,提交一个满足要求的小车循迹控制系统设计。

1.3软硬件运行环境及开发工具

以MCS-51单片机为控制核心,根据4个QTI传感器采集的数据控制舵机的运转,Windowsxp操作系统PC机一台。

KeilC51编程软件、progisp下载器、串口调试小助手等软件。

 

第2章概要设计

2.1小车软硬件设计原理

2.1.1小车硬件设计原理

小车前面有4个qti感应器来随时采集数据,当探测为黑线的时候,返回值为1,当探测为白线的时候,返回值是0,只有当中间那个qti返回值全为1的时候,才走在黑线上,根据返回的状态来控制小车舵机的速度。

2.1.2小车软件设计原理

将整个过程分为五部分来实现,分别为起点到中心点,中心点到D点,D点到黑色点,黑色点到中心点,中心点到起始点。

在运动过程中还需设计旋转45度和180度和360度的旋转子模块,当小车偏离轨迹候后,需设计修正子模块。

2.2功能设计原理及实现方法

2.2.1小车前进功能实现

此模块原理是向伺服电机输出若干个PWM波,波形的占空比可控制小车移动,通过

时间宽度和延时产生信号,作用于电机,从而控制其运动。

在本次设计中,向伺服电机PWM波过程已经被模块化在头文件中,即motion()函数中,通过对motion()函数的三个参数进行设置来实现控制电机转动从而控制小车前进。

motor_motion(uint16_tleft_val,uint16_tright_val,uint8_tcount)例:

其中参数left_val:

左边电机的高电平时间宽度;

right_val:

右边电机的高电平时间宽度;count:

脉冲数目

2.2.2小车旋转功能实现

小车旋转的原理是调整两轮的移动方式、速度及移动步数。

当需旋转360度时,将

左轮设置为快速后退状态,右轮为快速前进状态,多次调试测出旋转所需的步数.

2.2.3小车偏移修正功能设计

小车偏移修正功能即对小车传感器信号状态进行检测并作出相应的处理的过程,在修正过程中偏移情况及其代码和信号状态如下:

voidmodify(){

if((P22_state()&&(!

P23_state()))||(P21_state()&&(!

P22_state())&&(!

P23_state())&&(!

P24_state())))

{

motor_motion(1470,1700,1);//左转修正

}else

if(((!

P22_state())&&P23_state())||((!

P21_state())&&(!

P22_state())&&(!

P23_state())&&P24_state()))

{

motor_motion(1300,1550,1);//右转修正

}

else{

motor_motion(1700,1300,1);

}

}

(1)当小车发生右偏移时,各传感器状态信号如下:

通过判断语句:

if((P22_state()&&(!

P23_state()))||(P21_state()&&(!

P22_state())&&(!

P23_state())&&(!

P24_state())))判断小车是否向左偏移,若发生偏移此时通过调节左右轮的速度来实现,左偏时调用motor_motion(1770,1740,1)实现左轮前进速度大于右轮前进速度来实现向右偏移来对偏移进行修正。

(2)当小车发生右偏移时,各传感器状态信号如下:

通过判断语句:

if(((!

P22_state())&&P23_state())||((!

P21_state())&&(!

P22_state())&&(!

P23_state())&&P24_state()))判断小车是否向右偏移。

若发生偏移,此时通过调节坐游轮的速度来实现,右偏时调用motor_motion(1550,1300,1),通过调节左右轮的速度,当右轮速度大于左轮速度进行修正。

2.3.1编程头文件

(1)各个头文件如下图

图2.1

(2)delay.h头文件实现延时功能,帮助系统更加理性化,易于操作。

例如小车开始部分延时3秒。

delay.h头文件详细代码如下:

voiddelay_nus(unsignedinti)

{

i=i/10;

while(--i);

}voiddelay_nms(unsignedintn)

{

n=n+1;

while(--n)

delay_nus(900);//进行时间补偿

}

(3)qti.h头文件其作用是获取4个QTI传感器采集的信号。

为51单片机提供判断的输入数据。

qti.h头文件P21口实例详细代码如下:

/*

函数名称:

P21_state()

功能:

获得左边第一个QTI的返回信号

参数:

无参数

返回值:

1:

高电平,看到黑线;0:

低电平,看到白线

*/

intP21_state()

{

return(P2&0x02)?

1:

0;

}

(4)global.h头文件其作用是定义用到的数据类型、变量。

方便程序设计,简化程序结构。

详细代码如下:

#ifndefGLOBAL_H

#defineGLOBAL_H

typedefunsignedintuint16_t;

typedefunsignedcharuint8_t;

typedefunsignedcharbool;

#definetrue1

#definefalse0

#endif

(5)motion.h头文件其作用是控制两个舵机运转。

详细代码如下:

#include"Global.h"

sbitleft_motor=P1^0;//左电机接口

sbitright_motor=P1^1;//右电机接口

#defineLEFT_FWD1700//高电平时间定义,单位微秒

#defineLEFT_BWD1300

#defineLEFT_SMALL_FWD1530

#defineLEFT_SMALL_BWD1450

#defineRIGHT_FWD1300

#defineRIGHT_BWD1700

#defineRIGHT_SMALL_FWD1450

#defineRIGHT_SMALL_BWD1530

函数名称:

motor_motion(uint16_tleft_val,uint16_tright_val,uint8_tcount)

作用:

向伺服电机输出若干个PWM波,波形的占空比可控制

参数:

left_val:

左边电机的高电平时间宽度;right_val:

右边电机的高电平时间宽度;count:

脉冲数目

返回值:

无返回值

voidmotor_motion(uint16_tleft_val,uint16_tright_val,uint8_tcount)

{

uint8_ti;

for(i=0;i

{

left_motor=1;

delay_nus(left_val);

left_motor=0

right_motor=1;

delay_nus(right_val);

right_motor=0;

delay_nms(20);//输出一定数量的PWM波形

}

}

第3章详细设计

3.1硬件设计与实现

小车是由多个硬件零件组装而成,每个零件负责不同的功能,根据设计任务和要实现的主要功能,来进行硬件设计。

硬件设计原理图如下:

图3.1总体电路图

图3.3灰度QTI传感器

 

3.2系统主程序流程

小本系统设计了五个个模块,分别为起点到中心点路线模块、中心点到D点、D点黑色点、黑色点到中心点、中心点返回到起始点路线模块。

通过对每个功能模块的调用实现系统要求的功能。

3.3功能模块详细设计

3.3.1起始点到中心点路线模块设计

起点到中心点,主要是从开始就前进,在前进过程中不停检测

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 销售营销

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1