LEGO用轨迹传感器―― 一个扩充RCX输入口的尝试 写于: 星期四 23 六月 @ 09:29:02 |
近来机器人比赛日渐普及,轨迹赛又是比赛的常规项目,使用LEGO器材参赛的十分普遍,但是RCX仅有三个输入口成了此项目的不小障碍。在此,我们作了一个尝试,为RCX设计了一个专用的轨迹传感器,使其只用一个输入即可实现复杂轨迹的监测,剩余两个输入口可以接其它传感器,以使项目设计得更具趣味性、挑战性。 LEGO用轨迹传感器
关键词: RCX输入扩充,轨迹采样。 一、 背景 作为学习器材,LEGO器材应当是一种比较好的选择,但是也有其不足之处,RCX的输入口太少就是一个比较主要的缺陷。
即使可以用三个光电传感器实现,已经用完了所有的输入,此时对于项目的设计者而言只能搞单纯的走轨迹,不能再添加一些有趣的、有挑战的任务,致使这种竞赛的观赏性、趣味性、挑战水平都会大打折扣。 另一方面,RCX的ROBOLAB软件设计偏重于功能,而非性能,它具备很多高级系统才具备的特征,如:多任务、事件监测、数据采集、直接任务执行、多机通讯等,远非一般自己制作、编写的单片机系统可比,但是这一切是以降低系统的实时性能为代价的,从其“100 Hz的采样速率”和“10ms 开/关一次电机”等技术参数就可见一斑。 100Hz的采样率对于很多应用是十分勉强的,走轨迹就是一例,如果小车行进的快一些,有可能漏掉一个支路或交叉。如果小车的纠偏处理过快,可能掠过了轨迹还以为没有回到轨迹上呢!这一切都是RCX在具体应用时可能遇到的困惑。 我认为,RCX的ROBOLAB更适合用于构成应用系统的主构架,相当于我们一般编程的主程序,而将一些实时性要求高的任务交由一些“外设”完成,相当于一般编程中的子程序或库函数。这些“外设”完成一些特定的任务,如轨迹的监测,将结果交给RCX处理。 二、设计目标及需求分析 基于上述想法,我们决定设计一个RCX用轨迹传感器。 设计目标是:
要实现的功能:
要输出给RCX的位置状态有:
三、具体设计 3.1 硬件设计
因为采样器主要目的是监测轨迹,所以在采样电路上作了一些处理,以减小环境光的干扰。 采样器解剖图:
3.1.2 CPU的选择 LPC917 具有:
之所以选择LPC900 系列单片机,首先是因为它是51系列单片机,51系列在国内是一个最普及的单片机品种,涉及51的资源最为丰富,选用51系列为使用者二次开发提供了方便。 其次是LPC900系列速度快,是原来标准51的6倍。 第三是LPC900系列均支持ICP方式编程,而使用USB的ICP下载线成本不高,零售价只有120元,这对于追求小体积而不得不使用表贴器件的用户来说,应该是个不错的选择。ICP方式相对于IAP更可靠一些。 第四就是LPC900系列的品种比较齐全,对于单一功能性的应用均可以找到合适的规格,我们所选的917就是看中了其4路AD输入和2路PWM输出。 3.1.3 电路设计 为了减小体积,采用了升压电路,将一节7号电池的电压升高到5V,作为传感器的电源。 所有的功能均由LPC917 完成,使用其4路AD输入将采样器的信号转换为数字值,经内部软件处理后,根据结果用PWM方式转换为模拟量输出给RCX。 因为系统的可靠性、速度要求不高,所以使用了LPC917的内部复位电路和内部的RC振荡器,工作频率为7.3MHz。CPU工作无外部器件。 (点击放大) 电路中设计了一个电源及工作状态指示灯,用于指示传感器的工作状态。 处理部分解剖图: 处理部分外形: 3.2 软件设计
3.2.2 程序实现的功能
3.2.3 程序架构 程序分为以下几个模块: ☆位置计算模块 ―― 根据转换后的4个采样器逻辑值计算出目前的位置信息,并转换为定义的模拟量。 输出模拟量定义如下: 一共是11种状态,为了避免信息混乱,所有特殊的轨迹状态(判断值小于3,大于7的)均是在走过后输出,输出维持 100 ms ,以确保RCX能可靠获取。 对于偏离轨迹的判断,如果没有经过特殊轨迹,偏离后只会维持3或7 输出,必须纠偏后回到状态5,才继续判断其它状态。 ☆判断值建立和采样器安装调试模块 ―― 为了建立轨迹和背景之间的判断值和变化方向,需要有一个调试状态,同时完成对采样器安装的调试。 进入调试状态借用 ICP 口中的P0.5,正常工作时P0.5 浮空(芯片内部上拉),为高电平,对地接一个按钮,按一下进入调试状态。在调试状态下,输出为采样器的实际值,可以通过RCX的VIEW功能对采样器的安装位置进行调试。 具体操作模式为:第一次按时,进入调试模式,输出1号采样值,可根据此值调试采样器安装位置,再按依次输出2、3、4号采样值,第五次按前将1、2号采样器置于轨迹上,3、4置于背景上(轨迹外),输出的是判断域值,此时再按下按钮将保存判断域值,并返回到工作模式,完成调试过程。 在上述过程中,电源指示的闪烁方式为:在调试1号时,闪一下,灭1秒;调试2号时,闪2下,灭1秒;依次到输出判断域值时,闪5下,灭1秒。回到正常工作时连续闪烁。 程序完成纪录轨迹及背景的采样值,计算出判断值以及变化方向,并写入FLASH中保存,不再次进入调试不会被修改。 采样在1ms 中断中完成,建立标志。主程序根据标志启动计算或调试模块,输出对应的结果。 四、使用方法 连接示意图: ROBOLAB 程序: 以上程序只是一个示例,对于特殊轨迹没有处理,具体应用时可根据需求添加。 上述采样器的布置方案不是唯一的,可能有更好的模式,我们提供的只是一种思路,希望能起到抛砖引玉的作用。 五、扩展应用
============== 非常感谢此文作者分享这么好的资料。在乐高机器人方便,这篇文章是ROBOTDIY开站快4年最好的文章。 |
共1条
1/1 1 跳转至页
LEGO用轨迹传感器―― 一个扩充RCX输入口的尝试
只看楼主 1楼
关键词: 轨迹 传感器 一个 扩充 入口 尝试 使用 设计
共1条
1/1 1 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |
打赏帖 | |
---|---|
vscode+cmake搭建雅特力AT32L021开发环境被打赏30分 | |
【换取逻辑分析仪】自制底板并驱动ArduinoNanoRP2040ConnectLCD扩展板被打赏47分 | |
【分享评测,赢取加热台】RISC-V GCC 内嵌汇编使用被打赏38分 | |
【换取逻辑分析仪】-基于ADI单片机MAX78000的简易MP3音乐播放器被打赏48分 | |
我想要一部加热台+树莓派PICO驱动AHT10被打赏38分 | |
【换取逻辑分析仪】-硬件SPI驱动OLED屏幕被打赏36分 | |
换逻辑分析仪+上下拉与多路选择器被打赏29分 | |
Let'sdo第3期任务合集被打赏50分 | |
换逻辑分析仪+Verilog三态门被打赏27分 | |
换逻辑分析仪+Verilog多输出门被打赏24分 |