版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单片机课程设计设计报告设计课题: 超声波避障小车 专业班级: 电子信息工程121班 学生姓名: 范东耀 指导教师: 蔡岗 设计时间: 2015年7月8日 赣南师范学院科技学院数学与信息科学系 超声波避障小车一、设计任务与要求1.设计任务:1、采用超声波模块实现小车自动避障功能。2、用LCD1602显示当前的障碍距离。2.扩展部分: 测出当前小车的行驶速度,并用LCD1602显示当前速度。二、方案设计与论证 1设计方案系统采用51单片机作为核心控制单元用于智能车系统的控制,驱动板则以L289N驱动芯片为核心,应用超声波模块及光电传感器和LCD液晶模块,成功的实现了小车的避障、测速和显示功能这三大
2、功能。在超声波检测到障碍物之后,主控芯片根据距离值控制电机的转动,在与障碍物距离较大的情况下,快速前进,在与障碍物距离较小但未到达临界转弯方向值得时候,慢速前进。在与障碍物距离较近时,小车转弯,在与障碍物很近时,小车后退转弯,来进行避障。测速传感器为光电测速传感器,在单位时间内计算脉冲的次数,然后再进行转换和处理即得到所测量的速度。通过软件pwm进行调速。通过LCD1602显示障碍距离及当前的小车行驶速度。2 原理框图简要原理框图如图1所示。 图1 系统原理框图三、电路设计1 电路设计(1)超声波测距模块:超声波测距的原理是首先利用单片机输出一个40kHz的触发信号,把触发信号通过TRIG管脚
3、输入到超声波测距模块,再由超声波测距模块的发射器向某一方向发射超声波,在发射时刻的同时单片机通过软件开始计时,超声波在空气中传播,途中碰到障碍物返回,超声波测距模块的接收器收到反射波后通过产生一个回应信号并通过ECHO脚反馈给单片机,此时单片机就立即停止计时。时序图如图1所示。由于超声波在空气中的传播速度为340m/s,根据计时器记录的时间t,就可以计算出发射点距障碍物的距离,即:S=VT/2,通过单片机来算出距离。超声波测距原理图如图2所示。图2 超声波测距原理(2)显示模块:系统采用LCD1602显示,它不仅节省了单片机的资源,相比较数码管液晶显示更加直观、节能,同时可以直接显示字母、数字
4、、符号等,具有灵活易操作的特性。故采用LCD显示。引脚功能说明:LCD1602采用标准的16脚(带背光)接口,各引脚接口说明如表1所示:表1 LCD1602引脚说明编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4RS数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极(3)电机驱动模块:本系统采用由双极性管组成的H桥电路(L298N)。用单片机控制晶体管使之工作在占空比可调的开关状态,精确调整电机转速。这种电路由于工作在管子的饱和截止模式下
5、,则效率非常高;H桥电路保证了可以简单地实现转速和方向的控制,电子开关的速度很快,稳定性也很高。而且它有更强的驱动能力。L298N有过电流保护功能,当出现电机卡死时,可以保护电路和电机等。 驱动电机的运行,I/O端口状态与电机制动对照表,如下表2所示。表2 I/O端口状态与电机制动对照表IN1IN2IN3IN4EN1EN2转速101011正转010111反转111111停止000011停止XXXX00停止(4)光耦传感器光耦传感器原理是传感器开孔圆盘的转轴与减速电机转轴相连,光源的光通过开孔盘的孔和缝隙反射到光敏元件上,开孔盘旋转体转一周,光敏元件上照到光的次数等于盘上的开孔数,从而测出旋转体
6、旋转速度。灵敏度较高,但容易受外界光源的影响。虽然光电传感器受外界光源影响很大,但是它使用方便、安装简单,还有本设计要求的准确度不是很高,因此就选择了光耦测速传感器。光耦测速传感器的原理图如图3所示。图3 光耦测速传感器原理图2 主要性能参数计算当单片机的给一个20us的触发信号给超声波模块时,TRIG由低电平转换为高电平,TRIG=1,单片机开时计时,开启中断,并记录时间为T1,接收换能器等待接收回波,ECHO持续为高电平的时间为发射时间。换能器接收回波将超声波转换为电信号,送至单片机,记录时间为T2。超声波发射的时间为:T2-T1,C为声速,计算发射距离为: L = (T2-T1)*C/2
7、 。速度的计算是通过小车轮胎的周长除以测码盘转过孔的个数,得出一个码盘孔对应的长度为1CM,通过定时器取1秒时间,1秒转过的码盘孔个数就是速度。3程序流程图本设计系统软件由主程序定时子程序、电机驱动子程序中断子程序、显示子程序算法子程序构成。主程序流程图如图4所示。定时器计数器初始化测当前速度驱动电机转向计算障碍距离打开中断允许液晶显示初始化定时器计数器初始化开始启动超声波模块收到回波信号图4主程序流程图四、电路制作及调试1 实物图通过以上步骤,制作出实物图。正面图如图5所示,反面图如图6所示。图5 实物图正面图6 实物图反面2 电路调试测试在小车的调试的过程中,碰到的最大的问题就是程序有时会
8、跑飞,起初我觉得出现问题的原因是有以下三点,第一,程序的编写过于繁杂,数据处理和逻辑判断太多,芯片处理不过来,第二,数据经过处理后,传送出去未来得及经过处理就已经改变了值,导致芯片来不及处理而跑飞,第三,数据的类型没有定义好,导致数据的值超过定义的类型的极限。经过几天的程序调试,我简化了程序的编写,在重要数据的传送过程中加入了延时函数,保证数据有充足的传送时间,并把各种参数定义的类型检查了几遍,结果并没有解决程序跑飞的问题。最后我发现问题出在电源上,由于小车负载较多,电源带载能力有限,导致芯片受到干扰而跑飞,我将耗电能力较强的直流电机的电源断开,电源只给芯片和其他模块供电,程序能够良好的运行。
9、最后我通过在程序中加入“看门狗”的程序,判断程序是否跑飞,若程序跑飞,将软件复位。能有效的解决程序跑飞的问题。在做测速模块时,发现单片机的资源不够用,单片机只有两个定时器,我在做超声波测距时已经用了一个定时器的计数模式做测距,小车的PWM调速用了一个定时器。而做测速还需要两个定时器,一个定时器做计数,计码盘转的圈数,一个定时器定1秒的时间,从而可以算出当前的小车速度。我通过学习,了解了定时器复用,可以从PWM中的1MS定时做处理,取出1S的时间,用外部中断计码盘的圈数,再通过数据处理,可以得出小车的速度。 3 元件清单元件清单如表3所示。表3 元件清单器件型号数量单价合计电阻10K 1M 1k
10、各2个0.10.6电容0.1u 10u各1个0.30.6三极管90132个0.20.4超声波模块HC-SR041个3.83.8液晶显示屏LCD16021个5.15.1电机驱动模块L298N1个88测速传感器光耦窄槽版2个3.63.6单片机89C521个3.63.6底盘轮胎电机1个28.528.5合计1754.2元五 参考文献 1潘永雄.沙河.电子线路CAD实用教程(第四版)M.西安电子科技大学出版社,2012.2高吉祥.电子技术基础实验与课程设计(第二版)M.电子工业出版社,2005. 3王港元.电子设计制作基础M.江西科学技术出版社,2011. 4彭介华.电子技术课程设计指导M.高等教育出版
11、社,2009.5陈伯时.电力拖动自动控制系统M.机械工业出版社,2012. 赣南师范学院科技学院2014-2015学年第二学期期末考试单片机课程设计成绩评定表专业: 电子信息工程 班级: 121班 学号: 1220085110 姓名: 范东耀 课题名称超声波避障小车设计任务与要求1.设计任务:1、采用超声波模块实现小车自动避障功能。2、用LCD1602显示当前的障碍距离。2.扩展部分: 测出当前小车的行驶速度,并用LCD1602显示当前速度。评分标准基本功能(50)焊接制作(10)程序设计(10)扩展功能(20)个人发挥(10)总分(100)指导老师时间: 年 月 日#include #inc
12、lude #define uchar8 unsigned char#define uint16 unsigned int#define pwm_left 70 /设置左右两边的PWM都为45sfr WDT_CONTR = 0xE1; /用sfr定义看门狗特殊功能寄存器#define RX P3_1 /收#define TX P3_0 /发#define LCM_RW P2_5 /定义LCD引脚#define LCM_RS P2_6#define LCM_E P2_7#define LCM_Data P0#define Busy 0x80 /0124用于检测LCM状态字中的Busy标识sbit
13、tracking_right1 = P1 4; /右边电机sbit tracking_right2 = P1 5;sbit tracking_left1 = P1 2;/左边电机sbit tracking_left2 = P1 3;sbit pwm2 = P1 7;uint16 count1=0,count2=0,F=0;uint16 tmp=0;void LCMInit(void);void DisplayOneChar(unsigned char X, unsigned char Y, unsigned char DData);void DisplayListChar(unsigned c
14、har X, unsigned char Y, unsigned char code *DData);void Delay5Ms(void);void Delay400Ms(void);void Decode(unsigned char ScanCode);void WriteDataLCM(unsigned char WDLCM);void WriteCommandLCM(unsigned char WCLCM,BuysC);unsigned char ReadDataLCM(void);unsigned char ReadStatusLCM(void);unsigned char code
15、 email =juli;unsigned char code ASCII20 =0,1,2,3,4,5,6,7,8,9,.,-,M,m,/,s,S,=,V,c;unsigned char code A = sudu;static unsigned char DisNum = 0; /显示用指针 unsigned int time=0; unsigned long S=0; bit flag =0; unsigned char disbuff4 = 0,0,0,0,; /超声波距离值赋值进来 unsigned char disbuffsudu4= 1,2,3,4,;/速度值赋值进来void d
16、elayms(uint16 c)uint16 a,b;for(a=0;ac;a+)for(b=0;b113;b+);void turn_left() /左转函数tracking_right1 = 1;tracking_right2 = 0;tracking_left1 = 0;tracking_left2 = 0;void big_left() /大左转函数tracking_right1 = 1;tracking_right2 = 0;tracking_left1 = 0;tracking_left2 = 1;void turn_right() /右转函数tracking_right1 = 0
17、;tracking_right2 = 0;tracking_left1 = 1;tracking_left2 = 0;void go_straight() /直走函数tracking_right1 = 1;tracking_right2 = 0;tracking_left1 = 1;tracking_left2 = 0;void right_back()/右后退函数tracking_right1 = 0;tracking_right2 = 1;tracking_left1 = 0;tracking_left2 = 0;void left_back()/左后退函数tracking_right1
18、= 0;tracking_right2 = 0;tracking_left1 = 0;tracking_left2 = 1;void tracking(S) /避障函数 if(S15)&(S30) turn_right(); delayms(10); else go_straight();delayms(10);void Timer1Init(void) /pwmTMOD &= 0x0F;/设置定时器模式TMOD |= 0x10;/设置定时器模式TL1 = 0x66;/设置定时初值TH1 = 0xFC;/设置定时初值 ,定时1MSTF1 = 0;/清除TF0标志TR1 = 1;/定时器0开始计
19、时EA=1;/开总中断 ET1=1;/开定时器1中断void serve_T1() interrupt 3 /pwm TL1 = 0x66;/设置定时初值TH1 = 0xFC;/设置定时初值count1+;if(+count2=(pwm_left) pwm2=1; else if(count20x19) /若到达字串尾则退出if (X =900)|flag=1) /超出测量范围显示“-” flag=0; DisplayOneChar(9, 0, ASCII11); DisplayOneChar(10, 0, ASCII10);/显示点 DisplayOneChar(11, 0, ASCII11
20、); DisplayOneChar(12, 0, ASCII11); DisplayOneChar(13, 0, ASCII12);/显示M else disbuff0=S%1000/100;/先对1000取余,再对100取整 disbuff1=S%1000%100/10; disbuff2=S%1000%10%10; DisplayOneChar(9, 0, ASCIIdisbuff0); DisplayOneChar(10, 0, ASCII10);/显示点 DisplayOneChar(11, 0, ASCIIdisbuff1); DisplayOneChar(12, 0, ASCIIdisbuff2); DisplayOneChar(13, 0, ASCII12);/显示M void zd0() interrupt 1 /T0中断用来计数器溢出,超过测距范围 flag=1; /中断溢出标志
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 住宅小区电力电缆接入合同
- 办公大楼干挂石材施工协议
- 建筑绿化免责协议
- 汽车租赁保险赔偿协议
- 卢森堡餐厅租赁合同
- 活动出租车租赁合同协议书
- 航空港区二手房交易样本
- 地铁站内墙装修刮瓷施工合同
- 著作权转让协议书
- 咖啡馆装饰铁艺安装协议
- 2024年度医疗机构照明灯具安装外包协议
- 快手2025CNY《寨子里的歌晚》招商项目方案
- 静疗护士进修汇报
- 2023年唐山银行招聘考试真题
- 《小学低年级语文说话能力培养的研究》课题实施方案
- 大型机械运输服务方案
- 2024年异丁醛市场分析:异丁醛国内市场复合年增长率约为7%
- 2024年公司工会工作计划模版(三篇)
- 9.1增强安全意识课件-2024-2025学年统编版道德与法治七年级上册
- 中国移动铁通公司招聘笔试题库2024
- 《邹忌讽齐王纳谏》课件
评论
0/150
提交评论