循迹小车传感器选择

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

以SENSORI为例,当传感器检测到信号时,即SENSORI为高电平,光电耦合器内部发光二极管导通(发光),由于VDDH电压为十5V,与TTL电平兼容,输出端的光敏晶体管导通,传感器监测到的信号传给了单片机。作为开关量的控制,一般不将信号直接连接到I/O口上,在实际设计中,在光隔的输出端和CPU的I/O口之间加了74LS244以作为信号的缓冲,增加信号的稳定性。由于传感器自身响应时间约为lms,因此在本控制系统中,其电平转换延时(约为3us)和增加缓冲器后的延时时间(约为18ns)可以忽略,并不影响控制系统的性能。这在其他系统中需特别注意,特别是在高速系统设计中,信号的完整性可能会受到影响。

在本控制系统中,根据具体的实际需求,选用的是中沪公司的Y2V型光电传感器,其主要特点如下: (l)检出彩色标志分辨率高;

(2)光源备有红色、绿色、蓝色单光源及红绿双光源:

(3)受光与稳定指示灯可目测标志检出的稳定范围;

(4)放大器内藏,响应速度可达lms:

(5)改变电源极性即可改变亮动/暗动输出状态;

(6)备有DC12一24V和AC220V两种工作电源系列;

(7)采用最新ASIC电路和sMT表面安装工艺,互换性好,和进口同类产品可互换使用。

由于是脉冲式光电传感器,其信号输出为开关量信号,因此控制起来相对较容易,减少了整体硬件电路的开销。

4.4.1.3光电传感器的工作原理

光电传感器通常采用光发射接收原理,发出调制光,接收被测物体的反射光,并根据接收光信号的强弱来区分不同的颜色,或者判别物体的存在与否。其传感器内部电路组成和工作原理如图4.4所示:

由于机器人行走的地面为墨绿色的地板胶,上面粘有白色的导引线。根据光学原理,红色光在绿色地面上的反射强度最低,因此,地面导引白线上的反射光强远远大于非白线处产生的光电流,通过传感器内部的检波比较放大,通过调整比较器的基准电压,即可确定传感器内的光电三极管是否处于白线上方,从而达到检测的目的。

传感器阵列形状常采用一字形阵列、十字形阵列、三角形阵列、圆形阵列、矩形阵列等。圆形阵列与矩形阵列比较复杂,难度较大,通常需要几十个传感器,常用于多传感器阵列排列中,它可实现小角度精确转弯,机器人位置相对灵活多变,由于传感器数量有限,故这两种排列方式不合适。一字形阵列、十字形阵列、三角形阵列都是相对较简单的排列方式,传感器数量可多可少,算法相对简单,位置灵活性差,但基本能满足实际定位的需要,最终我们采用的是传感器一字形排列方式。

自动机器人行走的路程最远,控制精度要求最高的一台机器人。驱动轮前置可控性较差,驱动轮后置可控性较高。单万向轮比多万向轮可控性好,但万向轮的稳定性差,机器人容易翻倒或行走不稳。经以上分析,对于自动机器人,最后采用双万相轮,后轮驱动,传感器前置(相对于驱动轮)的布局方式,考虑到其行走电机为直流伺服电机,具有脉冲反馈功能,再加上对于寻迹算法的考虑,决定采用4个光电色标传感器来完成预定功能。其布局示意图如图4.5所示。

图4.5自动机器人传感器布局示意图

①②③④曲为光电传感器,机器人运行时,山必分别靠近两边白线摆放,离白线的距离要根据实验来调整,当传感器光斑距白线1.5mm~2 mm效果较好。

4.4.3.1信号检测的滤波算法

(l)均值滤波算法:例如对传感器状态查询10次,如果传感器有效次数大于7次就认为是有效输出。这种算法实现起来相对容易,但是效果不是很好,容易引起震荡,抗干扰性能也不是很强。特别需注意的是,要给传感器探头足够的时间,否则在10次查询中,信号有效的比例会大大降低。

(2)基于状态机循环的滤波算法:对于每个状态,如果连续若干次查询传感器都是获得相同的状态就确认此状态是一个稳定的状态,即可输出。如果出现了其他状态就跳转到相应的状态继续查询,如果进行了指定的查询次数状态稳定就输出,否则跳转到下一个状态继续查询。而如果查询次数总是到达了设定的最大值仍没有稳定的状态,就放弃查询,回到初始状态。在实际应用中,作者采用的是基于状态机循环的滤波算法,这种算法对场上随机的噪声滤波效果很好。白线的交叉点,闪光灯,地面的凹凸,覆盖材料的气泡,特别是机器人上部结构在机器人行走过程中对底盘的扰动都有比较好的效果。其关键函数如下所示: bitCheekstatus(void)

{

unsignedcharCurMaxTime;刀定义当前状态的稳定状态确认

unsisnedcharcurTime二0;//定义并初始化当前状态确认查询次数

unsignedcharReadTime=0;//定义并初始化当前总查询次数

uPdatestatus();//更新传感器的状态,即查询的实际实现

while(ReadTime

ReadTime++;//总查询次数计数

if(curstasensor==sensor)//稳定状态的确认查询

{

CurTime++;刀稳定状态的确认次数

if(CurTime>CurMaxTime)

retuml;//状态被确认

}

else//跳转到其他状态

{

updatestatus()://更新状态

CurTime二O;//重新计数

CurMaxTime二MainGetTimesBysta(Curstasensor):

}

}retumo;}

4.5.3“看门狗”技术

所谓看门狗技术是指通过不断检测程序循环运行时间,若发现程序循环时间超过最大循环运行时间,则认为系统陷入“死循环”,需进行出错处理。“看门狗”技术可由硬件实现,也可由软件实现。在工业应用中,严重的干扰有时会破坏中断方式控制字,关闭中断。则系统无法定时“喂狗”,硬件看门狗电路失效。而软件看门狗可有效地解决这类问题。其方法是:采用单片机内的一个定时器单元接收内部时钟提供的稳定脉冲,如果程序进入“死循环”,当定时器溢出时就会提出中断请求,在对应的中断服务程序中使PC回到初始化程序的第一行,从而实现强制性“软复位”。在程序正常运行时,软件每隔一定的时间(小于定时器的溢出周期)给定时器清零或置一个固定的数,即可预防溢出中断而引起的误复位。

在本软件中设计中,看门狗为一个16位计数器,需每隔不大于0.75s时间“喂狗”一次,以防止引起误复位。

相关文档
最新文档