循迹小车实验报告

                                 

                                 

实践设计报告

(嵌入式技术实践二)

                   

学    院电气工程与自动化学院

题    目:基于51单片机的循迹小车

专业班级:自动化131班

学    号:19

学生姓名:吴亚敏

指导老师:温如春

                      

                                    2014年6月30日

目录

第一章  引言... 3

1.1 设计目的... 3

1.2 设计方案介绍... 3

1.3 技术报告内容安排... 3

第二章  技术方案概要说明... 4

第三章  硬件电路的设计... 5

3.1 单片机最小系统... 5

3.2 传感器电路... 5

3.3 电源电路设计... 6

3.4 舵机及电机驱动电路设计... 8

第四章  软件系统的实现... 9

4.1 主程序设计... 9

4.2 程序设计... 9

第五章  结论... 11

第六章  致谢... 12

参考文献... 13

第一章  引言

1.1 设计目的

通过设计进一步掌握51单片机的应用,特别是在嵌入式系统中的应用。进一步学习51单片机在系统中的控制功能,能够合理设计单片机的外围电路,并使之与单片机构成整个系统。

1.2 设计方案介绍

    该智能车采用红外对管方案进行道路检测,单片机根据采集到的红外对管的不同状态判断小车当前状态,从而发出控制命令,控制舵机和电机的工作状态以实现对小车姿态的控制。 

1.3 技术报告内容安排

本技术报告主要分为三个部分。第一部分是对整个系统实现方法的一个概要说明,主要内容是对整个技术方案的概述;第二部分是对硬件电路设计的说明,主要介绍系统传感器的设计及其他硬件电路的设计原理等;第三部分是对系统软件设计部分的说明,主要内容是智能模型车设计中主要用到的控制理论、算法说明及代码设计介绍等。基于51单片机的循迹小车设计报告

第二章  技术方案概要说明

本模型车的电路系统包括电源管理模块、单片机模块、传感器模块、电机驱动模块、舵机控制模块。

在整个系统中,由电源管理模块实现对其他各模块的电源管理。其中,对单片机、光电管、舵机提供5V电压,对电机提供6V电压。

路径识别电路由2对光电发送与接收管组成。由于路面存在黑色引导线,落在黑线区域内的光电接收管接收到反射的光线的强度与白色的路面不同,进而在光电接收管两端产生不同的电压值,由此判断路线的走向。传感器模块将当前采集到的一组电压值传递给单片机,进而根据一定得算法对舵机进行控制,使小车自动寻线行走。

单片机模块是智能车的核心部分,主要完成对外围各个模块的管理,实现对外围模块的信号发送,以及对传感器模块的信号采集,并根据软件算法对所采集的信号进行处理,发送信号给执行模块进行任务执行,还对各种突发事件进行监控和处理,保证整个系统的正常运作。

舵机控制模块则根据检测情况经单片机处理后发出相应的PWM波对舵机进行转向的控制。

电机驱动模块采用H桥驱动,通过PWM 波对电机进行控制,以实现对小车速度的调节。

第三章  硬件电路的设计

3.1 单片机最小系统

小车采用NXP公司的51单片机作为控制芯片,主要包括时钟电路、电源电路、复位电路。其中各个部分的功能如下:

1、时钟电路:给单片机提供一个外接的16MHz的石英晶振。

2、电源电路:给单片机提供5V电源。

3、复位电路:在电压达到正常值时给单片机一个复位信号。

3.2 传感器电路

光电寻线方案一般由多对红外收发管组成,通过检测接收到的反射光强,

判断黑白线。原理图由红外对管和电压比较器两部分组成,红外对管输出的模拟电压通过电压比较器转换成数字电平输出到单片机。

        信号采集原理图:

信号采集电路正面:

信号采集电路反面:

3.3 电源电路设计

模型车通过自身系统,采集赛道信息,获取自身速度信息,加以处理,由芯片给出指令控制其前进转向等动作,各部分都需要由电路支持,电源管理尤为重要。在本设计中,51单片机使用5V电源,电机及舵机使用6V电源。考虑到电源为充电电池组,额定电压为7.2V,实际充满电后电压则为6.5-6.8V,所以单片机及传感器模块采用7805稳压后的5V电源供电,舵机及电机直接由电池供电。

电源电路正面:

电源电路反面:

3.4 舵机及电机驱动电路设计

舵机的驱动电路比较简单,电源直接由电池组提供,其输入信号为单片机输出的pwm波。 

本系统使用的电机驱动板为一个由分立元件制作的直流电动机可逆双极型桥式驱动器,其功率元件由四支N沟道功率MOSFET管组成,由此电路,通过设置51输出的PWM波的占空比可以达到控制电机转速的效果。

H桥驱动电路原理图:

H桥驱动电路实物图:

第四章  软件系统的实现

4.1 主程序设计

单片机系统需要接收路径识别电路的信号,采用某种路径搜索算法进行寻线判断,进而控制舵机和直流驱动电机的工作。小车系统的软件使用C语言实现。 主体控制框架:

模型车采用的控制方法是根据传感器采集到的路况信息,通过计算得到具体的方向偏移量和速度,控制小车的行走状态。

4.2 程序设计

#include"config.h"

#include"Port.h"

#include"8051.h

/*******************左接口*******************/

#define singal_1  P3_3      //左传感器

#define PWM_1  P1_1      //左电机

/*******************右接口*******************/

#define singal_2  P3_5      //右传感器

#define PWM_2  P0_1      //右电机

/*******************延时函数*****************/

void delay10ms(unsigned int uiDly)

{

 unsigned i;

 do{

               i=46;

               do{

                      

                  }while(--i!=0);

          }while(--uiDly!=0);

}

/******************子函数*******************/

void motor_stight()   //小车前进

{

   PWM_1=1;

   PWM_2=1;

   DIR_1=0;

   DIR_2=0;

}

void motor_right()   //小车右转

{

PWM_1=1;

PWM_2=0;

DIR_1=0;

DIR_2=0;

}

void motor_left()    //小车左转

{

PWM_1=0;

PWM_2=1;

    DIR_1=0;

    DIR_2=0;

}

void motor_stop()   //小车停止

{

PWM_1=0;

PWM_2=0;

DIR_1=0;

DIR_2=0;

}

/********************主函数*****************/

void main(void)

{

       while (1)

       {

              if((singal_1==1&&singal_2==1)|| (singal_1==0&&singal_2==0))

              {

                     motor_stight();

              }

              if (singal_1==0&&singal_2==1)

              {

                     motor_right();

                     delay10ms(1);

              }

              if (singal_1==1&&singal_2==0)

              {

                     motor_left();

                     delay10ms(1);

              }

}

}

第五章  结论

    本设计主要用到了单片机的通用IO口的读写,定时器,中断等基本功能,通过实际操作进一步掌握了51单片机的使用。同时,通过单片机外围电路的设计,更深入学习了51单片机在嵌入式系统中的应用。通过实际焊接电路,编写程序,也进一步提高了我的动手能力以及分析解决错误的能力,是我能够更好的将所学知识应用到实际中来。

本系统能够基本满足设计要求,能够较快较平稳的是小车沿引导线行驶,但由于经验能力有限,该系统还存在着许多不尽人意的地方有待于进一步的完善与改进。

第六章  致谢

在报告完成之际,我首先向关心帮助和指导我的指导老师温如春老师表示衷心的感谢并致以崇高的敬意!在学校的学习生活即将结束,回顾一年来的学习经历,面对现在的收获,我感到无限欣慰。为此,我向热心帮助过我的所有老师和同学表示由衷的感谢!在撰写报告的过程中,我遇到了许许多多这样那样的问题,有的是专业上的问题,有的是报告格式上的问题,一直得到老师的亲切关怀和悉心指导,使我的论文可以又快又好的完成,王祖麟老师以其渊博的学识、严谨的治学态度、求实的工作作风和他敏捷的思维给我留下了深刻的印象,我将终生难忘王祖麟老师对我的亲切关怀和悉心指导,再一次向他表示衷心的感谢,感谢他为学生营造的浓郁学术氛围,以及学习、生活上的无私帮助!

还要感谢和我一起做实验的几位同学,没有你们的帮助,我也不可能这么顺利地完成实验,在此表示深深的谢意!感谢实验室的师兄师姐,谢谢他们在这一年来对我学习和工作上的悉心指导,他们在整个实验的过程中都给了我很大的帮助,使我能够顺利的完成这次实验

工作。

                     参考文献

【1】周立功等.《项目驱动-单片机应用设计基础》.北京:北京航空航天大学出版社,2004

【2】周立功等.《 新编计算机基础教程》.北京:北京航空航天大学出版社,2004

【3】周航慈.《 单片机程序设计基础》. 北京:北京航空航天大学出版社,2003

【4】百度网站 http://www.baidu.com/

 

第二篇:寻迹小车报告

基于89c52单片机的寻迹小车设计报告

一、实验简介

1.1设计目的

通过设计进一步掌握STC89c52单片机的应用,特别是在嵌入式系统中的应用。进一步学习STC89c52单片机在系统中的控制功能,能够合理设计单片机的外围电路,并使之与单片机构成整个系统。

1.2设计方案介绍

该智能车采用红外传感器ST188进行道路检测,并通过运放电路传递给单片机,单片机根据采集到的红外对管的不同状态判断小车当前状态,控制电机的工作状态以实现对小车姿态的控制。

1.3设计报告内容安排

本技术报告主要分为三个部分。第一部分是对整个系统实现方法的一个概要说明;第二部分是对硬件电路设计的说明,主要介绍STC89c52的最小系统、LM324运放电路、ST188传感器的设计以及LM298驱动电路及滤波的设计;第三部分是源程序,最后是实验心得。

1.4器材

二、实验说明

本模型车的电路系统包括单片机模块、传感器模块、电机驱动模块。

在整个系统中,由电源管理模块实现对其他各模块的电源管理。其中,对单片机提供5V电压,对直流电机提供12V电压。

路径识别电路由3个ST188反射式红外光电传感器组成。由于路面存在黑色引导线,落在黑线区域内的红外接收管接收到反射的光线的强度与白色的路面不同,进而在红外接收管两端产生不同的电压值,在白色路面时产生是高电平1,在黑色路面时产生的是低电平0,由此判断路线的走向。传感器模块将当前采集到的一组电压值通过比较放大电路传递给单片机,进而根据一定得算法对直流电机进行控制,使小车自动寻线行走。

单片机模块是智能车的核心部分,主要完成对外围各个模块的管理,实现对外围模块的信号发送,以及对传感器模块的信号采集,并根据软件算法对所采集的信号进行处理,发送信号给执行模块进行任务执行,还对各种突发事件进行监控和处理,保证整个系统的正常运作。

直流电机控制模块则根据检测情况经单片机处理后发出相应的控制信号对直流电机进行转向和速度的控制。

三、实验内容

(1)硬件电路设计

3.1.1 单片机最小系统设计

小车采用STC公司的STC89c52单片机作为控制芯片,如图是其最小系统电路。主要包括:时钟电路、电源电路、复位电路。其中各个部分的功能如下:

1、时钟电路:给单片机提供一个外接的11.0592MHz的石英晶振。

2、电源电路:给单片机提供5V电源。

3、复位电路:在电压达到正常值时给单片机一个复位信号。

3.1.2 传感器设计电路

 

左边是光电二极管的外形图,由发射二极管和接收管组成,如右图的电路示意图。A、K是红外发射二极管的正负极,C、E是接收管的正负极。因此只要A极接高电平、K极接低电平,红外发射管就能发出红外线。可以在传感器加上外围电路来检测接收管的信号,进而确定是否接受到反射回来的红外线。

电路图

根据反射式红外光电传感器的原理和内部结构,我们可以设计上面的电路,电阻主要起限流作用,电阻值常设置为:。这样,如果接收管接收到反射回来的红外线,红外线接头导通,E管脚输出高电平,接近;如果没有接受到反射回来的红外线,红外接收头不导通,E管脚输出低电平,接近GND。

我们采用了3个ST188反射式红外光电传感器,分别放置在车头。其中,最中间的传感器压着黑线中心,旁边的两个传感器和中间的传感器分别相距比黑胶带的宽度稍宽一点,同时,为保证最边上留的宽度也刚好小于黑胶带的宽度,这样不管小车怎样在轨道上运行,都能够感应到黑色轨道。

3.1.3 LM324运放电路设计

3.1.4

3.1.4 直流电机驱动电路设计

本系统使用的电机驱动板为ST298直流电动机可逆双极型桥式驱动器,其功率元件由四支N沟道功率MOSFET管组成,由此电路,通过设置52输出的PWM波的占空比可以达到控制电机转速的效果。电机驱动芯片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端子,对电机的转速进行调节。

L298N的逻辑功能:

表1 SHARP GP2D12实物图

外形及封装:

L298N实物图

L298N电路原理图:用L298驱动两台直流减速电机的电路。引脚6,9可用于PWM控制。如果机器人项目只要求直行前进,则可将5,10和7,12两对引脚分别接高电平和低电平,仅用单片机的两个端口给出PWM信号控制6,11即可实现直行、转弯、加减速等动作。

3.1.5总电路设计

3.2程序

#include"reg51.h"

void serial();

void xunji();

sbit IN1=P2^0;

sbit IN2=P2^1; //左轮

sbit IN3=P2^2;

sbit IN4=P2^3; //右轮

sbit pl=P1^3;

sbit pm=P1^4;

sbit pr=P1^5;

sbit EA1=P2^4;

sbit EA2=P2^5;

int flag;

int cnt=0;

void main()

{

serial();

while(1)

{

xunji();

}

}

void serial()

{

TMOD=0x01;

TH0=(65535-1000)/256;

TL0=(65535-1000)%256;

EA=1;

ET0=1;

TR0=1;

}

void Time0() interrupt 1

{

TH0=(65535-1000)/256;

TL0=(65535-1000)%256;

cnt++;

if(cnt>10)

cnt=0;

}

void xunji()

{

if((pl==1)&&(pr==1))

flag=0;

if((pl==0)&&(pm==0))

flag=1;

if((pl==0)&&(pm==1))

flag=2;

if((pr==0)&&(pm==0))

flag=3;

if((pr==0)&&(pm==1))

flag=4;

switch (flag)

{

case 0: //直走

{

if(cnt<=3)

{

EA1=1;

EA2=1;

IN1=1;

IN2=0;

IN3=1;

IN4=0;

}

}break;

case 1: //向左小幅度拐弯

{

if(cnt<=2)

{

EA1=0;

EA2=1;

IN1=0;

IN2=0;

IN3=1;

IN4=0;

}

}break;

case 2: //向左大幅度转弯

{

if(cnt<=4)

{

EA1=0;

EA2=1;

IN1=0;

IN2=0;

IN3=1;

IN4=0;

}

}break;

case 3: //向右小幅度转弯

{

if(cnt<=2)

{

EA1=1;

EA2=0;

IN1=1;

IN2=0;

IN3=0;

IN4=0;

}

}break;

case 4: //向右大幅度转弯

{

if(cnt<=4)

{

EA1=1;

EA2=0;

IN1=1;

IN2=0;

IN3=0;

IN4=0;

}

}break;

}

}

四、实验心得

本设计主要用到了单片机的通用IO口的读写,定时器,中断等基本功能,通过实际操作进一步掌握了51单片机的使用。同时,通过单片机外围电路的设计,更深入学习了51单片机在嵌入式系统中的应用。通过实际焊接电路,编写程序,也进一步提高了我的动手能力以及分析解决错误的能力,是我能够更好的将所学知识应用到实际中来。

在本次课程的设计中,我们遇到了很多困难和挑战,对很多知识都是一个重新的学习和认识的过程。在刚开始的一两天里,我们主要对设计的整体思路做大概的整理和了解,然后再详细的查找了解各芯片的功能作用以及源程序代码。在仿真这块,我们对仿真软件用的还不是很熟练,有些器件需要在网上查找和自己摸索才能在器件库中找到。我觉得我们还是练得太少,很多知识没有积累,很多事情没有经验。 其中,我们的80C51的最小系统连得不是很充分,不过让我们熟悉了80C51的最小系统,以及它各管脚的作用,这次实验,我们做得相对简单,只是由三部分组成,传感器和比较放大电路,单片机,驱动电路。让我掌握了更多的知识;通过和大四学长的交流,更让我看到了我们小车更多的提升部分。

此次课设我最深的一点感受就是,在遇到困难时,不要急躁,要想办法解觉问题。这次课设中,由于知识积累不够,导致一直不出结果,然后就很烦躁,很急很乱,有种拔苗助长的感觉。在检查电路和分析程序时,都静不下心来。虽然,暴露出了性格的许多缺点,但大家都能一直坚持,互相鼓励,从早到晚,周末不间断的在调试,毕竟也尽心尽力了。在以后遇到问题时,一定要沉着稳定,克服骄躁,坚持努力寻求解决问题的最佳方法。

在焊电路时,要想连接电路首先要进行仿真,如果不进行仿真便冒然连接电路,假如结果不正确只会浪费精力浪费器件。架构完成整个电路进行仿真正确后开始连接电路。焊接电路时,一要注意电路布局,如果电路布局不合理会造成电路混路,且容易出错,如果连错电路甚至会烧毁器件。二要注意焊接质量,焊点要实在如果造成虚焊查错十分不易,焊点要圆滑有毛刺的焊点会有杂波影响电路质量。焊好电路后,传感器的出的电压值与理论测量较大,信号较弱然后经过我的仔细检查,对关键点的电压测量找出了问题所在,原来有一点焊点不牢。最后在千辛万苦之下终于完美收工

这次课设锻炼了自己的思考能力和动手能力。通过题目选择和设计电路的过程中,加强了我们思考问题的完整性和实际生活联系的可行性。在方案设计选择和芯片的选择上,培养了我们综合应用单片机的能力,对单片机的各个管脚的功能也有了进一步的认识。还锻炼我们个人的查阅技术资料的能力,动手能力,发现问题,解决问题的能力。并且我们熟练掌握了有关器件的性能及测试方法。

本系统能够基本满足设计要求,能够较快较平稳的是小车沿引导线行驶,但由于经验能力有限,该系统还存在着许多不尽人意的地方有待于进一步的完善。

相关推荐