20##年湖南省第三期中职教师资培训
-电子技术应用专业
专业方向选修模块
《智能寻迹小车设计与调试报告》
学 员: 杜正国、周伟、凌畅
小 组 号: 第四组
湖南省应用电子技术专业教师水平认证
岳阳职业技术学院培训基地
20##年 12月 20 日
串联直流稳压电源设计报告
杜正国、周伟、凌畅
摘要:
本课题是基于AT89C52单片机的智能小车的设计与实现,小车完成的主要功能是能够自主识别黑色(或白色)引导线并根据黑线(或白色)走向实现快速稳定的寻线行驶。小车系统以 AT89S52 单片机为系统控制处理器。系统采用红外传感获取赛道的信息,来对小车的方向和速度进行控制。此外,对整个控制软件进行设计和程序的编制以及程序的调试,并最终完成软件和硬件的融合,实现小车的预期功能。
关键词: 单片机、AT89C52、引导线、红外传感、寻迹
1、任务分析
1.1任务描述
通过分析智能寻迹小车的设计要求,完成任务分析、功能设计,硬件系统设计、制作与装调,软件系统设计及整机调试等工作任务。其培训流程为:智能寻迹小车任务分析与功能设计→智能寻迹小车硬件系统设计与制作→智能寻迹小车软件系统设计及整机调试。
1.2设计要求
基于培训基地提供的单片机最小系统和电机、机械运动等主要部件,设计满足以下性能要求的智能寻迹小车:
①输入电源:DC3~6V;
②具有恒流充电以及电池保护电路;
③具有前进、后退、左拐、右拐、刹车和速度调节等功能;
④能根据现场给定路线循迹前进。
1.3具体任务
设计制作一台智能寻迹小车,具有按键启动、前进、左拐、右拐、刹车、终点自动停车和速度调节等功能,能根据下图所提供的路线进行循迹。不能用人工遥控电动小车。运行线路如图1、2所示。
2、技术方案设计
2.1系统方案
整个电路系统分为检测、控制、驱动三个模块。首先利用光电对管对路面信号进行检测,经过比较器处理之后,送给软件控制模块进行实时控制,输出相应的信号给驱动芯片驱动电机转动,从而控制整个小车的运动。本模型车的电路系统包括电源管理模块、单片机模块、传感器模块、电机驱动模块。
系统方案方框图如图3所示。
图3 智能小车寻迹系统框图
2.2工作原理:
①利用红外采集模块中的红外发射接收对管检测路面上的轨迹
②将轨迹信息送到单片机
③单片机采用模糊推理求出转向的角度和行走速度,然后去控制行走部分
④最终完成智能小车可以按照路面上的轨迹运行。
3、硬件电路的设计
3.1最小系统:
小车采用atmel公司的AT89C52单片机作为控制芯片,图4是其最小系统电路。主要包括:时钟电路、电源电路、复位电路。其中各个部分的功能如下:
1、时钟电路:给单片机提供一个外接的16MHz的石英晶振。
2、电源电路:给单片机提供5V电源。
3、复位电路:在电压达到正常值时给单片机一个复位信号。
图4 单片机最小系统原理图
此部分是整个小车运行的核心部件,起着控制小车所有运行状态的作用。其程序控制方框图如图5所示。
图5 系统的程序流程图
小车进入循迹模式后,即开始不停地扫描与探测器连接的单片机I/O口,一旦检测到某个I/O口有信号变化,程序就进入判断程序,把相应的信号发送给电动机从而纠正小车的状态。
3.2电源电路设计:
模型车通过自身系统,采集赛道信息,获取自身速度信息,加以处理,由芯片给出指令控制其前进转向等动作,各部分都需要由电路支持,电源管理尤为重要。在本设计中,52单片机使用5V电源,电机使用6V电源。考虑到电源为充电电池组,额定电压为7.2V,实际充满电后电压则为6.5-6.8V,所以单片机及传感器模块采用LM2940CT稳压后的5V电源供电,舵机及电机直接由电池供电。
图6 稳压电路
3.3传感器电路:
光电寻线方案一般由多对红外收发管组成,通过检测接收到的反射光强,判断黑白线。原理图由红外对管和电压比较器两部分组成,红外对管输出的模拟电压通过电压比较器转换成数字电平输出到单片机。
图7 赛道检测原理图
3.4电机驱动电路:
电机驱动芯片L298N是SGS公司的产品,内部包含4通道逻辑驱动电路。是一种二相和四相电机的专用驱动器,即内含二个H桥的高电压大电流双全桥式驱动器,接收标准TTL逻辑电平信号,可驱动46V、2A以下的电机。其引脚排列如图1中U4所示,1脚和15脚可单独引出连接电流采样电阻器,形成电流传感信号。L298可驱动2个电机,OUT1、OUT2和OUT3、OUT4之间分别接2个电动机。5、7、10、12脚接输入控制电平,控制电机的正反转,ENA,ENB接控制使能端,控制电机的停转。也利用单片机产生PWM信号接到ENA,ENB端子,对电机的转速进行调节。
3.4.1 L298N的逻辑功能:
表1 SHARP GP2D12实物图
3.4.2 外形及封装:
图8 L298N实物图
3.4.3 L298N电路原理图:
一片L298N可以直接驱动两个电机,也可以为了加大驱动力,采用两路并联的方式来驱动电机。
图9 L298N电路图
4、PCB元件板
4.1 PCB制作
将单片机控制模块与电源模块、电机驱动模块、寻迹模块的PCB图画成一张90mmX80mm的PCB图,采取外协的方式,统一生产PCB板,然后裁剪成三块单片机控制模块与电源模块PCB板、电机驱动模块PCB板和电机驱动模块PCB板。
4.2镍氢电池充电与保护电路的PCB制作
由于镍氢电池充电与保护电路的PCB是采用单面板设计,很容易在基地的PCB车间制作。
图10 PCB正面图
图11 PCB背面图
5、元件选择与检测
表2 元件清单
6、底盘设计与制作
小车底盘功能:小车采用双面敷铜板作小车底板,固定前后轮、电池盒,支撑单片机控制模块、电机驱动模块和两片寻迹模块的电路PCB板。
前轮两个,单独采用每分钟70转的微型减速直流电机驱动。后轮一个,不带电机驱动。
电池盒采用五节7号电池盒,每节1.5V,可以是干电池,也可以是充电电池。
图12 小车底盘顶面
图13 小车底盘底面
7、软件系统的实现
7.1小车循迹规则:
当小车放置到起点时,小车开始寻迹运动。若小车偏左的时候,车轮将向右偏转;若小车偏右,车轮将向左偏转;若没有偏移,小车将继续向前;若小车完全偏离黑色轨迹,小车后退以寻找黑色轨迹。当小车到达重点时,小车停止运动。
7.2小车程序:
#include<reg51.h>
#include<math.h>
#define uchar unsigned char
#define uint unsigned int
/**********************************************************/
#define control 1 //control为1是黑线寻迹,为0是白线寻迹
#define rate_1 100 //档1速度控制,范围为0-100。
#define rate_2 20 //档2速度控制,范围为0-100。
#define rate_3 100 //档3速度控制,范围为0-100。
/*********************************************************/
sbit LeftIR=P1^6; //左边红外接收
sbit RightIR=P1^7; //右边红外接收
sbit ENA=P1^2; // L298的Enable A
sbit IN1=P1^0; // L298的Input 1
sbit IN2=P1^1; // L298的Input 2
sbit ENB=P1^5; // L298的Enable B
sbit IN3=P1^3; // L298的Input 3
sbit IN4=P1^4; // L298的Input 4
uchar t=0; //中断计数器
uchar motor_1=0,motor_2=0; //电机1,2速度值
uchar tmp1,tmp2; // 两电机当前速度值
uchar aa=0; //定时器1中断计数
uchar m; //速度控制
uchar num; //档数控制
/* 电机控制函数 index-电机号(1,2); speed-电机速度(-100—100) */
void motor(uchar index, char speed)
{
if(speed>=-100 && speed<=100)
{
if(index==1) // 电机1的处理
{
motor_1=abs(speed); // 取速度的绝对值
if(speed<0) // 速度值为负则反转
{
IN1=0;
IN2=1;
}
else // 不为负数则正转
{
IN1=1;
IN2=0;
}
}
if(index==2) // 电机1的处理
{
motor_2=abs(speed); // 取速度的绝对值
if(speed<0) // 速度值为负则反转
{
IN3=0;
IN4=1;
}
else // 不为负数则正转
{
IN3=1;
IN4=0;
}
}
}
}
void init()
{
m=rate_1;
num=0;
TMOD=0x12; // 设定T0的工作模式为2
TH0=0x9B; // 装入定时器的初值
TL0=0x9B;
T1=15536; //设置初值定时50ms
EA=1; // 开中断
ET0=1; // 定时器0允许中断
ET1=1; //定时器1允许中断
TR0=0; // 关闭定时器0
TR1=0; // 关闭定时器0
ENA=0; //关闭电机1
ENB=0; //关闭电机2
}
void main()
{
int irDetectLeft,irDetectRight;
init();
do
{ irDetectRight = RightIR;//右边接收
irDetectLeft = LeftIR;//左边接收
}
while((irDetectLeft==!control)||(irDetectRight==!control));
TR1=1;
do
{
irDetectRight = RightIR;//右边接收
irDetectLeft = LeftIR;//左边接收
motor(1,m);
motor(2,m);
}
while((irDetectLeft==control)&&(irDetectRight==control));//向前进
while(1)// 电机实际控制演示
{
irDetectRight = RightIR;//右边接收
irDetectLeft = LeftIR;//左边接收
if((irDetectLeft==!control)&&(irDetectRight==!control))//向前进
{
motor(1,m);
motor(2,m);
}
if((irDetectLeft==!control)&&(irDetectRight==control))//右转
{
motor(1,-m);
motor(2,m);
}
if((irDetectLeft==control)&&(irDetectRight==!control))//左转
{
motor(1,m);
motor(2,-m);
}
if((irDetectLeft==control)&&(irDetectRight==control))//第二次探测时小车停
break;
}
IN1=1;
IN2=1;
IN3=1;
IN4=1;
TR1=0;
TR0=0;
while(1);
}
void timer0() interrupt 1 // T0中断服务程序
{
if(t==0) // 1个PWM周期完成后才会接受新数值
{
tmp1=motor_1;
tmp2=motor_2;
}
if(t<tmp1)
ENA=1;
else
ENA=0; // 产生电机1的PWM信号
if(t<tmp2)
ENB=1;
else
ENB=0; // 产生电机2的PWM信号
t++;
if(t>=100)
t=0; // 1个PWM信号由100次中断产生
}
void timer1() interrupt 3
{
TR1=0;
T1=15536; //设置初值定时50ms
TR1=1;
aa++;
if(aa==20) //定时1s后置标志位
{
aa=0;
TR0=1;
switch(num)
{
case 1:m=rate_1;break;
case 15:m=rate_2;break;
case 35:m=rate_3;break;
}
num++;
}
}
8、装配与调试
8.1智能循迹小车的整机装配
图14 整机装配俯视效果图
图15 整机装配侧视效果图
8.2智能循迹小车的调试
8.2.1调试工具:
8.2.2调试过程:
我们尝试着先用STC89C52RC来控制小车的跑马灯,结果实验成功。证明单片机运转正常。然后尝试寻迹,结果试验成功,小车能正常的跑动起来。这个小试验,是为了检测小车的机械性能。达到了我们预期目的。
主板通电前检查:电路安装完毕,我们首先直观检查电路各部分生产线是否正确,检查电源、地线、信号线、元器件引脚之间有无短路,器件有无接错。
通电检查:给电机通电,观察电机是否工作正常。电机正常工作时,后驱工作电流为320 mA,电压为5.4V;前驱电机工作电流为180mA,电压为5.41V。给主板通电,观察电路各部分器件有无异常现象。
主板安装调试,在调试的过程中我们发现了原理图中有一个小小的错误。这个错误导致小车的稳压芯片过热。一起讨论之后决定,修改原理图,调换小车驱动芯片的位置。改动之后,小车电源稳压芯片过热现象消失。小车也能实现了基本的功能。(由于我们没能在制板之前发现这个问题,导致了主板在修整后变得不太美观了。)
制作并调试小车循迹板,传感器采用反射式红外传感器ST178,当Vcc=9V时,工作电流为17mA,VR1=3.83V,VD=1.17V,RD=68.8欧。
在调试的过程中却发现小车不停车,经过了4天的努力,终于发现了问题的所在,原来时程序设计有误。改正后调试,终于也能实现了循迹功能。
9、结论
根据本次设计要求,我们小组系统地阅读了大量的资料,并认真分析了设计课题的需求,还系统学习了52系列单片机的工作原理及其使用方法,并独自设计智能小车的整个项目。
虽然条件艰苦,但经过不懈钻研和努力,拿到了所有所需的元器件,并系统的进行了多项试验,最终做出了整个小车的硬件系统,然后结合课题任务和小车硬件进行了程序的编制,本系统能够基本满足设计要求,能够较快较平稳的是小车沿引导线行驶,但由于经验能力有限,该系统还存在着许多不尽人意的地方有待于进一步的完善与改进。
通过本次课题设计,不仅是对我们课本所学知识的考查,更是对我的自学能力和收集资料能力以及动手能力的考验。本次设计使我们对一个项目的整体设计有了初步认识,还认识了几种传感器,并能独立设计出其接口电路,再有对电路板的制作有了一定的了解,并学会了使用Protel设计电路。本次设计使我们意识到了实验的重要性,在硬件制作和软件调试的过程中,出现了很多问题,最终都是通过实验的方法来解决的。还有以前对程序只是一个很模糊的概念,通过这次的课题设计使我对程序完全有了一个新的认识,并能使用C熟练的进行编程了。通过本次课题设计,极大的锻炼了我们的思考和分析问题的能力,并对单片机有了一个更深的认识。
总之,在设计的过程中,无论是对于学习方法还是理论知识,我们都有了新的认识,受益匪浅,这将激励我们在今后再接再厉,不断完善自己的理论知识,提高实践运作能力。
第二篇:循迹小车设计报告(1)
设计报告题目:循
类型:实迹训小报车告
电子信息工程系系别:
班级:应电0934
、03、04、05学号:0202、03、04、姓名:陈岳武、杨鹏、陈春芳、王芬芬指导老师:方跃春、谭刚林
20xx年06月18日
-1-
目
摘要
关键字录················································3················································3
设计第1章项目项目设计
1.1
1.2
1.3项目目标·········································4项目方案选择····································4本章总结··········································5
第2章
2.1硬件设计原理图设计········································6
2.1.1原理图方框图··································6
2.1.2电机驱动······································6
2.1.3循迹部分······································6
2.2本章总结··········································8
第3章
3.1软件设计·········································8系统程序··········································8
····································83.1.1循迹模块·
3.1.2显示模块·····································9
3.1.3提示音模块···································9
3.1.4FPGA模块·····································9
3.1.5单片机控制模块·······························9
3.2
4.1
4.2本章总结··········································9调试过程··········································9·········································10本章总结·第4章系统调试··········································9
第5章
第6章
第7章总结·············································10致谢·············································11附录
附录一:系统测试源程序
-2-
【摘要】:
此次任务描述:通过分析《寻迹小车的技术规程与要求》,完成任务分析、功能设计,硬件系统设计、制作与装调,软件系统设计及整机调试等工作任务。
具体内容:
1、自行设计、制作寻迹电路板;
2、根据《寻迹小车的技术规程与要求》,采用所制作的寻迹电路板、控制板(即单片机_FPGA综合实训板)与实验室提供的小车车体(也可用自己的小车车体)搭建寻迹小车;
3、用C语言和VHDL语言编写程序,使小车实现《寻迹小车的技术规程与要求》中规定的功能。
本组的智能小车是以两个电机来驱动,主板部分自行设计【关键字】:
自动循迹;反射式红外光电传感器ST188;软件系统设计;红外对管;
-3-
第1章
1.1项目目标项目设计
学会智能电子产品的功能设计与任务分析,能进行小型电子产品方案设计;掌握基于51单片机、FPGA模数混合硬件系统设计和程序设计;熟悉电子信息类企业项目完整的运作过程及管理规范,培养团队协作能力、沟通能力、创新能力和组织能力。本次实训任务描述:通过分析《循迹小车的技术规程与要求》,完成任务分析、功能设计,硬件系统设计、制作与装调,软件系统设计及整机调试等工作任务。
实训具体内容:自行设计与制作循迹电路板;根据《循迹小车的技术规程与要求》,采用所制作的循迹电路板、控制板(即单片机-FPGA综合实训板)与实验室提供的小车车体搭建循迹小车;用C语言及VHDL编写程序使小车实现《循迹小车的技术规程与要求》中的要求,及创新部分。
1.2项目方案选择
本小组选用方案二——红外探测法,即利用红外线在不同颜色的物体表面具有不同的反射性质的特点。在小车行驶过程中不断地向地面发射红外光,当红外光遇到白色地面时发生漫反射,反射光被安装在小车身上的接收管接收,如果遇到黑线则红外线被吸
收,则小车上的接收管接收不到信号。
-4-
图中ST188是常用的红外对管,内部由1只红外发光二极管和1只红外接收三极管构成。
1.3本章总结
方案的选择对于一个小组完成接下去的工作很重要,之前我们选用的是第一个方案——光敏电阻,由于该方案有一个显著缺点,即易受到外界光源的干扰,有时甚至检测不到黑线,主要是因为可见光的反射效果、地标的平坦程度、地表材料的反射情况均对检测效果产生直接影响。所以第一次循迹板焊接完之后的调试我们失败了,没有调试成功。在小组成员商量之后,我们决定改采用了二号方案。
第2章
2.1原理图设计
2.1.1
电路原理方框图硬件设计
-5-
FPGA总图
2.1.2电机驱动
驱动电路主要采用驱动芯片L9110H来直接驱动电机,L9110H为单块集成电路、高电流、高电压、四通道驱动,其额定工作电流为1A,最大可达1.5A,VSS电压最小4.5V,最大可达36V,可直接的对电机进行控制,无需隔离电路。L9110H从主控单片机STC89C52那里接受指令直接控制电机的工作状态。可以对电机进行正反转,停止的操作,非常方便。
2.1.3循迹部分
主要由四个反射式红外光电传感器ST188和四个电位器组成。采用ST188型完成系统循迹任务,循迹电路是用以实现小车沿着场地的黑色弧线引导轨迹进行前进和位置校正的,且小车不能偏离此轨迹。在本实训中采用ST188型反射式红外光电传感器完成系统循迹任务,硬件电路实现比较简单,其灵敏度可以通过调节多圈电位器来实现。
其原理图如下:
-6
-
2.2本章总结
理清了思路之后,其实整个实训过程中硬件算比较简单的。
第3章
3.1
系统程序软件设计
-7
-
循迹子函数流程图
3.1.1循迹模块
循迹板送过来的4路检测信号送到FPGA板,FPGA将此4路信号送出至4个LED显示状态,检测到黑线显示亮,否则灭;同时将此4路信号送到单片机。
3.1.2显示模块
显示模块采用数码管显示,小车启动时,显示“1”;小车左拐时,显示“2”;小车右拐时,显示“3”;小车前进时,显示“4”;小车后退时,显示“5”;小车停止时,显示“6”;
3.1.3提示音模块
小车启动前发出三声“嘟嘟嘟”的声音,提示音结束后,FPGA发出一个启动信号给单片机,从而启动小车。小车停车时,FPGA播放一首音乐,即表示小车完成了任务。
3.1.4FPGA模块
循迹板过来的信号一方面送到LED灯显示循迹状态,另一方面要将此信号送到单片机进行处理;小车启动前,发出三声提示音,小车停车后播放一首音乐;小车在发出三声提示音后,FPGA发出一个开始指令给单片机,从而启动小车前进;小车停车后,FPGA收到单片机的停车指令,开始播放音乐,直到音乐播放完毕。
3.1.5单片机控制模块
-8
-
启动小车:
小车在接收到FPGA送过来的启动指令后,读取循迹信号,根据循迹信号
确定小车的运行状态,将小车的运行状态送至FPGA,同时根据相应算法,驱动小车的左右电机前进。
正常前进:
当循迹板中间两个传感器检测到黑线(任意一个检测到黑线或两个同时检测到黑线),小车都正常前进。
左拐弯:
当最左端的传感器检测到黑线,右端3个传感器检测到白线时,小车应左拐弯。
右拐弯:
当最右端的传感器检测到黑线,左端3个传感器检测到白线时,小车应右拐弯。
后退:
当4个传感器都检测到白线时,小车后退。
停车:
当4个传感器同时连续多次检测到黑线(如连续3次),小车停车。小车停车后,发出一个停车标志信号送给FPGA。
(系统具体程序见附录二)
3.2本章总结
程序对这次的整个实训很重要,程序与小车的关系就如同人的身体与身体里的血液一样,都不能离开彼此。程序刚开始写完的时候出了错,下载下来发现小车原本后退的时候却是在前进,最后在李文的帮助下终于解决了问题。
第4章
4.1调试过程
4.1.1测试工具系统调试
-9-
仪器名称
电脑
数字万用表用途调试及下载程序测量各种电路工作情况
4.1.2测试过程
我们尝试着先用STC89C52来控制小车的前进、后退、左右转弯,试验成
功了,小车能正常的跑动,我们达到了预先目的,实现了小车的机械性能。
主板通电前检查:电路安装完毕,我们首先直观检查电路各部分生产线是否正确,检查电源、地线、信号线、元器件引脚间有无短路,元器件有无接错。
通电检查:给电机通电,观察电机是否正常工作,接着给主板通电,观察电路各部分有无异常现象。
主板安装调试:在调试的过程中我们发现原理图中有一个错误,这个错误导致小车的稳压芯片过热。一起讨论之后决定修改了原理图,调换小车驱动芯片的位置。改动之后,小车电源稳压芯片过热现象消失。
4.2本章总结
这个部分动手操作起来还是蛮顺利的,因为这个学期像下载程序,进行调试我们已经做过几次类似的,所以操作起来很成功,程序下载后,小车能实现其基本功能。
第5章总结
像这种一个小组分工完成一件任务的,团队合作精神真的很重要。我们小组第一次选的方案是光敏电阻的,这个方案有个明显的缺点,即易受到外界的干扰,加上元器件也买错,导致第一块循迹板焊完,进行调试的没有成功,当时有的小组的循迹小车已经完成,并能实现其基本功能,但我们也没有灰心,距离最后的验收时间还有一周,我们还有机会成功。于是我们重新购置了元件,选定了红外对管的方案,汲取了上次焊循迹板失败的教训,这次从焊接到安装调试都很成功,在25号调试时,小车已能完成其基本功能。在刚开始接到这个实训任务时,我们都以为这很难,要完成的可能性很小,没想到真的要动手的时候,我们还是可以的,整个流程无非是发现问题,解决问题,说实话我们受益匪浅,当把小车放在地上,看到它能循迹时,那种激动的心情是不言而喻的。在此,要忠心的感谢在此过程中指导我们的方跃春老师、谭刚林老师,及给予我们帮助,给我们提供好建议的张仁熙、李文!
-10-
第6章致谢
在本次实训过程中,由于是第一次完整的动手制作出循迹小车,买元器件、焊接、原理图设计、程序设计、整装调试等等,这其中有很多东西我们弄不明白的时候,方老师和谭老师给予了我们很大的帮助,要么是通过看老师空间里的课程资料,要么遇到资料上没解的时候,我们会当面向老师们请教,老师总是很详细的跟我们讲解,直到我们小组把疑问解决。当然,在完成此次任务中,班上的同学也对我们的设计给予了很多帮助。像李文、张仁熙,在软件设计的过程中不懂的直接请教李文,他会把他知道的一一告诉我们;本组由于刚开始方案选的是有关光敏电阻,在硬件调试部分遇到了障碍,调试没有成功,此时张仁熙那组循迹小车任务已基本完成,这位高手级别的同学发现我们这组遇到了问题,立马出面帮我们查看我们的循迹板,看是哪一个步骤出现了问题,直到跟我们一起把问题解决。
我们本组成员向在本次实训中给予我们帮助的老师及同学致以诚挚的谢意!
第7章附录
附录一:系统测试源程序
(具体程序见小车成员大学城空间)
-11-