【问题标题】:Convert reading from Temperature Sensor connected to XBee转换连接到 XBee 的温度传感器的读数
【发布时间】:2016-01-24 18:52:25
【问题描述】:

我想使用 lm35 温度传感器和 xbee 传感器计算远程位置的实际温度。我从传感器获得模拟输入,但无法计算温度。完整的场景如下。

场景:

我已将 LM35 温度传感器连接到 XBee(考虑传感节点)引脚 0,其模拟 (ADC) 和采样率为 4 秒。同样,我有另一个 XBee 作为协调器,它接受来自 xbee 传感节点的值。协调器通过其 TX 和 RX 引脚连接到 BeagleBone 的 UART-4。我使用python-xbee python 库从串口读取,即UART-4。我成功地从远程 xbee 获取模拟值。但我无法根据收到的模拟值计算温度。

我收到的示例帧

{'source_addr_long': '\x00\x13\xa2\x00@\xd6\xa58', 'source_addr': '\xaa\xf9', 'id': 'rx_io_data_long_addr', 'samples': [{'adc-0': 182, 'adc-1': 466, 'adc-2': 1023}], 'options': '\x01'}
{'source_addr_long': '\x00\x13\xa2\x00@\xd6\xa58', 'source_addr': '\xaa\xf9', 'id': 'rx_io_data_long_addr', 'samples': [{'adc-0': 182, 'adc-1': 469, 'adc-2': 1023}], 'options': '\x01'}
{'source_addr_long': '\x00\x13\xa2\x00@\xd6\xa58', 'source_addr': '\xaa\xf9', 'id': 'rx_io_data_long_addr', 'samples': [{'adc-0': 182, 'adc-1': 468, 'adc-2': 1023}], 'options': '\x01'}
{'source_addr_long': '\x00\x13\xa2\x00@\xd6\xa58', 'source_addr': '\xaa\xf9', 'id': 'rx_io_data_long_addr', 'samples': [{'adc-0': 182, 'adc-1': 470, 'adc-2': 1023}], 'options': '\x01'}
{'source_addr_long': '\x00\x13\xa2\x00@\xd6\xa58', 'source_addr': '\xaa\xf9', 'id': 'rx_io_data_long_addr', 'samples': [{'adc-0': 182, 'adc-1': 466, 'adc-2': 1023}], 'options': '\x01'}
{'source_addr_long': '\x00\x13\xa2\x00@\xd6\xa58', 'source_addr': '\xaa\xf9', 'id': 'rx_io_data_long_addr', 'samples': [{'adc-0': 183, 'adc-1': 466, 'adc-2': 1023}], 'options': '\x01'}
{'source_addr_long': '\x00\x13\xa2\x00@\xd6\xa58', 'source_addr': '\xaa\xf9', 'id': 'rx_io_data_long_addr', 'samples': [{'adc-0': 178, 'adc-1': 466, 'adc-2': 1023}], 'options': '\x01'}
{'source_addr_long': '\x00\x13\xa2\x00@\xd6\xa58', 'source_addr': '\xaa\xf9', 'id': 'rx_io_data_long_addr', 'samples': [{'adc-0': 180, 'adc-1': 466, 'adc-2': 1023}], 'options': '\x01'}
{'source_addr_long': '\x00\x13\xa2\x00@\xd6\xa58', 'source_addr': '\xaa\xf9', 'id': 'rx_io_data_long_addr', 'samples': [{'adc-0': 177, 'adc-1': 466, 'adc-2': 1023}], 'options': '\x01'}
{'source_addr_long': '\x00\x13\xa2\x00@\xd6\xa58', 'source_addr': '\xaa\xf9', 'id': 'rx_io_data_long_addr', 'samples': [{'adc-0': 182, 'adc-1': 466, 'adc-2': 1023}], 'options': '\x01'}
{'source_addr_long': '\x00\x13\xa2\x00@\xd6\xa58', 'source_addr': '\xaa\xf9', 'id': 'rx_io_data_long_addr', 'samples': [{'adc-0': 183, 'adc-1': 466, 'adc-2': 1023}], 'options': '\x01'}
{'source_addr_long': '\x00\x13\xa2\x00@\xd6\xa58', 'source_addr': '\xaa\xf9', 'id': 'rx_io_data_long_addr', 'samples': [{'adc-0': 182, 'adc-1': 466, 'adc-2': 1023}], 'options': '\x01'}
{'source_addr_long': '\x00\x13\xa2\x00@\xd6\xa58', 'source_addr': '\xaa\xf9', 'id': 'rx_io_data_long_addr', 'samples': [{'adc-0': 183, 'adc-1': 466, 'adc-2': 1023}], 'options': '\x01'}
{'source_addr_long': '\x00\x13\xa2\x00@\xd6\xa58', 'source_addr': '\xaa\xf9', 'id': 'rx_io_data_long_addr', 'samples': [{'adc-0': 166, 'adc-1': 466, 'adc-2': 1023}], 'options': '\x01'}
{'source_addr_long': '\x00\x13\xa2\x00@\xd6\xa58', 'source_addr': '\xaa\xf9', 'id': 'rx_io_data_long_addr', 'samples': [{'adc-0': 166, 'adc-1': 466, 'adc-2': 1023}], 'options': '\x01'}
{'source_addr_long': '\x00\x13\xa2\x00@\xd6\xa58', 'source_addr': '\xaa\xf9', 'id': 'rx_io_data_long_addr', 'samples': [{'adc-0': 166, 'adc-1': 466, 'adc-2': 1023}], 'options': '\x01'}

注意:

adc-0 是我连接温度传感器的远程 xbee 的引脚。

adc-1 是我连接湿度传感器的远程 xbee 的引脚。

adc-2 是我连接 CO2 传感器的远程 xbee 的引脚。

如何计算实际温度? (当前温度是~16到~18)

【问题讨论】:

    标签: python beagleboneblack xbee


    【解决方案1】:

    传感器文档应提供将电压转换为温度和湿度的公式。

    您可以通过将读数乘以参考电压,然后除以 1023,将 ADC 读数转换为电压。您没有指明您使用的是哪个 XBee 模块,因此您必须查看数据表中的参考电压——它可能位于其中一个引脚上,或者可能是某个固定值。

    通过 Google 搜索,我发现 LM35 产生的电压为每摄氏度 10 mV。 182 / 1023 = 0.178 如果你的参考电压是 1V,那么就是 17.8C。

    湿度计算将类似。关键是将 ADC 读数转换为电压,然后将其代入数据表中提供的公式中。

    【讨论】:

    • 0x3FF,ADC读数的最大值。将读数除以得到参考电压的百分比。
    • 感谢@tomlogic,真的很有用!你能告诉我如何将湿度模拟值转换为实际百分比吗?我的第二个参数是湿度,对于上述样本,湿度几乎恒定为 466
    • 阅读传感器的规格表并使用它提供的公式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-08
    • 2017-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-14
    • 2020-07-25
    相关资源
    最近更新 更多