找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 589|回复: 0
打印 上一主题 下一主题
收起左侧

从网上下载循迹小车红外线线性处理方法

[复制链接]
跳转到指定楼层
楼主
1.

使用光反射器
为了确定要遵循的路线,大多数参赛者正在使用两个或更多数量的反光板。与地板反射率成正比的输出电流通过电阻器转换为电压,并检测是否检测到线路。但是,阈值电压不能固定为任何水平,因为如右图所示,环境光会向输出电流添加光电流。
大多数工业用光电检测模块都使用调制光,以避免环境光的干扰。使用带通滤波器对检测到的信号进行滤波,并过滤掉不使用的信号。因此,只能检测到来自发光器的调制信号。当然,检测器一定不能被环境光饱和,这在检测器在线性区域工作时是有效的。
在该项目中,脉冲光用于消除环境光。这适用于顺序扫描的折迭式传感器,以避免来自下一个传感器的干扰。微控制器开始扫描传感器状态,采样输出电压,打开LED并再次采样输出电压。两个样本之间的差异是LED产生的光电流,环境光产生的输出电压被抵消。其他传感器也按顺序扫描相同的avobe。
线路检测的信号处理


图显示了实际的线位置与检测到的线位置(中心值为640)之间的关系。微控制器扫描六个传感器,并通过线附近两个传感器的输出比来计算线位置。因此,仅使用六个传感器就可以线性检测线位置。所有传感器输出均被捕获为与反射率成比例的模拟值,并且它们之间的灵敏度各不相同。在该系统中,为了消除输出的变化,可以将每个传感器的校准参数保存在非易失性存储器中。这可以通过在线模式完成。ISP电缆时,微控制器进入在线模式附件,可以用N81 38.4kbps串行格式的终端程序进行控制。S1命令监视传感器值,S2命令校准参考表面(白皮书)上传感器增益的变化。ATmega8必须设置为8MHz内部osc。
2.
巡线
该机器人具有巡线能力。这意味著它能够遵循明亮表面上标记的黑色引导线。轨道上可能存在交叉线,在这种情况下,机器人会选择直线方向。机器人可以避开途中的障碍物;如果检测到障碍物,机器人就会倒转并继续向后移动。
最终,机器人可以在未知环境中找到引导线。当机器人下方没有线时,机器人开始沿螺旋轨迹寻找,直到穿过引导线。
线路传感器模块
指南标有黑色 PVC 隔离胶带。这种材料不反射红外光,因此很容易通过表面的光反射来区分引导线。
传感器模块由3个探测器和4个发射器组成。发射器(红外 LED)和检测器(光电晶体管)交替放置成一排,以便每个光电晶体管被两个红外 LED 包围。由于这种设计,仅使用三个光电晶体管和四个红外 LED 就可以测量传感器模块下方六个点的表面反射率。一般来说,这种方法减少了线路传感器模块所需的组件和 ADC 输入的数量,这在尺寸限制方面是理想的。
下图显示了该方法的工作原理:
LED1发射红外光,反射到光电晶体管T1,因此测量点1的光反射率。
然后,LED1 关闭,LED2 开始发射红外光。光电晶体管 T1 测量点 2 处的光反射率。
在实际应用中(特别是需要高刷新率时)必须考虑IR组件的特性。由于反应延迟(延迟),如果在测量点1 的反射率后立即测量点2 的反射率,来自传感器的数据可能会有偏差。为了避免这种情况,我在示波器上分析了传感器特性,然后修改了扫描以某种方式排序,以便传感器不会相互影响。
环境光抑制
由于光照条件往往会根据时间和地点的不同而变化,因此需要使用环境光抑制算法才能使传感器正常工作。该方法很简单:每个传感器进行两次测量。首先,它扫描环境光量。然后,它打开红外 LED 并再次测量该值。减去这两个值,环境光的偏差就被抑制了。
传感器校准
各个光学元件的特性可能存在细微差异;因此应校准传感器模块。校准分两步手动完成:
1.偏移校准
所有传感器均放置在黑色引导线上方。一旦接收到校准命令,所有传感器都会测量表面反射率,并将测量值存储在存储器中。这些是偏移校准值。从现在起,所有测量值都会自动使用此偏移进行校正。(每次进行测量时,只需从实际值中减去偏移量)。因此,当所有传感器位于黑线上方时,它们将返回相同的值。
2. 增益校准
在增益校准期间,所有传感器都放置在白色表面上方。某些传感器可能比其他传感器更敏感,因此测量值彼此不同。但由于传感器模块下方的表面反射率应该相等,因此可以轻鬆计算每个传感器的增益係数。为了以后的测量,每个测量值都会与其增益係数相乘(相乘);以便所有校准的传感器都具有相似的特性。
因此,校准的传感器模块将输出标准化值。
处理来自传感器、电机控制的数据
光学传感器测量表面的光反射率,并通过线检测算法处理获取的数据。该算法的设计方式使得线宽无关紧要。线检测算法输出有符号整数值,该值表示引导线的实际偏转。接近零的值意味著该线准确地位于传感器模块的中间,正值表示该线向右偏转了多少,负值表示向左偏转了??多少。然后,该输出用于线路跟踪的比例积分微分 (PID) 控制。PID控制器根据实际的线路偏转和之前的状态来调整电机的速度。每秒评估线的位置 30 次。
换句话说,PID控制器驱动机器人,使得线路始终以传感器模块的中间为中心,从而使机器人执行平滑的线路跟踪。

3.
在下一个视频中,我展示了使用 8 个 CNY70 传感器进行的测试。这些传感器通过 Arduino Nano 的端口 A0 至 A7 进行模拟测量。我使用初始算法通过将范围标准化为 0 到 1000 来校准传感器,其中 0 代表白色背景,1000 代表黑线。完成校准后,进入循环并开始读取周期,计算0到7000的位置,分别代表左传感器到右传感器。该位置值用于计算比例误差P。P的范围是-3500(左)到3500(右),以0为中心值。该算法会记住检测到黑线的最后一个传感器(左或右)的位置值,目的是使用该数据进行制动操作和线路恢复.

资料.7z

1.94 MB, 下载次数: 5, 下载积分: 黑币 -5

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表