自动漫游车辆 第二部分





5.00/5 (17投票s)
正在进行的自动漫游车系列文章的第二部分。
引言
本系列的第一篇文章涵盖了基本设计概念、探测车建造所涉及的材料以及对各种硬件组件及其在底盘上放置的一些见解。如果你还没有阅读过这篇文章,可以在这里找到它,虽然它不是先决条件,但对于新手来说可能会有所帮助。
在本系列自主探测车的第二部分中,我们将看看组装好的底盘,它上面搭载了所有能使其自主移动但智能程度很低的部件。就像过去备受喜爱的马古先生一样,探测车四处导航,直到撞到某个物体,此时Dagu板的电流感应单元检测到电机处于停滞状态,然后探测车会后退一小段距离,逆时针转动大约90度,然后
继续前行,直到再次撞到其他物体。
不知何故,视频没有显示为视频,而是显示为下载,但它能播放,所以我已经提交了错误报告,在此之前,只需点击链接,视频就会在新标签页中播放?
虽然这种弹球逻辑并非最佳,但它是朝着正确方向迈出的一步,并提供了一种磨练我们学习导航探测车技能的方式。在接下来的文章中,我们将深入探讨转向和检测逻辑,这些都是非常复杂的主题,甚至有整本书专门讨论它们。然而,这个项目阶段允许我们微调任何机械问题并解决任何跟踪问题,以防止探测车在所有4个轮子都接合并朝同一方向转动时无法直线行驶。
在本系列的每篇后续文章中,我们将尝试不同的传感器,以帮助小型探测车完成各种任务,例如循线、预碰撞检测和避障等。我在探测车硬件设计和实施中的主要标准是通过自己制造许多传感器和附加外围设备来降低成本。这也将使我们能够一路学习所涉及的电子设备和制造方法,这也是建造探测车的目的之一,而不是购买预组装好的。但是,如果学习电子学不在你的待办事项清单上,那么预组装好的传感器可以在在线商店部分列出的大多数零件商店购买。
底盘
在第一篇文章中,我在CAD图中显示电池应放置在下层,微控制器将占据上层,但当我实际开始组装电路板时,我在电机电池周围增加了一个笼子,发现逻辑电池板无法舒适地放置在下层。所以我做了一个小的设计更改,将逻辑电池与电脑板一起放在顶部,这样在需要充电时,取出和放入电池就容易多了。通过重新排列顶层的电脑板,我为它腾出了空间。这也给了我在下层添加传感器到探测车前部的空间,如果我想添加光电传感器用于循线或触须传感器用于碰撞检测等。
一旦我解决了电池问题,第一层的组装就相对顺利了。我有DAGU板的支架和用PVC剩余材料制作的电池笼,但是当需要将顶层连接到底座时,我没有足够高的支架,所以我开始在线寻找并找到了一些,但是加上运费价格太离谱了,所以我戴上工程师的帽子,开始思考如何制作自己的支架,并想出了一个我认为相当不错的主意。对于每个柱子,我切了3块2英寸长、约1/2英寸宽的PVC,并将它们粘在一起。它们干了之后,我用一个1/4英寸的福斯纳钻头在一侧钻孔,距离两端约1/3处,然后在每端钻一个较小的孔,与侧面的大孔相交。这有点难以解释,但下面的图片希望能消除一些困惑。
如上图所示,通过使用2个大约1英寸长的#4-40螺钉和匹配的螺母,我能够将两个螺钉都拧得非常牢固。通过使用这4个柱子,顶层变得非常稳定和坚固。这种方案也使得当底层需要进行一些操作时,拆卸顶层变得相当容易。
遇到的问题
当我组装好探测车时,我把它放在积木上,以确保一切都正确组装并能按预期运行。一切都检查完毕,我迫不及待地想让它在地上进行一些真正的导航(追猫)。探测车运行正常,但由于我将电机连接到底盘的方式,探测车无法直线行驶,所以我不得不时不时停下来重新调整对齐方式
电机的。它运行了大约10分钟,然后其中一个电机完全锁死,经过检查发现齿轮区域被猫毛塞满了,足以形成一个小毛球,导致齿轮卡死。我们有4只猫,其中2只是长毛的,所以在地毯上跑并不是一个好主意,需要找到一种方法将齿轮封装起来,以防止碎屑进入齿轮区域。也许用一块胶带?还不确定,我稍后会解决这个问题,因为我必须再买一对电机支架,希望能解决对齐问题。

设计探测车时我没有考虑到的另一个问题是如何连接电机电池,以便在需要充电时易于取用。在解决这个问题的同时,我还会添加一个开关来控制施加到Dagu板的电源。用户手册中指出,逻辑电源应在电机电源之前施加到板上,因此在施加和移除电源时会有一个顺序。
我还需要添加一个按钮开关,这样探测车在通电后,在按下开关之前不会移动。现在我必须拿着探测车通电,然后再把它放下。在设计阶段我没有真正考虑过这一点,会在下一个版本中添加。嘿,这是一个学习过程,对吧……在职培训!
事后诸葛亮
当我为探测车购买电机时,我真的不知道我会用它做什么,所以购买的标准是它要:小巧、轻便、大功率(因此带齿轮)和适用于大多数用途的一般速度。但经过几次初步运行后,我发现我选择的电机转速有点快,42毫米的轮子以360转/分的速度运行,尽管我正在使用脉冲宽度调制(PWM)来控制驱动电机的电压。根据第一篇文章的计算,车辆的速度可以使用以下公式计算:
speed = Wheel Circumference * RPM 42mm = 1.65354 inches Wheel Circumference = 5.19 speed = 5.19 * 320 RPM = 1661.48 Inches/min. or 27 inches/sec
可以看出,这速度相当快,足以吓唬我们家的4只猫,但对于做任何有意义的事情来说都太快了。但正如我所提到的,我正在使用PWM来控制电压,所以我们可以通过使用占空比来计算转速。
rpm = speed x duty cycle% therefore if we have a 50% duty cycle our new rpm would be; rpm = 320 x .5 = 160rpm then we can calculate our new speed based on this new rpm value; speed = 5.19 * 160rpm = 830.4 inches/min = 13.84 inches/sec
这都很好,你可能会问我为什么抱怨电机速度太快?好吧,天下没有免费的午餐,当我们降低施加到电机的电压时,扭矩也会成比例地降低。如果我们在平坦坚硬的表面上行驶,这并不是很受限制,但如果我们在地毯或倾斜的表面上行驶
那么我们就会开始遇到问题。此外,我正在使用Dagu板上的一个功能,它感应电机使用的电流,但范围非常窄,使得编程变得困难,当车辆穿越不同的表面且电压变化时,编程就更难了。
所以这一切的结论是,在购买电机之前,你需要对你的探测车想要做什么有一个大致的概念。事后看来,我应该购买转速较慢的电机,比如大约100转/分,但扭矩相同。
此阶段的经验教训
发泡硬质PVC被证明是底盘的不错选择,因为它易于加工,可以用美工刀切割,看起来相当坚固,而且PVC胶水能很好地将部件焊接在一起。我尝试用热熔胶枪将一些部件粘合在一起,我只能说别浪费时间了,它粘合不牢固,难以控制,而且几乎是瞬间凝固。另一方面,PVC胶水可以在大多数五金店的管道区购买,粘合效果非常好,并在几分钟内凝固,提供一个短暂的工作窗口。
Dagu板以22美元的价格来说是个不错的选择,它能很好地控制电机,没有任何问题,感应功能运行良好,有点敏感但可用,而且价格合适。我还没有在轮子上安装编码器,但我会在下一阶段完成,届时会报告。我相信编码器会使差速转向计算更容易。我也会在那个时候报告我的发现。
轮子由半软橡胶材料制成,在探测车行驶的硬质表面上具有良好的抓地力。轮胎的宽度使转弯有点困难,但可以克服。
我为电机购买的电池组有足够的电量让探测车运行相当长一段时间。在我的试运行中,我大概让探测车总共运行了1小时,探测车像受惊的狗一样跑得飞快,没有任何问题。我从
BatterySpace.com购买的电池组,花了15美元,我还额外花了15美元购买了充电器。我用于逻辑控制的手机电池运行得非常好,但由于我的设置方式,它有时会从支架中弹出,所以我必须用一个固定器来保持它固定在支架中。
固件
我对我在第一篇文章中发布的固件做了一些小的修改,在基本的Dagu控制类之上添加了一个层。Dagu控制类单独控制每个电机通道,而我添加的层则增加了控制探测车作为一个整体的功能,它协同使用所有部件进行导航。这个类目前非常粗糙,我们将在未来为其添加大量的复杂性和功能。
CDaguHAL层的一部分显示在接下来的代码片段中。目前它非常粗糙,需要大量工作,但随着时间的推移,当我学会更好地控制探测车时,其复杂程度将提高,功能也会随之增加。
void CDaguHAL::SetState(ChannelState left, ChannelState rt) { CDaguMC::SetState(0, left); CDaguMC::SetState(1, rt); CDaguMC::SetState(2, left); CDaguMC::SetState(3, rt); } void CDaguHAL::SetDirection(ChannelDirection left, ChannelDirection rt) { CDaguMC::SetDirection(0, left); CDaguMC::SetDirection(1, rt); CDaguMC::SetDirection(2, left); CDaguMC::SetDirection(3, rt); } void CDaguHAL::SetSpeed(uint8_t left, uint8_t rt) { CDaguMC::SetSpeed(0, (uint16_t)left); CDaguMC::SetSpeed(1, (uint16_t)rt); CDaguMC::SetSpeed(2, (uint8_t)left); CDaguMC::SetSpeed(3, (uint8_t)rt); }
开发环境
我想放一张我的工作空间的图片。它需要一些整理,主要是抽屉和电子工作台上的更多置物架,但我退休时卖掉了我所有的木工工具,所以在至少更换一些工具之前,它只能这样了。

结论
总而言之,我对项目第一阶段的结果相当满意,并期待着未来的每个阶段。这无疑是一次学习经验,我希望我所学到的能对那些尝试同样事情的人有所帮助。
我取得了很大的进展,但我正在装修我住的房子,而且有很多其他的干扰和兴趣分散了我的时间,所以我没有像我想的那样投入太多时间,但我希望现在装修即将结束,我能投入更多的时间。
在线商店
Mouser.com,应有尽有,但我发现很难轻易找到东西,因为他们的库存量太大了。Digikey.com,和mouser一样,他们也有庞大的库存。
Adafruit.com,他们不仅有各种各样的硬件,还有许多教程、视频和固件可供使用。
Jameco.com,面向修补匠的各种小玩意。
BGMicro.com,更像是一家库存处理店,如果你能找到你想要的东西或让找到的东西发挥作用,价格更便宜!
Pololu.com,我就是在这里买的电机和轮子。