《多功能智能小车设计方案.docx》由会员分享,可在线阅读,更多相关《多功能智能小车设计方案.docx(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、多功能智能小车设计方案中北大学大学生电子设计竞赛 工程总结技术报告负责人: 学 号: 学 院、系: 信息与通信工程学院电气工程系 专 业: 电气工程及其自动化 : E,mail: 工程名称: 多功能智能电动车 指导教师: 1、正文承受 5 号宋体,单倍行距72023 年 3 月 31 日gun 一、工程参与人员、负责内容以及技术特长: 主要人员负责内容技术特长电路以及单片机程序设计,统筹安排具有扎实的单片机,C 语言以及电路设计根底原件焊接,零部件加工能够娴熟使用各种工具和仪器绘制电路原理图以及 PCB 板,能够娴熟使用办公软件和 EDA 软件二 工程背景A、任务:设计并制作一个简易智能电动车
2、,其行驶路线示意图如下: B、说明 :1、跑道上面铺设白纸,薄铁片纸下,铁片厚度为.5,.0mm。2、跑道边线宽度 5cm,引导线宽度 2cm,可以涂墨或粘黑色胶带。3、障碍物1、2 可由包有白纸的砖组成,其长、宽、高约为 50cm12cm6cm,障碍物放置在障碍区任意位置。电动车允许用玩具车改装,但不能人工遥控,其外围尺寸(含车体上附加装置)的限制为:长度?35cm,宽度?15cm。光源承受 200W 白炽灯,白炽灯泡底部距地面 20cm,其位置如下图。在车顶部明显标出电动车中心点位置即横向与纵向两 1、根本要求(2) 自动避障。(3) 寻光,趋光循迹。电动车进入停车区域后,能进一步准确要求
3、电动车能显示电动车全程行驶时间。STC89C52 单片机为掌握平台,选择常见的电机模型车为机械平台,通过细化设计要求,结合传感器技术和电机掌握技术相关学问实现小车的各种功能。设计完成以由红外线对管的自动寻迹、红外自动避障、寻 光,检测铁片组成的硬件模块结合软件设计组成多功能智能小车,共同实现小车的前进倒退、转向行驶,自动依据地面黑线寻迹导航,检测障碍物或检测到铁片后停顿等功能,实现智能掌握,到达设计目标。 本设计以两直流电动机为主驱动,通过各类传感器件来采集各类信息,送入主控单元 STC89C52 单片机处理数据后完成相应动作,以到达自身掌握。电机驱动电路承受 H 桥驱动模块-双 L298 步
4、进/直流电机驱动板 ,能同时驱动 4 个直流电机和 2 个步进电机;避障和承受红外光电开关来完成,自动寻迹承受红外放射管和接收管光电对管寻迹传感器完成,最终由掌握单元处理数据后通过编程有序合理的将各模块信号整合在一起并完成相应动作,实现了智能掌握。模块化设计图:1 (轨迹探测模块方案方案一:利用两只红外对管。分别置于轨道的两侧,依据其承受到白线的先后来掌握小车转始终调整车向, 但测试说明,假设两只光电开关之间的距离很小,则约束了速度,假设着重于小车速度的提升,则随着车速的提升,则势必要求两只光电开关之间的距离加大,从而使得小车的行驶路线脱离轨道幅度较大,小车将无法快速完成准确的导向从而有可能导
5、致寻迹失败。方案二:用四只红外对管。轨道两侧各放置两只,原理同方案一。当置于中间的一对红外对管寻迹失败 时,外面的一对红外对管重担负起循迹的任务,做出相应的转向调整,直到小车恢复正向行驶。现场实测说明,小车在全速时也能够稳定循迹行驶。综合考虑到寻迹准确性和行驶速度的要求,承受方案二。电路图如图 1. 图 1-循迹电路电路2 (数据存储方案方案一:承受外接 ROM 进展存储。承受外接 ROM 进展存储是保存试验数据的惯用方法,其特点是在单片机断电之后仍旧能保存住数据,但无疑将增大软硬开销和时间开销。方案二:直接用单片机内部的 RAM 进展存储。虽然不能在断电后保存数据,但可以在试验完毕后依据按键
6、显示相应值。而且本试验的数据存储不大,承受 RAM 可以削减 IO 接口的使用,便利 IO 接口安排,故此方案具有本钱低、易实现的优点,更符合实际需求。鉴于方案二的以上优点,综合比较,本方案承受方案二。3 (障碍探测模块方案考虑到在测障过程中小车车速及反响调向速度的限制,小车应在距障碍物 40CM 的范围内做出反响,这样在顺当绕过障碍物的同时还为下一步驶入车库查找到最正确的位置和方向。否则,假设范围太大,则可能产生障碍物的推断失误;范围过小又很简洁造成车身撞上障碍物或虽绕过障碍物却无法实现抱负定向方案。方案一:承受一只红外传感器置于小车中心。一只红外传感器小车中心安装简易,也可以检测到障碍物的
7、存在,但难以确定小车在水平方向上是否会与障碍物相撞,也不易让小车做出准确的转向反响。方案二:承受二只红外传感器分置于小车两边。二只红外传感器分别置于小车的前端两侧,方向与小车前进方向平行,对小车与障碍物相对距离和方位能作出较为准确的判别和准时反响。但此方案过于依靠硬件、本钱较高、缺乏制造性,而且置于小车左方的红外传感器用到的几率很小,所以最终未承受。方案三:承受一只红外传感器置于小车右侧并与小车前进方向呈一固定角度(大约 15?),另一只红外传感器置于小车右侧并与小车前进方向垂直。基于对 C 点后行车地图中光源及障碍物尺寸、位置的分析,我们承受了从 C 点动身即获得光源对行车方向的掌握,在向光
8、源行驶的过程之中检查障碍物并做出相应的反应,这样不仅只使用一只红外传感器就实现了避障,而且避开因小车自然转弯而导致的盲目方向掌握,同时为后面以最简洁直接的路线和在最短时间内驶入车库制造了时机。智能小车应以准确、智能见优,承受方案三。电路图如图 2. 图 2红外避障电路4 (查找光源方案方案一:承受一个光源定位器。用深色不透光材料与光敏电阻制成的光源定位器有较抱负的定向测试效果,2.5 米之外就可以确定电源的方向。当小车绕过障碍物之后,通过转变行驶方向(相当于旋转光源定位器)获得最大光线照耀以确定光源方向,这种方案有肯定的可行性,但查找光源的过程必定带来不必要的大量时间开销,且查找过程盲目性太大
9、,不利于掌握。方案二:利用多四只光源定位器。该方案与轨迹探测模块设计思路大同小异,不再赘述。综合考虑以上方案,方案二更具准确性 ,故我们承受方案二。5 (刹车机构功能方案方案一:自然减速式。当系统发出停顿信号时停顿给驱动电机供电,小车在无动力状态因阻力而自然变为静止。由于惯性,小车全速行驶时需 1.8 秒后才能停顿,因车轮滑行造成的误差较大。无法实现准确制动的目标。方案二:反转式。当小车需要停车时给驱动电机以反转信号,利用轮胎与跑道的摩擦力抵消惯 性效应。由于车速是渐减的,反向驱动信号长度也要渐减,否则小车可能反向行驶。使用此方案后全速刹车反响时间削减为 0.5s。鉴于准确制动,本系统中承受方
10、案二。7 . 显示模块方案方案一:数码管显示。数码管显示清楚,更加适合在白天等强光条件下显示方案二:1602 液晶显示。液晶极其省电,1602 液晶最多可以输出 32 个字符,电路只需简洁的连接即可,程序设计也很简洁,可以移植现成的模板。但是使用有温度范围限制,且因是反光式的,在外界光线很光明的状况下很简洁看不清楚。由于 1602 耗电量低且程序编写简洁,电路连接简洁。显示清楚。故本系统中承受方案二。电路图如图 4.图 4液晶显示电路图8).供电方案方案一:一块电池供电承受一块电池供电,优点是使用电池数量少,节约空间,但缺点是小车功耗大,一块电池供电部稳定。方案二:两路供电承受两路供电,这样可
11、以使用其中一路单独为单片机,指示灯等供电。另外一路供给 L298N、LM339 的工作电压,将电机驱动电源(12V)和单片机的供电电源(5V) 完全隔开,这样设计可以彻底消退电机驱动所造成的干扰,提高了系统的稳定性保证单片机的平稳运行。电路图如图 5.图 5电源供电电路图9)电机驱动方案由于使用的是永磁式直流电机,因此只能对电枢电压进展掌握来实现电机转速和方向的掌握,因此电机驱动模块要能便利的实现对输出电压的大小和极性掌握。可以考虑的方案有:方案一:承受继电器对电动机的开或关进展掌握,通过开关的切换对小车的速度进展调整。这个方案的优点是电路比较简洁,缺点是继电器的响应时间慢、机械构造易损坏、寿
12、命较短牢靠性不高。方案二:承受功率管组成,桥型电机驱动电路,并利用 PWM 波来实现对输出电压的有效值大小和极性进展掌握。这种调速方式具有调速特性优良、调整平滑、调速范围广、过载力量大,能承受频繁的负载冲击,能耗小等优点,还可以实现频繁的无级快速启动和反转等优点。方案三:承受 L298 专用芯片进展驱动。L298 芯片的工作原理和方案二全都,但是其工作时较方案二稳定,且编程较为简洁,便于调试。另外 L298 内部集成了两个 H 桥,能同时驱动两个电机,硬件实现较方案二简洁。 基于上述理论分析,拟定方案三。电路图如图 6.图 6电机驱动电路图五 主要争论结果1. 电动车从起跑线动身沿引导线到达点
13、。车体超过起跑线电动车到达 B 点以后进入弯道区,圆弧线到达 C 点。电动车到达 C 点检测到片 C 点停车 5 秒发出断续的声光信息。 电动车在光源的引导下,障碍。电动车,图 7总体电路图双电源 PCB电机驱动 PCB 液晶显示 PCB小车总体流程图如下:YES NONo NO YES NO NO YES NO YES六、存在的问题及今后努力方向1. 小车行驶过程中由于使用万向轮的原因,车尾有稍微摇摆。今后打算改用四驱驱动车体。争取让小车行驶更稳定,转向更便利。由于小车驱动为直流电机,说以小车在转向时无法准确掌握转向角。且直流电机不稳定,今后打算改用步进式电机,实现转角的准确掌握。2. 由于
14、金属接近开关探测头直径较大,且检测距离较小。导致检测铁片时两块铁片的距离必需大于金属接近开关探测头一个直径,金属开关探测器区分距离为150mm,区分率较小,争取设计出更合理的电路图提高金属探测区分率。3. PCB 绘制过程中有少量错误,小车在硬件设计时使用是万用版,导致布线不是很美观,争取在用 Autium designer 画出 PCB 板的状况下用更好的布线连接。4. 程序设计方面争取把程序设计的更简洁,更有效。削减单片机储存空间。5. 掌握芯片在用好 51 的前提下,争取使用更高级的芯片,例如 ARM 系列。使芯片掌握功能更加全面。评审组意见:评审组组长:年 月 日程序如下:/* 硬件连
15、接P3_7 接蜂鸣器,led P0_6 接金属接近开关信号P0_0 接驱动模块 ENA 使能端,输入 PWM 信号调整速度P0_5 接驱动模块 ENB 使能端,输入 PWM 信号调整速度P0_1 P0_2 接 IN1 IN2 当 P0_1 1,P0_2 0; 时左电机正转P0_1P0_2接 IN1IN2当P0_10,P0_21;时左电机反转P0_3P0_4接 IN3IN4当P0_31,P0_40;时右电机正转P0_3P0_4接 IN3IN4当P0_30,P0_41;时右电机反转P2_0 接四路寻迹模块接口第一路输出信号即中控板上面标记为 OUT1 P2_1 接四路寻迹模块接口其次路输出信号即中
16、控板上面标记为 OUT2 P2_2 接四路寻迹模块接口第三路输出信号即中控板上面标记为 OUT3 P2_3 接四路寻迹模块接口第四路输出信号即中控板上面标记为 OUT4 四路寻迹传感器有信号 白线)为 0 没有信号(黑线)为 1P2_4 接四路寻光模块接口第一路输出信号即中控板上面标记为 OUT1 P2_5 接四路寻光模块接口其次路输出信号即中控板上面标记为 OUT2 P2_6 接四路寻光模块接口第三路输出信号即中控板上面标记为 OUT3 P2_7 接四路寻光模块接口第四路输出信号即中控板上面标记为 OUT4*/ #include #includesbitRSP36; /定义端口sbitRWP
17、31;sbitENP30;#defineRS_CLRRS0#defineRS_SETRS1#defineRW_CLRRW0#defineRW_SETRW1#defineEN_CLREN0#define EN_SET EN 1 #define DataPort P1#define uchar unsigned char #define uint unsigned int sbit Left_moto_pwm P00; /接驱动模块 ENA 使能端,输入 PWM信号调整速度sbit Right_moto_pwm P05; /接驱动模块 ENB sbit Left_2_led P20; /四路寻迹模
18、块接口第一路 sbit Left_1_led P21; /四路寻迹模块接口其次路 sbit Right_1_led P22; /四路寻迹模块接口第三路 sbit Right_2_led P23; /四路寻迹模块接口第四路 sbit Left_2_Led P24; /四路寻光模块接口第一路 sbit Left_1_Led P25; /四路寻光模块接口其次路 sbit Right_1_Led P26; /四路寻光模块接口第三路 sbit Right_2_Led P27; /四路寻光模块接口第四路 sbita P01;sbitbP02;sbitcP03;sbitdP04;sbiteP37;sbitf
19、P06;uchar pwm_val_left 0;/变量定义uchar push_val_left 0;/ 左电机占空比 N/10 uchar pwm_val_right 0; uchar push_val_right 0;/ 右电机占空比 N/10 bit Right_moto_stop 1;bit Left_moto_stop 1; bit suo 1;bit tin 0;bit b1 0;bit b2 0;uint time 0;uchar number 0;#defineTtime/1000/10+48#defineItime/1000%10+48#defineNnumber+48/*
20、void DelayUs2x uchar t while -t ;void DelayMs uchar t while t-/大致延时 1mS DelayUs2x 245 ;DelayUs2x 245 ;/*判忙函数bit LCD_Check_Busy void DataPort 0xFF;RS_CLR; RW_SET; EN_CLR;_nop_ ; EN_SET;return bit DataPort&0x80 ;/*写入命令函数void LCD_Write_Com uchar com DelayMs 5 ;RS_CLR; RW_CLR; EN_SET;DataPort com;_nop_
21、; EN_CLR;/*写入数据函数 void LCD_Write_Data uchar Data DelayMs 5 ;RS_SET; RW_CLR; EN_SET;DataPort Data;_nop_ ; EN_CLR;/*清屏函数void LCD_Clear void LCD_Write_Com 0x01 ; DelayMs 5 ;/*写入字符串函数void LCD_Write_String uchar x,uchar y,uchar *s if y 0LCD_Write_Com 0x80+x ; /表示第一行elseLCD_Write_Com 0xC0+x ; /表示其次行while
22、*sLCD_Write_Data *s ; s+;/*写入字符函数void LCD_Write_Char uchar x,uchar y,uchar Data if y 0LCD_Write_Com 0x80+x ; elseLCD_Write_Com 0xC0+x ; LCD_Write_Data Data ;/*初始化函数void LCD_InitvoidLCD_Write_Com0x38; /*显示模式设置*/DelayMs 5 ;LCD_Write_ComDelayMs 5 ;0x38;LCD_Write_Com0x38;DelayMs 5 ;LCD_Write_ComLCD_Writ
23、e_Com0x380x08;/*显示关闭*/LCD_Write_Com0x01;/*显示清屏*/LCD_Write_Com0x06;/*显示光标移动设置*/DelayMs 5 ;LCD_Write_Com0x0C;/*显示开及光标设置*/*显示函数void yejingLCD_Init ;LCD_Clear ;/清屏LCD_Write_String 1,1,“Number:“ ; LCD_Write_String 1,0,“Time:“ ;LCD_Write_Char8,1,N;LCD_Write_Char6,0,T;LCD_Write_Char7,0,I;/*/* 左右电机前进,后退函数*/
24、void Left_moto_go a 1,b 0; /P3_4 P3_5 接 IN1 IN2 当P3_4 1,P3_5 0; 时左电机前进void Left_moto_back a 0,b 1; /P3_4 P3_5 接 IN1 IN2 当P3_4 0,P3_5 1; 时左电机后退void Right_moto_go c 1,d 0; /P3_6 P3_7 接 IN1 IN2 当P3_6 1,P3_7 0; 时右电机前转void Right_moto_back c 0,d 1; /P3_6 P3_7 接 IN1 IN2 当P3_6 0,P3_7 1; 时右电机后退/*/* 循迹模块掌握 PW
25、M 信号 */ void xunjiif0Left_2_led0&Left_1_led0&Right_1_led0&Right_2_led|Left_2_Led0&Left_1_Led1&Right_1_Led1&Right_2_Led0|Left_2_Led1&Left_1_Led0&Right_1_Led0&Right_2_Led1|Left_2_Led1&Left_1_Led0&Right_1_Led1&Right_2_Led 1| Left_2_Led 1&Left_1_Led1&Right_1_Led0&Right_2_Led1| Left_2_Led 1&Left_1_Led1&R
26、ight_1_Led1&Right_2_Led1Right_moto_stop 1;Left_moto_stop 1;else if Left_2_Led 0&Left_1_Led 0&Right_1_Led 0&Right_2_Led 1|Left_2_Led0&Left_1_Led0&Right_1_Led1&Right_2_Led0|Left_2_Led0&Left_1_Led0&Right_1_Led1&Right_2_Led1|Left_2_Led0&Left_1_Led1&Right_1_Led0&Right_2_Led1|Left_2_Led0&Left_1_Led1&Right
27、_1_Led1&Right_2_Led1Right_moto_stop 0;Left_moto_stop 1;else if Left_2_Led 0&Left_1_Led 1&Right_1_Led 0&Right_2_Led 0| Left_2_Led 1&Left_1_Led0&Right_1_Led0&Right_2_Led0| Left_2_Led 1&Left_1_Led 1&Right_2_Led 0| Left_2_Led 1&Left_1_Led0&Right_1_Led1&Right_1_Led0&Right_2_Led0| Left_2_Led 1&Left_1_Led1
28、&Right_1_Led1&Right_2_Led0Right_moto_stop 1;Left_moto_stop 0;/*/* 避障函数 */ void bizhang if b1 0&b2 0Right_moto_stop 1;Left_moto_stop 1; else if b1 0&b2 1Right_moto_stop 0;Left_moto_stop 1;else Right_moto_stop 1;Left_moto_stop 0;/*/* 循光函数 */ void xunguangifLeft_2_led0&Left_1_led0&Right_1_led0&Right_2_
29、led0|Left_2_led0&Left_1_led1&Right_1_led1&Right_2_led0|Left_2_led1&Left_1_led0&Right_1_led0&Right_2_led1|Left_2_led1&Left_1_led0&Right_1_led1&Right_2_led1| Left_2_led 1&Left_1_led 1&Right_1_led 0&Right_2_led 1| Left_2_led 1&Left_1_led 1&Right_1_led 1&Right_2_led 1 Right_moto_stop 1;Left_moto_stop 1;
30、else if Left_2_led 0&Left_1_led 0&Right_1_led 0&Right_2_led 1|Left_2_led0&Left_1_led0&Right_1_led1&Right_2_led0|Left_2_led0&Left_1_led0&Right_1_led1&Right_2_led1|Left_2_led0&Left_1_led1&Right_1_led0&Right_2_led1|Left_2_led0&Left_1_led1&Right_1_led1&Right_2_led1Right_moto_stop 0;Left_moto_stop 1;else
31、 if Left_2_led 0&Left_1_led 1&Right_1_led 0&Right_2_led 0|Left_2_led1&Left_1_led0&Right_1_led0&Right_2_led0|Left_2_led1&Left_1_led0&Right_1_led1&Right_2_led0|Left_2_led1&Left_1_led1&Right_1_led0&Right_2_led0|Left_2_led1&Left_1_led1&Right_1_led1&Right_2_led0Right_moto_stop 1;Left_moto_stop 0;/*/* 声光函
32、数 */ void shengguan if f 0e 0; if suonumber+; yejing ;suo 0;else e 0; elsee 1;suo 1;/*/* 停车函数 */ void tincheif Left_2_led 1&Left_1_led 1&Right_1_led 0&Right_2_led 1tin 1; if tin EA 0;Right_moto_stop 0;Left_moto_stop 0; yejing ;/*/void run /前进函数xunji ;push_val_left 6; /PWM 调整参数 1-10 1 为最慢,10 是最快 改这个值
33、可以转变其速度push_val_right 6; /PWM 调整参数 1-10 1 为最慢,10 是最快改这个值可以转变其速度Left_moto_go ; /左电机前进Right_moto_go ; /右电机前进/*/* PWM 调制电机转速 */*/* 左电机调速 */*调整 push_val_left 的值转变电机转速,占空比 */ void pwm_out_left_motoif Left_moto_stopif pwm_val_left push_val_left Left_moto_pwm 1;else Left_moto_pwm 0;if pwm_val_left 10pwm_va
34、l_left 0;else Left_moto_pwm 0;/*/* 右电机调速*/void pwm_out_right_motoif Right_moto_stopif pwm_val_right push_val_right Right_moto_pwm 1;else Right_moto_pwm 0;if pwm_val_right 10pwm_val_right 0;else Right_moto_pwm 0;/*/ /*TIMER0 中断效劳子函数产生 PWM 信号*/void timer0 interrupt 1 TH0 0XFC; /1Ms 定时TL0 0X18;time+; p
35、wm_val_left+; pwm_val_right+; pwm_out_left_moto ; pwm_out_right_moto ;/*/ void mainTMOD 0X01;TH0 0XFC; /1ms 定时TL0 0X18;TR0 1;ET0 1;EA 1;while 1 /*无限循环*/ shengguan ;bizhang ; xunguang ; run ; tinche ; 附录:2循迹模块声光显示STC 89C52单片机 寻光模块电机驱动模块避障模块液晶显示复位初始化数据开总中断,开定时器,定时 1ms,开头行使定时器中断触发,Time+ YesYes Number+发出声光信息。液晶显示 Number 是否锁定是否检测到铁片No小车是否偏离黑线转变两轮 PWM 占空比,矫正方向YesNo No停车 5s,发车声光信息 是否驶过直道区是否驶过弯道区YES锁定 Numbe是否驶过障碍区调整两轮 PWM 波占空比,躲避障碍物直到通过小车是否正对光源调整两轮 PWM 波占空比,矫正方向。小车是否完全驶入车库 矫正方向停车正吗,完毕液晶显示 Time;Number 停车,关定时器中断