人脑由复杂的结构层构成,可以帮助我们成为地球上的优势物种。例如,大脑中的内嗅皮层可以带给您方向感,帮助您轻松导航到您不熟悉的地方。但是与我们不同的是,机器人和无人驾驶Ariel车辆需要一些东西来获得这种方向感,以便他们可以在新的地形和地形中自动进行操纵。不同的机器人使用不同类型的传感器来完成此任务,但是常用的是磁力计,它可以告知机器人当前所处的地理方向。这不仅可以帮助机器人感应方向,还可以按照预定的方向和角度转弯。
由于传感器可以指示北,南,东和西的地理信息,因此我们人类也可以在需要时使用它。因此,在本文中,让我们尝试了解磁力计传感器的工作原理以及如何将其与Arduino等微控制器接口。在这里,我们将构建一个很酷的数字指南针,通过向北发光LED发光来帮助我们找到方向。这款数字罗盘是由PCBGOGO精巧地在PCB上制成的,以便下次野外出行时可以随身携带,并希望我会迷路,只是为了用这东西找回自己的家。让我们开始吧。
所需材料
- Arduino Pro迷你版
- HMC5883L磁力计传感器
- LED灯-8号
- 470Ohm电阻器– 8号
- 桶杰克
- 像PCBgogo这样的可靠PCB制造商
- FTDI mini编程器
- 电脑/笔记本电脑
什么是磁力计,它如何工作?
在深入探讨电路之前,让我们先了解一下磁力计及其工作原理。顾名思义,“电磁”一词并不是指奇迹中那种疯狂的突变体,他可以通过在空中弹钢琴来控制金属。哦!但是我喜欢那个他很酷的家伙。
磁力仪实际上是一种设备,可以感应地球的磁极并据此指出方向。众所周知,地球是一块带有北极和南极的球形磁铁。并因此而产生磁场。磁力计感测到该磁场,并根据磁场的方向可以检测出我们所面对的方向。
HMC5883L传感器模块如何工作
作为磁力计传感器的HMC5883L具有相同的功能。它上面有Honeywell的HMC5883L IC。该IC具有3种磁阻材料,它们沿x,y和z轴排列。流过这些材料的电流量对地球磁场很敏感。因此,通过测量流过这些材料的电流的变化,我们可以检测到地球磁场的变化。一旦吸收了磁场的变化,就可以通过I2C协议将这些值发送到任何嵌入式控制器,例如微控制器或处理器。
由于传感器通过感应磁场来工作,因此如果在附近放置金属,则输出值将受到很大影响。可以利用这种行为将这些传感器也用作金属探测器。小心不要将磁铁靠近该传感器,因为来自磁铁的强磁场可能会触发传感器上的错误值。
HMC5883L和QMC5883L之间的区别
对于许多初学者来说,围绕这些传感器存在一个普遍的困惑。这是因为一些供应商(实际上是大多数供应商)出售了QMC5883L传感器,而不是霍尼韦尔的原始HMC5883L。主要原因是QMC5883L比HMC5883L模块便宜。可悲的是,这两个传感器的工作方式略有不同,并且不能对两个传感器使用相同的代码。这是因为两个传感器的I2C地址不同。本教程中给出的代码仅适用于QMC5883L常用的传感器模块。
要知道您所使用的传感器型号,您只需要仔细查看IC本身,以读取上面写的内容。如果写的是类似L883的东西,那就是HMC58836L;如果写的是类似DA5883的话,那就是QMC5883L IC。下图显示了这两个模块,以便于简化。
电路原理图
此基于Arduino的Digital Compass的电路非常简单,我们只需要将HMC5883L传感器与Arduino接口并将8个LED连接到Arduino Pro mini的GPIO引脚即可。完整的电路图如下所示
该传感器模块具有5个引脚出其中的DRDY(数据准备好)未在我们的项目,因为我们正在操作在连续模式中的传感器使用。 Vcc和接地引脚用于从Arduino板以5V为模块供电。 SCL和SDA是分别连接到Arduino Pro mini的A4和A5 I2C引脚的I2C通信总线。由于模块本身在线路上具有上拉电阻,因此无需在外部添加它们。
为了指示方向,我们使用了8个LED,它们全部通过470欧姆的限流电阻连接到Arduino的GPIO引脚。完整电路由9V电池通过桶形插孔供电。该9V直接提供给Arduino的Vin引脚,并使用Arduino板上的稳压器将其调节为5V。然后使用此5V电压为传感器和Arduino供电。
制造用于数字罗盘的PCB
该电路的思想是将8个LED圆形放置,以便每个LED分别指向所有8个方向,即北,东北,东,东南,南,西南,西和西北。因此,就此而言,将它们整齐地排列在面包板上,甚至在穿孔板上并不容易。为该电路开发PCB将使其看起来更整洁且易于使用。因此,我打开了PCB设计软件,将LED和电阻器排列成整齐的圆形图案,并连接了走线以形成连接。完成后,我的设计如下所示。您也可以从下面给出的链接下载Gerber文件。
- 下载用于数字罗盘PCB的Gerber文件
我将其设计为双面板,因为我希望将Arduino放在PCB的底部,以免破坏Arduino的外观。如果您担心必须为双面PCB付出高昂的价格,那么请耐心等待。
现在,我们的设计已经准备就绪,是时候制作它们了。要完成PCB非常简单,只需执行以下步骤
第1步: 进入www.pcbgogo.com,如果这是您第一次,请注册。然后,在“ PCB原型”选项卡中,输入PCB的尺寸,层数和所需的PCB数。我的PCB是80cm×80cm,所以标签如下
第2步:单击 立即报价 按钮继续。您将进入一个页面,在该页面上可以根据需要设置一些其他参数,例如使用的轨道间距等材料。但是大多数情况下,默认值都可以正常工作。我们在这里唯一需要考虑的是价格和时间。如您所见,构建时间仅为2-3天,而我们的PSB仅花费5美元。然后,您可以根据需要选择首选的运输方式。
第3步:最后一步是上传Gerber文件并继续付款。为确保流程顺利进行,PCBGOGO在继续付款之前会验证您的Gerber文件是否有效。这样,您可以确保您的PCB易于制造,并且能够按承诺完成。
组装PCB
订购该板后,几天后便到达了我,尽管快递员装在一个整齐有序的包装良好的盒子里,而且像往常一样,PCB的质量很棒。我分享了以下几张木板的图片,供您判断。
我打开了焊锡棒,开始组装电路板。由于脚印,焊盘,通孔和丝网印刷的形状和尺寸都非常合适,因此我组装电路板没有问题。拆箱后仅需10分钟即可准备好板子。
焊接后电路板的几张图如下所示。
编程Arduino
现在我们的硬件已经准备就绪,让我们研究一下必须上载到Arduino板上的程序。该代码的目的是从QMC5883L磁力计传感器读取数据并将其转换为度数(0到360)。一旦知道了度数,就必须打开指向特定方向的LED。我在此程序中使用的方向是北。因此,无论您身在何处,板上的LED都会发光,并且LED的方向将指示北方向。一旦可以稍后计算出另一个方向,就可以知道一个方向。
此数字指南针项目的完整代码可在此页面的末尾找到。包含库之后,您可以直接将其上载到板上,并且可以使用了。但是,如果您想知道