




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
湖南科技大学湖南科技大学 20142014 年电子设计竞赛年电子设计竞赛 (物理与电子科学学院)(物理与电子科学学院) 参赛学院:物理与电子科学学院 参赛专业:电子信息科学与技术 参赛班级:电子三班 参赛队员:刘保路 何隆应 周宇 目录目录 系统的基本方案 系统各模块的基本组成的最终方案 系统硬件的基本组成部分 主要单元电路的设计 电源电路的设计 控制电路的设计 循迹模块设计 电机驱动电路 一、研究内容一、研究内容 智能作为现代的新发明,是以后的发展方向,他可以按照预先设定的模式在一个环 境里自动的运作,不需要人为的管理,可应用于科学勘探等等的用途。智能电动车就是 其中的一个体现。本次设计的简易智能电动车,采用 AT89S52 单片机作为小车的检测和 控制核心;采用金属感应器 TL-Q5MC 来检测路上感应到的铁片,从而把反馈到的信号送 单片机,使单片机按照预定的工作模式控制小车在各区域按预定的速度行驶,并且单片 机选择的工作模式不同也可控制小车顺着 S 形铁片行驶;采用霍尔元件 A44E 检测小车行 驶速度;采用 1602LCD 实时显示小车行驶的时间,小车停止行驶后,轮流显示小车行驶 时间、行驶距离、平均速度以及各速度区行驶的时间。本设计结构简单,较容易实现, 但具有高度的智能化、人性化,一定程度体现了智能。 二、研究方案与技术路线研究方案与技术路线 根据题目要求,我们将系统划分为电源部分、信号检测部分、控制部分。其中信号检测部 分包括循迹探测模块、树木计数模块、隧道长度测量模块;控制部分包括电机驱动模块、 单片机模块。 为实现各模块的功能,分别作了几种不同的设计方案并进行了论证证。 单片机电源模块 电机驱动 模块 循迹模块 LCD 显示模 块 电源模块 方案一:采用蓄电池供电,蓄电池具有较强的电流驱动能力和较好的电压稳定性能,且成 本低廉。可采用蓄电池经 7812 芯片稳压后给电机供电,再经过降压接 7805 芯片给单片机 及其他逻辑单元供电。但蓄电池体积相对庞大,且重量过大,造成电机负载过大,不适合 我们采用的小车车架(玩具电动车车架) 。故我们放弃了这一方案。 方案二:采用干电池组进行供电 采用四节干电池降压至 5V 后给单片机及其他逻辑单元供电,另取六节干电池为电机及光电 开关供电。这样电机启动及制动时的短暂电压干扰不会影响到逻辑单元和单片机的工作。 干电池用电池盒封装,体积和重量较小,同时玩具车底座可以安装四节干电池,正好可为 单片机及其他逻辑单元供电。在稳压方面,起始时考虑使用 7805 芯片对 6V 的电池电压进 行降压稳压。但考虑到这样使得 7805 芯片消耗大量能量,降低电池寿命;同时,由于 mega16、光电开关、小车电机对于供电电压要求并不苛刻,故我们将 6V 电池电压接一个二 极管降压后直接给单片机及其他逻辑单元供电。而电机和光电开关的电源不做稳压处理。 这样只需在小车主板上加两个调速按钮,根据电池电量选择合适功率即可,甚至于可直接 在软件里设置自动换挡。这里我们选用方案二。 复位电路模块: 单片机的复位电路通过手动来实现,复位电路图如(图 8)所示。 22u VCC 200 1K RST 电机驱动模块 方案一:采用电机驱动芯片 L298N。L298N 为单块集成电路,高电压,高电流,四通道驱动, 可直接的对电机进行控制,无须隔离电路。通过单片机的 I/O 输入改变芯片控制端的电平, 即可以对电机进行正反转,停止的操作,非常方便,亦能满足直流减速电机的大电流要求。 方案二:采用继电器对电动机的开或关进行控制,通过开关的切换对小车的速度进行调整。 这个方案的优点是电路较为简单。缺点是继电器的响应时间慢、机械结构易损坏、寿命较 短、可靠性不高。 。方案一:MC33886(电机驱动)的应用示意图如图 2 所示。图中,V+是为直流电机供电的 电源。IN1 和 IN2 两个逻辑电平输入端分别控制输出端 OUT1 和 OUT2。当 IN1 输入高电平时, OUT1 输出也为高电平即通过 H 桥与 V+导通;当 IN1 输入低电平时,OUT1 输出也为低 电平即通过 H 桥与 GND 导通。IN2 和 UT2 的关系与此相同。FS 为故障信号开漏极输出, 低电平有效。当 D1 是高电平或者 D2 是低电平时,同时禁用 OUT1 和 OUT2 的输出,使 OUT1 和 OUT2 同时变为高阻态。通过控制 IN1 和 IN2 的电平,即可控制电机正转、反转、停转。 对 IN1 和 IN2 的电平信号进行脉宽调制,即可控制电机的转速 方案一:采用直流减速电机。直流减速电机转动力矩大,体积小,重量轻,装配简单,使 用方便,小车电机内部装有减速齿轮组,所以并不需要考虑调速功能,很方便的就可以实 现通过单片机对直流减速电机前进、后退、停止等操作, 方案二:采用步进电机作为该系统的驱动电机,由于其转动的角度可以精确定位,可以实 现小车前进距离和位置的精确定位。虽然采用步进电机有诸多优点,但步进电机的输出力 矩较低,随转速的升高而下降,且在较高的转速时会急剧下降,其转速较低时不适于小车 等对速度有一定要求的系统。 控制器模块选择 采用 STC 公司的 STC89C 系列芯片作为系统控制器的 CPU 方案。单片机算术运算功能强,软 件编程灵活、自由度大,可用软件编程实现各种算法和逻辑控制,并且由于其功耗低、体 积小、技术成熟和成本低等优点,使其在各个领域应用广泛。 循迹探测模块 方案一:用光敏电阻组成光敏探测器。光敏电阻的阻值可以跟随周围环境光线的变化而变 化。比较器就可以输出高低电平。单片机据此来判断小车是否偏离轨道或是否到达转弯标 志,并根据反馈来不同的电平信号,发出相应的控制操作命令来控制小车当光线照射到白 纸上面时,光线发射强烈,光线照射到黑线上面时,光线发射较弱。因此光敏电阻在木板 轨迹上方和黑色轨迹上方时,阻值会发生明显的变化。将阻值的变化值经过。但是这种方 案的缺点是受环境中光线的影响很大,且由于电压变化不是很大,不能够稳定的工作。 方案二:采用光电传感器 ST188,即利用红外线遇到障碍物会反射回来红外接收管可以接 受到,在小车行驶过程中红外发射管不断发出红外线,当发出的红外线射入黑线时,没有 反射,红外输出低电平,若红外接收管没有在黑线上方则可以接收到经轨道地板反射回的 光线则输出高电平。此光电传感器调理电路简单,工作性能稳定。是在黑暗或者是强光照 射下,小车系统均可以很稳定的工作,对环境的适应能力较强。 方案三:三只光电开关。一只置于轨道中间,两只置于轨道外侧,当小车脱离轨道时,即 当置于中间的一只光电开关脱离轨道时,等待外面任一只检测到黑线后,做出相应的转向 调整,直到中间的光电开关重新检测到白线(即回到轨道)再恢复正向行驶。 图 10 所示电路中,R1 起限流电阻的作用,当有光反射回来时,光电对管中的三极管 导通,R2 的上端变为高电平,此时 VT1 饱和导通,三极管集电极输出低电平。 当没有光反射回来时,光电对管中的三极管不导通,VT1 截至,其集电极输出高电平。 VT1 在该电路中起到滤波整形的作用。 经试验和示波器验证,该电路工作性能一般,输出还有杂散干扰波的成分。如果输出 加施密特触发器就可以实现良好的输出波形。 但是这种电路用电量比较大,给此种传感器调理电路供电的电池压降较快。究其原因, 是因为光敏三极管和三极管 VT1 导通时的导通电流较大。 因此我们考虑用比较器的方案。可调电阻 R3 可以调节比较器的门限电压,经示波器 观察,输出波形相当规则,可以直接够单片机查询使用。 而且经试验验证给此电路供电的电池的压降较小。因此我们选择此电路作为我们的传 感器检测与调理电路。 检测到白纸有接收到反射光 LM324 2 脚比较器反向端 T1=0V 3 脚比较器同向端=3V 同向端大于反向端则 OUT1 输出 1 检测到黑线没接收到反射光了 LM324 2 脚比较器反向端 T1=5V 3 脚比较器同向端=3V 数据显示模块数据显示模块 采用 LCD 和数码管显示,显示分为两部分:数量显示与隧道长度显示,显示的数据来自外 部存储器中存储的值,实时刷新, ,树木的数目依次增加,而隧道长度依次显示在 LCD 上。 开始 设初值 启动电机 循迹 检测树木 隧道长度 停止 LCD显 示 白线 结语 软件设计软件设计 接线的说明: VCC 接 VCC GND 接 GND L298 驱动模块接法: INT1 接 P20 INT2 接 P21 INT3 接 P22 INT4 接 P23 寻迹模块接法: OUT5 接 P10 OUT4 接 P11 OUT3 接 P12 OUT2 接 P13 OUT1 接 P14 */ #include /调用单片机头文件 #define uchar unsigned char /无符号字符型 宏定义变量范围 0255 #define uint unsigned int /无符号整型 宏定义变量范围 065535 #include #define L 3/左转 90 度的宏定义 #define R 4/右转 90 度的宏定义 /*寻迹模块 IO 口定义*/ sbit xun_ll = P14; /从左到右第 1 个 sbit xun_l = P13; /从左到右第 2 个 sbit xun_z = P12; /从左到右第 3 个 sbit xun_r = P11; /从左到右第 4 个 sbit xun_rr = P10; /从左到右第 5 个 /*LN298 电机驱动 IO 口定义*/ sbit qu_ll = P20; /左边电机控制 IN1 sbit qu_zl = P21; /左边电机控制 IN2 sbit qu_zr = P22; /右边电机控制 IN1 sbit qu_rr = P23; /右边电机控制 IN2 sbit c_send = P33;/超声波发射 sbit c_recive = P34;/超声波接收 uchar flag_hc_value; /超声波中间变量 long distance = 888; /距离 uint set_d; /距离 bit flag_csb_juli; /超声波超出量程 uint flag_time0; /用来保存定时器 0 的时候的 bit flag_300ms ; bit flag_1s ; uint shudu_l,shudu_ll; uint juli; #include “lcd1602.h“ /*1ms 延时函数*/ void delay_1ms(uint q) uint i,j; for(i=0;i= 10) /10 次之后就确定寻迹模块的中间传感器到黑线上了 if(dat = L) /如果是左转 90 度就让右转的方法制动 right_s(); else left_s(); /如果是右转 90 度就让左转的方法制动 delay_1ms(2); stop(); delay_1ms(100); go(); break; /break 退出 while(1)这个死循环 else /没有在黑钱上就给 i_z 变量清零 i_z = 0; /*小车左转 90 度*/ void left_s_90_while()/小车向左转 90 度 go();/前进一小会让小车转 90 度时刚好让黑线在小车的中间 delay_1ms(120); left_s();/左转 90 度注意这个延时不能太长 只要能让寻迹模块中 间的传感离开黑线就好 delay_1ms(180); che_90_180_break(L); /*小车向右转 90 度*/ void right_s_90_while() / go();/前进一小会让小车转 90 度时刚好让黑线在小车的中间 delay_1ms(120); right_s();/左转 90 度注意这个延时不能太长 只要能让寻迹模块中 间的传感离开黑线就好 delay_1ms(180); che_90_180_break(R); /*小车左转 90 度*/ void left_90() left_s(); delay_1ms(280); /right_s(); /delay_1ms(30); stop(); delay_1ms(150); go(); /*小车右转 90 度*/ void right_90() right_s(); delay_1ms(270); /left_s(); /delay_1ms(30); stop(); delay_1ms(150); go(); /*寻迹小车程序*/ / 白线为 1 黑线为 0 void xunji() if(xun_ll=1) /小车前进 if(xun_ll=0) /小车停下 if(xun_ll=1) /小车右转 if(xun_ll=1) /小车左转 if(xun_ll=1) delay_1ms(1); if(xun_ll=1) /小车右转 90 度 if(xun_ll=0) delay_1ms(1); if(xun_ll=0) /小车左转 90 度 /*小延时函数*/ void delay() _nop_(); /执行一条_nop_()指令就是 1us _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); /*超声波测距程序*/ void send_wave() c_send = 1; /10us 的高电平触发 delay(); c_send = 0; TH0 = 0; /给定时器 0 清零 TL0 = 0; TR0 = 0; /关定时器 0 定时 while(!c_recive); /当 c_recive 为零时等待 TR0=0; while(c_recive) /当 c_recive 为 1 计数并等待 flag_time0 = TH0 * 256 + TL0; if(flag_time0 40000) /当超声波超过测量范围时,显示 3 个 888 TR0 = 0; flag_csb_juli = 2; distance = 888; break ; else flag_csb_juli = 1; if(flag_csb_juli = 1) TR0=0; /关定时器 0 定时 distance =flag_time0; /读出定时器 0 的时间 distance *= 0.017; / 0.017 = 340M / 2 = 170M = 0.017M 算 出来是米 if(distance 500) /距离 = 速度 * 时间 distance = 888; /如果大于 3.8m 就超出超声波的量程 /*避障程序*/ void bizhang() static uchar value; if(distance = 7) stop(); delay_1ms(200); right_90(); /右转 90 度 go(); delay_1ms(200); stop(); delay_1ms(200); left_90(); /左转 90 度 go(); delay_1ms(1000); stop(); delay_1ms(200); left_90(); go(); delay_1ms(100); while(xun_l = 1) /等待回到轨道 right_s_90_while(); /小车右转 90 度 else value = 0; /*定时器 0、定时器 1 初始化*/ void time_init() EA = 1; /开总中断 TMOD = 0X11; /定时器 0、定时器 1 工作方式 1 ET0 = 1; /开定时器 0 中断 TR0 = 0; /允许定时器 0 定时 ET1 = 1; /开定时器 1 中断 TR1 = 1; /允许定时器 1 定时 /*外部中断 0 中断 1 的初始化程序*/ void int01_init() EA = 1; /开总中断 EX0 = 1; /允许外部中断 0 中断 IT0 = 1; /外部中断 0 负脉冲触发 /*处理距离函数*/ void wangfanche_display() if(flag_1s = 1) flag_1s = 0; /cm shudu_ll = shudu_ll * (float)2.55; / 2.55 = 20.4 / 8 = 2.55 算出每一个 脉冲的轮子走了多少距离 juli += shudu_ll; /计路程 write_sfm_jl(1,3,shudu_ll); /显示路程 /*主函数*
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 3、监理工作报告√
- 电站运行规程知识培训课件
- 电磁铁与电磁继电器
- 电石炉料面岗位知识培训课件
- 电瓶车销售知识培训课件
- 高空安全知识培训内容课件
- 北师一年级下考试卷子及答案
- Mitochondrial-IN-1-生命科学试剂-MCE
- 北海特岗教师考试真题及答案
- 高温燃气安全知识培训课件
- 工业建筑钢筋工程监理实施细则
- 食品安全知识竞赛参考题库500题(含答案)
- 河西走廊课件
- 2023版北京协和医院重症医学科诊疗常规
- 药店医保网络安全应急管理制度
- 新人教版必修1丨化学第一课(绪言)
- 最新人教版小学数学四年级上册全册导学案
- 人工膝关节置换术护理查房
- 招标代理机构从业人员考试(单选题题库)
- 嘉兴华雯化工 - 201604
- (完整版)初一英语完形填空(20篇)
评论
0/150
提交评论