智能小车设计报告

 

 

 

   目:基于STC89C52的智能小车的设计

   名:李如发

   号:073321032

   业:电气工程及其自动化

指导老师:李东京

设计时间:20##年  6 月

目   录

1. 引 言. 1

1.1.  设计意义. 1

1.2.  系统功能要求. 1

1.3.  本组成员所做的工作. 1

2. 方案设计. 1

3. 硬件设计. 1

4. 软件设计. 1

5. 系统调试. 2

6. 设计总结. 2

7. 附 录A;源程序. 2

8. 附 录B;作品实物图片. 2

9. 参考文献. 2


基于STC89C52的智能小车的设计

1.       引 言

1.1.    设计意义

本智能小车的设计,首先针对大学所有学习的知识是一个很好的回顾和总结。此智能小车是基于单片机所设计的,具有自动寻迹能力,在实际的很多方面有应用。当我们进一步的改进机器人系统时 ,可实现更重要的功能,如可设计出自动扑火机器人等。

1.2.    系统功能要求

   此智能小车是基于STC89C52设计的具有自动寻迹能力的小车。系统可实现跟随黑色引导线行走的能力,在行驶过程中,并能用测速传感器和光电码盘对小车速度实现实时监测。小车在行驶过程中并能实现播放美妙的音乐。

1.3.    本组成员所做的工作

本组成员有李如发,汪航,黄建安,韩文龙,罗莹,明菲菲,邹珊,江锐,邵进。

李如发:驱动     073321032

汪航:  电源     073522036

黄建安:最小统   073521013

韩文龙:源程序   073522007

罗莹:  传感器   073522038

明飞菲:调试     073522012

邹芬 : 数码显示 073521025

邵琎 : 焊接     073522017

江锐 : 蜂鸣器   073522032

2.       方案设计

智能小车主要分为传感器部分,最小系统部分,电机驱动部分,电源部分。根据功能要求,提出合理的设计方案,画出方案方框图,并对系统工作原理进行阐述。

原理,本系统的重要部分是传感器,它对整个小车的定位起到很重要的作用,由传感器检测黑线的位置,其中黑线对光能吸收,白线对光反射。利用此原理将红外线传感器采集到的信号转换为数字信号并送入单片机,单片机根据收到的信号实时的控制小车的方向。控制小车的方向主要是运用pwm原理来控制电机的平均电压,从而来控制电机的转速,实现小车对黑线的实时跟踪。

3.       硬件设计

硬件设计各模块电路图及原理描述

传感器模块

方案1:用光敏电阻组成光敏探测器。光敏电阻的阻值可以跟随周围环境光线的变化而变化。当光线照射到白线上面时,光线发射强烈,光线照射到黑线上面时,光线发射较弱。因此光敏电阻在白线和黑线上方时,阻值会发生明显的变化。将阻值的变化值经过比较器就可以输出高低电平。

但是这种方案受光照影响很大,不能够稳定的工作。因此我们考虑其他更加稳定的方案。

方案2:用RPR220型光电对管。RPR220是一种一体化反射型光电探测器,其发射器是一个砷化镓红外发光二极管,而接收器是一个高灵敏度,硅平面光电三极管。

方案3:用红外发射管和接收管自己制作光电对管寻迹传感器。红外发射管发出红外线,当发出的红外线照射到白色的平面后反射,若红外接收管能接收到反射回的光线则检测出白线继而输出低电平,若接收不到发射管发出的光线则检测出黑线继而输出高电平。我们选择了此方案。

传感器是整个系统的眼睛,这部分主要运用红外线传感器采集信号送给单片机处理。由于黑色车道对红外线传感器发出的光有吸收能力,白色地方对发出的光反射,从而当传感器在不同的地方产生不同的信号,传送个单片机。单片机根据采集的信号做出实时的处理。

最小系统

最小系统是整个系统的心脏,我们采用的是AT89C52芯片。

80C52单片机是把那些作为控制应用所必需的基本内容都集成在一个尺寸有限的集成电路芯片上[2]。如果按功能划分,它由如下功能部件组成,即微处理器、数据存储器、程序存储器、并行I/O口、串行口、定时器/计数器、中断系统及特殊功能寄存器。它们都是通过片内单一总线连接而成,其基本结构依旧是CPU加上外围芯片的传统结构模式。但对各种功能部件的控制是采用特殊功能寄存器的集中控制方式。

驱动模块

方案1:采用专用芯片L298N作为电机驱动芯片。L298N是一个具有高电压大电流的全桥驱动芯片,它相应频率高,一片L298N可以分别控制两个直流电机,而且还带有控制使能端。用该芯片作为电机驱动,操作方便,稳定性好,性能优良。

方案2:对于直流电机用分立元件构成驱动电路。由分立元件构成电机驱动电路,结构简单,价格低廉,在实际应用中应用广泛。但是这种电路工作性能不够稳定。

因此我们选用了方案1。

由于最小系统和电机驱动部分的电压幅值不一样,而且电机是感性负载,在制动时可能反馈电流,因此要在最小系统和驱动模块之间采用光电隔离,所以用到了光电隔离芯片,TPL521-4

                      

由于光耦芯片的引脚不够所以在之后采用了一片反相器74HCT14,反相器图如下

L298是双H桥高电压大电流功率集成电路,直接采用TTL逻辑电平控制,可用来驱动继电器、线圈、直流电动机、步进电动机等电感性负载。它的驱动电压可达46V,直流电流总和可达4A。其内部具有2个完全相同的PWM功率放大回路。由L298构成的PWM功率放大器的工作形式为单极可逆模式。12个H桥的下侧桥晶体管发射极连在一起,其输出脚(1和15)用来连接电流检测电阻。第9脚接逻辑控制部分的电源,常用+5V,第4脚为电机驱动电源,本系统中为40V,第5,7,10,12脚输入标准TTL逻辑电平,用来控制H桥的开和关,第6,II脚则为使能控制端。当Vs=40V时,最高输出电压可达35V,连续电流可达2A。

   L298可驱动2个电动机,OUT1,OUT2和OUT3,OUT4之间可分别接电动机,本实验装置我们选用驱动两台电动机。5,7,10,12脚接输入控制电平,控制电机的正反转。EnA,EnB接控制使能端,控制电机的停转。电动

机的转速由单片机调节PWM信号的占空比来实现。

   L298驱动电路图

PWM调速器的硬件组成

在整个PWM调速器中,CPU既是运算处理中心,又是控制中心,是最关键的器件。本系统中选用与MCS-51系列完全兼容的AT89C52单片机,它是一种低功耗、高性能、CMOS八位微处理器。片内具有8K字节的在线可重复编程快擦快写程序存储器,128x8位内部RAM,AT89C52可构成真正的单片机最小应用系统,缩小系统体积,提高系统可靠性,降低系统成本。

电源模块

电源中我们采用LM7805稳压芯片将12v直流电源稳压成5v直流源。

方案1: 采用10节1.5V干电池供电,电压达到15V,经7812稳压后给支流电机供电,然后将12V电压再次降压、稳压后给单片机系统和其他芯片供电。但干电池电量有限,使用大量的干电池给系统调试带来很大的不便,因此,我们放弃了这种方案。

方案2:采用3节4.2V可充电式锂电池串联共12.6V给直流电机供电,经过7812的电压变换后给支流电机供电,然后将12V电压再次降压、稳压后给单片机系统和其他芯片供电。锂电池的电量比较足,并且可以充电,重复利用,因此,这种方案比较可行。但锂电池的价格过于昂贵,使用锂电池会大大超出我们的预算,因此,我们放弃了这种方案。

方案3:采用12V蓄电池为直流电机供电,将12V电压降压、稳压后给单片机系统和其他芯片供电。蓄电池具有较强的电流驱动能力以及稳定的电压输出性能。虽然蓄电池的体积过于庞大,在小型电动车上使用极为不方便,但由于我们的车体设计时留出了足够的空间,并且蓄电池的价格比较低。因此我们选择了此方案。

下:

4.       软件设计

程序流程图

5.       系统调试

本系统的设计是首先完成每一小部分的设计,因此我们在没完成一个模块时就回检测调试该模块。在初次调试时我们采用的电源是又单片机开发板所带的的电源来调试的。调试过程中我们就发现了很重要的问题,由于对本设计的很多模块的没有共同的接地使得很多模块无法工作,我们的解决办法是12v的直流源稳压来供给所以的模块,然后将所以的模块连接共同的地。在驱动模块的调试中发现当光耦芯片给定信号时对lm298的输出没有反应。我们在检验时发现是由于在光耦芯片后部焊接没有焊好,出现了虚焊。在重新焊接好后,芯片正常工作。分块调试传感器时,我们将传感器导通,用黑色物体将传感器发射部分盖住检测输出,在将黑色物体移开,再检测输出。

6.       设计总结

  本文是关于基于单片机的智能小车的设计,在共同的努力下,各部分的设计均成功,在调试过程中都无误。本次设计最终实现了直流电机的动态调压,电源正常输出供电,数码管动态显示数据,蜂鸣器播放美妙的音乐,小车实现简单的转弯功能。由于本次设计中尚存在些缺陷和对寻迹程序编写困难,实现的功能不是很完美,但要求的所有功能基本实现。

  本次设计中,从中的体会很多

1、本次的设计可以说设计到大学所学到的所有专业知识,是对大学所学知识的一个整体的回顾。

2、在设计中,不能一气呵成,因为所有的电路图都是自己设计的,图中尚存在不足,所以要反复的琢磨和修改。

3、设计中要注意对每焊完一部分,都要独立的进行检查调试,及时的发现错误,及时的修改

4、本次最重要的收获是从中我们看到了团队合作的重要性,任何事都不是一个人所能完成的,需要大家的共同努力才能获得最后的成功。

7.       附 录A;源程序

源程序代码(主要语句要有注释)。循迹的程序

#include<reg52.h>

#define uint unsigned int

void delay(uint);

sbit R=P2^0;//右边传感器

sbit L=P2^1;//左边传感器

sbit RM1=P1^1;

sbit RM2=P1^2;//右边电机

sbit LM1=P1^3;

sbit LM2=P1^4;//左边电机

void main()

{                                           

          RM1=1;

          RM2=0;

          LM1=1;

          LM2=0;

          delay(5);

     

      while(1)     

       {

          if((L==1)&&(R==1))//小车前进

              {

              RM1=1;

              RM2=0;

              LM1=1;

              LM2=0;

             delay(5);

              }

         

        else if((L==1)&&(R==0))//小车右偏

          {

                      RM1=1;

                  RM2=0;

                  LM1=0;

                  LM2=1;    //左边的电机停止转动,右边的电机转动,这样就实现了左转

               delay(10);    

          }

               

          else if((L==0)&&(R==1))//小车左偏

        {

           RM1=0;

           RM2=1;

           LM1=1;

           LM2=0;     //右边的电机停止转动,左边的电机转动,这样就实现了右转

           delay(10);

        }

         else if((L==0)&&(R==0))//小车停车

           {

           RM1=0;

           RM2=1;

           LM1=0;

           LM2=1;

              delay(5);

          }

                 else     //左右两个电机同时启动,直线前进

                 {

                  RM1=1;

                  RM2=0;

                  LM1=1;

                  LM2=0;

            delay(10);

               }

         }

        

   }

      void delay(uint z)

       {

              uint a,b;

              for(a=z;a>0;a--)

              for(b=120;b>0;b--);

       }

8.       附 录B;作品实物图片

9.       参考文献

[1] Mark Nelson著.潇湘工作室译.串行通信开发指南[M].中国水利水电出版社,2002.

[2] 王宜怀.单片机原理及其嵌入式应用教程[M].北京希望电子出版社,2002.

[3] 张毅刚.单片机原理及应用.高等教育出版社,2009

[4] 康华光.电子技术基础(模拟部分).高等教育出版社.2006

 

第二篇:简易智能小车的设计报告

简易智能小车的设计报告

小车智能控制系统任务书

1、任务

设计小车智能控制系统,设计实现小车的智能控制:前进、后退、左转、右转等基本运动,以及以上运动的组合。

2、要求

2.1、基本要求:

(1)小车直线前进5m、直线后退5m、起点、终点误差不大于10cm;

(2)小车左转、右转运动;

(3)小车前进、后退、左转、右转等基本运动的组合;

2.2、发挥部分

(1)实现小车做半径为1米的圆周运动;

(2)300秒内完成(1),误差不大于10秒。

摘要

本设计采用89c51单片机对步进电机进行控制,采用PWM脉宽调制方式实现对直流电机转速的控制,采用H型驱动电路控制电机转向。并能以LED方式显示路程和时间。通过IO口输出的具有时序的方波作为步进电机的控制信号,信号经过芯片L298N驱动步进电机实现智能小车的方向控制。

关键词: 步进电机 直流电机 单片机 数码管

Abstract

In this design ,The controller kernel of this electronical dolly is based on MCU 89c51.PWM circuit is used to control the rotational speed of electronic engine ;class H motor drive circuit is used to control the rotational direction of electronic engine.

3 系统设计总统框图

PDF 文件使用 "pdfFactory Pro" 试用版本创建

4 模块方案比较与设计

4.1 步进电机驱动电路选择与设计

方案1:使用多个功率放大器件驱动电机

通过使用不同的放大电路和不同参数的器件,可以达到不同的放大的要求,放大后能够得到较大的功率。但是由于使用的是三相的步进电机,就需要对三路信号分别进行放大,由于放大电路很难做到完全一致,当电机的功率较大时运行起来会不稳定,而且电路的制作也比较复杂。

方案2:使用L298N芯片驱动步进电机

L298N芯片可以驱动两个二相电机(如图1-1),也可以驱动一个三相电机,输出电压最高可达50V,可以直接通过电源来调节输出电压;可以直接用单片机的IO口提供信号;而且电路简单,使用比较方便。

简易智能小车的设计报告

图(1)

简易智能小车的设计报告

PDF 文件使用 "pdfFactory Pro" 试用版本创建

通过比较,使用L298N芯片充分发挥了它的功能,能稳定地驱动步进电机,且价格不高,故选用L298N驱动电机。而使用L298N时,可以用L297来提供时序信号,可以节省单片机IO口的使用;也可以直接用单片机模拟出时序信号,由于控制并不复杂,故选用后者。

通过L298N构成步进电机的驱动电路,电路图如图3-2所示

简易智能小车的设计报告

4.2 直流电机驱动电路的选择与设计

方案1.采用电阻网络分压法

或数字电位器调整电动机的分压,从而达到调速的目的,但电阻网络只能实现有级调速,而数字电阻的元件价格高,且可能存在干扰,更主要的问题是一般电动机的电阻比较小,但电流很大,分压不仅降低效率,而且实现困难。 方案2 采用PWM驱动电路

直流电动机的驱动电路主要用来控制直流电动机的转动方向和转动速度。改变直流电动机两端的电压可以控制电动机的转动方向。在此可以采用由小功率三级管8050和8550组成的H型PWM电路。

在此我们采用方案2.

直流电动机PWM驱动电路如图所示,电路采用功率三级管8050和8550,以满足电动机启动瞬间的大电流要求。

PDF 文件使用 "pdfFactory Pro" 试用版本创建

当A输入为低电平,B输入为高电平时,晶体管放大器VT3,VT2导通,VT1,VT4截止。VT3,VT2与电动机一起形成一个回路,驱动电动机正转。当A输入为高电平,B输入为低电平时,晶体管VT3,VT2截止,VT1,VT4与直流电机形成回路,驱动电动机反转。4个二级管起到保护晶体管的作用。

功率晶体管采用TP521光耦器驱动,将控制部分与电动机驱动部分隔离。光耦器的电源为+5V,H型驱动电路中晶体管功率放大器VT3,VT1的发射极所加的电源为12V。

4.3路程计算模块的选择与设计

方案1:采用霍尔集成片。

该器件内部有三片霍尔金属板组成,利用霍尔效应而产生电压,因此可以在车轮上安装磁片,而将霍尔元件固定在车架上,通过对脉冲的计数实现路程的测量。

方案2:采用光电传感器

受鼠标工作原理的启发,采用断续式光电开关,由于开关是沟槽结构,可将其置于固定轴上,在车轮上安装多个遮光条,让其恰好通过沟槽,产生一个脉冲,对脉冲计数。

以上两种方案都是较可行的,但在本题中车轮较小,方案1安装困难,容易产生干扰,相反,方案2的精度高,故我们采用方案2。

简易智能小车的设计报告

PDF 文件使用 "pdfFactory Pro" 试用版本创建

简易智能小车的设计报告

当光敏二级管接收到光时,VT1和VT2导通, VT3不能导通,A点为高电平,此时MCU口收到的电平为高电平;当光敏二级管未接收到光源时,则VT1和VT2不导通,VT3导通,A点输出低电平。,MCU口接收到方波计数。

4.4 电机稳速的设计

高性能可变速度稳定器电路如图2所示。它可用作宽范围速度可变的场合。 图中电机的电源是经过317K三端稳压器集成电路输出。电机的电流经R5和RV2取样,把部份电压送到IC2和Q1组成的同相直流放大器。Q1发射极电压正比于电机负载电流。

三端稳压器的输出电压等于本身的输出电压再加上Q1发射极上的电压。因此,当电机负载增加时,电路输出电压将自动上升,增加电机的驱动能力,保持电机速度不变。为了保持有负载与无负载时,电机的速度相同。首先调节RVl使电机的转速为最大转速的三分之一。然后调节RV2到额定转速。

简易智能小车的设计报告

PDF 文件使用 "pdfFactory Pro" 试用版本创建

5.系统的软件设计

智能小车的控制器采用ATMEL公司的AT89C51,因为在程序中不需要涉及精确的实时操作,所以使用C语言进行编写,这样可以大大提高效率。

5.1程序设计流程图

简易智能小车的设计报告

参考文献:

[1]谢自美《电子线路设计、实验、测试》[M]武汉:华中理工大学出版社,2000. 附:系统原程序

//定义头文件

#include<reg51.h>

#include<stdio.h>

#define uchar unsigned char

#define uint unsigned int

PDF 文件使用 "pdfFactory Pro" 试用版本创建

//*******

#define dl 50

uchar idata plus[7]={0x01,0x03,0x02,0x06,0x04,0x05,0x00}; uchar idata minu[7]={0x01,0x05,0x04,0x06,0x02,0x03,0x00}; Uchar code

tabe[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; uchar k=0;

uchar idata *x;

uint dr;

sbit motor1=P1^2;

sbit motor2=P1^3;

sbit p1_7=P1^7;

//延时子程序

void delays(void)

{int j,k;

for(k=0;k<1000;k++)

for(j=0;j<1000;j++);

}

//步进电机控制

PDF 文件使用 "pdfFactory Pro" 试用版本创建

void stp(cf,n)

{ bit cf;

uint n;

uint i;

if (cf==0) x=&plus[0];

else x=&minu[0];

TMOD=0x01;

TH0=(65536-dl*500)/256;

TL0=(65536-dl*500)%256;

TR0=1;

ET0=1;

EA=1;

for(i=0;i<n;i++)

{while(k==0);

k=0;

}

}

void delay(void) interrupt 1 using 1 {

P1=*x++;

if(*x==0) x=x-6;

TH0=(65536-dl*500)/256; TL0=(65536-dl*500)%256;

PDF 文件使用 "pdfFactory Pro" 试用版本创建

k=1;

}

//直流电机控制 void dc(void)

{uint z;

if(z==0){ motor1=1; motor2=0;}

else { motor1=0; motor2=1;} }

//计数子程序

void count(void) {

{ uchar k=0; IE0=1;

IT0=1; EA=1;

PDF 文件使用 "pdfFactory Pro" 试用版本创建

EX0=1; while(!k); k=0; return; }

timer0() interrupt 0 using 0 {

count++;

}

}

//显示子程序

void delay(m);

void display(unchar *p)

{

uchar i;

float n;

uchar data BUFFER[4]={0,0,0,0}; unit j,k=0;

n=(1.9625)*(*p);

PDF 文件使用 "pdfFactory Pro" 试用版本创建

j=n;

BUFFER[0]=(j/1000);

BUFFER[1]=((j%1000)/100); BUFFER[2]=((j%100)/10); BUFFER[3]=(j%10); SCON=0;

while(1)

{

for(i=0;i<4;i++)

{

SBUF=tabe[BUFFER[k]]; k++;

while(!TI);

TI=0;

if(k==4) k=0;

}

delay(100);

}

}

void delay(uchar m)

{ uchar i;

PDF 文件使用 "pdfFactory Pro" 试用版本创建

for(i=m;i>0;i--) { TMOD=0x01; TH0=0xd8; TL0=0xf0; TR0=1;

while(!TF0);

//停车子程序

void stop(void)

{

asm {

MOV 23H,#00H CPL P3.6 CPL P3.7 LCALL DS50MS LCALL DS50MS TF0=0; } }

PDF 文件使用 "pdfFactory Pro" 试用版本创建

SETB P1.0

}

}

//7ms延时

DS50MS: LCALL DISP LCALL DISP

LCALL DISP

//1ms延时

DL1MS:

DL1:

DL2: MOV R6,#14H MOV R7,#19H DJNZ R7,DL2

DJNZ R6,DL1

RET

//系统主函数

main()

{ if(count==0) dc(0);

else if(count==5) dc(1);

else if(count==10)

{dc(0);

{if(dr==0) stp(0,10);

else stp(1,10);}

PDF 文件使用 "pdfFactory Pro" 试用版本创建

} display()

}

PDF 文件使用 "pdfFactory Pro" 试用版本创建

相关推荐