第一篇:智能小车设计实验指导书
智 能 小 车 设 计
实 验 指 导
王 恒 编
2011年4月
书
目录
目录.....................................................................................................I 实验阶段一
智能小车路径规划.......................................................1 实验阶段二
智能小车环境感知与控制...........................................6 实验阶段三
智能小车行为控制.....................................................12 附录: 库函数......................................................................................17
I 实验阶段一
智能小车路径规划
一.实验目的
1.熟悉智能小车的硬件开发平台与软件开发环境。2.掌握智能小车路径规划程序设计。
二.实验内容
1.熟悉智能小车硬件设计。
2.学习智能小车的软件使用方法,学会软件的编写、调试与下载。3.编写第一个智能小车程序。4.编写智能小车移动程序。
5.编写复杂的智能小车路径规划程序。
三、实验设备及工具
硬件:能力风暴AS-UII开发平台,程序下载线。
软件:PC 机操作系统Win2000 或WinXP、VJC开发平台。
四、实验原理与步骤
智能小车实验平台配备有5种传感器,对环境的感知能力很强。执行器配备有二只高性能直流电机、一只喇叭和一只2*16 字符的液晶显示器。整个小车通过Motorola 公司8位单片机来进行控制。智能小车的硬件结构如下图所示:
2、让智能小车动起来
下面我们就尝试着让智能小车动起来。
在VJC1.5 开发版执行器模块库中有一专门控制智能小车“移动”的模块,这里我们就用
它来编写一个智能小车直线行走的程序。要求:先让智能小车以速度100 前进3 秒,再让智能小车 以速度-60 后退5 秒,再在原地以功率80 旋转1 秒。(如图4-2 所示)
示范操作步骤如下:
2.1 在 VJC1.5 开发版窗口中编写流程图
a)编写流程图:用鼠标将“执行器模块库”中的“移动”模块移到流程图生成区并与 主程序模块连接上;
b)设置时,右击“移动”流程图模块,在弹出框中输入移动速度为 100、时间为3; c)再用鼠标将“执行器模块库”中的“移动”模块移到流程图生成区并连接; d)在流程图的末端位置;
e)设置第二个“移动”流程图模块,点击右键在弹出框中输入移动速度为-60、时间 为5;
f)再将“执行器模块库”中的“转向”模块连接到程序中,点击右键进入设置对话框,分别设置速率和时间为:80 和1
g)再将“程序模块库”中的“任务结束”移入到流程图生成区并连接在程序的末尾。
drive(0,60);wait(0.2);} stop();} 能力风暴逆时针走约一米见方的正方形路径。其中wait(0.2)是能力风暴转90度弯所需要的 时间。该值和转弯速度以及能力风暴的电机有关,需要实际调整,此外地面的摩擦力也有影 响。利用wait()函数是控制电机工作的常用方法。
五、实验考核
编写智能小车程序,实现下列连续的路径规划:(1)智能小车走两遍1.5米直径的圆;
(2)原地停止1秒后,智能小车走三遍等边三角形(或等腰直角三角形);
(3)再次原地停止1秒后,智能小车走一遍8字形。(或9字形、D字母型、B字母型等,每组的考核指标由指导老师随机抽选)。
我们也可以点击“工具栏”中的“编辑JC 程序代码”按钮,切换到JC 代码界面,对 JC 代码进行修改。
1.2 保存程序
点击工具栏中的“保存”按钮,文件名输入:感光,按“确定”。此时,“感光.flw” 流程图程序文件已被保存。
1.3 程序下载
此时,能力风暴要处于开机状态,并串口连接线已与计算机连接。点击“工具”中的“下 载当前程序”按钮,就会出现下载对话框,等待出现“下载成功!”字样,说明程序已经下 载到能力风暴里了。
1.4 运行程序
将串口连接线取下,将智能小车带到安全的地方,按智能小车身上的“运行”键,在智能小车 的LCD 上就会显示出外界光线的平均值。
2、JC 程序的基本程序结构
下面是JC 程序中最常见的一种程序模式。
while(1)/*循环检测*/ { ir=ir_detector();/*对环境采样*/ if(ir>0)/*条件判断*/ { 语句1;/*做相应的处理*/ 语句2;} else {
试窗口一行编辑框中输入如下程序块:
{while(1){printf(“bump=%dn”,bumper());wait(0.1);}} 按回车,JC 能立即编译这一段程序并下载运行,LCD 上显示: bump=0(表示此时没有碰撞)
按左前碰撞环,LCD 上显示:bump=5。在其他方向施加碰撞,显示的值将不同。各个方 向发生碰撞时返回值对应关系如下:
无0,左前1,右前2,左后4,右后8
下面结合智能小车“台球”程序来学习碰撞传感器的使用。
void main(){ int bill_trans=0;int bill_rot=0;int bmpr=0;while(1)/*无限循环检测*/ { bmpr=bumper();/*检测碰撞传感器*/ if(bmpr!=0){ if(bmpr==0b0011)/*正前方发生碰撞*/ { bill_trans=-80;/*后退*/ bill_rot=0;} else if(bmpr==0b1100)/*正后方发生碰撞*/ { bill_trans=80;/*前进*/ bill_rot=0;} else if(bmpr & 0b0101)/*左侧发生碰撞*/ { 51 bill_trans=0;bill_rot=-80;drive(bill_trans,bill_rot);wait(0.5);/*顺时针转一个角度*/ bill_trans=80;/*前进*/ bill_rot=0;} else if(bmpr & 0b1010)/*右侧发生碰撞*/ { bill_trans=0;bill_rot=80;drive(bill_trans,bill_rot);wait(0.5);/*逆时针转一个角度*/ bill_trans=80;/*前进*/
void main(){ int ir;while(1){ ir=ir_detector();if(ir!=0)/*判断有否障碍*/ { motor(-80,-40);/*执行语句,即倒退0.5秒*/ wait(0.5);} 26 motor(100,0);/*前进*/ } } 运行此程序可知当前方有障碍时,能力风暴智能智能小车有反应。
五、实验考核
编写智能小车跟随前方物体的程序,实现下列要求:
智能小车可以跟随前方移动的人或物;如果撞上前方的物体,就停一停;如果前方红外系统探测范围内没有物体,它就停下来。
六、思考题
1、实验中碰到哪些故障或问题?解决方法是怎样的?将实验中碰到的问题及解决方法写入实验报告中。
2、如果要对智能小车双轮的转速实现带反馈的控制,需要在硬件上添加什么部件?为什么?
1bill_rot=0;} else if(bmpr & 0b0101)/*左侧发生碰撞*/ { bill_trans=0;bill_rot=-80;wait(0.5);/*顺时针转一个角度*/ bill_trans=80;/*前进*/ bill_rot=0;} else if(bmpr & 0b1010)/*右侧发生碰撞*/ { bill_trans=0;bill_rot=80;wait(0.5);/*逆时针转一个角度*/ bill_trans=80;/*前进*/ bill_rot=0;} } } 54 } void billiards_drive(){ while(1)drive(bill_trans,bill_rot);/*驱动电机*/ } void main(){ start_process(billiards_drive());/*创建电机驱动进程*/ start_process(billiards());/*创建碰撞处理进程*/ } “台球”改成多进程后,运行的效果没变,但结构已经完全不一样了。电机驱动进程 billiards_drive()专门设置电机速度,碰撞处理进程billiards()判断碰撞并改变电机速 度。两个进程之间通过全局变量bill_trans 和bill_rot 进行通讯。能力风暴的操作系统自 动调度两个进程,给它们分配时间片。从执行效果来讲,就相当于这两个进程并列运行。这 样的结构非常方便增加新的进程,同时处理更多的外部信息。
2、进程间通信
我们给前面的程序增加一个红外避障进程,改变它的行为,而其它部分不需要做大的变动。改动后的程序如下。
int bill_trans=0;int bill_rot=0;int bmpr=0;int forward=0;
3{ bill_trans=20;bill_rot=80;/*逆时针转*/ } else if(ir==1)/*左侧有障碍,向右绕*/ { bill_trans=20;bill_rot=-80;/*顺时针转*/ } else if(ir==0)/*前方没有障碍,恢复直行*/ { bill_trans=80;bill_rot=0;}} wait(0.1);}} 56 } void billiards_drive(){ while(1){ running = bill_trans;/*能力风暴正在运动*/ drive(bill_trans,bill_rot);/*驱动电机*/ } } void main(){ start_process(billiards_drive());/*创建电机驱动进程*/ start_process(billiards_ir());/*创建避障进程*/ start_process(billiards());/*创建碰撞处理进程*/ } 改动以后的程序增加了避开侧面障碍物的行为。比较一下,增加的代码除了红外避障进 程外,就是用于进程之间的通讯。进程间的通讯和同步是多进程编程的难点,不解决好这个 问题,多进程程序可能会产生一些奇怪的行为。在这个程序里,由于碰撞处理进程和红外避 障进程都要修改设置电机速度的两个全局变量(bill_trans,bill_rot),这是进程间发生冲 突的根源。如果不加以限制,两个进程同时修改电机速度,必然会出现一片混乱,能力风暴 下一步的运动方向将无法预知。
本程序中把bmpr 改为全局变量,通过bmpr 来划分两个进程生效的时间。即发生碰撞时,只有碰撞处理进程可以修改电机速度;在其他时间里碰撞处理进程只是在不断检测碰撞传感 器,只有红外避障进程才有可能修改电机速度。我们可以看到,在本程序里碰撞处理进程的 优先级高于红外避障进程。增加的另两个全局变量是出于红外避障行为逻辑的需要。全局变 量running 是能力风暴开始运动的标志,红外避障进程要等待这一事件发生后才能起作用。forward 反映能力风暴当前运动方向,用于避免红外避障进程在后退时候处理前方障碍。
3、智能小车的行为控制
借助于多进程功能,可以方便实施目前处于研究前沿的行为控制方法。
行为控制的基本思想是建构行为能力,而非功能模块。首先把要设计机器人的行为特点描述下来,表达成基本的行为构成,如要做一只模拟机器飞蛾的智能小车,一边到处找食物,一边向较
附录: 库函数
1.执行器输出
void stop()关闭左右两个电机,停止运动;
void stop_motor(int m)关闭电机m,0为所有电机,1为左电机, 2为右电机, 3为扩展电机; void motor(int m, int speed)以功率级别speed(-100到100)启动电机m(1为左电机, 2为右电机, 3 为扩展电机);
void drive(int move, int turn)同时设定两个电机的速度,move 为平移速度,turn 为旋转速度。
2.传感器输入
int photo()光敏传感器检测。photo(1)为检测左光敏, photo(2)为检测右光敏,返回值为0~ 255的数字量;
int microphone()声音传感器检测。返回值为0~255的数字量;
int ir_detector()红外传感器检测。返回值的意义:0=> 没有障碍, 1=>左边有障碍, 2=>右边有 障碍, 4=>前方有障碍;
int bumper()碰撞传感器检测。返回值的意义:0=>无碰撞,1=>左前受碰,2=>右前受碰,4=> 左后受碰,8=>右后受碰。
int rotation(int index)光电编码器脉冲累计读数,rotation(1)为检测左光电编码器,rotation(2)为 检测右光电编码器。
int digitalport(int channel)读数字口上传感器的值。channel的范围是0~7。返回值:从传感器数字硬 件读到的值为零伏或逻辑零时,返回1;否则返回0 int analogport(int channel)读模拟口上传感器的值。channel的范围是0~7。返回值是0到255间的整数 值
int encoder(int index)读取光电编码器的当前状态。0为低电平/1为高电平(分别对应光栅的通光缺口 /遮光齿)。
3.时间
void wait(float sec)延时等于或稍大于指定的sec时间(秒)后再执行后面的语句。sec是一个浮点数 void resettime()将系统时间复位清零
float seconds()以秒的形式返回系统时间,它是一个浮点数,精度为0.001秒
4.声音
void beep()产生一段0.3秒500赫兹的音频信号。发声结束后返回。
void tone(float frequency, float length)产生一个length秒长音调为frequency赫兹的音频信号。
5.电池
int battery()检测电池电量,返回值为0~255的数字量;
6.其他函数
void asosreset()软件复位函数。与按下能力风暴的复位开关的效果一样,ASOS操作系统重启动,程序停止运行。
int runbutton()读运行键状态。运行键在能力风暴智能智能小车的头顶上,可以在程序中使用该 按钮。返回值:0没按,1按下 int abs(int val)取整数val的绝对值 int max(int x, int y)求两个整数的最大值 int min(int a, int b)求两个整数的最小值 float rand()返回0~1之间的随机浮点数
int random(int scale)返回0~scale之间的随机整数
第二篇:智能小车设计报告
机器人控制技术
实验设计报告书
题
目:基于STC89C52的智能小车的设计 姓
名:李如发 学
号:073321032 专
业:电气工程及其自动化 指导老师:李东京 设计时间:2010年 6 月
目
录
1.引 言..............................................1 1.1.设计意义......................................1 1.2.系统功能要求..................................1 1.3.本组成员所做的工作............................1 2.方案设计...........................................1 3.硬件设计...........................................2 4.软件设计...........................................7 5.系统调试...........................................7 6.设计总结...........................................8 7.附 录A;源程序.....................................8 8.附 录B;作品实物图片...............................10 9.参考文献..........................................11
16×16点阵LED室内电子显示屏的设计
单片机原理及应用课程设计
基于STC89C52的智能小车的设计
1.引 言
1.1.设计意义
本智能小车的设计,首先针对大学所有学习的知识是一个很好的回顾和总结。此智能小车是基于单片机所设计的,具有自动寻迹能力,在实际的很多方面有应用。当我们进一步的改进机器人系统时,可实现更重要的功能,如可设计出自动扑火机器人等。1.2.系统功能要求
此智能小车是基于STC89C52设计的具有自动寻迹能力的小车。系统可实现跟随黑色引导线行走的能力,在行驶过程中,并能用测速传感器和光电码盘对小车速度实现实时监测。小车在行驶过程中并能实现播放美妙的音乐。1.3.本组成员所做的工作
本组成员有李如发,汪航,黄建安,韩文龙,罗莹,明菲菲,邹珊,江锐,邵进。
李如发:驱动 073321032 汪航: 电源 073522036 黄建安:最小统 073521013 韩文龙:源程序 073522007 罗莹: 传感器 073522038 明飞菲:调试 073522012 邹芬 : 数码显示 073521025 邵琎 : 焊接 073522017 江锐 : 蜂鸣器 073522032
2.方案设计
智能小车主要分为传感器部分,最小系统部分,电机驱动部分,电源部分。根据功能要求,提出合理的设计方案,画出方案方框图,并对系统工作原理进行阐述。
原理,本系统的重要部分是传感器,它对整个小车的定位起到很重要的作用,由传感器检测黑线的位置,其中黑线对光能吸收,白线对光反射。利用此原
16×16点阵LED室内电子显示屏的设计
单片机原理及应用课程设计
理将红外线传感器采集到的信号转换为数字信号并送入单片机,单片机根据收到的信号实时的控制小车的方向。控制小车的方向主要是运用pwm原理来控制电机的平均电压,从而来控制电机的转速,实现小车对黑线的实时跟踪。
3.硬件设计
硬件设计各模块电路图及原理描述 传感器模块
方案1:用光敏电阻组成光敏探测器。光敏电阻的阻值可以跟随周围环境光线的变化而变化。当光线照射到白线上面时,光线发射强烈,光线照射到黑线上面时,光线发射较弱。因此光敏电阻在白线和黑线上方时,阻值会发生明显的变化。将阻值的变化值经过比较器就可以输出高低电平。
但是这种方案受光照影响很大,不能够稳定的工作。因此我们考虑其他更加稳定的方案。
方案2:用RPR220型光电对管。RPR220是一种一体化反射型光电探测器,其发射器是一个砷化镓红外发光二极管,而接收器是一个高灵敏度,硅平面光电三极管。
方案3:用红外发射管和接收管自己制作光电对管寻迹传感器。红外发射管发出红外线,当发出的红外线照射到白色的平面后反射,若红外接收管能接收到反射回的光线则检测出白线继而输出低电平,若接收不到发射管发出的光线则检测出黑线继而输出高电平。我们选择了此方案。
传感器是整个系统的眼睛,这部分主要运用红外线传感器采集信号送给单片机处理。由于黑色车道对红外线传感器发出的光有吸收能力,白色地方对发出的光反射,从而当传感器在不同的地方产生不同的信号,传送个单片机。单片机根据采集的信号做出实时的处理。
16×16点阵LED室内电子显示屏的设计
单片机原理及应用课程设计
最小系统
最小系统是整个系统的心脏,我们采用的是AT89C52芯片。
80C52单片机是把那些作为控制应用所必需的基本内容都集成在一个尺寸有限的集成电路芯片上[2]。如果按功能划分,它由如下功能部件组成,即微处理器、数据存储器、程序存储器、并行I/O口、串行口、定时器/计数器、中断系统及特殊功能寄存器。它们都是通过片内单一总线连接而成,其基本结构依旧是CPU加上外围芯片的传统结构模式。但对各种功能部件的控制是采用特殊功能寄存器的集中控制方式。
驱动模块
方案1:采用专用芯片L298N作为电机驱动芯片。L298N是一个具有高电压大电流的全桥驱动芯片,它相应频率高,一片L298N可以分别控制两个直流
16×16点阵LED室内电子显示屏的设计
单片机原理及应用课程设计
电机,而且还带有控制使能端。用该芯片作为电机驱动,操作方便,稳定性好,性能优良。
方案2:对于直流电机用分立元件构成驱动电路。由分立元件构成电机驱动电路,结构简单,价格低廉,在实际应用中应用广泛。但是这种电路工作性能不够稳定。
因此我们选用了方案1。
由于最小系统和电机驱动部分的电压幅值不一样,而且电机是感性负载,在制动时可能反馈电流,因此要在最小系统和驱动模块之间采用光电隔离,所以用到了光电隔离芯片,TPL521-4
由于光耦芯片的引脚不够所以在之后采用了一片反相器74HCT14,反相器图如下
L298是双H桥高电压大电流功率集成电路,直接采用TTL逻辑电平控制,可用来驱动继电器、线圈、直流电动机、步进电动机等电感性负载。它的驱动电压可达46V,直流电流总和可达4A。其内部具有2个完全相同的PWM功率放大回路。由L298构成的PWM功率放大器的工作形式为单极可逆模式。12个H桥的下侧桥晶体管发射极连在一起,其输出脚(1和15)用来连接电流检测电阻。第9脚接逻辑控制部分的电源,常用+5V,第4脚为电机驱动电源,本系统中为40V,第5,7,10,12脚输入标准TTL逻辑电平,用来控制H桥的开和关,16×16点阵LED室内电子显示屏的设计
单片机原理及应用课程设计
第6,II脚则为使能控制端。当Vs=40V时,最高输出电压可达35V,连续电流可达2A。
L298可驱动2个电动机,OUT1,OUT2和OUT3,OUT4之间可分别接电动机,本实验装置我们选用驱动两台电动机。5,7,10,12脚接输入控制电平,控制电机的正反转。EnA,EnB接控制使能端,控制电机的停转。电动 机的转速由单片机调节PWM信号的占空比来实现。
L298驱动电路图
16×16点阵LED室内电子显示屏的设计
单片机原理及应用课程设计
PWM调速器的硬件组成
在整个PWM调速器中,CPU既是运算处理中心,又是控制中心,是最关键的器件。本系统中选用与MCS-51系列完全兼容的AT89C52单片机,它是一种低功耗、高性能、CMOS八位微处理器。片内具有8K字节的在线可重复编程快擦快写程序存储器,128x8位内部RAM,AT89C52可构成真正的单片机最小应用系统,缩小系统体积,提高系统可靠性,降低系统成本。
电源模块
电源中我们采用LM7805稳压芯片将12v直流电源稳压成5v直流源。方案1: 采用10节1.5V干电池供电,电压达到15V,经7812稳压后给支流电机供电,然后将12V电压再次降压、稳压后给单片机系统和其他芯片供电。但干电池电量有限,使用大量的干电池给系统调试带来很大的不便,因此,我们放弃了这种方案。
方案2:采用3节4.2V可充电式锂电池串联共12.6V给直流电机供电,经过7812的电压变换后给支流电机供电,然后将12V电压再次降压、稳压后给单片机系统和其他芯片供电。锂电池的电量比较足,并且可以充电,重复利用,因此,这种方案比较可行。但锂电池的价格过于昂贵,使用锂电池会大大超出我们的预算,因此,我们放弃了这种方案。
方案3:采用12V蓄电池为直流电机供电,将12V电压降压、稳压后给单片机系统和其他芯片供电。蓄电池具有较强的电流驱动能力以及稳定的电压输出性能。虽然蓄电池的体积过于庞大,在小型电动车上使用极为不方便,但由于我们的车体设计时留出了足够的空间,并且蓄电池的价格比较低。因此我们选择了此方案。下:
16×16点阵LED室内电子显示屏的设计
单片机原理及应用课程设计
4.软件设计
程序流程图
5.系统调试
本系统的设计是首先完成每一小部分的设计,因此我们在没完成一个模块时就回检测调试该模块。在初次调试时我们采用的电源是又单片机开发板所带的的电源来调试的。调试过程中我们就发现了很重要的问题,由于对本设计的很多模块的没有共同的接地使得很多模块无法工作,我们的解决办法是12v的直流源稳压来供给所以的模块,然后将所以的模块连接共同的地。在驱动模块的调试中发现当光耦芯片给定信号时对lm298的输出没有反应。我们在检验时发现是由于在光耦芯片后部焊接没有焊好,出现了虚焊。在重新焊接好后,芯片正常工作。分
16×16点阵LED室内电子显示屏的设计
单片机原理及应用课程设计
块调试传感器时,我们将传感器导通,用黑色物体将传感器发射部分盖住检测输出,在将黑色物体移开,再检测输出。
6.设计总结
本文是关于基于单片机的智能小车的设计,在共同的努力下,各部分的设计均成功,在调试过程中都无误。本次设计最终实现了直流电机的动态调压,电源正常输出供电,数码管动态显示数据,蜂鸣器播放美妙的音乐,小车实现简单的转弯功能。由于本次设计中尚存在些缺陷和对寻迹程序编写困难,实现的功能不是很完美,但要求的所有功能基本实现。
本次设计中,从中的体会很多
1、本次的设计可以说设计到大学所学到的所有专业知识,是对大学所学知识的一个整体的回顾。
2、在设计中,不能一气呵成,因为所有的电路图都是自己设计的,图中尚存在不足,所以要反复的琢磨和修改。
3、设计中要注意对每焊完一部分,都要独立的进行检查调试,及时的发现错误,及时的修改
4、本次最重要的收获是从中我们看到了团队合作的重要性,任何事都不是一个人所能完成的,需要大家的共同努力才能获得最后的成功。
7.附 录A;源程序
源程序代码(主要语句要有注释)。循迹的程序 #include
sbit R=P2^0;//右边传感器 sbit L=P2^1;//左边传感器 sbit RM1=P1^1;sbit RM2=P1^2;//右边电机 sbit LM1=P1^3;sbit LM2=P1^4;//左边电机 void main(){
16×16点阵LED室内电子显示屏的设计
单片机原理及应用课程设计
RM1=1;
RM2=0;
LM1=1;
LM2=0;
delay(5);
while(1)
{
if((L==1)&&(R==1))//小车前进 {
RM1=1;
RM2=0;
LM1=1;
LM2=0;
delay(5);
}
else if((L==1)&&(R==0))//小车右偏
{
RM1=1;
RM2=0;
LM1=0;
LM2=1;
//左边的电机停止转动,右边的电机转动,这样就实现了左转
delay(10);
}
else if((L==0)&&(R==1))//小车左偏
{
RM1=0;
RM2=1;
LM1=1;
LM2=0;
//右边的电机停止转动,左边的电机转动,这样就实现了右转
delay(10);}
else if((L==0)&&(R==0))//小车停车
{
RM1=0;
RM2=1;
LM1=0;
LM2=1;delay(5);
}
16×16点阵LED室内电子显示屏的设计
单片机原理及应用课程设计
else
//左右两个电机同时启动,直线前进
{
RM1=1;
RM2=0;
LM1=1;
LM2=0;
}
}
delay(10);
}
void delay(uint z)
{
uint a,b;for(a=z;a>0;a--)for(b=120;b>0;b--);}
8.附 录B;作品实物图片
16×16点阵LED室内电子显示屏的设计
单片机原理及应用课程设计
9.参考文献
[1] Mark Nelson著.潇湘工作室译.串行通信开发指南[M].中国水利水电出版社,2002.[2] 王宜怀.单片机原理及其嵌入式应用教程[M].北京希望电子出版社,2002.[3] 张毅刚.单片机原理及应用.高等教育出版社,2009 [4] 康华光.电子技术基础(模拟部分).高等教育出版社.2006
第三篇:智能小车设计报告
智能小车设计报告
魏旭峰、孔凡明、陈梦洋
(河北科技大学 电气信息学院)摘要:
AT89S52单片机是一款八位单片机,他的易用性和多功能性受到了广大使用者的好评。该设计是结合科研项目而确定的设计类课题。本系统以设计题目的要求为目的,采用89S52单片机为控制核心,利用红外线传感器检测道路上的黑线,控制电动小汽车的自动寻路,快慢速行驶。整个系统的电路结构简单,可靠性能高。实验测试结果满足要求,本文着重介绍了该系统的硬件设计方法及测试结果分析。
采用的技术主要有:
通过编程来控制小车的速度及方向; 传感器的有效应用; 1602液晶显示的应用;
关键词: 89S52单片机、光电检测器、PWM调速、电动小车
第一章 方案设计与论证
一 供电系统
二 光电检测系统
三 单片机最小应用系统设计
四 液晶显示1602的应用
五 电机驱动
第二章 软件设计
第二章 方案设计与论证
根据要求,小车应在规定的赛道上行驶,赛道中央黑线宽为25MM,确定如下方案: 在现有玩具电动车的基础上,加装光电检测器,实现对电动车的位置的实时测量,并将测量数据传送至单片机进行处理,然后由单片机根据所检测的各种数据实现对电动车的转向和速度的智能控制.这种方案能实现对电动车的运动状态进行实时控制,控制灵活、可靠,精度高,可满足对系统的各项要求。
一 供电系统
本模块使用LM2940芯片输出+5V的电压,为89S52单片机光电检测电路供电,采用LM1117可控变压芯片输出+6V电压为舵机供电.而电机则由单片机来控制,当单片机输出的电压不同时,电机的转速不同,以此来达到控制小车速度的目的.电路如图:
二 光电检测系统
本模块采用七对红外线发射和接收对管,来检测小车前方黑线位置和模拟车站停车位置.发射管发射管出红外线,当对管正下方为白色跑道时,发射管发射出去的红外线会被反射回来, 接收因接收到红外线而导通,两端电压为零,当对管正下方为黑色线时,黑线将吸收红外线,接收管因接收不到红外线而无法导通,两端电压为+4V左右,将接收管端电压与一个给定电压经LM324比较后输出0和+5V两固定个值,当对管正下方为白色时输出+5V电压,当对管正下方为黑线时输出0V,输出的电压交给单片机,以此来确定黑线的位置.电路如图:
三 单片机最小应用系统设计
89S52单片机是本系统的核心所在,自动寻迹和调速都是它控制, 七对光电对管经比较器输出的电压输入单片机,单片机根据电压的高低来判断黑线位置,进而调整速度和方向,电路如下:
四 舵机的应用
舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。目前在高档遥控玩具,如航模,包括飞机模型,潜艇模型;遥控机器人中已经使用得比较普遍。舵机是一种俗称,其实是一种伺服马达。
其工作原理是:单片机放的控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。
舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms~2.5ms范围内的角度控制脉冲部分。
五 电机驱动
电机驱动电路是根据单片机的控制型号来控制电机的转动的,电路如下:
第二章 软件设计 #include
#define uchar unsigned char//宏定义 uchar duoj,dianj,time0=0,time1=0,L=0,e=30;void timer0()interrupt 1 //定时器零 控制舵机 { time0++;
if(time0==duoj)moto=0;if(time0==80){ time0=0;
moto=1;} TH0=(65536-313)/256;TL0=(65536-313)%256;} void timer1()interrupt 3 ///定时器一 控制电机 { time1++;if(time1==dianj)in1=1;if(time1==80){
time1=0;
in1=0;} TH1=(65536-340)/256;TL1=(65536-340)%256;}
void main()/////主函数开始 { TMOD=0x11;TH0=(65536-313)/256;TL0=(65536-313)%256;TH1=(65536-340)/256;TL1=(65536-340)%256;EA=1;ET0=1;
ET1=1;in1=0;moto=1;TR0=1;TR1=1;while(1)//////检测黑线位置
{
while(1)
{
if(P1==0xff){duoj=8;dianj=55;break;} 全白时缓进
if(L1==0){duoj=10;dianj=37;L=1;break;} //L1
if(L7==0){duoj=6;dianj=37;L=7;break;} //L7
if(L2==0){duoj=10;dianj=22;L=2;break;} //L2
if(L6==0){duoj=6;dianj=22;L=6;break;} //L6
//
if(L3==0){duoj=9;dianj=27;L=3;break;} //L3
if(L5==0){duoj=7;dianj=27;L=5;break;}
//L5
if(L4==0){duoj=8;dianj=70;L=4;break;}
//l4
//else {duoj=8;dianj=17;break;}
}
while(P1==0xff)当检测不到信号时保持最后的状态
{
switch(L)
{
case 1:duoj=10;dianj=39;break;
case 2:duoj=10;dianj=22;break;
// case 3:duoj=9;dianj=25;break;
// case 4:duoj=8;dianj=70;break;
// case 5:duoj=7;dianj=25;break;
case 6:duoj=6;dianj=22;break;
case 7:duoj=6;dianj=39;break;
}
} } }////////主函数结束
第四篇:智能小车的自动寻迹实验
智能小车的自动寻迹实验
【实验目的】 熟悉光敏电阻的性质 熟悉ICCAVR 编译环境
进一步熟悉单片机各端口的特性和作用 能够编写程序,利用光敏电阻的性质对小车进行控制
【实验器材】
小车一辆 导线五根 下载线一根
【实验原理】
(一)光敏电阻
当光照射在物体上,物体内部的原子释放出电子并不逸出物体表面,而仍留在内部,使 物体的电阻率1/R 发生变化的效应称为光电导效应。光敏电阻是一种光电导效应半导体器 件。由于光敏电阻没有极性,工作是可加直流偏压或交流电压。当无光照时,光敏电阻的阻 值(暗电阻)很大,电路中电流很小。当它受到一定波长范围的光照射时,其阻值(亮电阻)
急剧减小,电路中电流迅速增加,用电流表可以测量出电流。
本实验所采用的光敏电阻是硫化镉光敏电阻,下图是硫化镉光敏电阻的光照特
光敏电阻的检测
1. 用黑纸片将光敏电阻的透光窗口遮住,此时万用表的指针基本保持不动,阻值接近无穷 大。此值越大说明光敏电阻性能越好。若此值很小或接近为零,说明光敏电阻已烧穿损
坏,不能再继续使用。
2. 用一光源对准光敏电阻的透光窗口,此时万用表的指针应有较大幅度的摆动,阻值明显 减小。此值越小说明光敏电阻性能越好。若此值很大甚至无穷大,表明光敏电阻内部开
路损坏,也不能再继续使用。
3. 将光敏电阻透光窗口对准入射光线,用小黑纸片在光敏电阻的遮光窗上部晃动,使其间 断受光,此时万用表指针应随黑纸片的晃动而左右摆动。如果万用表指针始终停在某一
位置不随纸片晃动而摆动,说明光敏电阻的光敏材料已经损坏。
(二)Atmega8515的端口特性
由于本实验主要用到I/O输入输出的PA端口,因此主要介绍PA端口的特性。端口 A(PA7..PA0)端口A为8位双向I/O口,具有可编程的内部上拉电阻。其输出缓冲器具有对称 的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外 部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口A处于高阻状态。作为通用数字I/O使用时,所有AVRI/O端口都具有真正的读-修改-写功能。这意味着用 SBI或CBI指令改变某些管脚的方向(或者是端口电平、禁止/使能上拉电阻)时不会无意地改 变其他管脚的方向(或者是端口电平、禁止/使能上拉电阻)。输出缓冲器具有对称的驱动能 力,可以输出或吸收大电流,直接驱动LED。所有的端口引脚都具有与电压无关的上拉电阻。
并有保护二极管与VCC和地相连。
每个端口都有三个I/O存储器地址:数据寄存器–PORTx、数据方向寄存器–DDRx和端 口输入引脚–PINx。数据寄存器和数据方向寄存器为读/写寄存器,而端口输入引脚为只读 寄存器。当寄存器SFIOR 的上拉禁止位PUD置位时所有端口的全部引脚的上拉电阻都被禁 止。不论如何配置DDxn,都可以通过读取PINxn寄存器来获得引脚电平。PINxn寄存器的各 个位与其前面的锁存器组成了一个同步器。这样就可以避免在内部时钟状态发生改变的短
时间范围内由于引脚电平变化而造成的信号不稳定。
本实验主要应用PA端口的输入引脚PINA。因此当我们把与光敏电阻的输出电压相连的 五个数据线连接到PA端口时可以通过读取寄存器PINAx来获得光探测装置输出的电平,在 AVR中PA端口的反转电压是2.1V为高电平。即当外部输入电压高于2.1V时,PINAx读取的输 入逻辑电平值为“1”,当外部输入电压低于2.1V时,PINAx读取的输入逻辑电平值为“0”。
根据PINA寄存器放置的五个数据来判断小车的走向。
(三)本实验实现原理
当电路接通电源时,由小车主板的稳压电源电路稳定输出5 伏电压为小车下部的光探测 电路提供电源使二极管发光,当路面是白色时,二极管发出的光大部分被反射,光敏电阻就 接收到比较强的光照射,阻值变小,流过光敏电阻的电流变大。由于电阻的分压作用,使得 光敏电阻的输出电压较小,约为1.5V 左右。当路面是黑色时,由于黑色对光有吸收作用,使得二极管发出的光大部分被吸收,只有小部分被反射,光敏电阻接收到的光照就比较小,阻值变大,流过光敏电阻的电流变小,光敏电阻的输出电压变大,约为2.5V 左右。共有五个 光敏电阻也就是有五个数据输出。这五个信号通过数据线与单片机的PA 口相连,最左边的
电阻连接PA 口的最低位PA0,依次类推,一直连到PA4 口。
【实验步骤】
(1)连接好电路,把导线,下载线连接好,打开电源
(2)进入ICCAVR 编译环境,编写并调试程序直至没有错误,编译环境简介请参见
附录一
(3)下载,烧录进单片机,看实验结果(4)反复修改调试程序,逐渐增强其功能(5)写好实验报告,实验心得体会
【实验电路】 小车的硬件连接图
小车轮子的驱动详见实验一
【程序示例】
由于在实验中黑线的宽度不同,寻迹中所用到的光敏电阻的部位也不同。下面程序的
例子是黑线的宽度只能覆盖一个光敏电阻时对小车的驱动程序
#include
#include
unsigned char t;//******************系统自动生成的初始化程序**********************
void port_init(void)
{
PORTA = 0x00;DDRA = 0x00;PORTB = 0x00;DDRB = 0x00;PORTC = 0x00;DDRC = 0x00;PORTD = 0x00;DDRD = 0xFF;PORTE = 0x00;DDRE = 0x04;
} //call this routine to initialize all peripherals
void init_devices(void)
{
//stop errant interrupts until set up
CLI();//disable all interrupts
port_init();MCUCR = 0x00;EMCUCR = 0x00;GICR = 0x00;TIMSK = 0x00;
SEI();//re-enable interrupts //all peripherals are now initialized
} //****************小车前进的子程序*********************
void runforth(void)
{
PORTE=0x04;PORTD=0x70;
} //*****************小车左转的子程序*********************
void zuozhuan(void)
{
PORTE=0x00;PORTD=0X70;
} //****************小车右转的子程序*********************
void youzhuan(void)
{
PORTE=0x04;PORTD=0x50;
} //***************小车停止不动的子程序****************
void stop(void)
{
PORTE=0x00;PORTD=0x00;
} //****************主程序***************************
void main(void)
{ while(1)//设置一个死循环,不断读取PA口的输入逻辑电平
{
init_devices();//调用初始化函数
t=PINA&0x1f;//屏蔽掉PA口的高三位数据位
if(t==0x00){stop();} else { switch(t)
{ case 0x01:zuozhuan();break;case 0x07:zuozhuan();break;case 0x02:zuozhuan();break;case 0x03:zuozhuan();break;case 0x04:runforth();break;case 0x0e:runforth();break;case 0x06:zuozhuan();break;case 0x08:youzhuan();break;case 0x10:youzhuan();break;case 0x0c:youzhuan();break;case 0x18:youzhuan();break;case 0x1c:youzhuan();break;
} } } }
第五篇:智能小车设计文献综述
智能小车设计文献综述
智能小车设计文献综述
摘要:随着电子工业的发展,智能技术广泛运用于各种领域,智能小车不仅在工业智能化上得到广泛的应用,而且运用于智能家居中的产品也越来越受到人们的青睐。国外智能车辆的研究历史较长。相比于国外,我国开展智能车辆技术方面的研究起步较晚,在智能车辆技术方面的研究总体上落后于发达国家但是也取得了一系列的成果。随着人工智能技术、计算机技术、自动控制技术的迅速发展,智能控制将有广阔的发展空间。本设计的智能小车利用红外对管检测黑线与障碍物,并以单片机为控制芯片控制电动小汽车的速度及转向,从而实现自动循迹避障的功能。并对智能小车研究现状以及未来的应用与发展前景做一个全方面的介绍。关键词:智能技术,自动循迹,避障 前言
随着电子技术、计算机技术和制造技术的飞速发展,数码相机、DVD、洗衣机、汽车等消费类产品越来越呈现光机电一体化、智能化、小型化等趋势。智能化作为现代社会的新产物,是以后的发展方向,他可以按照预先设定的模式在一个特定的环境里自动的运作,无需人为管理,便可以完成预期所要达到的或是更高的目标。智能小车,也称轮式机器人,是一种以汽车电子为背景,涵盖控制、模式识别、传感技术、电子、电气、计算机、机械等多科学的科技创意性设计,一般主要路径识别、速度采集、角度控制及车速控制等模块组成。一般而言,智能车系统要求小车在白色的场地上,通过控制小车的转向角和车速,使小车能自动地沿着一条任意给定的黑色带状引导线行驶[1]。智能小车运用直流电机对小车进行速度和正反方向的运动控制,运用直流电机对小车进行速度和正反方向的运动控制,通过单片机来控制直流电机的工作,从而实现对整个小车系统的运动控制。智能小车的发展历史、国内外研究现状
2.1 国外研究现状
国外智能车辆的研究历史较长,始于上世纪50年代。它的发展历程大体可以分成三个阶段[2][3][4]:
第一阶段,20世纪50年代是智能车辆研究的初始阶段。1954年美国Barrett Electronics 公司研究开发了世界上第一台自主引导车系统AGVS(Automated Guided Vehicle System)。该系统只是一个运行在固定线路上的拖车式运货平台,但它却具有了智能车辆最基本得特征即无人驾驶。早期研制AGVS的目的是为了提高仓库运输的自动化水平,应用领域仅局限于仓库内的物品运输。随着计算机的应用和传感
智能小车设计文献综述
技术的发展,智能车辆的研究不断得到新的发展。
第二阶段,从80年代中后期开始,世界主要发达国家对智能车辆开展了卓有成效的研究。在欧洲,普罗米修斯项目于1986年开始了在这个领域的探索。在美洲,美国于1995年成立了国家自动高速公路系统联盟(NAHSC),其目标之一就是研究发展智能车辆的可能性,并促进智能车辆技术进入实用化。在亚洲,日本于1996年成立了高速公路先进巡航/辅助驾驶研究会,主要目的是研究自动车辆导航的方法,促进日本智能车辆技术的整体进步。进入80年代中期,设计和制造智能车辆的浪潮席卷全世界,一大批世界著名的公司开始研制智能车辆平台。
第三阶段,从90年代开始,智能车辆进入了深入、系统、大规模研究阶段。最为突出的是,美国卡内基.梅隆大学(Carnegie Mellon University)机器人研究所一共完成了Navlab系列的10台自主车(Navlab1—Navlab10)的研究,取得了显著的成就。
目前,智能车辆的发展正处于第三阶段。这一阶段的研究成果代表了当前国外智能车辆的主要发展方向。在世界科学界和工业设计界中,众多的研究机构研发的智能车辆具有代表性的有:
德意志联邦大学的研究,1985年,第一辆VaMoRs智能原型车辆在户外高速公路上以100km/h的速度进行了测试,它使用了机器视觉来保证横向和纵向的车辆控制。1988年,在都灵的PROMRTHEUS项目第一次委员会会议上,智能车辆维塔(VITA,7t)进行了展示,该车可以自动停车、行进,并可以向后车传送相关驾驶信息。这两种车辆都配备了UBM视觉系统。这是一个双目视觉系统,具有极高的稳定性。
荷兰鹿特丹港口的研究,智能车辆的研究主要体现在工厂货物的运输。荷兰的Combi road系统,采用无人驾驶的车辆来往返运输货物,它行驶的路面上采用了磁性导航参照物,并利用一个光阵列传感器去探测障碍。荷兰南部目前正在讨论工业上利用这种系统的问题,政府正考虑已有的高速公路新建一条专用的车道,采用这种系统将货物从鹿特丹运往各地。
日本大阪大学的研究,大阪大学的Shirai实验室所研制的智能小车,采用了航位推测系统(Dead Reckoning System),分别利用旋转编码器和电位计来获取智能小车的转向角,从而完成了智能小车的定位。另外,斯特拉斯堡实验中心、英国国防部门的研究、美国卡内基梅隆大学、奔驰公司、美国麻省理工学院、韩国理工大学对智能车辆也有较多的研究。
智能小车设计文献综述
2.2 国内研究现状
相比于国外,我国开展智能车辆技术方面的研究起步较晚,开始于20世纪80年代。而且大多数研究处在于针对某个单项技术研究的阶段。虽然我国在智能车辆技术方面的研究总体上落后于发达国家,并且存在一定得技术差距,但是我们也取得了一系列的成果[5 ],主要有:
(1)中国第一汽车集团公司和国防科技大学机电工程与自动化学院与2003年研制成功我国第一辆自主驾驶轿车。该自主驾驶轿车在正常交通情况下的高速公路上,行驶的最高稳定速度为13km/h,最高峰值速度达170km/h,并且具有超车功能,其总体技术性能和指标已经达到世界先进水平。
(2)南京理工大学、北京理工大学、浙江大学、国防科技大学、清华大学等多所院校联合研制了7B.8军用室外自主车,该车装有彩色摄像机、激光雷达、陀螺惯导定位等传感器。计算机系统采用两台Sun10完成信息融合、路径规划,两台PC486完成路边抽取识别和激光信息处理,8098单片机完成定位计算和车辆自动驾驶。其体系结构以水平式结构为主,采用传统的“感知-建模-规划-执行”算法,其直线跟踪速度达到20km/h,避障速度达到5-10km/h。
智能车辆研究也是智能交通系统ITS的关键技术。目前,国内的许多高校和科研院所都在进行智能交通系统ITS(Intelligent Transport System)关键技术、设备的研究。随着ITS研究的兴起,我国已形成一支ITS技术研究开发的技术专业队伍。并且各交通、汽车企业越来越加大了对ITS及智能车辆技术研发的投入,整个社会的关注程度在不断提高。交通部已将ITS研究列入“十五”科技发展计划和2010年长期规划。相信经过相关领域的共同努力,我国ITS及智能车辆的技术水平一定会得到很大提高。
目前学术界对智能小车的研究也很多,桂林理工大学黄建能等[2]设计的无线遥控小车,其由四部分组成:主控模块、无线通信模块、电机驱动模块和电源模块。主控模块采用STC89C52单片机作为处理器;无线通信模块采用芯片 PT2262和 PT2272实现无线收发;用内置两个H桥的 L298芯片驱动直流电机实现对小车的控制,实现前进、后退,左转、右转以及加速、减速的动作。整个无线遥控小车系统具有体积小、成本低、操作简单等优点,并具有一定的可扩展性。
于连国、李伟等[6]设计了自动往返的智能电动车,其采用 STC89C51 单片机作为小车的检测和控制核心;使用红外传感器检测跑道黑线并把反馈到的信号传给单片机,能够使小车在各区域均能按预定的速度行驶。
智能小车设计文献综述
葛广军,杨帆[7]设计了一种能够自动循迹的智能小车。该智能小车的控制系统以单片机MC912DG128为核心,由路径识别、车速检测、舵机控制、直流电机、电机驱动芯片LMD18200和电压转换芯片LM7525等模块组成,并详细阐述了控制系统的组成原理和软硬件设计。实验的结果表明:该控制系统具有循迹效果好、性能稳定等优点。
董涛,刘进英等[8]设计并制作了一种具有红外遥控、自动避障、智能寻径等功能的智能小车,该车以玩具小车为车体,直流电机及其控制电路为整个系统的驱动部分,STC89C52单片机为整个系统的控制核心,采用IRM-2638红外一体接收头接收控制信号实现对小车的遥控,加以多种传感器以实现小车的自动避障与智能寻径等功能,该小车还配备了两块数码显示管,以便实时观察小车状态。该小车工作稳定,还可用于各种机器人比赛。
姜宝华、齐强等[9]基于STC89C52RC单片机设计了一种遥控智能小车。小车具有自动、遥控两种模式。该小车在遥控模式下小车可在1公里范围遥控到达指定位置,并在手持设备上显示小车位置坐标;自动模式下在封闭环境输入任意坐标,小车可自动运行到该位置。
可以预计,我国飞速发展的经济实力将为智能车辆的研究提供一个更加广阔的前景。我们要结合我国国情,在某一方面或某些方面,对智能车进行深入细致的研究,为它今后的发展及实际应用打下坚实的基础。智能小车设计构想
智能车辆是集环境感知、规划决策、多等级辅助驾驶等功能于一体的综合系统,是智能交通系统的一个重要组成部分。本次设计对智能小车的控制系统进行了研究,设计实现一个基于路径规划处理的智能小车控制系统,实现智能小车最基本的两个功能:循迹、避障。
3.1 主控系统
方案1:采用可编程逻辑器件CPLD作为控制器。CPLD可以实现各种复杂的 逻辑功能、规模大、密度高、体积小、稳定性高、IO资源丰富、易于进行功能扩展。采用并行的输入输出方式,提高了系统的处理速度,适合为大规模控制系统的控制核心。但本设计不需要复杂的逻辑功能,对数据的处理速度要求也不是非常高。且从使用及经济角度考虑我放弃了此方案。
方案2:采用51单片机作为整个系统的核心[7],用其控制行进中的小车,以实现其既定的性能指标。充分分析我们的系统,其关键在于实现小车的自动控制,而
智能小车设计文献综述
在这一点上,单片机就显现出来它的优势——控制简单、方便、快捷。这样一来,单片机就可以充分发挥其资源丰富、有较为强大的控制功能及可位寻址操作功能、价格低廉等优点。因此,这种方案是一种较为理想的方案。
综上所述,我采用了方案二。
3.2 电机驱动模块
方案1:采用继电器对电动机的开或关进行控制,通过开关的切换对小车的速度进行调整.此方案的优点是电路较为简单,缺点是继电器的响应时间慢,易损坏,寿命较短,可靠性不高。
方案2:采用电阻网络或数字电位器调节电动机的分压,从而达到分压的目的。但电阻网络只能实现有级调速,而数字电阻的元器件价格比较昂贵。更主要的问题在于一般的电动机电阻很小,但电流很大,分压不仅回降低效率,而且实现很困难。
方案3:采用功率三极管作为功率放大器的输出控制直流电机。线性型驱动的电路结构和原理简单,加速能力强,采用由达林顿管组成的 H型桥式电路。用单片机控制达林顿管使之工作在占空比可调的开关状态下,精确调整电动机转速。这种电路由于工作在管子的饱和截止模式下,效率非常高,H型桥式电路保证了简单的实现转速和方向的控制,电子管的开关速度很快,稳定性也极强,是一种广泛采用的 PWM调速技术。
这种调速方式有调速特性优良、调整平滑、调速范围广、过载能力大,能承受频繁的负载冲击,还可以实现频繁的无级快速启动、制动和反转等优点。因此决定采用使用功率三极管作为功率放大器的输出控制直流电机。
综合考虑,本设计选择了方案三。
3.3 循迹模块
方案1:采用简易光电传感器结合外围电路探测,但实际效果并不理想,对行驶过程中的稳定性要求很高,且误测几率较大、易受光线环境和路面介质影响。在使用过程极易出现问题,而且容易因为该部件造成整个系统的不稳定。故最终未采用该方案。
方案2:采用两只红外对管,分别置于小车车身前轨道的两侧,根据两只光电开关接受到白线与黑线的情况来控制小车转向来调整车向,测试表明,只要合理安装好两只光电开关的位置就可以很好的实现循迹的功能。
方案3:采用三只红外对管,一只置于轨道中间,两只置于轨道外侧,当小车脱离轨道时,即当置于中间的一只光电开关脱离轨道时,等待外面任一只检测到黑
智能小车设计文献综述
线后,做出相应的转向调整,直到中间的光电开关重新检测到黑线(即回到轨道)再恢复正向行驶。现场实测表明,小车在寻迹过程中有一定的左右摇摆不定,虽然可以正确的循迹但其成本与稳定性都次于第二种方案。
综合考虑,本设计选择方案二。
3.4 避障模块
方案1:采用一只红外对管置于小车中央。其安装简易,也可以检测到障碍物的存在,但难以确定小车在水平方向上是否会与障碍物相撞,也不易让小车做出精确的转向反应。
方案2:采用二只红外对管分别置于小车的前端两侧,方向与小车前进方向平行,对小车与障碍物相对距离和方位能作出较为准确的判别和及时反应。
方案3:采用一只红外对管置于小车右侧。通过测试此种方案就能很好的实现小车避开障碍物,且充分的利用资源而不浪费。
综合考虑,本设计选择方案二。设计原理简述
4.1 循迹原理
这里的循迹是指小车在白色地板上循黑线行走,通常采取的方法是红外探测法。红外探测法,即利用红外线在不同颜色的物体表面具有不同的反射性质的特点,在小车行驶过程中不断地向地面发射红外光,当红外光遇到白色纸质地板时发生漫反射,反射光被装在小车上的接收管接收;如果遇到黑线则红外光被吸收,小车上的接收管接收不到红外光。单片机就是否收到反射回来的红外光为依据来确定黑线的位置和小车的行走路线。红外探测器探测距离有限,一般最大不应超过15cm。对于发射和接收红外线的红外探头,可以自己制作或直接采用集成式红外探头。
当小车在白色地面行驶时,装在车下的红外发射管发射红外线信号,经白色反射后,被接收管接收,一旦接收管接收到信号,那么图中光敏三极管将导通,比较器输出为低电平;当小车行驶到黑色引导线时,红外线信号被黑色吸收后,光敏三极管截止,比较器输出高电平,从而实现了通过红外线检测信号的功能。将检测到的信号送到单片机I/O口,当I/O口检测到的信号为高电平时,表明红外光被地上的黑色引导线吸收了,表明小车处在黑色的引导线上;同理,当I/O口检测到的信号为低电平时,表明小车行驶在白色地面上。
循迹流程框图如图4.1所示。
智能小车设计文献综述
开始前进N是否检测到黑线Y左转Y判断是否是左边检测到黑线N右转
图4.1 循迹流程框图
4.2 红外避障原理
避障传感器基本原理,和循迹传感器工作原理基本相同,利用物体的反射性质。在一定范围内,如果没有障碍物,发射出去的红外线,因为传播距离越远而逐渐减弱,最后消失。如果有障碍物,红外线遇到障碍物,被反射到达传感器接收头。传感器检测到这一信号,就可以确认正前方有障碍物,并送给单片机,单片机进行一系列的处理分析,协调小车两轮工作,完成一个漂亮的躲避障碍物动作传。
跃迁到导带,成为自由电子,同时产生空穴,电子—空穴对的出现使电阻率变小。光照愈强,光生电子—空穴对就越多,阻值就愈低。当光敏电阻两端加上电压后,流过光敏电阻的电流随光照增大而增大。入射光消失,电子-空穴对逐渐复合,电阻也逐渐恢复原值,电流也逐渐减小。
红外避障流程框图如图4.2所示。
智能小车设计文献综述
开始前进N左转是否检测到障碍物NY左红外是否检测到障碍物N左右红外对管都检测到障碍物YY右转后退
图4.2 红外避障流程图 总结及展望
智能小车的研究、开发和应用涉及传感技术、电气技术、电气控制技术、智能控制等学科,智能控制技术是一门跨科学的综合性技术,当代研究十分活跃,应用日益广泛的领域。智能作为现代社会的新产物,是以后的发展方向,它可以按照预先设定的模块在一个特定的环境里自动的运行,可运用于科学勘探等用途,无需人为的管理,便可以完成预期所要达到的或更高的目标。智能机器人正在代替人们完成这些任务,凡不宜有人直接承担的任务,均可由智能机器人代替,可以适应不同环境,不受温度、湿度等条件的影响,完成危险地段,人类无法介入等特殊情况下的任务,智能小车就是其中的一个体现。对于智能小车研究还可以从以下方向展开:在小车上装摄像头进行实时视频监控采集,通过无线传给远端的主机,主机可以发送命令给小车,执行相应的动作等等。还可以扩展其他的模块。就可以广泛的应用于科学研究、地质勘探、危险搜索、智能救援等。
智能小车设计文献综述
参考文献
[1] 赵海兰.基于单片机的红外遥控智能小车的设计[J].无线互联科技, 2011年3期 [2] Dickmanns E D,etc.The Seeing Passenger Car “Vamors-P” Proc 1994 IEEE Symposia on Intelligent Vehicles.IEEE Press Piscataway,1994,10(5):68-73 [3] Maurer M.Vamors-p——An Advanced Platform for Visual Autonomous Road Vehicl Guidance.In:SPIEConfon Mobile Robots IX.Boston,1994,12(3):239-248 [4] Broggi A, Bertozzi M, Faseioli A et al.Automatic vehicle guidance:the experience of the ARGO autonomous vehicle.Singapore:World Scientific PubllshingCo, 1998:23-24 [5] 尹念东.智能车辆的研究及前景[J].上海汽车,2002.2 [6] 于连国,李伟,王妍玮.基于单片机的智能小车设计[J]林业机械与木工设备,2011, Vol.39,No.4:39-41.[7] 葛广军,杨帆.基于单片机的智能小车控制系统设计.[J]河南城建学院学报, 2011, Vol.20,No.3:47-50.[8] 董涛,刘进英,蒋苏.基于单片机的智能小车的设计与制作[J]计算机测量与控制, 2009, Vol.17,No.2:380-382.[9] 姜宝华,齐强.基于单片机的无线遥控智能小车的设计与制作[J]计算机测量与控制, 2013,(2):24-25.[10] 王晶.智能小车运动控制技术研究.硕士论文,武汉:武汉理工大学,2009