2022 年 3 月 22 日 Arduino、CAN-BUS、物联网、SPI
CAN-Bus 允许我们在一条总线上添加很多设备(理论上最多 127 个,实际限制在 110 个左右)。决定使用 CAN-BUS 在我的 LoRa-CAN 模块和我正在进行的农场遥测系统中的远程节点之间进行通信是合乎逻辑的。在之前的项目中,我介绍了LoRa-CAN 网关,它将用于发送/接收来自主控制单元SX127x-RA-02-Module 的消息。
今天,我将专注于节点设备的设计,这是一个 Arduino 兼容板,内置 CAN 控制器和收发器(MCP2515 和 TJA1050),以及由 LiPo 电池供电的选项(18650 或单 3.7v Lipo cell),由MH-CD42 Module提供充电,类似于上面提到的SX128x项目中使用的那个。通过将跳线 H2 置于 V-REG 位置,该模块还可以直接从高达 12v 的直流电供电……
如前一个项目所述,MH-CD42 模块可提供高达 2A 的电流为电池充电,并在直接旁路威廉希尔官方网站 上提供 5V 直流电,以便在电池充电时为威廉希尔官方网站 的其余部分供电。此功能非常适合我的预期用途,因为当离网太阳能逆变器没有主动为主电池充电并提供 220 伏交流电时,我只需要在夜间使用电池供电。
PCB 设计得尽可能紧凑,其总占地面积与标准 Arduino UNO 相同。由于空间非常宝贵,并且为了确保在使用电池供电时消耗的额外组件绝对最少,我没有在板载任何 USB 到串行转换器。固件可以通过 AVRASp、USBASP、Arduino 作为 ISP 甚至外部 USB 到串行转换器(前提是您将引导加载程序加载到 Atmega 芯片)上传。
ATMEGA 芯片上所有未使用的 GPIO 引脚都分成了接头,除了 D10(在 MCP2515 CAN 控制器上用作 CE/SS)、连接到 MCP2515 的中断的 D9 和 D4,用于控制板载继电器。
MH-CD42 模块和 LiPo 或 18650 电池是完全可选的,通过将 H2 跳线移动到上面已经提到的 VREG 位置,设备可以在没有这些的情况下运行。这会将直流电压(高达 12v)从直流输入适配器转移到内置的 5v LDO 稳压器,以为设备供电。
如果将 H2 跳线置于 VBAT 位置,则需要安装 MH-CD42 模块为 PCB 的其余部分供电,同时保持锂聚合物电池或 18650 电池充电……
请注意:
使用 MH-CD42 模块时,通过直流输入适配器的总直流输入电压不应超过 5.5v DC!这是 MH-CD42 模块的操作参数的限制。不注意这一点会导致 MH-CD42 模块损坏。
您还可以直接从任何 5v 插头引脚使用稳压 5v DC 为模块供电。请注意,在这种情况下,
1) 电池不会充电。
2) LDO 稳压器将不工作。
微控制器
该模块可以使用任何 ATMEGA8a/88/168/328 AVR 微控制器,因为引脚是相同的。我相信这是一个优势,尤其是在当前的芯片价格下,我对 ATMEGA328P-AU 的最后报价是 69 美元!!!!相比之下,ATMEGA8a 或 ATMEGA168 的价格为 4 到 5 美元(我们还必须记住,328p 非常有名,因此需求量更大。8a/88 或 168 鲜为人知,少得多内存和闪存区域,因此会更便宜。不过,我在带有 Mini 内核的 Atmega8a 上的 I2C 有奇怪的问题,以至于 I2C 根本无法工作?
如果您打算在此板上使用 I2C,请从一开始就安装 328p,省去很多麻烦!
这是继电器驱动威廉希尔官方网站 。如您所见,它是光学隔离的,并且低电平有效。这意味着您必须将 D4 拉低才能使继电器通电。另请注意,虽然继电器与微控制器光隔离,但线圈不是电隔离的。磁性开关的负载将真正实现电隔离,当然前提是您不会做一些愚蠢的事情,例如将 PCB 的公共地用作继电器的公共地……
这是处理器和电源示意图。该威廉希尔官方网站 基本上是一个标准的 Arduino Nano,在下一个原理图页上对 CAN 控制器进行了修改。请注意,MH-CD42 未在示意图中显示。VBAT 网络直接连接到设备上的 VIN 引脚,BAT 网络连接到电池的正极。来自模块的 VOUT-5v 直接进入 5v 网络。所有的理由都是共同的。
这是 CAN 控制器和收发器威廉希尔官方网站 。MCP2515 通过 D13、D12 和 D11 直接连接到微控制器上的 SPI 总线,其中 D10 作为 CE/SS,D9 作为中断或 IRQ。需要注意的是,尽管 MCP2515 是支持 3v 的器件,但 TJA1050 Can 收发器仅支持 5v。这会阻止我们在 3v 下运行 PCB,当然,除非我们将 TJA1050 更换为支持 3v 的设备……
代码
该板已使用Cory J Fowler 的 mcp_can Arduino 库进行了广泛测试。它确实工作得很好。
由于我目前正在进行这两个模块的最终集成,因此我还没有准备好发布我的最终代码,在这篇文章中展示了 CAN-Bus 和 LoRa-to-CAN 网关设备之间的操作。一旦我很高兴所有问题都得到明确解决,我将发布我的代码。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !