将风向传感器的 ADC 值转换为度数

Posted

技术标签:

【中文标题】将风向传感器的 ADC 值转换为度数【英文标题】:Converting ADC value from wind direction sensor into degrees 【发布时间】:2017-08-04 18:53:01 【问题描述】:

我正在使用树莓派构建一个气象站,并尝试添加风向传感器(通过我正在等待接收的 12 位 ADS1015 模数转换器)。我已经查看了一段时间如何在 python 中执行此操作,但只能在 arduino 上获得 1 段代码,将原始值转换为实际风向,以度为单位。

我现在希望在 python 中,在树莓派上做同样的事情。

假设我在树莓派上使用连接到 3.3 伏电压的 12 位 ADC,我如何将来自 ADC 的原始信号(使用adc_value = adc.read_adc(1, gain = 1) 和用于 ADC 的 Adafruit 库获得)转换为以度为单位的实际风向?传感器的模拟电压范围从输入电压的 5%(表示 0 度)到输入电压的 95%(表示 360 度)。我不确定如何映射它们。

【问题讨论】:

【参考方案1】:

我在电子表格中做了一些建模,这就是我过去为此类设备导出线性映射的方式。假设范围内的线性:

图表显示了根据数据表,从 5% 到 95% 的潜在 ADC 值的线性范围。记录高点和低点后,我计算了每 20 度的 delta ADC。然后我绘制了它们并将线性趋势线与生成的 y=mx+b 公式一起包括在内。这是您需要使用的原始 ADC 值(基于 3.3V)的转换公式。

现在,至于如何在 Pi 上的 python 中执行此操作,那是另一回事。您使用的设备是 I2C 设备。关于这个主题有很多教程。

    首先,您必须在 Pi 上的 Linux 上启用 I2C,for example。 请参阅有关 I2C 设备配置和接线的在线教程。 Digikey 上适用于您设备的数据表是一个很好的起点。 使用您通过引脚选择的地址,使用在线广泛提供的 python 库读取设备,for example。

【讨论】:

抱歉回复晚了...谢谢,这对您有很大帮助!然而,我试图找出的一件事是实际将原始值从模拟引脚映射到它们的等效风向的代码,就像你在上表中所做的那样。换句话说,我怎样才能在代码中计算那个 excel 电子表格,所以我可以转换成任何值?我可以读取传感器,我只是不知道如何在不查看表格的情况下计算实际方向,这只会让我得到 19 个值而不是总数 360 哦,我现在明白了。谢谢!我见过的这些稍微复杂的数学都不是计算价值的,只是一个简单的除法。最后一件事,所以我可以更新并检查当前运行的 arduino 上的代码:我将 ADC 读数除以什么来获得 arduino 的 10 位 ADC 的度数,运行电压为 3.3 伏?再次感谢 这很奇怪,我将 ADC 的值除以 4,但是当我旋转传感器时,我只能看到从 10 到 199 度左右的值。 @HenryHunt 在你的情况下我会做的是暂时搁置学位的想法。关注返回的 ADC 值。慢慢旋转传感器,看看它们的范围是 0 到 1024 还是什么。这是第一步,就是要准确了解所报告的内容。然后我们可以在此基础上更新我们的模型(公式)。可能还想用您现在使用的代码更新您的问题。 好的,范围是32到637

以上是关于将风向传感器的 ADC 值转换为度数的主要内容,如果未能解决你的问题,请参考以下文章

树莓派通过模数转换芯片ADC0832读取LM35温度传感器数据

嵌入式Linux裸机开发(十四)——ADC

浅谈传感器常用Delta-SigmaADC

Proteus仿真51单片机+红外测距仪(GP2D12)+ADC0809模数转换

STM32上的ADC单次转换

STM32 ADC 值读数过高