基于单片机寻迹小车Word文档格式.docx
《基于单片机寻迹小车Word文档格式.docx》由会员分享,可在线阅读,更多相关《基于单片机寻迹小车Word文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
2.2寻迹传感器———————————————————5
2.3光电编码器———————————————————6
2.4其他组成结构——————————————————7
3.程序设计————————————————7
3.1编程软件介绍——————————————————7
3.2程序流程图———————————————————8
3.4实际程序————————————————————9
4.总结收获————————————————11
4.1遇到问题与解决方法———————————————11
4.2心得体会————————————————————11
1.总体方案论证
1.1总体方案论证与分析
根据设计要求,将系统分为控制模块、无线传输模块、电源模块、电机驱动模块及黑线检测模块。
其中信号检测部分通过光电传感器检测并将信号传回单片机进行处理。
控制部分的作用是接收并处理传感器检测到的信号,通过判断信号的类别控制小车的动作。
本系统采用STC89C51单片机,其特点是小型、快速、低功耗、I/O口资源丰富等,能够满足本小车的设计要求。
采用两个直流电机驱动,电路简单,成本不高。
电机的驱动芯片采用L298N,该芯片有四路输出,可以驱动一个四相步进电机或两个直流电机,四路总电流可达4A,输出电压最高可达46V,可以直接用单片机I/O口的输出信号来控制。
检测模块采用光电传感器,经光耦和LM339放大,信号检测稳定,能够满足系统要求。
小车跑道由白色KT板和黑带组成,用反射式光电传感器识别路面黑白两种不同的状态,然后将路况传送到主控板,进而控制小车作相应的动作。
因为反射式光电传感器发射和接收的光为红外线,受外界可见光的影响较小,能有效提高抗干扰的能力。
外加四路的小车遥控模块,利用二极管的单向性进行半隔离,当小车都检测不到黑线带的时候启用遥控,人工讲小车遥控到黑带线上,小车继续循迹,遥控失效。
首先,要让小车正常行驶,必须保证小车不驶出边界,故利用反射式光电传感器来检测黑带,防止出界。
当传感器检测到黑线时会输出一个高电平,该信号传至单片机后,单片机对其转向进行处理,使其在行车道内行驶。
当左侧检测到黑线时单片机控制小车左转,反之若右侧检测到黑线时右转,否则直走。
2.硬件组成结构
2.1电机驱动板结构
2.2寻迹传感器
1)简介:
此模块是为智能小车、等自动化机械装置提供一种多用途的红外线探测系统的解决方案。
使用红外线发射和接收管等分立元器件组成探头,并使用LM339电压比较器做为核心器件构成中控电路。
此系统具有的多种探测功能能极大的满足客各种自动化、智能化的小型系统的应用。
2)特性:
易于安装,使用简便
,4路分别独立工作,工作时不受数量限制
,中控板与探头分开,安装位置不受限制
,模块高度≤10毫米
,安全工作电压范围在3伏特至6伏特之间
,4路全开工作电流30毫安至55毫安之间
,VCC、GND:
电源接线端,IN(1—4)、OUT:
探头与中控板连接端,OUT1、OUT2、OUT3、OUT4:
对应输出端,LED1、LED2、LED3、LED4:
对应输出指示,R1、R2、R3、R4:
对应比较电压调节
输出端为集电极开路,板载5.1千欧上拉电阻
2.3光电编码器
1)描述:
HC-020K测速传感器是一款宽电压、高分辨率、短响应速度、开关量输出的测速模组,配合黑色码盘可以测量电机转速(所测电机的规格,和码盘有关。
现在提供的码盘D型孔内径为4mm。
可以用于输出轴为直径4mm的电机,就是我们配套的TT马达,黄色外壳白色轴的电机)。
在小车上,有两路轮子是没有加装齿轮的,通过使用D型孔码盘,我们可以很方便的安装码盘到坦克轮的转动轴上,如图2所示;
由于使用的是20线的码盘,坦克车轮直径为4.7cm,我们就可以计算该码盘能检测到的最小精度为:
3.14*4.7cm/20=0.74cm=7.4mm。
2.4其他结构
直流电机步进电机空调门伺服电机舵机机械手
轮胎2个减速箱+电机2套万向滑轮1个黄色底盘PCB敷铜板亚克力板螺丝卡簧固定片
3.程序设计
3.1编程软件介绍
Keil4是美国KeilSoftware公司出品的C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。
Keil4软件提供丰富的库函数和功能强大的集成开发调试工具。
另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil4生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。
在开发大型软件时更能体现高级语言的优势。
C51开发中除必要的硬件外,同样离不开软件,我们写的源程序要变为C51可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。
随着C51开发技术的不断发展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断发展,Keil软件除了致力于单片机的编程开发平台外,还针对目前最流行C51开发项目出品了Keil4软件平台以及支持在线调试的串口烧写。
从近年来各仿真机厂商纷纷宣布全面支持Keil即可看出。
Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision4)将这些部份组合在一起。
3.2程序流程图
3.4实际程序
/***********************************************/
/*功能:
四路循迹,遇到黑线输入给单片机信号为1
#include<
reg52.h>
#defineuintunsignedint
#defineucharunsignedchar
sbitP10=P1^0;
//控制左电机
sbitP11=P1^1;
//控制左电机
sbitP12=P1^2;
//控制右电机
sbitP13=P1^3;
sbitP14=P1^4;
//寻迹右
sbitP15=P1^5;
//寻迹右中
sbitP16=P1^6;
//寻迹左中
sbitP17=P1^7;
//寻迹左
uintnum=0;
ucharflag=0;
inti;
voidforward()
{P10=1;
P11=0;
P12=1;
P13=0;
}
voidleftturn()
P11=1;
voidrightturn()
P13=1;
voidstop()
voidmain()
{
while
(1)
{
num=P1&
0xF0;
switch(num)
{
case0x80:
//1000黑线为1
{
leftturn();
flag=1;
break;
}
case0xc0:
//1100
}
case0x40:
//0100
case0x60:
//0110
forward();
flag=0;
case0x30:
//0011
rightturn();
flag=2;
case0x20:
//0010
case0x10:
//0001
flag=2;
case0xf0:
//1111
stop();
flag=3;
}
default:
switch(flag)
{
case0:
forward();
break;
case1:
leftturn();
case2:
rightturn();
case3:
stop();
}
}
}
4.总结收获
4.1遇到问题与解决方法
在小车的硬件安装时,不小心就会把硬件安装反了;
当有安装芯片时,要先把最下面的线接好,否则在后来的安装,有些线会不方便接;
在安装传感器或者其他的芯片时,一定要小心,不能太用劲,否则会把传感器焊点或引脚损坏;
当所有芯片和线都安装/接好时,线用万能表检查一下接好的线是否正常工作,或仔细检查有些特殊线是否接反,特别是单片机的正负极的线。
在小车硬件安装好和软件装好后发现放在跑道上不按黑线跑,开始以为是软件写错了,但反复试了好几次后发现软件没问题,再经过仔细检查才发现是一个传感器的输出线接错了。
小车开始能按照黑线跑,但是它跑的很不平稳,总是摇摇晃晃。
既然能跑说明软件和硬件接线没问题,我以为是电机与小轮的连接不稳定,但是检查后发现是正常的,经过仔细试了好多次才知道是传感器的灵敏度有问题,于是把传感器的指向调了调才解决了摇摆的问题。
当这些小问题解决后,在正式的赛道上试验发现它有时候停不下来,有时会冲过终点,出现这方面的原因是,终点黑线太短,车有惯性它会因惯性而冲过终点线,解决的办法是把黑线加宽,或者在终点线给小车一个短时反接制动。
4.2心得体会
在经历过这次课设后,让我感触到了单片机的强大和编程的重要性,在没组装小车前它只是一堆零件,但是只要把它们组装到一起编写一段软件它就能按照一定的规则行驶,感觉很神奇。
更重要的是它的实际应用很广泛,在以后的工作中肯定会有很大的用处。
还有在组装零件时,看似简单但是里面有很多应该注意的地方,若开始没考虑周到,后来的安装会有很大的麻烦,而且在装硬件是要很小心才行,若不小心会把焊点或者线损坏,会给自己带来很大的麻烦。
在编写软件时也要仔细,特别要逻辑很强,注意前后联系。
在组装完软件也编写完之后就要进行调试。
调试才是课设的重点。
因为里面会遇见你没想到过的问题,当解决掉这些棘手的问题后,才会收获更多。
总之这次课设对我的收获很多,让我感到无论事的大小我们都应该全力以赴。