机电一体化论文
题 目 基于单片机的智能避障小车的设计 学 生 指导教师
学 院 机械科学与工程学院 班 级
年 月 日
目 录
第一章 绪 论 ......................................................................................................................... 1
1.1本课题研究背景 ......................................................................................................... 1 1.2课题研究的目的和意义 ............................................................................................. 1 1.3本次设计内容 ............................................................................................................. 1 第二章 智能避障小车系统 ..................................................................................................... 2
2.1系统设计任务及任务要求 ......................................................................................... 2
2.1.1系统设计任务 .................................................................................................. 2 2.1.2系统设计要求 .................................................................................................. 2 2.2系统方案论证 ............................................................................................................. 2
2.2.1控制器方案论证 .............................................................................................. 2 2.2.2供电方案论证 .................................................................................................. 2 2.3系统总体方案确定 ..................................................................................................... 3 2.4系统分析 ..................................................................................................................... 3 第三章 智能小车硬件部分设计 ............................................................................................. 4
3.1系统硬件电路介绍 ..................................................................................................... 4 3.2单片机最小系统 ......................................................................................................... 4
3.2.1单片机使用资源规划 ...................................................................................... 5 3.2.2单片机功能介绍 .............................................................................................. 5 3.3供电单元介绍 ............................................................................................................. 6
3.3.1系统供电单元介绍 .......................................................................................... 6 3.4 L298N电机驱动模块 .................................................................................................. 6 第四章 软件系统设计 ............................................................................................................. 7
4.1程序流程 ..................................................................................................................... 7
4.2程序设计 ..................................................................................................................... 7 第五章 结论 ............................................................................................................................. 8 参考文献 ................................................................................................................................... 9 附录一 ..................................................................................................................................... 10 附录二 ..................................................................................................................................... 11
第一章 绪 论
1.1本课题研究背景
当今世界,传感器技术和自动控制技术正在飞速发展,机械、电气和电子信息已经不再明显分家,自动控制在工业领域中的地位已经越来越重要,“智能”这个词也已经成为了热门词汇。现在国外的自动控制和传感器技术已经达到了很高的水平,特别是日本,比如日本本田制作的机器人,其仿人双足行走已经做得十分逼真,而且具有一定的学习能力,还据说其智商已达到6岁儿童的水平。
作为机械行业的代表产品—汽车,其与电子信息产业的融合速度也显著提高,呈现出两个明显的特点:一是电子装置占汽车整车(特别是轿车)的价值量比例逐步提高,汽车将由以机械产品为主向高级的机电一体化方向发展,汽车电子产业也很有可能成为依托整车制造业和用车提升配置而快速成为新的增长点;二是汽车开始向电子化、多媒体化和智能化方向发展,使其不仅作为一种代步工具、同时能具有交通、娱乐、办公和通讯等多种功能。
无容置疑,机电一体化人才的培养不论是在国外还是国内,都开始重视起来,主要表现在大学生的各种大型的创新比赛,比如:亚洲广播电视联盟亚太地区机器人大赛(ABU ROBCON)、全国大学生“飞思卡尔”杯智能汽车竞赛等众多重要竞赛都能很好的培养大学生对于机电一体化的兴趣与强化机电一体化的相关知识。但很现实的状况是,国内不论是在机械还是电气领域,与国外的差距还是很明显的,所以作为机电一体化学生,必须加倍努力,为逐步赶上国外先进水平并超过之而努力。
1.2课题研究的目的和意义
为了适应机电一体化的发展在汽车智能化方向的发展要求,提出简易智能小车的构想,目的在于:通过独立设计并制作一辆具有简单智能化的简易小车,获得项目整体设计的能力,并掌握多通道多样化传感器综合控制的方法。所以立“智能小车”一题作为尝试。
该智能小车可以作为机器人的典型代表。它可以分为三大组成部分:传感器检测部分、执行部分、CPU。机器人要实现自动避障功能,还可以扩展循迹等功能,感知导引线和障碍物。可以实现小车自动识别路线,选择正确的行进路线,并检测到障碍物自动躲避。
通过构建智能小车系统,培养设计并实现自动控制系统的能力。在实践过程中,熟悉以单片机为核心控制芯片,设计小车的检测、驱动和显示等外围电路,采用智能控制算法实现小车的智能循迹。灵活应用机电等相关学科的理论知识,联系实际电路设计的具体实现方法,达到理论与实践的统一。在此过程中,加深对控制理论的理解和认识。
此项设计是在以杨老师提供的小车为基础上,采用STC89C52单片机作为控制核心,实现能够自主检测前方障碍物,并且改变行进方向实现避障功能。
1.3本次设计内容
1.路面检测模块 2.电源模块为5V;
3.直流电机的驱动模块电路,及相应的驱动程序; 4.舵机转向模块
5.避障功能电路及程序;
1
第二章 智能避障小车系统
2.1系统设计任务及任务要求
2.1.1系统设计任务
1.熟悉51单片机集成开发环境,运用C语言编写工程文件;
2.熟练应用所选用单片机的内部结构、资源,以及软硬件调试设备的基本方法; 3.自行构建基于单片机的最小系统,完成相关硬件电路的设计实现; 4.了解电机、路面检测的原理和实现方法。
2.1.2系统设计要求
1.完成单片机最小系统设计; 2.完成外围应用电路(包括系统供电单元、运动控制单元、避障检测单元)的设计和实现; 3.完成软件对硬件检测和调试工作;
4.查阅国内外的研究动态和发展前沿信息,阅读相关外文文献。
2.2系统方案论证
2.2.1控制器方案论证
按照题目要求,控制器主要用于控制电机,通过相关传感器对路面的轨迹信息进行处理,并将处理信号传输给控制器,然后控制器做出相应的处理,实现电机的前进和后退,保证在允许范围类实现跷跷板的平衡。
方案一:可以采用ARM为系统的控制器,优点是该系统功能强大,片上外设集成度搞密度高,提高了稳定性,系统的处理速度也很高,适合作为大规模实时系统的控制核心。
方案二:采用STC89C52作为系统控制的方案。STC89C52单片机算术运算功能强,软件编程灵活、自由度大,功耗低、体积小、技术成熟,成本也比ARM低。
考虑到性价比问题,本设计选择用STC89C52单片机做控制器。 2.2.2供电方案论证
方案一:采用单电源供电,通过单电源同时对单片机和舵机进行供电,此方案的优点是,减少机身的重量,操作简单,其缺点是,这样会使单片机的波动变大,影响单片机的性能,稳定性比较弱。
方案二:采用双电源供电,通过两个独立的电源分别对单片机和舵机进行供电,此方案的优点是,减少波动,稳定性比较好,可以让小车更好的运作起来,唯一的缺点就是会增加小车的重量。
综合以上的优缺点,本设计决定采用第二种方案。
2
2.3系统总体方案确定 L298NSTC89C 电机控52单片 电机 红外传机系统 制模块 感器 舵机 图2-1 系统总体方案框图
本设计以STC89C52单片机系统为控制中心,通过红外传感器模块中的传感器检测障碍物,检测障碍物的两路传感器分别分布在车头的两端,使其能够检测车前较大范围内的障碍物,尽量减小检测盲区。传感器在接通电源后会不断的发送和接收红外线,接收到的信号输入到单片机。而当单片机检测到需要转向的传感器信号时,单片机通过改变PWM波的占空比来调整舵机的转角,以实现小车的转向。
避障:在小车行驶过程中,若左侧传感器检测到障碍物而右侧传感器未检测到,则小车首先后退之后向右转;同理,若右侧检测到而左侧未检测到,小车先后退之后左转;如果左右均检测到默认小车先后退之后右转。
PWM:脉冲宽度调制(PWM),简称脉宽调制,是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,此处我们主要通过单片机输出PWM波同时通过调节其占空比来实现对舵机的控制。
2.4系统分析
u + θ 单片机 舵机 传动 - 传感器 θ u + G1 G2 G3
-
G4
图2-2 系统框图
根据系统框图可知,系统的传递函数为
G(s)=G1*G2*G3/(1+G1*G2*G3*G4)
3
第三章 智能小车硬件部分设计
3.1系统硬件电路介绍
智能小车采用AT89S51单片机进行智能控制,开始由手动启动小车。当有红外遥控信号时,根据信号进入相应的行驶状态,在运动过程中由红外传感器检测,通过单片机控制小车进行避障,系统的自动避障功能通过红外线传感器正前方检测,由单片机控制实现。 在小车行驶过程中,通过接收的信号脉冲控制直流电机、舵机,以提高系统的静动态性能。系统功能原理图如图3-1所示。详见附录一。
图3-1 系统功能原理图
供电电路:运动系统供电采用双电源分别对舵机和控制器供电。考虑到小车是个不断运动的实验设备,采用干电池供电。总的供电系统是有9V的电池储能,经过电压转换单元。由一个9V转为5V对控制单元供电;另一个9V电池直接对电机的供电端连接。
电机驱动和控制电路:通过51单片机,控制端口对直流电机的转速和转向来对电机、舵机进行控制。
3.2单片机最小系统
单片机最小系统由复位电路、时钟振荡电路、数据采集接口和电机控制接口组成,单片机最小系统图如图3-2所示。
4
图3-2 单片机最小系统
3.2.1单片机使用资源规划
由于51单片机具有比较强大的系统资源,本系统在设计时充分利用了它的自身特性,并进行合理规划,如表3-1所示。 表3-1 单片机资源规划 单片机资源 P1.0 P1.1 P1.2 P1.3 P1.4 P1.6 P1.7 P2.5 P2.2 P2.3 P2.4 用途 舵机 左传感器 右传感器 后左灯 后右灯 前左灯 后左灯 蜂鸣器 L298N6号线 L298N7号线 L298N5号线 备注 舵机脉冲输出 传感器信号输入 传感器信号输入 指示灯信号输出 指示灯信号输出 指示灯信号输出 指示灯信号输出 蜂鸣器信号输出 减速脉冲输出 电机信号输出 电机信号输出 3.2.2单片机功能介绍
单片机本电路的控制核心,它接收传感器测得的信号,并控制电机的转动与停止、舵机的转角。传感器的输入有两根信号线,接单片机的P1.1与P1.2引脚。传入放入信号为高低电平,在小车没检测到障碍物时时,输入都为高电平,此时单片机会驱动电机转动,舵机角度为90,不需要转弯,当某端输入高电平时,表明小车的相应一侧检测到障碍物,单片机便使改舵机的转角,从而实现转向功能。
5
3.3供电单元介绍
高性能的电源管理系统对于电子系统稳定运行是至关重要的。作为智能车源,电源模块为系统的控制器,执行机构,传感器等各个模块提供可靠的工作电压。设计中,除了需要考虑电压范围和电流容量等基本参数之外,还要在电源转换效率、降低噪声、防止干扰和电路简单等方面进行优化,电源管理模块的功能是对电池进行分配和电压调节,为其他各个模块的正常工作提供可靠的工作电压。
3.3.1系统供电单元介绍
L7805是我们最常用到的稳压芯片,本设计中采用9V电池进行供电,输入到L7805,经其稳压后输出5V直流电,给单片机供电。稳压电路如图3-3所示。
图3-3 稳压电路
3.4 L298N电机驱动模块
该模块采用了L298N双H桥直流电机驱动芯片,驱动电机部分VIN采用+9V直流电源供电,同时模块上安装了L78M05稳压器对vin的输入进行稳压,逻辑部分VCC采用+5V供电,小车运行时通过单片机向该模块1、2、3、4、5、6、7脚输入控制信息来控制小车电机的转速和转向。如图3-4所示。 图3-4 L298N驱动电路及L298N实物图
6
第四章 软件系统设计
4.1程序流程
根据上章单片机功能介绍,要完成检测,转向,避障功能,按照流程图进行程序设计。程序流程如图4-1所示。
开始
设置初始值
启动电机
Y
舵机转动 检测到障碍物?
N 避障
停止
图4-1 程序流程图 4.2程序设计
本系统编程部分采用C语言编写完成,应用模块化的设计方法,各子程序做为实现各部分功能和过程,通过主程序不断对子程序的调用完成PWM脉宽控制、延时以及电机转动方向控制等部分的设计。
具体程序详见附录二。
7
第五章 结论
根据本次设计要求,我们小组系统地阅读了大量的资料,并认真分析了设计课题的需求,还系统学习了51系列单片机的工作原理及其使用方法,并独自设计智能小车的整个项目。
虽然条件艰苦,但经过不懈钻研和努力,购买到了所有所需的元器件,并系统的进行了多项试验,最终做出了整个小车的硬件系统,然后结合课题任务和小车硬件进行了程序的编制,本系统能够基本满足设计要求,能够较快较平稳的使小车行驶,但由于经验能力有限,该系统还存在着许多不尽人意的地方有待于进一步的完善与改进。
通过本次课题设计,不仅是对我们课本所学知识的考查,更是对我的自学能力和收集资料能力以及动手能力的考验。本次设计使我们对一个项目的整体设计有了初步认识,还认识了几种传感器,并能独立设计出其接口电路,再有对电路板的制作有了一定的了解,并学会了使用Protel设计电路。本次设计使我们意识到了实验的重要性,在硬件制作和软件调试的过程中,出现了很多问题,最终都是通过实验的方法来解决的。还有以前对程序只是一个很模糊的概念,通过这次的课题设计使我对程序完全有了一个新的认识,并能使用C熟练的进行编程了。通过本次课题设计,极大的锻炼了我们的思考和分析问题的能力,并对单片机有了一个更深的认识。
总之,在课题设计的过程中,无论是对于学习方法还是理论知识,我们都有了新的认识,受益匪浅,这将激励我们在今后再接再厉,不断完善自己的理论知识,提高实践运作能力。
8
参考文献
[1] 郭天祥 新概念51单片机C语言教程——入门、提高、开发、拓展全攻略 [M].北京:电子工业出版社 2013
[2] 张建民 机电一体化系统设计(第三版) [M] 高等教育出版社 2010
9
附录一 电路图
10
附录二 程 序
#include sbit pwm=P1^0; //定义发送脉冲口是P1^0 sbit zuo=P1^1; //定义左边传感器 sbit you=P1^2; //定义右边传感器 sbit led1=P1^6; //前左转方向灯 sbit led2=P1^7; //前右转方向灯 sbit led3=P1^3; //后左转方向灯 sbit led4=P1^4; //后右转方向灯 sbit beep=P2^5; //定义蜂鸣器端口 sbit IN1=P2^4; //定义L298N的5号线 sbit IN2=P2^3; //定义L298N的7号线 sbit SENSE=P2^2; //定义L298N的6号线 w ~ U , T ~ I uchar count,flag,m,num; //定义变量 uint i,j; void delay(uint k) //延迟函数 { uint i,j; for(i=k;i>0;i--) for(j=114;j>0;j--); } void init() //初始化 { TMOD=0x01; //定时器T0工作方式1 TH0=(65536-100)/256; //装初值,产生0.1ms 中断 TL0=(65536-100)%256; EA=1; ET0=1; TR0=1; m=90; } void time0() interrupt 1 //中断服务程序 { TH0=(65536-100)/256; TL0=(65536-100)%256; count=count%200; //0.1*200=20ms if(count==200) count=0; count++; 11 if(count<=m) SENSE=1; else if(count>m) SENSE=0; if(flag==0) //如果接受到的标志位是0; { //那么使高电平的周期是0.5ms; if(count<=5 ) pwm=1; //其余时间均是低电平; else pwm=0; } if(flag==9) //如果接受到的标志位是9 { //那么使高电平的周期是1ms; if(count<=6) pwm=1; // else pwm=0; } if(flag==18) { if(count<=7) pwm=1; else pwm=0; } if(flag==27) { if(count<=8) pwm=1; else pwm=0; } if(flag==36) { if(count<=9) pwm=1; else pwm=0; } if(flag==45) { if(count<=10) pwm=1; else pwm=0; } if(flag==54) { if(count<=11) pwm=1; else pwm=0; } if(flag==63) { if(count<=12) pwm=1; else pwm=0; } if(flag==72) { 其余时间均是低电平; 12 if(count<=13) pwm=1; else pwm=0; } if(flag==81) { if(count<=14) pwm=1; else pwm=0; } if(flag==90) { if(count<=15) pwm=1; else pwm=0; } if(flag==99) { if(count<=16) pwm=1; else pwm=0; } if(flag==108) { if(count<=17) pwm=1; else pwm=0; } if(flag==117) { if(count<=18) pwm=1; else pwm=0; } if(flag==126) { if(count<=19) pwm=1; else pwm=0; } if(flag==135) { if(count<=20) pwm=1; else pwm=0; } if(flag==144) { if(count<=21) pwm=1; else pwm=0; } if(flag==153) 13 { if(count<=22) pwm=1; else pwm=0; } if(flag==162) { if(count<=23) pwm=1; else pwm=0; } if(flag==171) { if(count<=24) pwm=1; else pwm=0; } if(flag==180) { if(count<=25) pwm=1; else pwm=0; } } void main() //主函数 { while(1) //进入大循环 { if(zuo==0&&you==1) //如果检测到左边传感器有信号; { led1=1; led2=0; led3=1; led4=0; beep=1; IN1=0; IN2=1; flag=162; delay(100); } if(you==0&&zuo==1)//如果检测到右边传感器有信号; { led1=0; 14 led2=1; led3=0; led4=1; beep=1; IN1=0; IN2=1; flag=18; delay(100); } if (you==1&&zuo==1) //其余时间,也就是两个传感器均无信号; { led1=1; led2=1; led3=1; led4=1; beep=1; flag=90; //使舵机转到90位置;也就是向前行走; IN1=1; IN2=0; } if(zuo==0&&you==0) //均有信号 ,则,蜂鸣器响 ,电机停止 { led1=0; led2=1; led3=0; led4=1; beep=0; IN1=0; IN2=1; flag=18; delay(100); } } } 15 因篇幅问题不能全部显示,请点此查看更多更全内容