STC89C52单片机为智能小车的控制.docx

上传人:b****7 文档编号:23377857 上传时间:2023-05-16 格式:DOCX 页数:13 大小:150.48KB
下载 相关 举报
STC89C52单片机为智能小车的控制.docx_第1页
第1页 / 共13页
STC89C52单片机为智能小车的控制.docx_第2页
第2页 / 共13页
STC89C52单片机为智能小车的控制.docx_第3页
第3页 / 共13页
STC89C52单片机为智能小车的控制.docx_第4页
第4页 / 共13页
STC89C52单片机为智能小车的控制.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

STC89C52单片机为智能小车的控制.docx

《STC89C52单片机为智能小车的控制.docx》由会员分享,可在线阅读,更多相关《STC89C52单片机为智能小车的控制.docx(13页珍藏版)》请在冰豆网上搜索。

STC89C52单片机为智能小车的控制.docx

STC89C52单片机为智能小车的控制

摘要

本设计是以STC89C52单片机为智能小车的控制核心,采用直流电机驱动小车前进及转向,电机驱动采用电磁继电器和L298芯片,电源主要是由以充电电池为动力。

系统由单片机通过IO口控制小车的前进避线及转向,通过硬件和软件的调试,最终在预设黑线的白色区域内完成循环超车任务。

 

 

智能小车(C题)

【本科组】

1系统方案

本系统主要由单片机最小系统模块、直流电机驱动模块、红外光检测模块、锂电池模块组成,下面分别论证这几个模块的选择。

1.1主控制器的论证与选择

方案一:

采用FPGA(FieldProgrammableGateArray)控制方案。

FPGA内部具有独立的I/O接口和逻辑单元,使用灵活、适用性强,且相对单片机来说,还具有速度快、外围电路较少和集成度高的特点,因此特别适用于复杂逻辑电路设计。

但是FPGA的成本高,而且由于本设计对输出的数独要求不高,所以FPGA高速处理的优势得不到充分体现。

方案二:

采用STC公司的STC89C52单片机作为系统的控制器。

STC89C52有40个引脚、32个独立的I/O口、两个外部中断和3个定时器/计数器,虽然相对FPGA来说在功能和速度上有点差异,但单片机软件编程灵活,可用软件较简单地实现各种算法和逻辑控制,并且由于其成本低、体积小、技术成熟和功耗小等优点,技术比较成熟,开发过程中可以利用的资源和工具丰富。

综合以上两种方案,选择方案二。

1.2电机与驱动的论证与选择

方案一:

采用步进电机作为小车的动力源。

步进电机是一种将电脉冲信号转换成角位移或线位移的开环控制元件,可在各种数控系统中作为执行元件,在非超载情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响。

但步进电机用于小车功耗高且需要相应的硬件驱动,电路复杂。

方案二:

采用直流电机作为小车的动力源。

直流电机具有优良的调速特性,调速平滑、方便,调整范围广,过载能力强,能承受频繁的冲击负载,可实现频繁的无级快速启动、制动和反转。

直流电机的驱动电路简单,可以用分立元件搭成H桥驱动电路,也可以使用集成芯片L298N。

L298N是双全桥2A电机驱动芯片,内含两个H桥的高电压大电流双全桥式驱动器,接受标准TTL逻辑电平信号,可以很方便地驱动两个直流电机,本设计用到两个N20小型直流电机,完全可以用简单电路实现系统需求。

综合以上两种方案,小车不需要精确转角定位,选择方案二。

1.3检测系统的论证与选择

方案一:

采用光敏电阻对黑线判断。

光敏电阻光照性为非线性、反应灵敏度一般,检测距离范围有限,其受外部影响较大,检测信号易出现误差。

方案二:

采用激光收发管对黑线判断。

激光收发管线性度好、反应快,检测范围广,其受外部影响很小。

但对黑线判断需要黑白对比度高,要求较严格。

方案三:

采用红外收发管对黑线判断。

红外收发管线性度一般,反应较快,检测范围一般,受外部影响不大,对黑线判断可通过调节来改变黑白对比度不同的灵敏度。

综合考虑采用红外收发管作为检测系统对黑线判断。

1.4无线通信系统的论证与选择

方案一:

采用NRF2401进行两车无线通信。

NRF2401是一款工作在2.4~2.5GHz世界通用ISM频段的单片无线收发器芯片。

内置通信协议可以进行高质量、大容量的通信。

通过配置寄存器可以工作在多种模式,强大的无线通信能力使其应用很广泛。

方案二:

采用无线遥控收发组件。

无线遥控收发套件,这是一种目前用途非常广泛的100米四键遥控模块,常用于报警器设防、车库门遥控、摩托车、汽车的防盗报警等,这类用途要求遥控器的遥控距离并不远,一般50米足够了。

综合考虑本设计两辆小车之间通过判断黑线之后进行简单的高低电平通信即可,采用方案二作为本设计的无线通信系统。

2系统理论分析与计算

2.1小车模型的分析

2.1.1智能小车控制系统

智能小车控制系统一般可看作随动系统,使得模型车跟随道路的变化而运行,另一方面,模型车在走直线或蛇形线时,也可以看作一个恒值调节系统,能够跟随道路变化而更加平稳快速的运行。

在设计控制算法时,要既能满足跟随系统的动态特性,同时又能满足恒值调节的稳定特性。

2.1.2智能小车转向和速度的控制

控制模型车的转向和速度,使其能够跟随道路的变化来运行。

实现这一目标有两个难点:

一是各种外界干扰因素作用于系统,影响被控对象偏离控制规律,例如道路变化,检测信号的噪声和电池电压不稳等;二是控制对象车模本身的惰性使得被控量变化不能够灵活自如。

为此,我们需要分析外部扰动以及控制对象的动态特性。

2.2赛道记忆的计算

2.2.1判断黑线记忆

由于比赛限定赛道,且赛道上有固定转弯标志线,每次行驶一圈都会检测到固定数量的黑线,从而可以判断出小车的大概位置。

3电路与程序设计

3.1电路的设计

3.1.1系统总体框图

系统总体框图如图3.1.1.1所示。

小车以STC89C52单片机作为系统核心,按键用来检测运行不同的程序,红外收发管判断出黑线并产生低电平给单片机来确定小车的运行,无线通信模块在两车间简单通信实现超车后被超车跟跑的功能。

图3.1.1.1系统总体框图

3.1.2电机驱动子系统框图如图3.1.2.1

图3.1.2.1L298驱动子系统框图

3.1.3红外检测子系统框图如图3.1.3.1

图3.1.3.1红外收发子系统框图

3.1.4电源

电源由7.4V锂电池提供,通过L7805三端稳压管输出5V为单片机系统、L298芯片、无线通信模块供电,通过L7806三端稳压管输出6V给L298N为直流电机供电。

3.2程序的设计

3.2.1程序功能描述与设计思路

1、程序功能描述

根据题目要求软件部分主要实现小车的转弯和调速。

1)小车转弯功能:

设置小车一侧车轮速度大于另一次车轮速度实现转弯。

2)小车调速功能:

设置PWM的不同值驱动小车变速。

2、程序设计思路

小车左侧传感器检测到黑线实现右转,右侧检测到黑线实现左转。

3.2.2程序流程图

1、主程序流程图如图3.2.2.1

图3.2.2.1主程序流程图

4测试方案与测试结果

4.1测试方案

1、硬件测试

完成PCB的制作与焊接后分别测试小车两个电机是否能被驱动、传感器是否可以工作,各单元组装完毕后在进行整车程序测试。

2、软件仿真测试

通过写程序片段来控制由八个LED组成的圆圈模拟小车车轮的运行状态,可以精确地仿真出小车运行的情况。

3、硬件软件联调

完成硬件测试与软件仿真后,组装整车写实际运行的程序对小车控制完成题目要求,对于出现的问题分别微调程序处理。

4.2测试条件与仪器

测试条件:

检查多次,仿真电路和硬件电路必须与系统原理图完全相同,并且检查无误,硬件电路保证无虚焊。

测试仪器:

高精度的数字毫伏表,数字示波器,数字万用表。

4.3测试结果及分析

4.3.1测试结果(数据)

小车完成一圈的时间:

(单位/S)

次数

1

2

3

甲车正常行驶一圈

16.7

17.1

16.9

乙车正常行驶一圈

17.2

17.1

16.8

甲车实现超车功能行驶一圈

23.4

22.1

25.4

乙车实现超车功能行驶一圈

25.6

24.3

26.5

超车完成

次数

1

2

3

乙车超甲车第一圈

24.6

25.4

25.8

甲车超乙车第二圈

40.6

45

52

乙车超甲车第三圈

78.9

83.7

77.4

甲车超乙车第四圈

109.7

123.4

116.8

4.3.2测试分析与结论

根据上述测试数据,每一辆下车单车单圈行驶时间和两辆车交替领跑所用时间,以及每辆车进入超车区后实现超车所用时间,通过仔细的比较分析,由此可以得出以下结论:

1、单量车行驶时不用进行两车之间的信息交换,所用时间较短。

基本达到小车的最高行驶车速。

2、为了实现两车交替领跑并且要去所用时间最短,最为理想的实现方法是两车尽量全速前进,为实现后面车超车,就要在超车时前面的车辆适当的减速等待超车。

3、题目要求两车正常行驶,交替领跑,我们通过查阅相关资料,得出正常行驶包括正常的前进,后退,停止,加速,减速,转弯。

本程序设计中用到了上述所有正常的操作,完成题目要求。

综上所述,本设计达到设计要求。

 

附录1:

电路原理图

单片机系统图

 

附录2:

部分源程序

#include

sbitkey=P0^6;

sbitkey2=P0^7;

sbitkey3=P1^0;

sbiten0=P2^4;

sbiten00=P2^5;

sbiten11=P2^6;

sbiten1=P2^7;

sbitinf=P1^1;

sbitsend=P1^2;

sbitxuanze=P1^3;

unsignedintt=0,tt,tt2;

unsignedcharnum=0,count=0;

bitflag=1;

bitflag3=1;

voiddelay(unsignedintt)

{

unsignedinti,j;

for(i=255;i>0;i--)

for(j=t;j>0;j--);

}

voidsudu(unsignedcharleft,unsignedcharright)

{tt=left;tt2=right;}

voidleft()

{

sudu(8,0);

}

voidleft2()

{EA=0;en0=0;en1=1;delay(130);en1=0;EA=1;}

voidleft3()

{EA=0;en0=0;en1=1;delay(70);en1=0;EA=1;}

voidleft4()

{

sudu(15,0);

}

voidleft5()

{

sudu(15,0);

}

voidright2()

{

sudu(0,12);

}

//voidright()

//{EA=0;en1=0;en0=1;delay(125);en0=0;EA=1;}

voidright()

{sudu(10,40);}

voidqusu()

{sudu(0,3);}

voidqusu_youpian()

{sudu(0,4);}

voidmain()

{

unsignedintn;

delay(500);

TMOD=0x01;

ET0=1;

TH0=(65535-1000)/256;

TL0=(65535-1000)%256;

TR0=1;

EA=1;

en11=0;en00=0;

//hong

while

(1)

{

if(xuanze==0)

{

send=0;

if(key==0)sudu(0,30);

if(key2==0)sudu(20,0);

if(key==1&&key2==1&&count!

=4)qusu();

if(key==1&&key2==1&&count==4)qusu_youpian();

if(key3)flag3=1;

if((key3==0)&&flag3==1)

{

sudu(40,40);

flag3=0;

count++;

if(count==6){EA=0;en0=0;en1=0;}

if(count!

=1)

{

qusu();

delay(180);

left4();

delay(270);

}

}

}

}

}

voidtimer()interrupt1//寻迹调速用的PWM

{

TH0=(65535-500)/256;

TL0=(65535-500)%256;

if(t==40){t=0;en0=0;en1=0;}

if(t==tt)en0=1;

if(t==tt2)en1=1;

t++;

}

 

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

当前位置:首页 > 教学研究 > 教学案例设计

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

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