ImageVerifierCode 换一换
格式:DOCX , 页数:18 ,大小:414.70KB ,
资源ID:7210333      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7210333.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(智能循迹小车设计报告.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

智能循迹小车设计报告.docx

1、智能循迹小车设计报告电子作品设计报告项目名称: 智能小车 学院: 机电工程学院 专业: 应用电子技术 班级: 09应电(1)班 组别: 第 三 组姓名: 杨磊 赖焕宁 梁广生 指导老师: 杨青勇 玉宁 关键词: 3引言: 31。2车体方案认证与选择 42。1.5RS485数据总线 6摘要:本组的智能小车是采用凌阳的车架,是以两个电机来驱动小车,主板部分自行设计。通过接收器MAX1483来采集信息,传送进主控芯片PIC16F886单片机, 进行数据处理后,送进驱动芯片L293D以完成相应的操作。采用反射式红外光电传感器ST178来实现小车自动循迹功能,并且整个过程采用液晶显示屏RT1602来显示

2、相应的数据.关键词:PIC16F886 L293D 反射式红外光电传感器ST178 自动循迹引言:近现代,随着电子科技的迅猛发展, 人们对技术也提出了更高的要求。汽车的智能化在提高汽车的行驶安全性,操作性等方面都有巨大的优势,在一些特殊的场合下也能满足一些特殊的需要。智能小车系统涉及到自动控制,车辆工程,计算机等多个领域,是未来汽车智能化是一个不可避免的大趋势.本文设计的小车以PIC16f886 为控制核心,用反射式红外光电传感器作为检测元件实现小车的自动循迹前行,并显示等功能。一、系统设计 本组智能小车的硬件主要有以PIC16f886 作为核心的主控器部分、自动循迹部分、显示部分、电机驱动部

3、分。其中电机驱动部分和其他部分分别由两个不同的电源分开供电.小车硬件系统结构示意图如下:1.1设计要求: (1)基本要求:实现小车的前进后退,左转右转(按照程序预设) (2)扩展部分:实现小车自动循迹功能,避障功能.1。2车体方案论证与选择:方案一:自己动手制作电动车,一方面材料缺少,另一方面制作过程要花费大量的时间,而且同学中手艺也不好,制作出来的小车还可能机械性能不好。考虑到时间与性能这两方面,我们放弃了这一方案方案二:购买凌阳小车,购买的凌阳小车具有组装完整的车架车轮、电机及其驱动电路.易改装,好控制。机械性能有保障。其小车图片如下: 综合考虑,我们选择了方案一二、硬件设计及说明2。1原

4、理图设计2.1。1 稳压电源:电源电路为系统提供了基准电源,是整个系统工作稳定性关键所在,同时又考虑到节省空间的问题,所以我们选用了LT1117-5.0来稳定电压输出(5V),使用了电解电容C1、C2来作为滤波电容。其原理图如下:2.1。2 基本系统:基本系统控制电路采用单片机PIC16F886作为主控单元,负责整个电路的资源分配以及对各路信号的采集、分析和处理。配置了20MHZ的外部晶振以及蜂鸣器。同时还配置了四个端口作功能扩展.(可以用来连接小车循迹模块)单片机控制电路原理图如所示:2。1。3 电机驱动:驱动电路主要采用驱动芯片L293D来直接驱动电机,L293D为单块集成电路、高电压、高

5、电流、四通道驱动,其额定工作电流为1A,最大可达1。5A,Vss电压最小4.5V,最大可达36V,可直接的对电机进行控制,无须隔离电路.L293D从主控单片机PIC16F886那里接受指令来直接控制电机的工作状态。可以对电机进行正反转,停止的操作,非常方便。发光二极管作为电源的指示灯。其驱动电路原理图如下所示:2.1.4 液晶显示部分:主要用RT1602来显示数据,二极管1N4148用来调节显示器的对比度,电阻R2用来调节显示器的背光亮度。(LCD液晶具有功耗低、显示内容丰富、清晰,显示信息量大,显示速度较快等特点)2.1。5 RS485数据总线主要用到的接收器是MAX1483由于MAX148

6、3是用于RS485和RS-422通信的低功耗收发器。这种类型的摆率限制的驱动器,能够减小EMI和由于不恰当的电缆端接所引起的反射。保证数据速率高达250kbps。MAX1483仅绘制的供应电流为20A。此外,还有一个低电流关断模式,仅消耗0。1A。这两种模式都工作在+5 V单电源。驱动器具有短路电流限制,并通过将驱动器输出设置为高阻抗状态的热功耗关断电路来保护功耗不会过大。当输入为开路,接收器输入具有失效保护功能,保证了逻辑高电平输出。MAX1483具有1/8单位负载输入阻抗,保证总线上多达256个收发器.2。1.6 循迹部分主要由四个反射式红外光电传感器ST178和四个电位器组成。采用ST1

7、78型光电管完成系统循迹任务,循迹电路是用以实现小车沿着场地的黑色弧形引导轨迹进行前进和位置校正的,且小车不能偏离该轨迹。在本设计中采用ST178型反射式红外光电传感器完成系统循迹任务,硬件电路实现比较简单,其灵敏度可以通过调节多圈电位器来实现.其电路原理图如下:2。2 PCB设计2。2。1 主板PCB图如下:图1.主板PCB图2。2.2 循迹板PCB图2.循迹板PCB图三、软件设计及说明系统软件流程图如下图所示:(系统程序的具体代码见附录2)主程序流程图循迹子函数流程图四、系统测试过程测试工具:仪器名称用途电脑 调试及下载程序数字万用表测量各种电路工作情况 测试过程:1.我们尝试着先用PIC

8、12F683来控制小车的前进、后退、左右转向.结果试验成功,小车能正常的跑动起来。这个小试验,是为了检测小车的机械性能。达到了我们预期目的.2.制作主板3.主板通电前检查:电路安装完毕,我们首先直观检查电路各部分生产线是否正确,检查电源、地线、信号线、元器件引脚之间有无短路,器件有无接错。结果发现L293芯片的5和12管脚没有接地,查看发现原来是原理图没注意改正才导致的。4.通电检查:给电机通电,观察电机是否工作正常。电机正常工作时,后驱工作电流为320 mA,电压为5。4V;前驱电机工作电流为180mA,电压为5.41V。给主板通电,观察电路各部分器件有无异常现象.5.主板安装调试(主控芯片

9、用PIC16F886),在调试的过程中我们发现了原理图中有一个小小的错误。这个错误导致小车的稳压芯片过热。一起讨论之后决定,修改原理图,调换小车驱动芯片的位置。改动之后,小车电源稳压芯片过热现象消失.小车也能实现了基本的功能。(由于我们没能在制板之前发现这个问题,导致了主板在修整后变得不太美观了。)6.制作并调试小车循迹板,传感器采用反射式红外传感器ST178,当Vcc=5V时,工作电流为17mA,VR1=3.83V,VD=1.17V,RD=68。8欧.电路图如下: 在调试的过程中却发现小车不循迹,经过了4天的努力,终于发现了问题的所在,原来是焊错了一个电阻导致(错将1K电阻当成220欧的来用

10、)。改正后调试,终于也能实现了循迹功能。五、总结 测试结果表明:本组智能小车能很好的完成了基本功能和循迹功能,跑道是由黑色胶布在白色地面上拉线完成,小车可以从O型跑道的任何段为起点,跑完全程.本组智能小车目前只能完成在没有任何交叉路口的跑道上,要想跑在有“十”字路口的跑道上,还须要对循迹程序进行补充和修改。我们保留了各种硬件接口和软件子程序接口,方便以后的扩展和进一步的开发.六、附录附录一:系统元器件清单如表1所示 主板元件清单 循迹板元件清单 附件二:系统测试源程序#include #fuses HS,NOWDT,NOPROTECT,PUT,NOBROWNOUT,MCLR#use delay

11、(clock=20M)zero_ramuse fast_io(A) /IO直接操作use fast_io(B) /IO直接操作#use fast_io(C) /IO直接操作#define PORTA 0x05define PORTB 0x06#define PORTC 0x07/=电机定义=#bit M1=PORTC.5bit M2=PORTC。4#bit M3=PORTC.3#bit M4=PORTC。0#bit PWM1=PORTC.2bit PWM2=PORTC.1 /=循迹定义=#bit IN1=PORTB.4#bit IN2=PORTB。5#bit PGC=PORTB。6bit PG

12、D=PORTB。7/=液晶屏定义=#bit EN=PORTA。0 #bit RW=PORTA。1#bit RS=PORTA.2/=宏定义=#define TIME 1000 /动作延时define MAX 200 /占空比设定define MED 185#define MIN 170/定义I0端口检测define SENSE1 bit_test(*PORTB,4)define SENSE2 bit_test(*PORTB,5)define SENSE3 bit_test(PORTB,6)define SENSE4 bit_test(*PORTB,7)#include ”lcd_1602_4bi

13、t.h”void init() set_tris_C(0X00); set_tris_B(0xf0); set_tris_A(0x10); port_b_pullups(0xff); /关闭B口内部弱上拉 setup_timer_2(T2_DIV_BY_1,200,1); /set t2 setup_ccp1(ccp_pwm); /set cpp -pwm mode setup_ccp2(ccp_pwm); lcd_init();/传感检测结果表达void sense_detect() lcd_gotoxy(1,1); lcd_putc(” NCVT Ver1.1 ); lcd_gotoxy(

14、7,2); /指定开始显示的坐标 if(SENSE1) lcd_putc(”1”); else lcd_putc(”0”); if(SENSE2) lcd_putc(1); else lcd_putc(0”); if(SENSE3) lcd_putc(1); else lcd_putc(0”); if(SENSE4) lcd_putc(”1); else lcd_putc(”0);/前进void go() M1=0; M2=1; M3=0; M4=0; set_pwm2_duty(0); /set pwm 占空比 set_pwm1_duty(MAX);/后退void back() M1=1;

15、M2=0; M3=0; M4=1; set_pwm2_duty(MAX); /set pwm 占空比 set_pwm1_duty(MAX); delay_ms(100);/停止void stop() M1=0; M2=0; M3=0; M4=0; set_pwm1_duty(0); /set pwm 占空比 set_pwm2_duty(0);/右小转void run_MIN_right() M1=0; M2=1; M3=0; M4=1; set_pwm1_duty(MAX); /set pwm 占空比 set_pwm2_duty(MIN);/右中转void run_MED_right() M1

16、=0; M2=1; M3=0; M4=1; set_pwm1_duty(MAX); /set pwm 占空比 set_pwm2_duty(MED);/右大转void run_MAX_right() M1=0; M2=1; M3=0; M4=1; set_pwm1_duty(MAX); /set pwm 占空比 set_pwm2_duty(MAX);/左小转void run_MIN_left() M1=0; M2=1; M3=1; M4=0; set_pwm1_duty(MAX); /set pwm 占空比 set_pwm2_duty(MIN);/左中转void run_MED_left() M

17、1=0; M2=1; M3=1; M4=0; set_pwm1_duty(MAX); /set pwm 占空比 set_pwm2_duty(MED);/左大转void run_MAX_left() M1=0; M2=1; M3=1; M4=0; set_pwm1_duty(MAX); /set pwm 占空比 set_pwm2_duty(MAX);/寻迹判断void trace() if(IN1=0)&(IN2=0)(PGC=1)(PGD=0) /左小转 run_MIN_left(); if((IN1=0)&(IN2=0)&(PGC=1)&(PGD=1)) /左中转 run_MED_left(

18、); if((IN1=0)&(IN2=1)&(PGC=0)&(PGD=0)) /右小转 run_MIN_right(); if(IN1=0)(IN2=1)&(PGC=1)&(PGD=0) /前进 go(); if(IN1=0)&(IN2=0)&(PGC=0)&(PGD=1) /左大转 run_MAX_left(); if((IN1=1)&(IN2=1)&(PGC=0)&(PGD=0)) /右中转 run_MED_right(); if(IN1=1)&(IN2=0)&(PGC=0)&(PGD=0) /右大转 run_MAX_right(); if(IN1=1)&(IN2=1)&(PGC=1)&(PGD=1)) /停 stop(); if((IN1=0)&(IN2=0)&(PGC=0)&(PGD=0) /后退 back(); void main() init(); while(1) sense_detect(); trace();

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1