智能机器人报告.doc

上传人:李主任 文档编号:3316969 上传时间:2019-08-11 格式:DOC 页数:18 大小:3.78MB
返回 下载 相关 举报
智能机器人报告.doc_第1页
第1页 / 共18页
智能机器人报告.doc_第2页
第2页 / 共18页
智能机器人报告.doc_第3页
第3页 / 共18页
智能机器人报告.doc_第4页
第4页 / 共18页
智能机器人报告.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《智能机器人报告.doc》由会员分享,可在线阅读,更多相关《智能机器人报告.doc(18页珍藏版)》请在三一文库上搜索。

1、智能机器人创新实践报告循迹小车学 院 自动化科学与工程学院 学生姓名 陈志亮 学生学号 201130610255 指导教师 陈安 提交日期 年 月 日 1 / 18前言本文主要介绍了一种简单的寻线小车的制作方法,下文将介绍设计过程中的各个细节,遇到的问题,设计步骤,硬件组成,软件设计原理。考虑到时间和硬件精度问题,我们这组的寻线小车的各个组成部分均在网上购买而来。主要包括了2轮驱动的智能小车底盘,直流电机驱动模块,四路红外对管寻线模块,51单片机最小系统板。寻线小车是以智能小车底盘为基础,各部分的元器件通过螺丝固定在底盘上,形成一个小车的基本硬件模型。本组的智能小车采用4路红外对管寻线模块进行

2、判断是否转弯,例如:当最左边的红外对管检测到黑线的时候,小车进行“转直角”,即左边的轮子后退,右边的轮子前进。从而修正小车的前进方向。小车主要由四部分组成,分别是单片机芯片部分,传感器部分,电机驱动部分和电源部分。四部分协调工作,实现小车的前进,转弯的动作。下面正文部分将介绍小车的各个元器件的功能,组成,驱动原理和控制系统设计等必要的叙述,详细说明本组设计的思想。一、 硬件部分我负责的是硬件部分,以下是硬件部分的相关说明,包括硬件总体结构,各部分器件的构造,原理,作用以及安装搭建硬件时遇到的一些问题以及对应解决方法。1、 系统总框图:电机电机驱动90C51红外对管检测模块电源驱动本组的智能小车

3、主要包括了四个模块:分别是STC 90C516RD+主控模块,四路红外对管检测模块,电源模块和电机驱动模块。STC 90C516RD+主控模块是智能小车的控制部分,相当于人的大脑。它接收四路红外对管检测模块发出的信号,分析信号从而判断小车将要采取的下一步动作,再输出控制信号给电机驱动模块,进而控制电机的运转,从而控制小车的前进方向。四路红外对管检测模块是检测和传感模块,相当于小车的眼睛,在小车前进的过程中,红外对管感应路面的光线,将光线信号转换为对应电信号传送给主控模块进行判断,辅助主控模块对电机驱动模块进行控制,从而控制电机的运转。电机驱动模块,接受单片机发出的信号并作出相应动作,相当于整个

4、控制系统的“肌肉”,实际上因为单片机输出的信号太小,控制信号必须经过驱动模块放大,然后再驱动电机。电源模块,在电源方面我们是直接采用USB接口供电,以达到不需频繁更换电池的目的。2、 各部分元件说明:1) STC 90C516RD+主控模块 STC 90C516RD+主控模块是智能小车的控制部分,相当于人的大脑。它接收四路红外对管检测模块发出的信号,分析信号从而判断小车将要采取的下一步动作,再输出控制信号给电机驱动模块,进而控制电机的运转,从而控制小车的前进方向。2) 四路红外对管检测模块四路红外对管检测模块是检测和传感模块,相当于小车的眼睛,在小车前进的过程中,红外对管感应路面的光线,将光线

5、信号转换为对应电信号传送给主控模块进行判断,辅助主控模块对电机驱动模块进行控制,从而控制电机的运转。中控板:简介:此模块是为智能小车、机器人等自动化机械装置提供一种多用途的红外线探测系统的解决方案。使用红外线发射和接收管等分立元件组成探头,并使用LM339电压比较器作为核心器件构成中控电路。此系统具有的多种探测功能能极大的满足各种自动化、智能化的小型系统的应用。3) 电机驱动模块电机驱动模块,接受单片机发出的信号并作出相应动作,相当于整个控制系统的“肌肉”,实际上因为单片机输出的信号太小,控制信号必须经过驱动模块放大,然后再驱动电机。L9110特点: 低静态工作电流; 宽电源电压范围:2.5V

6、-12V; 每通道具有 800mA 连续电流输出能力; 较低的饱和压降; TTL/CMOS 输出电平兼容,可直接连CPU; 输出内置钳位二极管,适用于感性负载; 控制和驱动集成于单片 IC 之中; 具备管脚高压保护功能; 工作温度:0-80。输入输出的逻辑关系:典型应用电路:4) 电源模块:本组电源模块采用移动电源USB接口进行供电,避免了采用电池组供电的电压不足,电源输出电压不稳定,结构臃肿,频繁更换电池等问题,从而简化了系统,提高了工作效率。5) 底板底板是所有部件的载体,其规格如下:总体结构图:3、 硬件安装搭建时遇到的困难及解决方法:1) 各部分硬件元件的安装布局问题:由于底板的容量有

7、限,在安装各部分硬件元件时应当先对布局作出整体的构思,然后再动手安装。刚开始时由于构思不成熟和经验不足导致了布局紊乱以及安装不稳等问题,后来经过反复讨论及多次尝试安装才理清思路,安装完成。我们花时间认真读懂了说明书,了解各个元器件的作用,又从网上收集了一些资料,经过各个组员的讨论,最终成功搭建了硬件的安装结构。2) 四路红外对管检测模块与中控板LM339的连接问题;首先是对四个红外对管检测模块与中控板的四组接口的测试,开始时是采用随机配对方式,结果发现这样做不容易理清思路,会使后面的编程陷入紊乱;后来经过硬件与软件的结合以及系统的简化,将四个红外对管检测模块按顺序一一接到中控板的四组接口。3)

8、 STC 90C516RD+主控模块与电机驱动单元的连接问题;开始时采用主控板的P1接口,发现电机不能按预定的规则进行运转,后来经过查阅相关资料以及询问,讨论,发现P1口无对应上拉电阻,不能输出高电平控制电机驱动单元;于是改用P0接口,有效地避免了前述问题。二、软件设计部分(1) 流程图开始初始化N2、3灯检测到黑线1、4灯检测到黑线Y有检测到黑线吗直走N小左转小右转2灯检测到黑线N大右转大左转Y1灯检测到黑线Y(二)软件程序#include#include#define uint unsigned intsbit l1= P20; /四路寻迹模块接口第一路sbit l2= P21; /四路寻

9、迹模块接口第二路sbit r1= P22; /四路寻迹模块接口第三路sbit r2= P23; /四路寻迹模块接口第四路sbit IN12=P05;/左马达sbit IN11=P04;sbit IN22=P03;/右马达sbit IN21=P02;int f1,f2; /标志位int m;#define Left_moto_go IN11=1,IN12=0; /左轮前进#define Left_moto_back IN11=0,IN12=1;/ 左轮后退#define Left_moto_stp IN11=0,IN12=0;/左轮停止 #define Right_moto_go IN21=1,

10、IN22=0;/右轮前进#define Right_moto_back IN21=0,IN22=1;/右轮后退#define Right_moto_stp IN21=0,IN22=0;/右轮停止void delay(uint k) /延时函数 uint x,y; for(x=0;xk;x+) for(y=0;y110;y+);void run() /前进函数 Left_moto_go; Right_moto_go; delay(30); Left_moto_stp; Right_moto_stp; delay(10); /调节转速void back(void) /后退函数 Left_moto_

11、back; Right_moto_back; delay(20); /调节转速 Left_moto_stp; Right_moto_stp; delay(100); /调节转速void left() /左电机不动,右电机前进 Left_moto_stp; Right_moto_go; delay(10); Left_moto_stp; Right_moto_stp; delay(40); void right() /左电机前进,右电机不动 Left_moto_go; Right_moto_stp; delay(10); Left_moto_stp; Right_moto_stp; delay(

12、40); void stop() Left_moto_stp; Right_moto_stp; delay(10); Left_moto_go; Right_moto_go; delay(0);void bigright() /左电机前进,右电机后退 Left_moto_go; Right_moto_back; delay(10); Left_moto_stp; Right_moto_stp; delay(20);void bigleft() /左电机后退,右电机前进 Left_moto_back; Right_moto_go; delay(10); Left_moto_stp; Right_

13、moto_stp; delay(20);void main() IN11=0; IN12=0; IN21=0; IN22=0; f1=0; f2=0; while(1) if(f1=0&f2=0) if(l1=0&l2=0&r1=0&r2=0) m=0; if(l2) m=1; f1=0; f2=0; if(r1) m=2; f1=0; f2=0; if(l1|f1=1) m=3; f1=1; if(r2|f2=1) m=4; f2=1; switch(m) case 0: run(); break; case 1: left(); break; case 2: right(); break;

14、 case 3: bigleft(); break; case 4: bigright(); break; default : break; (三)程序说明1. 直走实现:左右轮子同时前进,在实际调试过程中发现,当没有调速的时候,车速过快,导致转弯的时候效果不理想,所以在写程序的时候特意加上了调速部分,主要通过调节占空比实现,具体实现如下:void run() /前进函数 Left_moto_go; Right_moto_go; delay(30); /调节转速 Left_moto_stp; Right_moto_stp; delay(10); /调节转速 经过多次的调试,我们得到了本组小车最

15、好的占空比为3:1,既保持了速度上有一定的优势,也保证了转弯的时候能够顺利完成。上面程序的占空比为3:1,通过调节占空比可以调节转速。2. 左转实现:通过使左轮停止,右轮前进的方法,可以实现左转的功能,同时也要注意占空比的选择,个人认为占空比比前进函数中的占空比小为好。因为如果占空比太大的话,很容易就超出轨道的范围,具体实现如下:void left() /左电机不动,右电机前进 Left_moto_stp; Right_moto_go; delay(10); Left_moto_stp; Right_moto_stp; delay(40); 现在左转的右轮转速占空比为1:4,比前进时的轮子转速

16、占空比大为降低,但是在实际调试的时候车子在转弯的时候总有一点点的小停顿,这是不完美的地方之一。3. 右转实现:通过使左轮前进,右轮停止的方法,可以实现右转的功能,其他同左转。4. 左转直角实现:其实左转直角的实现也可以直接用左转的程序,但是考虑到节省时间,我们可以这样来做:左轮后退,右轮前进,这样的转弯速度更快,具体实现如下:void bigleft() /左电机后退,右电机前进 Left_moto_back; Right_moto_go; delay(10); Left_moto_stp; Right_moto_stp; delay(20);5. 右转直角实现:跟左转直角类似,左轮前进,右轮

17、后退。6. 具体工作过程:开机的时候,四路红外对管检测模块全部检测到白板,所以小车前进。理想的情况是小车前进的时候一直走直线,但是由于车轮形状不完全一样等等原因,小车前进时方向跟前进方向有一定的偏离。当2灯检测到黑线的时候,返回高电平给单片机,单片机给电机驱动模块发出指令,实现左转,当左转到一定的角度时,四路红外对管有检测到都是白板,继续前进。当3灯检测到黑线的时候,返回高电平给单片机,单片机给电机驱动模块发出指令,实现右转,当右转到一定的角度时,四路红外对管有检测到都是白板,继续前进。当1灯检测到黑线的时候,说明线路(只针对特定线路)上左方有直角,单片机判断要进行左转直角的动作,从而发命令给驱动模块,实现左转直角,一直到3灯检测到黑线说明已经成功转了90度,则再次执行右转动作。当4灯检测到黑线的时候,说明前进方向的右边有直角出现,所以单片机判断要进行右转,从而控制驱动模块实现右转直角,一直到2灯检测到黑线,说明右转直角成功,再次执行左转动作。在此处键入

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/环境 > 装饰装潢


经营许可证编号:宁ICP备18001539号-1