欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    智能循迹机器人控制系统设计.doc

    • 资源ID:4264895       资源大小:1.66MB        全文页数:27页
    • 资源格式: DOC        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    智能循迹机器人控制系统设计.doc

    智能循迹机器人控制系统设计1、设计方案 本设计通过红外光电二极管和光电晶体管组成的传感器循迹模块判断黑线路径,然后由STC89C52通过IO口控制L298N驱动模块改变两个直流电机的工作状态,最后实现机器人循迹,机器人采用前轮驱动,从动轮采用万向轮,左右前轮各用一个直流减速电机驱动,通过调制前面两个轮子的转速从而达到控制转向的目的,在机器人最前端装有左中右4个红外反射式传感器,当机器人左边的传感器检测到黑线时,说明机器人向右边偏移,这时主控芯片控制左轮电机减速,机器人向左边偏正。同理,当机器人的右边传感器检测到黑线时,主控芯片控制右轮电机减速,机器人向右边偏正,当黑线在机器人的中间,中间的传感器一直检测到黑线,这样机器人就会沿着黑线一直行走。H桥驱动模块直流电机循迹传感器模块电源模块单片机电路图1.1.1 智能循迹小车控制系统结构框图2. 各部分系统设计2.1循迹系统机器人小车在贴有黑胶带的地上行驶,不断向地面发射红外光,根据接收到的反射光的强弱来判断道路,用四只红外对管,两只置于轨道中间,两只置于轨道外侧,当机器人脱离轨道时,即当置于中间的两只只光电开关脱离轨道时,等待外面任一只检测到黑线后,做出相应的转向调整,直到中间的光电开关重新检测到黑线(即回到轨道)再恢复正向行驶2.2避障系统 采用红外对管置于机器人小车正前方,可以检测到障碍物是否存在,以做出相应的判断。2.3主控系统 我们采用单片机作为整个智能机器人的核心,来对机器人进行自动控制。单片机有着简单、方便、快捷、价格低廉、较为强大的控制功能以及可位寻址操作功能等优点,符合整体设计方案。2.4驱动系统采用功率三极管作为电机驱动芯片。电机驱动芯片驱动能力强、操作方便,稳定性好,性能优良。功率三极管的使能端可以外接电平控制,也可以利用单片机进行软件控制,满足各种复杂电路的需要。另外,驱动功率较大,能够根据输入电压的大小输出不同的电压和功率,解决了负载能力不够的问题。采用L298N作为功率放大器的输出控制直流电机。线性型驱动的电路结构和原理简单,加速能力强,采用由达林顿管组成的 H型桥式电路用单片机控制达林顿管使之工作在占空比可调的开关状态下,精确调整电动机转速。这种电路效率非常高,H型桥式电路保证了简单的实现转速和方向的控制,电子管的开关速度很快,稳定性也极强,是一种广泛采用的 PWM调速技术。这种调速方式有调速特性优良、调整平滑、调速范围广、过载能力大,能承受频繁的负载冲击,还可以实现频繁的无级快速启动、制动和反转等优点。2.5电机选择 我们采用两个直流电动机,直流电动机控制简单,只需加上适合的电压和几根控制线,就能正常运转起来,符合机器人简单整洁的整体设计思路。3、系统的硬件设计3.1主控电路选择STC89C52单片机作为本课题的主控芯片。STC89C52是一种低功耗、高性能CMOS8位微控制器,是带8K字节闪烁可编程可檫除只读存储器。STC89C52提供给为众多嵌入式控制应用解决方案。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。STC89C52单片机和AT89S52单片机对比拥有诸多优势,具体见下表。表1 STC89C52单片机和AT89S52单片机的对比STC89C52单片机AT89S52单片机程序存储空间8K字节8K字节内存存储空间512字节256字节EEPROM存储空间内带4K字节无是否可以直接使用串口下载是否图3.1.1 STC89C52单片机图3.1.2 PCB图表2 原件清单元件数量元件数量元件数量直流电机2只电阻若干集成电路芯片若干单片机1 块二极管若干电容若干红外对管4只蜂鸣器1只电位器若干晶振1只杜邦线若干机器人小车1个排针若干图3.1.3 主控电路3.2信号检测模块机器人循迹原理是机器人在画有黑线的白纸 “路面”上行驶,由于黑线和白纸对光线的反射强弱不同,根据接收到的反射光的强弱来判断正确的道路黑线。该模块中利用了简单且比较普遍的检测方法红外探测法。 红外探测法,即利用红外线在不同颜色的物理表面具有不同的反射性质的特点。原理就是利用黑白线对红外线不同的反射能力通过光敏二极管或光敏三极管,接收反射回的不同光强信号,把不同光强转换为电流信号,最后通过电阻,转换为单片机可识别的高低电平。如果机器人向前行驶时向左偏离了黑线,那么右边传感器会产生一个高电平,单片机接收这个信号,然后向右转回到黑线。两传感器输出信号为低电平时,机器人前进。如果机器人向右偏离黑线,左边传感器产生一个高电平,单片机接收这个信号,然后向左转向。这样,机器人就一直沿着黑线行走。若两个光电传感器同时输出的信号为高电平,即单片机判断的都为高电平时,机器人向前直走。图3.2.1 信号检测模块图3.2.2 循迹模块原理图3.3电机驱动模块本设计采用L298N电机专用驱动芯片带动两个直流电动机。直流电机由定子和转子两大部分组成。直流电机运行时静止不动的部分称为定子,运行时转动的部分称为转子。其中比较常用的驱动芯片是L298N,L298N是一个内部有两个H桥的高电压大电流全桥式驱动芯片,内部包含4通道逻辑驱动电路。可以驱动两个直流电机,输出电压最高可达50V。直接通过电源来调节输出电压,直接通过单片机的IO端口提供信号,使得电路简单,使用更方便,L298N芯片输出电流可达2.5 A,可驱动电感负载。 图3.3.1 L298N内部H桥驱动电路使用标准逻辑电平信号控制,直接连接单片机管脚,具有两个使能控制端,使能端在不受输入信号影响的情况下不允许器件工作。L298N有一个逻辑电源输入端,使内部逻辑电路部分在低电压下工作。通过单片机给予L298N电路PWM信号来控制机器人的速度,起停。图3.3.2 L298N引脚结构图3.3.3 L298N电机驱动模块PCB图表3 L298N引脚编号与功能引脚编号名称功能1电流传感器A在该引脚和地之间接小阻值电阻可用来检测电流2输出引脚1内置驱动器A的输出端1,接至电机A3输出引脚2内置驱动器A的输出端2,接至电机A4电机电源端电机供电输入端,电压可达46V5输入引脚1内置驱动器A的逻辑控制输入端16使能端A内置驱动器A的使能端7输入引脚2内置驱动器A的逻辑控制输入端28逻辑地逻辑地9逻辑电源端逻辑控制电路的电源输入端为5V10输入引脚3内置驱动器B的逻辑控制输入端111使能端B内置驱动器B的使能端12输入引脚4内置驱动器B的逻辑控制输入端213输出引脚3内置驱动器B的输出端1,接至电机B14输出引脚4内置驱动器B的输出端2,接至电机B15电流传感器B在该引脚和地之间接小阻值电阻可用来检测电流图3.3.3 电机驱动原理图3.4机器人控制逻辑在这个模块中通过单片机对L298N的操作来控制两个电机的运行。具体操作如下表:表4 小车逻辑控制ENAIN1IN2电机转向HHL正转HLH反转HIN2IN1停止LXX停止其中速度的调节:按一个固定的频率来接通和断开电源,并根据需要改变一个周期内“接通”和“断开”时间的长短。通过改变直流电机电枢上电压的“占空比”来改变平均电压的大小,从而控制电动机的转速。当某一车轮的速度不相等时,即可实现车轮的左右偏转,来完成对黑线的循迹。4、系统的软件设计4.1主程序流程图根据机器人所要实现的循迹功能所列出的主程序流程图:开始前进扫描I/O口是否检测到黑线左/右转左/右侧检测到黑线否是 图4.1.1 主程序流程图4.2循迹程序设计循迹机器人的前面有四个传感器至左向右分别为传感器1,传感器2,传感器3,传感器4。本机器人主要是通过四个传感器实现循迹功能,其实物图如图4.2所示,以下是对本设计软件部分功能的说明。传感器2传感器4传感器3传感器1图4.2.1 循迹机器人实物图循迹程序:void init() cgq2=1;cgq3=1;TMOD=0X01; TH0=(65536-100)/256; TL0=(65536-100)%256; EA=1; ET0=1; TR0=1; ENA=1; ENB=1; ;当传感器1和传感器4的显示灯为暗(即检测到为白色);传感器2和传感器3的显示灯为亮(即检测到为黑色),进入以下走直线函数:void straight() PWM1=20; PWM2=20; IN1=1; IN2=0; IN3=1; IN4=0; 当传感器1,传感器4和传感器3的显示灯为暗(即检测到为白色);传感器2的显示灯为亮(即检测到为黑色),进入以下左转弯函数(转弯小): void turn_left1() PWM1=5; PWM2=20; IN3=1; IN4=0; IN1=1; IN2=0; 当传感器1,传感器4和传感器2的显示灯为暗(即检测到为白色);传感器3的显示灯为亮(即检测到为黑色),进入以下左转弯函数(转弯小):void turn_right1() PWM1=20; PWM2=5; IN3=1; IN4=0; IN1=1; IN2=0; 当传感器3,传感器4和传感器2的显示灯为暗(即检测到为白色);传感器1的显示灯为亮(即检测到为黑色),进入以下左转弯函数(转弯大):void turn_left3() /左转弯函数 3 (转弯最大) PWM1=5; PWM2=40; IN3=1; IN4=0; IN1=1; IN2=0; 当传感器1,传感器3和传感器2的显示灯为暗(即检测到为白色);传感器4的显示灯为亮(即检测到为黑色)进入以下左转弯函数(转弯大):void turn_right3() /右转弯函数 3 (转弯最大) PWM1=40; PWM2=5; IN3=1; IN4=0; IN1=1; IN2=0; 循迹功能的判断程序: void infrared() uchar flag;if(cgq1=0)&(cgq2=0)&(cgq3=0)&(cgq4=0) / 直走 flag=0; else if(cgq1=1)&(cgq2=0)&(cgq3=0)&(cgq4=1) if(a%2)=0) flag=1;init();a+;/左小转 else flag=2;init();a+;/右小转 else if(cgq1=0)&(cgq2=0)&(cgq3=1)&(cgq4=0) /左小转 flag=2; else if(cgq1=0)&(cgq2=1)&(cgq3=0)&(cgq4=0)/右小转 flag=1; else if(cgq1=1)&(cgq3=1)&(cgq4=0)|(cgq1=1)&(cgq2=1)&(cgq4=0) / 左中转 flag=4;else if(cgq1=0)&(cgq3=1)&(cgq4=1)|(cgq1=0)&(cgq2=1)&(cgq4=1) /右中转 flag=5;else if(cgq1=0)&(cgq2=0)&(cgq3=0)&(cgq4=1) /左大转 flag=7;delay(3); else if(cgq1=1)&(cgq2=0)&(cgq3=0)&(cgq4=0)/右大转 flag=6;delay(3); else flag=0; switch (flag) case 0: straight(); break; /直走 case 1: turn_left1(); break; /左转1 case 2: turn_right1(); break; / 右转1 case 3: turn_back(); break; / 返回 case 4: turn_left2(); break; /左转2 case 5: turn_right2(); break; / 右转2 case 6: turn_left3(); break; /左转3 case 7: turn_right3(); break; / 右转3 default: break; 5、安装与调试5.1机器人的安装机器人的软硬件都已经设计好,剩下的就是将智能循迹机器人的组装以及调试,将红外光电传感器固定在底盘前沿贴近地面。正常行驶时,发射管发射红外光照射地面光线,经白纸反射后,被接收管接收输出高电平信号。电动车经过黑线时发射端发射的光线被黑线吸收,接收端接收不到反射光线,传感器输出低电平信号后,送STC89C52单片机处理,判断执行预先编制的程序来控制机器人的行驶状态。 将模块置于前方,用于避障,以实现机器人的避障功能。5.2机器人的调试首先使用万用表测试原件的的参数,看是否存在着一些误差,从而避免原件搭建错误和虚焊等发生。调整红外对管的灵敏度,通过改变延时程序来改变速度,来调整机器人不灵敏和转弯速度过快等问题。传感部分的分析及调试:首先要说明传感器正常的状态是ST188遇到黑线时P1.3接口输出高电压,发光二极管导通,有亮光;ST188遇到白纸时P1.3输出低电压,发光二极管不导通,无亮光。出现问题-当接通电源时,发现无论怎么调节滑动变阻器发光二极管发光二极管一直处于发光状态,则电路出现问题。通过利用万能表,发现LM311的7端口和8端口短接,通过分析错误原因只会有以下两种:7端口和8端口之间连接的电阻短路,或者LM311的7端口和8端口短路。利用控制变量法发现7端口和8端口都与焊板边沿相接,而在边沿所有的焊点都相互连接,故7端口和8端口短路。 单片机控制部分的分析调试:由于此部分线路比较多,对其进行了第二次分析调试。因为此部分线路没有明显的现象,所以只能通过万用表进行调试。此部分的检查中发现了一处错误-连接复位的另一端没有接地。电路的分析及调试,在一般看来焊板边沿的焊点相互孤立的,但在这次智能循迹机器人的制作当中,却出出现了比较特殊的情况,边沿的焊点都是相互连接的。在以后焊接的时候,我们还要对焊板进行观察,注意焊板中特殊的焊点。另外利用理论知识对调试起到了很好的指导作用。例如,ST188的C、E两端都短接利用电路知识,我们可以知道此时P1.3端口输出为低电压,则发光二极管不会发光。通过这个现象我们可以发现是ST188有问题还是后面的连接的线路有问题,这样节约了时间。编写程序的难点主要是怎样经过“8”节点,具体思路是:当第一次接时,四个传感器的发光二极管将会出现“亮亮亮灭”或者“亮灭亮灭”的结果,此时机器人进行一次左偏,而后机器人传感器的发光二极管会出现“亮灭灭亮”的情况,此时机器人向右转(变量a+;);当机器人再次经过这“8”节点时,四个传感器的发光二极管会出现“灭亮亮亮”或者“灭亮灭亮”的情况,此时机器人右转,之后机器人又会出现在进行判断(a除以2取其余数与0进行判断)后,机器人左转,这样机器人便通过了两次节点。程序清单:#include<reg52.h> #define uchar unsigned char #define uint unsigned int uchar PWM1,PWM2,i,j; /右左占空比标志uint a=0; sbit cgq1=P10; /从右往左的传感器编号sbit cgq2=P11;sbit cgq3=P12;sbit cgq4=P13;sbit ENA=P27;sbit ENB=P26;sbit IN1=P25;sbit IN2=P24; sbit IN3=P23;sbit IN4=P22; void delay(uint z) /延时1ms uchar i; while(z-) for(i=0;i<121;i+); void init() /初始化 cgq2=1;cgq3=1;TMOD=0X01; TH0=(65536-100)/256; TL0=(65536-100)%256; EA=1; ET0=1; TR0=1; ENA=1; ENB=1; void time0(void)interrupt 1 /空占比设置 i+; j+; if(i<=PWM1) ENA=1; else ENA=0; if(i=40) i=0; if(j<=PWM2) ENB=1; else ENB=0; if(j=40) j=0; TH0=(65536-100)/256; TL0=(65536-100)%256; void straight() /走直线函数 PWM1=20; PWM2=20; IN1=1; IN2=0; IN3=1; IN4=0; void turn_left1() /左转弯函数 1 (转弯小) PWM1=5; PWM2=20; IN3=1; IN4=0; IN1=1; IN2=0; void turn_right1() /右转弯函数 1(转弯小) PWM1=20; PWM2=5; IN3=1; IN4=0; IN1=1; IN2=0; void turn_left2() /左转弯函数 2(转弯较大) PWM1=5; PWM2=30; IN3=1; IN4=0; IN1=1; IN2=0; void turn_right2() /右转弯函数 2 (转弯较大) PWM1=30; PWM2=5; IN3=1; IN4=0; IN1=1; IN2=0; void turn_left3() /左转弯函数 3 (转弯最大) PWM1=5; PWM2=40; IN3=1; IN4=0; IN1=1; IN2=0; void turn_right3() /右转弯函数 3 (转弯最大) PWM1=40; PWM2=5; IN3=1; IN4=0; IN1=1; IN2=0; void infrared() /循迹 uchar flag;if(cgq1=0)&(cgq2=0)&(cgq3=0)&(cgq4=0) / 直走 flag=0; else if(cgq1=1)&(cgq2=0)&(cgq3=0)&(cgq4=1) if(a%2)=0) flag=1;init();a+;/左小转 else flag=2;init();a+;/右小转 else if(cgq1=0)&(cgq2=0)&(cgq3=1)&(cgq4=0) /左小转 flag=2; else if(cgq1=0)&(cgq2=1)&(cgq3=0)&(cgq4=0)/右小转 flag=1; else if(cgq1=1)&(cgq3=1)&(cgq4=0)|(cgq1=1)&(cgq2=1)&(cgq4=0) / 左中转 flag=4;else if(cgq1=0)&(cgq3=1)&(cgq4=1)|(cgq1=0)&(cgq2=1)&(cgq4=1) /右中转 flag=5;else if(cgq1=0)&(cgq2=0)&(cgq3=0)&(cgq4=1) /左大转 flag=7;delay(3); else if(cgq1=1)&(cgq2=0)&(cgq3=0)&(cgq4=0)/右大转 flag=6;delay(3); else flag=0; switch (flag) case 0: straight(); break; /直走 case 1: turn_left1(); break; /左转1 case 2: turn_right1(); break; / 右转1 case 3: turn_back(); break; / 返回 case 4: turn_left2(); break; /左转2 case 5: turn_right2(); break; / 右转2 case 6: turn_left3(); break; /左转3 case 7: turn_right3(); break; / 右转3 default: break; void main(void) init(); delay(1); while(1) infrared(); 实物图

    注意事项

    本文(智能循迹机器人控制系统设计.doc)为本站会员(牧羊曲112)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开