资源描述
9/20/2020,谢兵华 制作,1,自动往返电动小车,9/20/2020,谢兵华 制作,2,任务,设计任务:设计制作一个自动往返于起跑线与终点之间的电动小车 实际目的:1.测试学生在单片机应用方面 的水平;2测试学生在电子电路设计与制作方面的应用能力;3测试学生的实际动手能力等。,9/20/2020,谢兵华 制作,3,设计的要求,车辆从起跑线出发(出发前,车体不得超出起跑线),到达终点先后停留10s,然后自动返回起跑线(允许倒车返回)。往返一次的时间应力求最短(从合上电源开关开始计时)。 到达终点线和返回起跑线时,停车位置离起跑线和终点线偏差应最小(以车辆中心点与终点线或起跑线中心之间距离作为偏差的测量值)。 D-E之间为限速去,车辆往返均要求以低俗通过,通过时间不得少于8s,但不允许在限速区内停车。 自动记录、显示一次往返时间(记录显示装置要求安装在车上)。 自动记录、先是行驶距离(记录显示装置要求安装在车上)。,基本要求:,9/20/2020,谢兵华 制作,4,一、电动小车系统设计方案,自动往返电动小车系统方框图如图1所示。采用单片机作为自动往返电动小车的检测和控制核心。根据题目要求,系统可以划分为几个基本模块,如图 1所示。 对各模块的实现,分别有以下一些不同的设计方案:,图1,9/20/2020,谢兵华 制作,5,1. 电动机驱动调速模块 方案一:采用电阻网络或数字电位器调整电动机的分压,从而达到调速的目的。但是电阻网络只能实现有级调速,而数字电阻的元器件价格比较昂贵。更主要的问题在于一般电动机的电阻很小,但电流很大;分压不仅会降低效率,而且实现很困难。 方案二:采用继电器对电动机的开或关进行控制,通过开关的切换对小车的速度进行调整。这个方案的优点是电路较为简单,缺点是继电器的响应时间慢、机械结构易损坏、寿命较 短、可靠性不高。 方案三:采用由达林顿管组成的H型PWM电路。用单片机控制达林顿管使之工作在占空比可调的开关状态,精确调整电动机转速。这种电路由于工作在管子的饱和截止模式下,效 率非常高;H型电路保证了可以简单地实现转速和方向的控制;电子开关的速度很快,稳定性也极强,是一种广泛采用的PWM调速技术。 基于上述理论分析,拟选择方案三。 2. 路面黑线探测模块 探测路面黑线的大致原理是:光线照射到路面并反射,由于黑线和白纸的反射系数不同,可根据接收到的反射光强弱判断是否到达黑线。 方案一:可见光发光二极管与光敏二极管组成的发射-接收电路。这种方案的缺点在于其他环境光源会对光敏二极管的工作产生很大干扰,一旦外界光亮条件改变,很可能造成误判和漏判;虽然采取超高亮发光管可以降低一定的干扰,但这又将增加额外的功率损耗。 方案二:不调制的反射式红外发射-接收器。由于采用红外管代替普通可见光管,可以降低环境光源干扰;但如果直接用直流电压对管子进行供电,限于,9/20/2020,谢兵华 制作,6,管子的平均功率要求,工作电流只能在1OM左右,仍然容易受到干扰。 方案三:脉冲调制的反射式红外发射-接收器。考虑到环境光干扰主要是直流分量,如果采用带有交流分量的调制信号,则可大幅度减少外界干扰;另外,红外发射管的最大工作电流取决于平均电流,如果使用占空比小的调制信号,在平均电流不变的情况下,瞬时电流可以很大(50-100mA),这样也大大提高了信噪比。 基于上述考虑,拟采用方案三。 3. 车轮检速及路程计算模块 方案一:采用霍尔集成片。该器件内部由三片霍尔金属板组成,当磁铁正对金属板时,由于霍尔效应,金属板发生横向导通,因此可以在车轮上安装磁片,而将霍尔集成片安装在固定轴上,通过对脉冲的计数进行车速测量。 方案二:受鼠标的工作原理启发,采用断续式光电开关。由于该开关是沟槽结构,可以将其置于固定轴上,再在车轮上均匀地固定多个遮光条,让其恰好通过沟槽,产生一个个脉冲。通过脉冲的计数,对速度进行测量。 以上两种都是比较可行的转速测量方案。尤其是霍尔元件,在工业土得到广泛采用。但是在本题中,小车的车轮较小,方案一的磁片密集安装十分困难,容易产生相互干扰。相反,方案二适用于精度较高的场合,可以车轮上加较多的遮光条来满足脉冲计数的精度要求,因此拟采用方案二。 4. 电源选择 方案一:所有器件采用单一电源(6节M电池)。这样供电比较简单;但是由于电动机启动瞬间电流很大,而且PWM驱动的电动机电流波动较大,会造成电压,9/20/2020,谢兵华 制作,7,不稳、有毛刺等干扰,严重时可能造成单片机系统掉电,缺点十分明显。 方案二:双电源供电。将电动机驱动电源与单片机以及其周边电路电源完全隔离,利用光电藕合器传输信号。这样做虽然不如单电源方便灵活,但可以将电动机驱动所造成的干扰彻底消除,提高了系统稳定性。 我们认为本设计的稳定可靠性更为重要,故拟采用方案二。 5. 小结 经过一番仔细的论证与比较,我们决定了系统各个主要模块的最终方案如下: 电动机驱动与调速模块:采用达林顿管的H型PWM电动机驱动电路。 车轮检速模块: 采用光电断续开关构成的光电感应系统。 路面黑线检测模块:采用调制的反射式发射-接收器。 电源:双电源供电(6节M电池+1节9V方型电池),电动小汽车车体结构数据,9/20/2020,谢兵华 制作,8,系统组成及原理框图如图2 所示。以下分为硬件和软件两个方面进行具体分析。,图2,9/20/2020,谢兵华 制作,9,二、系统的具体设计与实现,1.系统的硬件设计 (1) 电动机PWM驱动模块的电路设计与实现 具体电路见图3。本电路采用的是基于PWM原理的H型驱动电路。该电路采用11P132 大功率达林顿管,以保证电动机启动瞬间的8A电流要求。,图3,9/20/2020,谢兵华 制作,10,当Ug1为高电平 ,Ug2为低电平时,Q3、Q6 管导通,Q4、Q5管截止,电动机正转。当Ug1为低电平,Ug2为高电平时,Q3、Q6管截止,Q4、 Q5 管导通,电动机反转。另外四个二极管可以在Ug1由高变低时,通过D2、D4 两个二管形成电动机电圈感应电压的回路,起到了保护电动机的作用。 控制系统电压统一为5V电源,因此若达林顿管基极由控制系统直接控制,则控制电压最高为5V,再加上三极管本身的压降,加到电动机两端的电压就只有4V左右,减弱了电动机的驱动力。基于上述考虑,我们运用了 4N25光藕集成块,将控制部分与电动机的驱动部分隔离开来,这样不仅增加了各系统模块之间的隔离度,也使驱动电流得到了大大的增强。 至于Ug1 与Ug2这对控制电压,我们采用了200Hz的周期信号控制,通过对其占空比的调整,对车速进行调节。最小脉宽为0.2ms,速度共分25挡,可以满足车速调整的精度要求。同时,可以通过Ug1与Ug2的切换来控制电动机的正转与反转。 (2) 路面黑线检测模块的电路设计与实现 为了检测路面黑线,在车底的前部和中部安装了两个反射式红外传感器。为减少环境光源干扰,增加信噪比,采用脉冲调制的发射与接收电路。 发射、接收的具体电路见图4。 发射部分采用55定时器产生9kHz、占空比为1:5的方形脉冲信号,通 过三极管Q1的放大来驱动红外发射管,实现路面检测系统信号的调输入制。接收部分的光敏二极管在不同的光 照强度下,电阻值会大幅改变。因 此可以通过改变岛的大小,调整输 出对路面灰度的敏感程度。本实验 中,我们把电路参数设置为只对黑 色敏感,这样甚至可以忽略路面上 的脚印。输出的交流信号,经过隔直电容,整形后输出,9/20/2020,谢兵华 制作,11,至于解调的一般做法是通过滤波电路后利用频率解码器解调。但是这样做无法充分利用瞬时信噪比大的优势,而且也无法方便地调节接收敏感度。 因此,我们使用单片机同步检测的方法。接收器产生的信号经过信号识别整形电路向单片机分别指示两个传感器的探测信号。同时,发射电路的555定时器产生的调制信号作为同步信号输入给单片机中断。当单片机接收到中断时,便去检测传感器信号,等连续检测到若干个信号之后,再发送中断通知单片机。 这样做的优点在于,可以充分利用单片机编程,等连续测到多个信号后才认为是黑线,避免将其他杂物误判为黑线,以增强纠错能力。,图4,9/20/2020,谢兵华 制作,12,(3) 车速及路程检测模块的电路设计与实现 在车轴上固定有一个沟槽状的断式红外光电开关,而在车轮侧壁则伸出一圈遮光板,圆周上均匀分布15 个输出方孔。车轮转动时,方孔依次通过沟槽,光电开关便得到通断相间的高低电平信号。得到的信号经过整形,发送至单片机,以实现车速检测和程计算。具体电路如图5所示,图5,在物理结构上,我们将该检测装置安装在前车轮上。因为后轮在刹车时容易打滑、反转,故安装在前轮才能测得实际的车速和路程。,9/20/2020,谢兵华 制作,13,2. 系统的元件 单片机控制电路,主要实现对路面黑线的软件检测与纠错,作为整个控制部分的核心,负责车速检测、电动机驱动、数据显示等功能。单片机具体电路如图6所示。,图6,9/20/2020,谢兵华 制作,14,(1)路面检测程序 程序流程图如图7所示。该检测算法的主要特点是:只有连续检测到几个黑线信号之后,才发中断信号通知单片机到达黑线。这样可以避免其他细小物体的干扰。同样,在到达黑线之后,只有连续检测不到信号时,才取消中断,避免黑线上的杂物干扰。,图7,9/20/2020,谢兵华 制作,15,(2)单片机的的主控程序 单片机的中断和定时器资源配置如表1所示。,表1, 黑线计数(中断服务程序1)。由 于车底前部和中部装有两个传感 器,采用 中断和查询结合的检测方法。单片机在对黑线信号进行纠错处理后,向自己的INTO发出中断请求信号,并通过单片机的P1.4指明是哪一个传感器检测到黑线,在其中断服务程序中进一步查询中断源(见图8)。,图8,9/20/2020,谢兵华 制作,16,为了保证程序的实时性,中断服务程序尽量简洁,故在程序中设置2个全局计数变量Linenum1和Linenum2,分别对应两个传感器检测到的黑线数,服务程序仅仅累加计数变量,而到达黑线后的操作由主程序完成。 车速检测(中断服务程序2) 如前文所述,当车轮转动时,安装在轮胎上的圆形遮光板上的方孔依次通过槽型断续式光电开关,每通过一个方孔便产生一个脉冲。因此只需记录两个脉冲所间隔的时间,便能得到实际车速(见图9)。其中,时间差由定时器的时钟计算得到。,图9,同时,由累计脉冲的总数便可得到行驶的路程。本作品中,车轮周长18cm, 圆周上方孔数为15个,故一个脉冲对应1.2cm路程,即路程测量精度为1.2cm。,9/20/2020,谢兵华 制作,17,定时器服务程序。 为了提高效率,我们将多个需要定时的模块放在一个定时器服务程序中,其程序流程图如图10所示。通过分频来实现各个不同功能。定时器频率为5kHz。电动机PWM脉宽调制信号的产生:脉宽调制信号的一个周期为5000s。一个最小脉宽的时间为200s间,则速度可分为5000/200=25 挡。 系统时钟的产生:只需设置一个全局变量不断累加 ,便能提供一个系统时钟。 LED数码管的动态扫描:为了使人眼感觉不到抖动,扫描频率应不低于60Hz,服务程序中将时钟经16分频后,得到5000/16=312.5 Hz,则4位数码管的每一位平均扫描频率为312.5/4=78Hz。,图10,限速子程序。在限速区中为了实现低速行驶的要求,最简单的方法是减小功率。但这种开环系统缺点十分明显。首先是对电池电量依赖性强,电量充足时可能开得过快,电量不足时则过慢;其次,当小车碰到挡板时, 由于阻力增加, 车速也会与正常行驶差异极大,乃至停车。,9/20/2020,谢兵华 制作,18,因此,限速必须采用闭环系统,即通过车速检测的反馈,不断调整电动机的驱动力。算法流程图如图11所示,图11,为了直观地指示当前限速状态,在车尾设有两对红绿指示灯,通过指示灯的状态可清晰观察该速度反馈系统的运行状态。另外值得注意的是,判断当前车速是否低于设定值不能通过计算两次脉冲间隔来实现。因为车速很慢时,等待下一个脉冲的时间将无限变长;一旦车子停驶,程序便永远不能判断当前车速。故检测车速时设置了一个超时器,一旦超时还没有来脉冲,便认为车速变慢或停止。,过线返回算法。 题目要求在到达终点线及返回起点线时压线。当车速不快时,只需通过刹车便可解决;但如果车速太快,刹车后仍超出终点线时,就应该倒退回终点线上。而,9/20/2020,谢兵华 制作,19,且此时倒车必须为较低的速度,保证一次刹车即可压线,否则可能产生来回往返的死循环。算法流程图如图12所示,图12,9/20/2020,谢兵华 制作,20,主程序流程图。如图13所示。,图13,9/20/2020,谢兵华 制作,21,总程序编程如:,#include #include #define uchar unsigned char #define uint unsigned int sbit P1_0=P10; sbit P1_1=P11; sbit P1_2=P12; sbit P1_3=P13; float f=0; int a,counter; uchar LED0_data,LED1_data,LED2_data,LED3_data,LED4_data,LED5_data,i=0; uchar code segcode=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90;/低电平有效,9/20/2020,谢兵华 制作,22,void display(); void delay_10us(uint m); void delay_ms(uint n); void ting(); void zheng(); void fan(); void zheng_jiansu(); void fan_jiansu(); void init() TMOD=0 x51; TL0=(65536-20000)%256; TH0=(65536-20000)/256; TL1=0; TH1=0; TR0=1; TR1=1; ET0=1; EA=1;,9/20/2020,谢兵华 制作,23,IT0=1;/脉冲方式 EX0=1;/开外部中断0:加速 void dectobit(int dec) LED5_data=dec/100000; dec=dec%100000; LED4_data=dec/10000; dec=dec%10000; LED3_data=dec/1000; dec=dec%1000;,9/20/2020,谢兵华 制作,24,LED2_data=dec/100; dec=dec%100; LED1_data=dec/10; dec=dec%10; LED0_data=dec; void display() P2=0 x01; P0=segcodeLED5_data; delay_ms(1); P2=0 x02; P0=segcodeLED4_data; delay_ms(1); P2=0 x04; P0=segcodeLED3_data; delay_ms(1);,9/20/2020,谢兵华 制作,25,P2=0 x08; P0=segcodeLED2_data; delay_ms(1); P2=0 x10; P0=segcodeLED1_data; delay_ms(1); P2=0 x20; P0=segcodeLED0_data; delay_ms(1); void main() init(); while(1) dectobit(f); display();,9/20/2020,谢兵华 制作,26,if(a=1)zheng(); if(a=2)zheng(); if(a=3)zheng_jiansu(); if(a=4)zheng(); if(a=5)ting(); void zheng() P1_1=1; P1_0=0; P1_2=0; P1_3=1; delay_10us(2000); P1_0=1; P1_2=1; delay_ms(10); ,9/20/2020,谢兵华 制作,27,void zheng_jiansu() P1_1=1; P1_0=0; P1_2=0; P1_3=1; delay_10us(1000); P1_0=1; P1_2=1; delay_ms(5); void fan() P1_0=1; P1_1=0; P1_2=1; P1_3=0; delay_10us(2000);,9/20/2020,谢兵华 制作,28,P1_1=1; P1_3=1; delay_ms(10); void fan_jiansu() P1_0=1; P1_1=0; P1_2=1; P1_3=0; delay_10us(1000); P1_1=1; P1_3=1; delay_ms(5); void ting() P1=0 xff; ,9/20/2020,谢兵华 制作,29,void delay_ms(uint n) /n 个 1ms延时程序 uint i; for(;n0;n-) for(i=0;i124;i+); /1ms软件延时 void delay_10us(uint m)/10us延时 while(m-) _nop_(); _nop_();_nop_();_nop_(); _nop_();_nop_();_nop_(); void timer0() interrupt 1 TL0=(65536-20000)%256;,9/20/2020,谢兵华 制作,30,TH0=(65536-20000)/256; +i; if(i=50) i=0; f=(TH1*256+TL1/100); TH1=0; TL1=0; void waibu0() interrupt 0 counter+; if(counter=6) a+; if(a8)a=0; counter=0; ,9/20/2020,谢兵华 制作,31,(3) 软件的其他特色 刹车时,借鉴了车辆制动装置ABS(自动防抱死)功能,将整个刹车过程分割为几个子过程,有效防止了轮胎打滑。原路返回时,充分利用上次正向行驶时得到的跑道长度数据,进一步优化性能。正向行驶时使用前部传感器,逆向行驶时使用中部传感器。在压线时,则同时利用两个传感器判断当前位置,提高停车精度,并保证黑线计数正确,3. 其他功能的设计与实现 (1)数码管显示 为了减少外部锁存器和译码模块,数码管全部使用软件进行动态显示。在限速区内,数码管显示8s倒计时;在行驶过程中,显示已驶路程;在终点停车时和返回起点后,交替显示桂返时间与距离。(2)车头方向的调整 由于原玩具车前轮装有弹簧很容易发生随机偏转。为了精确调整方向,我们拆除了车上原有的转弯控制电动机,设计了一个机械装置固定了车轮的方向杆,且留出一个螺丝作为接口,实现对方向杆的微调。 (3)车速指示灯 在车尾两端装有两对车速指示灯,当小车加速时,绿灯亮;当小车刹车减速时,红灯亮。因此在限速区时,可明显体会到算法的运行过程。在终点停留时,红灯闪烁10次代表10s倒计时。,4. 总的电路图如下:,9/20/2020,谢兵华 制作,32,9/20/2020,谢兵华 制作,33,个人总结,历时一段时间的毕业设计已经告一段落。经过自己不断的搜索努力以及同学、老师们的耐心指导和热情帮助,本设计已经基本完成。在这段时间里,老师、同学严谨的治学态度和热忱的工作作风令我十分钦佩,他们的指导使我受益非浅。同时校图书馆的开放也为我的设计提供了大量的实习资料。 通过这次毕业设计,使我深刻地认识到学好专业知识的重要性,也理解了理论联系实际的含义,并且检验了大学三年的学习成果。虽然在这次设计中对于知识的运用和衔接还不够熟练,但是我将在以后的工作和学习中继续努力、不断完善。这段时间的设计是对过去所学知识的系统提高和扩充的过程,为我今后的发展打下了良好的基础。 由于自身水平有限,设计中一定存在很多不足之处,敬请各位老师批评指正。,9/20/2020,谢兵华 制作,34,意义,本设计可作为单片机初学者对单片机功能的了解及进一步学习的实训教材,提高他们学习单片机的兴趣和动手能力;也可开发汽车的自动避障功能,提高道路安全的模拟实验;部分功能模块,可应用于工厂的自动控制,例如无线遥控机器设备、工业产品的自动往返运输。系统的自动寻迹为智能模块,也可作为机器人爱好者的学习基础材料。,9/20/2020,谢兵华 制作,35,参 考 资料:,陈永真、宁武和蓝和慧主编。 新编全国大学生电子设计竞赛试题精解选.北京:电子工业出版社,2009 张建民主编。自动控制原理.北京:中国电力出版社,2010 赵负图主编。传感器集成电路手册,第一版,化学工业出版社,2004 王静霞主编.单片机应用技术(C语言版).北京:电子工业出版社,2009 梅开乡等主编。电子电路设计与制作。北京: 北京理工大学出版社,2010 刘涳主编。电气及自动化专业毕业设计宝典。陕西:西安电子科技大学出版社,2008 朱定华主编。单片机原理及接口技术 马忠梅主编。单片机的C语言应用程序设计,系主任 杨海澜 教研室主任 王军 指导教师:朱一多,
展开阅读全文