为电池供电的数据收集项目选择微控制器


18

我计划测量一口井中的水位,该井深约10 m,最大水位可达5 m。我的计划是使用超声波传感器 HC SR04来测量深度,然后通过ZigBee将其传输到我家中的Raspberry Pi。

如上 一个问题所述,我需要选择一个微控制器将超声传感器和ZigBee模块连接在一起。

选择的参数是:

  1. 低功耗:我计划使用电池供电,因此低功耗是当务之急。到目前为止,我还没有电源使用的目标,电池更换之间的间隔,甚至没有使用哪个电池。由于这更多的是学习项目,并且在我家中,所以我很灵活,但较低的功耗会更好。

  2. 低成本:这对我来说是一个学习项目,我不想为此花很多钱,因此降低成本会更好。

  3. 在井内工作:整个项目将在井内进行,并暴露在强烈的阳光和雨水中。我将提供一个很好的理由和保护。

  4. 易于编程。

我选择ZigBee是因为它很简单,可以满足我的用例和低功耗要求。但是我的要求是传输传感器数据,并且我愿意接受其他传输方式。我的井到Raspberry Pi的距离约为6米,中间有一堵墙。我计划在水泵运行时每10分钟和每分钟两次测量水深(每天大约20分钟)。


2
这感觉相当广泛,或者可能是题外话。板上的任何小型MCU都适用。如果您不确定Zigbee,建议您查看BBC micro:bit,它带有BLE并带有电池连接器。
肖恩·霍利哈内

2
如果要使用Zigbee无线电,则至少应评估将其与MCU(通常为ARM Cortex-M)CPU结合使用的部件。这并不意味着您必须走那条路,但如果您决定不这样做,则应有充分的理由。
克里斯·斯特拉顿

2
“井内”是什么意思?案件会在水下吗?不要期望水下的Xbee模块有任何发射或接收。许多工作在2.4 GHz频带上,该频带被水很好地吸收。其他的则工作在900 MHz左右,也可能无法很好地穿透水。如果箱子不是在水下,则用xbee固定6m +墙壁即可。
乔纳斯·谢弗

“井内”是指将设备放置在井内,但要高于水。
拉吉

Answers:


20

微控制器选择的一般过程。

  1. 总结您对微控制器的要求。例如在这种情况下:

    • 1个硬件计时器,用于测量触发脉冲和回波脉冲之间的时间。
    • 2个GPIO引脚连接到传感器的Echo和Trigger引脚。
    • 可能是UART,用于连接RF通信模块。
    • 1个ADC输入,用于监视电池电压。


    您可以与此配合使用8引脚控制器,这可能还需要出于一般目的使用编程器引脚。

  2. 确定所需的CPU性能内存要求。使用8位MCU是否足够?或者您需要32位MCU?可接受的CPU时钟速度是几十MHz还是1 MHz就足够了?需要多少程序存储器,RAM和ROM?

    给定上述应用程序,您不需要很高的计算性能。也许一个8位控制器就足够了(尽管不会比32位控制器便宜很多,所以您可以在这里根据价格决定)。

  3. 低功率。当不是很关键时,您可以使用电源电压和系统时钟频率最低的低功耗模式与几乎所有类型的控制器相处。如果更重要,则可以通过使用专用的低功耗MCU内核(如ARM®Cortex®-M0或M0 + CPU内核)开始缩小搜索范围。通常,数据表中包含大多数低功耗模式/ VCC / SysClk频率的表格,更好的表格还会列出每个外设的功耗。

  4. 开发工具。我认为这是一个非常重要的方面。专用的硬件编程器工具可能会花费很多钱,因此通常我会选择已经拥有编程器的MCU。当您改用其他家族或品牌时,最好投资具有板上编程器的开发板,该板上可稍后用于对自定义板进行编程。通常,始终首先检查能够将程序下载到微控制器的费用是多少。

正如@Sean在评论中指出的那样,一种可行且具有成本效益的解决方案是搜索带有集成的可编程应用程序MCU的RF模块,该模块可以在处理RF通信部分的同时运行固件。此类模块适用于BLE,WiFi和ZigBee,并可能适用于许多其他技术。

此外,关于任何MCU如何在井中生存的问题。这一切都将在您为设备提供的机箱上找到。例如,如果机箱不是100%防水的,那么选择哪个MCU都没关系。


TL; DR; 这是产品特定部分。

  1. 您可以选择ATtiny25花费0.87 $ / 1片上Farnell集团。8位8针因此不会占用太多空间。在掉电模式下,它在禁用看门狗的情况下在3 V时消耗0.2μA的电流。如果使能了看门狗,则消耗2-4μA的电流。它与Arduino兼容,因此编程不会花很多钱(USBasp或AVRdude编程器在eBay上的成本约为2美元)。(请注意:您应该使用Arduino软件串行库来连接RF通信模块,因为该MCU仅具有硬件SPI。)总而言之,它体积小,价格便宜,功耗相对较低,但是位差分的UART可能虽然使它复杂化。它具有2 kB的程序存储器,应该已经足够了。

  2. 或者使用ARM Cortex M0,后者在待机模式下消耗2μA,在停止模式下消耗5μA。这种MCU例如是STM32F030F4,成本为1.09 $ / 1个。它是功能更强大的32位控制器,最大系统时钟频率为48 MHz,但您只能看到+ 0.2 $。它带有16 kB程序存储器,远远不够完成此简单任务。它具有SPI,UART,I2C和许多其他外设。编程将花费更多,专用的程序员在Farnell花费20美元。我认为这不值得。相反,您可以投资F0系列的开发板,该开发板具有板载编程器(ST-LINK)STM32F0发现板成本约10美元。您可以开始使用该电路板进行原型设计,并在以后用作程序员。


3
请注意,发现板和核板的ST-LINK通常可用于板本身以外的其他MCU。不确定该特定的板,但是从外观上看,它使用SWD,并且可以使用右侧的跳线断开连接。这样做的好处是,ST-LINK不仅是程序员,而且是在线调试器极大地简化了开发工作。
乔纳斯·谢弗

3
另外,如果您不关心XBEE的答复,则可以使用ATtiny的通用串行接口来获取一个UART,该UART的速度比按需完成的软件实现要快。
乔纳斯·谢弗

3
值得一提的是,无线电模块经常带有非专用的MCU资源(并且存在一些模块来简化类型专用)。该CPU通常与RF栈共享的,所以你需要接受定期的中断等
肖恩Houlihane

3
当低功率运行(电池)很重要时,ULPBENCH是很好的资源。
neonzeon

5

考虑到编程的简便性和低成本,我可能会从某种Arduino模块(或低成本克隆)开始。超声波传感器的代码已经存在,ZigBee的示例代码也已经存在,例如使用Digi XBee模块。在后者上,您将XBee连接到串行端口,并与古老的“ AT”命令界面建立连接后,便有了一个点对点通道,可以向下发送任何文本(到Raspberry Pi )。ZigBee并不是最便宜的短距离通信类型,但在过去5年中,XBee模块的实际价格已经下降。

我知道有些人对Arduino上使用的基于C / C ++的语言有疑问,但是在这种情况下,您将很大程度上将其他用户已经存在的脚本合并在一起。

如果您四处寻找“ Arduino睡眠模式”,那么您会找到一些示例,说明如何将Arduino置于低功耗模式,并偶而唤醒以读取读数,进行交流,然后重新进入睡眠模式。


1
虽然使用ATmega芯片可以实现良好的电源管理,但典型的Arduino 具有寄生功率消耗,这将严重限制电池寿命。
克里斯·斯特拉顿
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.