《智能循迹小车资料报告材料.doc》由会员分享,可在线阅读,更多相关《智能循迹小车资料报告材料.doc(18页珍藏版)》请在课桌文档上搜索。
1、word电子信息专业实验报告课 程 电子信息系统综合设计实验MCU局部实验题目 智能机器小车设计 实验总分学生学 号学生学 号学生学 号实验时间地 点分组电子信息学院专业实验中心目录一、摘要二、题目要求三、软硬件设计方案四、各局部电路的作用与电路工作原理分析五、系统调试与实验结果六、实验结果七、拓展功能八、参考资料九、附录一、摘要摘要:智能循迹小车主要由单片机模块、传感器模块、电机驱动模块以与电源模块组成,小车具有自主寻迹的功能。本次设计我们采用STC89C52单片机作为控制芯片,传感器模块采用红外光电对管和比拟器实现,能够识别黑白两色路面,电机模块由L293D芯片和两个减速直流电机构成,组成
2、了智能车的动力系统,电源采用7.2V的直流电池,经过系统组装,从而实现了小车的自动循迹的功能。 关键词智能小车STC89C52单片机L293D芯片红外光对管二、题目要求“智能寻迹机器小车设计,要求采用MCS-51单片机为控制芯片,设计出一个能够识别并沿着以白底为道路色,宽度5mm左右的黑色胶带制作的不规如此的封闭曲线为引导轨迹行进的智能寻迹机器小车。三、软硬件设计方案1、硬件局部可分为四个模块:单片机模块、传感器模块、电机驱动模块以与电源模块。1.1、单片机模块 单片机模块为小车运行的核心部件,起控制小车的所有运行状态的作用。本次小车的设计我们小组采用的是ATMEL公司的STC89C52RC单
3、片机。STC89C52RC是一种低损耗、高性能、CMOS八位微处理器,片有4k字节的在线可重复编程、快速擦除快速写入程序的存储器,能重复写入/擦除1000次,数据保存时间为十年。其程序和数据存储是分开的。STC89C52RC单片机介绍:上图为STC89C52RC引脚图。STC89C52RC引脚功能说明:VCC40引脚:电源电压VSS20引脚:接地P0端口P0.0P0.7,3932引脚:P0口是一个漏极开路的8位双向I/O口。作为输出端口,每个引脚能驱动8个TTL负载,对端口P0写入“1时,可以作为高阻抗输入。在访问外部程序和数据存储器时,P0口也可以提供低8位地址和8位数据的复用总线。此时,P
4、0口部上拉电阻有效。在FlashROM编程时,P0端口接收指令字节;而在校验程序时,如此输出指令字节。验证时,要求外接上拉电阻。P1端口P1.0P1.7,18引脚:P1口是一个带部上拉电阻的8位双向I/O口。P1的输出缓冲器可驱动吸收或者输出电流方式4个TTL输入。对端口写入1时,通过部的上拉电阻把端口拉到高电位,这是可用作输入口。P1口作输入口使用时,因为有部上拉电阻,那些被外部拉低的引脚会输出一个电流。P2端口P2.0P2.7,2128引脚:P2口是一个带部上拉电阻的8位双向I/O端口。P2的输出缓冲器可以驱动吸收或输出电流方式4个TTL输入。对端口写入1时,通过部的上拉电阻把端口拉到高电
5、平,这时可用作输入口。P2作为输入口使用时,因为有部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流。P3端口P3.0P3.7,1017引脚:P3是一个带部上拉电阻的8位双向I/O端口。P3的输出缓冲器可驱动吸收或输出电流方式4个TTL输入。对端口写入1时,通过部的上拉电阻把端口拉到高电位,这时可用作输入口。P3做输入口使用时,因为有部的上拉电阻,那些被外部信号拉低的引脚会输入一个电流。RST9引脚:复位输入。当输入连续两个机器周期以上高电平时为有效,用来完成单片机单片机的复位初始化操作。看门狗计时完成后,RST引脚输出96个晶振周期的高电平。特殊存放器AUXR地址8EH上的DISRTO位可
6、以使此功能无效。DISRTO默认状态下,复位高电平有效。30引脚:地址锁存控制信号ALE是访问外部程序存储器时,锁存低8位地址的输出脉冲。在Flash编程时,此引脚也用作编程输入脉冲。29引脚:外部程序存储器选通信号,当AT89C51RC从外部程序存储器执行外部代码时,在每个机器周期被激活两次,而访问外部数据存储器时,将不被激活。31引脚:访问外部程序存储器控制信号。为使能从0000H到FFFFH的外部程序存储器读取指令,必须接GND。XTAL119引脚:振荡器反相放大器和部时钟发生电路的输入端。XTAL218引脚:振荡器反相放大器的输入端。传感器模块 我们小组使用光电传感器来采集路面信息。使
7、用红外光电对管,其结构简明,实现方便,本钱低廉,没有复杂的图像处理工作,因此反响灵敏,响应时间少。但也存在不足,它能获取的信息是不完全的,容易受很多扰动如背景光源,高度等的影响,抗干扰能力较差。但本次实验要求精度并不是太高,出于本钱和设计复杂度方面考虑,我们决定采用红外对管来完成传感器模块。图中仅以一对光电管示例电机控制模块 我们本次实验采用的是直流减速电机电机,其转过的角度可以准确定位,可实现小车行进过程的准确定位,驱动局部我们如此采用的是采用专用芯片L293D作为电机驱动芯片其操作方便,稳定性好,性能优良。一片L293D就可以分别控制两个步进电机工作。电源模块 电源模块的作用是给整个系统稳
8、定供电以保持其正常工作,包括7.2V的电源以与转5V局部,其中7.2V的是给步进电机和其驱动供电,5V的用来驱动单片机与其他芯片。硬件各个局部的连接图如下:2、软件局部本系统采用的是STC89C52单片机,再根据硬件连接,通过相应的软件来完成对信号的采集和数据的分析,再控制小车的运行状态,以下为主程序流程图:通过传感器获得路面信息然后反响给单片机,再通过单片机来实现相应的功能。控制两个直流电机,实现前进、后退、前左转、前右转、停车等功能。4、 各局部电路的作用与电路工作原理分析 1、电机驱动模块1.1、电机工作原理 本次我们的小车动力局部采用的是直流减速电机,又叫齿轮减速电机,是在普通直流电机
9、的根底上,加上配套齿轮减速箱。齿轮减速箱的作用是,提供较低的转速,较大的力矩。同时,齿轮箱不同的减速比可以提供不同的转速和力矩。这大大提高了,直流电机在自动化行业中的使用率。减速电机是指减速机和电机马达的集成体。这种集成体通常也可称为齿轮马达或齿轮电机。通常由专业的减速机生产厂进展集成组装好后成套供货。减速电机广泛应用于钢铁行业、机械行业等。使用减速电机的优点是简化设计、节省空间。 减速机局部: 主要有齿轮,轴承,蜗轮,蜗杆等。电机局部:定子:主磁极+换向极+机座+电刷装置if转子:电枢铁心+电枢绕组+换向器+转轴直流电机工作原理:直流电机是智能车行进的动力部件,它的转动是通过给它加载直流电压
10、来实现的,下面介绍它的工作原理。图、电磁力方向左手定如此判定图直流电机由定子、转子和电刷组成。当给电刷加一直流电压,转子上的绕组线圈中就有电流流过,由毕-萨电磁力定律可知:一个通电流的导体,在磁场中要受到力的作用,这个力叫电磁力。电磁力的大小由下式决定电磁力f=Bli电磁力方向由左手定如此判定如图4.1.1所示。根据毕-萨电磁力定律可知,当磁密度和绕组线圈长度一定时,电磁力的大小只和流过直流电机分析物理模型图,它向左手定如此可知会产生一个向左的切线方向的电磁力,使得转子逆时针旋转。当旋转到90时,电刷A与换向片A脱离接触而与换向片B接触,同时电刷B也与换向片B脱离而与换向片A接触,虽然电枢旋转
11、后电枢线圈绕组的位置发生了改变,但是由于换向片的作用,电流虽然是从电枢线圈绕组的B电流入,但是电流的方向没有改变,根据电磁力方向左手定如此,电磁力的方向依然是向左的切线方向,因此转子在一直向左的电磁力的作用下就会不断的逆时针旋转。同理当改变加载在换向片两边的电压极性时,因为改变了流入电机绕组的电流方向,根据电磁力方向左手定如此可知转子会沿顺时针方向旋转。如果加载在电机两端的电压,根据欧姆定律流过电枢线圈绕组的电流就会增大,由毕-萨电磁力定律:电磁力f=Bli可知,当磁场强度和导线长度一定时,电磁力只和流过电枢线圈的电流有关,电流越大电磁力越大,那么电机就转得越快。现在除了有刷电机外还有无刷直流
12、电机,无刷直流电机的原理和有刷的差不多,简单地说就是把把定子和转子换了一个位置,转子是永磁体,定子是绕组,电刷由永磁体担任,换向片由霍尔元件和换成了电子换向器组成。 1.2、驱动局部原理与电路图V至36V的。两个设备是专为驱动等感性负载继电器,电磁阀,直流双极步进和马达,也可以给其他高电流/高电压提供电源负载。兼容所有的TTL输入,每个输出都是推拉式驱动电路,与达林顿三极管和伪达林源。启用1,2EN驱动器和3,4EN驱动器。当使能输入为高电平时,相关联的驱动器被启用和他们的输出处于活动状态,并在其输入端的同相。当使能输入为低,这些驱动器被禁用其输出关闭,在高阻抗状态。工作温度是从0到70。L2
13、93D引脚和驱动电路图:L293D的输入输出局部原理图如下:驱动和电机相连接的电路图如下(左边引脚分别于单片机相应引脚相连)。2、信号采集模块智能小车在运行之后是不需要人来操控的,因此信号采集模块是非常重要的,本系统采用的是红外对管来采集路面信息,红外发射管会定时的发射红外光,当前面路面是黑色时,大局部的光被吸收,红外接收管接收到微弱的发射信号,反响给控制系统信号“1,当前面的路面是白色时,大局部的光被反射,红外接收管接收到较强的信号,反响给控制系统信号0,这样就通过传感器系统收集到了路面信息,接下来由信号处理系统来分析处理,从而判断小车的运动情况。传感器局部电路原理图如下所示:红外发射接收管
14、的电路连接装配图:LM393双电压比拟器集成电路部原理图: 3、信号处理模块检测到白色路面的红外接收头处理后送出的是低电平“0,而检测到黑色路线的检测头送出的是高电平“1,由此可根据这2个红外接收头的上下电平判断路线情况而调整小车前进方向。具体情况有如下几种:a检测到 00 小车直走b检测到 10 小车左转c检测到 01 小车右转 d检测到 1 1 小车停止主芯片的电路:USB转串口电路:MAX232芯片是美信MAXIM公司专为RS-232标准串口设计的单电源电平转换芯片,使用+5v单电源供电。MAX232部原理图:Usb转串口电路连接图可以直接实现单片机与电脑相连接,进展程序烧录。五、系统调
15、试1、硬件局部焊接完成后,首先进展的调试是用数字万用表测量各个电路是否焊接正常,是否有虚焊漏焊等现象的出现,以与各个电容是否是正常的未被击穿状态、电阻的阻值是否与设计的原理图上的一致。接通电源,用数字万用表测量当有+5V的各引脚是否有+5V的电压,测量电路中是否出现了不该有的短路现象。接入光电传感器模块,使各个光电检测器的光电对管靠近白纸,观察对应的发光二极管是否发光,不发光表示正常。然后再使各个光电对管靠近黑线,观察对应的发光二级管是否发光,发光表示正常。硬件局部的原理图见附录一。2、软件局部首先我们先测试了小车的前进,停止,左转和右转。组装信号采集模块后,实现小车的自动循迹功能。软件局部的
16、程序代码见附录三。六、实验结果 1、主要功能测试:小车可以在黑色轨迹上完成循迹任务。并且在转弯时,前面的定位发光二极管可以模拟汽车的转向。 2、其他功能测试:二极管的动态显示,红外遥控,防撞等功能将相应程序烧入其中根本上都可以实现。七、拓展功能 防止掉落地面功能:当小车行驶到悬空的地方时,前面的红外对管检测不到信号就会停止,防止小车掉落。八、参考资料 电子信息专业实验教程 大学 C语言程序设计与应用 清华大学 电路理论根底 科学 模拟电子技术 清华大学 数字电路设计 大学九、附录附录一:总体电路原理图:附录二:主板和传感器电路焊接装配图:附录三:软件局部程序代码#include /包含51单片
17、机相关的头文件sbit LeftLed=P20; /定义前方左侧指示灯端口sbit RightLed=P07; /定义前方右侧指示灯端口sbit FontLled=P17;sbit LeftIR=P35; /定义前方左侧红外探头端口sbit RightIR=P36; /定义前方右侧红外探头端口sbit FontIR=P37; /定义前方正前方红外探头端口sbit M1A=P00; /定义左侧电机驱动A端sbit M1B=P01; /定义左侧电机驱动B端sbit M2A=P02; /定义右侧电机驱动A端sbit M2B=P03; /定义右侧电机驱动B端sbit B1=P04; /定义语音识识别传
18、感器端口sbit SB1=P06; /定义蜂鸣器端口void tingzhi() M1A=0; /将M1电机A端初始化为0 M1B=0; /将M1电机B端初始化为0 M2A=0; /将M2电机A端初始化为0 M2B=0; /将M2电机B端初始化为0void qianjin() M1A=1; M1B=0; M2A=1; M2B=0;void houtui() M1A=0; M1B=1; M2A=0; M2B=1;void zuozhuan() M1A=0; M1B=1; M2A=1; M2B=0;void youzhuan() M1A=1; M1B=0; M2A=0; M2B=1;void de
19、lay_nus(unsigned int i) /延时:i=12 ,i的最小延时单12 us i=i/10; while(-i); void delay_nms(unsigned int n) /延时n ms n=n+1; while(-n) delay_nus(900); /延时 1ms,同时进展补偿 void ControlCar(unsigned char ConType) /定义电机控制子程序 tingzhi(); switch(ConType) /判断用户设定电机形式 case 1: /前进 /判断用户是否选择形式1 qianjin();break; case 2: /后退 /判断用
20、户是否选择形式2 houtui(); /M2电机反转 break; case 3: /左转 /判断用户是否选择形式3 zuozhuan(); /M2电机正转break; case 4: /右转 /判断用户是否选择形式4 youzhuan(); /M1电机正转 /M2电机反转break; case 8: /停止 /判断用户是否选择形式8 tingzhi();break; /退出当前选择 void main() /主程序入口 bit RunFlag=0; /定义小车运行标志位 /RunShow=0; /初始化显示状态 ControlCar(8); /初始化小车运行状态 while(1) /程序主循
21、环 Start: LeftLed=LeftIR; /前方左侧指示灯指示出前方左侧红外探头状态 RightLed=RightIR; /前方右侧指示灯指示出前方右侧红外探头状态 FontLled= FontIR; SB1=LeftIR; if(LeftIR = 0 & RightIR = 0) /三个红外检测到黑线,就前进 ControlCar(1); delay_nms (10); goto NextRun; if(LeftIR = 0 & RightIR = 1) ControlCar(3); /右侧没有信号时,开始向左转一定的角度 delay_nms (10); goto NextRun; if(LeftIR = 1 & RightIR = 0) ControlCar(4); /左侧没有信号时,开始向右转一定的角度 delay_nms (10); goto NextRun; goto Start; NextRun: ControlCar(8); 18 / 18