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