Arduino探索漫游车2—电子设备与布线

电子说

1.3w人已加入

描述

这篇文章来源于DevicePlus.com英语网站的翻译稿。

布线

布线

欢迎回到ArduRover系列的第二部分!在Arduino 探索漫游车1—底盘中我们构建了一个可以在崎岖地形行驶的六轮驱动大型越野机器人。在本文中,我们将把重点放在电子设备上——我们需要大量的传感器,巨型电池以及一些无线控制的工具。好,让我们开始吧!

硬件

• 第一部分制作的ArduRover底盘

• 12 V 铅酸电池(容量越大越好,我使用的是8.5Ah)

• Arduino Mega

• 带SPI接口的SD卡模块

• 带串行接口的GPS模块

• 带串行接口的VC0706 JPEG相机

• 2x 9 g 微型伺服器

• 2x Pololu VNH5019 电机驱动器(驱动模块,非开发板)

• ROHM 传感器评估套件

• LoRenz 开发板 + SX1278模块

• 将所有设备连接在一起的电缆和跨接线

工具

3D 打印机(推荐)

3D打印部件

• 相机支架–可在Thingiverse上获取

• 传感器盒–可在Thingiverse上获取

在进行布线之前,我们需要一个地方安置所有的电子设备—最好是一些防水的盒子。为了把这些盒子安装到底盘上,我们需要一些辅助零件。那么,就让我们回到车库去来制作这些东西吧。完成后,我们还需要对底盘做一些最后的调整。

第六步:安装电子设备的支架

在上一篇文章中,我详细介绍了用铝型材制作部件的过程,所以在本文中,我就将这一部分做一下简短介绍。毕竟,这些支架本身也都比较简单:它们由与控制臂相同的U型材制成,并且有两个10mm的孔,可将其滑动到两个10mm的中央螺纹杆上。下图是支架的照片:

布线

图1:放置电子设备盒的支架

这是将支架安装到底盘后的样子,两侧均用一个M10螺母将其进行固定,为电子设备和电池提供了一个稳定而坚固的平台。

布线

图2:安装在框架上的支架

您可能已经注意到了,我没有提供支架的设计图纸。那是因为您可能会使用不同的盒子来放置电子设备。比如,我使用的盒子尺寸是105 x 170 x 112 mm,所以我的支架长170mm,两端有两个4mm的孔。您需要在这里进行一些自定义的设计,并且对方案进行调整来满足自己的需求。尽管如此,我还是建议您使用具有较高IP编码的盒子。IP编码代表的是防尘等级(第一个数字)和防水等级(第二个数字)。例如,我的盒子防护等级是IP65,这就意味着6级固态颗粒防护(防尘外壳)以及5级液体侵入防护(外壳可防喷水)。除了机器人要浸没入大量水体中(或者驶入洗车间)的情况,我想这个等级就足够了。

布线

图3:我用来装电子设备的IP65盒

第七步:底盘的最后调整

由于我们的机器人将在自然环境中进行移动,如果它安装有一些传感器来测量周边环境的所有特征,那就太酷了。为了达到这个目的,我将使用ROHM 传感器评估套件,可以帮助我们更加容易的实现对环境中物理特性的感知。用于各个传感器的Arduino库可以点击下面的链接下载。在本项目中,我将使用以下传感器:

• BM1422GMV– 磁力计

• RPR-0521RS – 环境光传感器

• KX022-1020 – 加速度计

• BM1383GLV – 压力传感器

• ML8511A – 紫外线传感器

• BD1020HFV – 温度传感器

但是有一个问题:所有传感器都被设计为在插入开发板上的接口后工作。因为在密封盒子内的开发板将会被封闭,这样一些传感器,比如紫外线传感器,将无法测量出任何有意义的物理量。另外,诸如加速度计和磁力计这样的传感器需要安装在一个很稳定的平台上,如果仅仅将其插入开发板中,它们往往会发生大幅度的前后移动,这将会严重影响这些传感器的测量性能。

解决这些问题的方法很简单。我们只需要一些用于这些传感器的外壳即可,某种可以轻松地安装在底盘任何部位,并且可以提供足够的覆盖力却又不阻碍感知我们想要测量的环境特征的东西。这就是为什么我为所使用的传感器设计了这些小外壳的原因。它们可以通过任何3D打印设备轻松的制造出来。关于这些小外壳的更多信息,请参加另一篇文章:ROHM传感器评估套件的3D打印案例。

布线

图4:传感器外壳

另一个需要这种外壳的部件是相机。我们也想把相机固定起来,这也是用9g伺服器的原因。起初,我想使用一种可以在网上找到的便宜的相机支架。事实证明这浪费了5美元,因为这个支架在我第一次不小心撞到它时就折成了两段。我没有打算再买一个碰碰运气,而是选择自己来完成设计然后用3D打印制作出来!这次制作出的产品比第一个坚固得多,我们可以在它的辅助下拍到一些不错的照片了。

布线

图5:相机支架

该模型的相关文件都可以在Thingiverse上获取,所以,如果您在任何项目中需要一个小尺寸、坚固的相机支架,就通过3D打印来制作一个吧!

当然,所有传感器和相机必须固定在某些地方。我决定将它们安装在一个3mm方形亚克力板上,它位于框架前方的顶部。然后,我们将传感器的电缆连接到放置在它们正后方的电子设备盒中。

布线

图6:没有相机时传感器的安装细节这些标注分别显示的是特定情况下使用的传感器

布线

图7:传感器和相机的最终安装位置

您最后可能还要调整和更改抑制器的强度。因为我使用的是大型铅酸电池,所以大部分重量会集中在最后的一对悬架上。为了弥补这一点,我将最后一对抑制器设置为最高强度,第一对设置为最小强度,中间的设置为中等强度。

布线

图8:设置为最高强度的抑制器(上)和设置为最低强度的抑制器(下)

该步骤取决于您所使用的电池型号。如果您的电池足够轻,可能就没必要更改抑制器强度。但是,我的电池比较庞大:具有8.5Ah的容量,重量达2.7 kg (5.95 lbs)。这是一个反复试验并纠错的过程,所以您需要做的就是把电池放到底盘上,然后修改设置,反复几次后看看哪种设置的效果最好。理想情况下,底盘在一个平整的表面应该是水平状态,不应有向前或向后的倾斜。

第八步:连接逻辑端

现在要介绍的是本文中最具挑战性的部分:将逻辑端、传感器和Arduino连接在一起。即使我们使用两个开发板(LoRenz开发板和ROHM传感器评估套件扩展板),还是有许多模块需要连接。这里显示的是接线的Fritzing示意图。请注意,ROHM扩展板没有显示在示意图中,因为它会覆盖其他大部分的连线。

布线

图9:逻辑端连线的Fritzing示意图

有点混乱是吗?除了电机驱动器直接由电池供电,其他所有组件都是由Arduino的5V稳压器来供电的。Arduino本身也是由该稳压器供电。现在,我们来分别看一下那些重要的组件连接。我的建议是一次连接一个模块,然后每次建立一个新的连接都进行测试。

1. 伺服器。伺服器的信号与Arduino的引脚8和9连接,支持PWM(脉冲宽度调制)。

2. LoRenz 开发板。该开发板使用SPI总线。不好的一点是,在Arduino Mega上总线用的是50、51和52引脚,而这个开发板设计的是使用Arduino UNO,所以SPI总线应该用13、12和11引脚。我们可以通过直接连接开发板上U/M接头的引脚和Arduino Mega上的对应引脚来解决这个问题。同时,从机选择引脚将会保留在默认位置(引脚7)。

3. SD 卡模块。和LoRenz开发板一样,该模块使用SPI总线。所以我们应该直接将它连接到引脚50、51和52以及一些作为从机选择的通用数字引脚就可以了,是这样吗?好吧,其实没有那么简单。我们的Arduino具有5V逻辑电平—这意味着电压电平5V(有一定的容差)会被释义为逻辑1,而电压0V(有较大容差)被视为逻辑0。LoRenz使用的无线模块具有3.3V逻辑电平,但是已被适当的转为5V,来实现与Arduino之间的可靠通信。SD卡模块也具有3.3V逻辑电平,但是,它只能在一个方向进行转换(因为这样制造成本较低)。这意味着从模块发出的所有信号仍然是3.3V逻辑电平。这使总线上的通信变得非常不可靠,或者有可能会直接破坏通信。这些话的含义是,如果您要处理的总线上的逻辑电平不同,而该总线上可能有两个以上的设备,则正确的做法始终是对它们进行转换,确保避免在一个总线上混合使用不同的电压电平。
幸运的是,SPI通信非常简单,可以通过软件来进行。所以我们只需要把SD模块连接到任何3个数字引脚,然后通过代码进行处理即可。我选择的引脚是13、12和11。

4. VC0706 相机。相机使用RS-232(串行)总线进行连接。再强调一下,相机具有3.3V的逻辑电平。因为一次只能将两个设备连接到RS-232,所以只需要在Arduino RX线上使用一个简单的分压器就够了。相机使用的是Mega引脚16和17上的第三个硬件串行线(Arduino代码中的Serial2)。

5. GPS 模块。这是第二个使用串行线的模块,因此我们可以将其放置在第四个串行端口(Serial3)的引脚14和15上。我故意略去了第二个端口(Serial1),因为引脚18和19都可用于触发中断,我们之后会需要将其用到传感器上。

6. ROHM 传感器扩展板。该扩展板位于LoRenz开发板上方。这里,我们需要把传感器和中断引脚连接起来。我按照以下方式对传感器进行连接:

 

传感器名称 扩展板插槽
BM1422GMV I2C_1
KX022-1020 I2C_2
RPR-0521RS I2C_4
BM1383GLV I2C_5
BD1020HFV ANALOG_1
ML8511A ANALOG_2

 

因为LoRenz已经使用了中断引脚2和3,我们不能简单地通过将扩展板上的一些引脚短路来选择它们(有关ROHM传感器扩展板上中断工作方式的更多信息,请参阅RohmMultiSensor wiki)。BM1422GMV位于插槽I2C_1,该插槽连接到INT1。因此,我们将会把INT1连接到Arduino可以触发中断的引脚18。类似地,KX022-1020位于连接到INT3的插槽I2C_2,我们会将其连接到Arduino的引脚19上。

7. VNH5019 电机驱动器。这些驱动器不需要用专门的总线进行连接,只需要两个数字引脚控制方向、一个PWM引脚控制速度、一个模拟引脚(可选)来读取流经电机的电流即可。左侧驱动器连接到引脚41、43和45(PWM)以及A15(模拟),右侧驱动器连接到引脚40、42和44(PWM)以及A14(模拟)。

到目前为止您已经都完成了吗?太棒了,因为这是本文中最难的一部分!当您完成布线后,应该看到类似以下的内容:

布线

图10:所有已完成连接的电子设备

第九步:电源端接线

下一步是连接电源:电池和电机。底盘上有六个电机,但是我们仅有两个VNH5019电机驱动器。这样一来,每个驱动器需要用于三个电机。我们现在有两种方式来连接这三个电机:串联或并联。

1. 串联连接
电机驱动器提供的电流直接流经三个电机。但是,每个电机上的电压仅为驱动器输出电压的三分之一(假设所有电机完全相同)。驱动器的输出电压为12V,那么每个电机上分配的电压为4V,这是不够的,因为每个电机的额定电压是12V。

2. 并联连接
驱动器的输出电压均等的施加到每个电机上,所以每个电机都有12V的电压。在这种情况下,电流被分成了三部分,所以每个电机仅能得到驱动器输出电流的三分之一。电机的额定堵转电流为5A。驱动器可以提供持续电流12A以及峰值电流30A。这并不是十分理想,因为这种情况下驱动器无法提供足够的电流使三个电机都转,但是对于这个项目来说,不会影响工作的正常进行。

因此,我们将进行并联连接。需要记住一点,当对负载进行并联连接时,总电阻值将会下降。在我们的项目中,因为我们连接的电机大致相同,所以并联之后的总电阻值恰好是一个电机电阻值的三分之一。这可能会导致一些有最小负载要求的电机驱动器出现问题。幸运的是,VNH5019没有最小负载要求,所以我们可以顺利地进行工作。

这里是一个电源连接的示意图。非常简单,在+12V线上有一个开关,我们可以将其关闭来停止机器人的工作。电池连接到了驱动器和LoRenz开发板上,后者上有螺旋式接线端子,可以直接连接到Arduino VIN和GND引脚。

布线

图11:电源接线原理图

我认为,这一步中最困难的部分是选择将连接线放在底盘的什么位置。您需要将它们放置在不会干扰其他运动部件的位置。另外,应该对这些连接线进行一定程度的遮盖,因为当机器人在户外探索时我们不希望这些线被其他东西绊住。

当您把所有的电机连接好后,就可以将它们放回电机模块中了。然后将连接线固定在底盘上,并与调节器连接。

布线

图13:载有电子设备的ArduRover底盘成品

结论

现在,该进行最后的接线测试了。使用万用表仔细地对所有的连接进行测量,确保每一根线连接到正确的位置。这一步的重要性再怎么强调都不为过,因为只要一根连接错误而造成电源与一个引脚之间短路的电缆,您的Arduino器件就会在烟雾中化为乌有,或者可能会造成使机器人工作的某些部件遭到毁坏。请记住,我们使用的是铅酸电池,所有的电池都是为了—您知道的—启动机器!这意味着如果发生了短路,将会输出大量电流,关于这种情况的后果,您可以在YouTube上搜索一下“铅酸电池短路”就知道了。

当把所有的电子设备和电池安装好后,机器人的最终重量也确定了。由于使用了巨型电池,现在机器人的重量达到惊人的13公斤—接近29磅!实际上,我对悬架在这种负载下也可以正常工作而感到惊讶。但是既然这样没问题,那我们就终于可以把这台机器人带到户外去,看看我们辛苦工作之后的成果了。

布线

布线

布线

布线

布线

布线

为了测试电机在自然环境中的运行情况,我写了一个简单的应用程序,可以由我直接设置所有电机的转速和转向!该应用程序在一台计算机上运行,通过一个串行端口向Arduino发送指令。然后Arduino通过LoRenz开发板将指令无线传输给机器人。坦率地说,用这种方式来控制机器人极具挑战性。在上文中,您可以看到我尝试控制漫游车的视频,大多数情况是失败的。非常感谢我的朋友Jan Karásek帮助我拍摄照片和录制视频。

下一个目标是对机器人进行编程,以收集所有传感器相关的数据。目前为止,在机器人上运行的程序仅能控制电机,我需要写出更好的控制程序。因为通过键盘这种控制装置来对机器人进行操控比较困难,尤其是在崎岖地形上,我可能需要用一些其他的输入设备,可能是一种可用于计算机的外接游戏机手柄风格的控制器,甚至可能是一个Android手机。有关这些内容以及更多的信息将会在下一部分中进行介绍,请继续关注!

布线

Jan Gromes

Jan 目前在布尔诺工业大学学习电气工程。他有多年使用Arduino和其他微控制器来构建项目的经验,对于机器人系统的机械设计十分感兴趣。 

审核编辑 黄宇

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分