arduino - 测量 0-10V 模拟信号有什么意义?(Arduino、ESP32、ESP8266 和 ADS1115)
问题描述
我正在尝试在 arduino nano 的帮助下从压力表(Balzers SingleGauge TPG 251)读取 0-10V 模拟信号。使用分压器,我可以达到 0-5V 的范围,而不会损坏我的 arduino。可悲的是,就我的目的而言,集成 10 位 ADC 的分辨率非常低(5000mV/1023 ~ 5mV 步长)。压力表的测量范围为 10e-11 mbar 至 1000 mbar,并相应地给出 0-10V 的值。通过观察,我看到显示以这种方式更改值:
- 1000 到 100 分 10 步 = 91 个数字
- 0.1 步中的 100 到 1 = 991 个数字
- 9.9e-1 到 1e-2 = 每十年 99 个数字(有 11 个十年 --> 99*1 = 1089 个数字)
- 总共 2171 个单独的模拟步进(如果步进是线性的)。
这意味着在 0-10V 范围内,每个模拟步长为 4.6 mV。由于我使用的是电压除法器,因此 mV/步长的差异将减半,达到 2.3 mV/步。这显然很难解决,因此我需要使用 12 位或 16 位 ADC。我决定使用 16 位 ADC,因为为什么不具有更好的精度,对吧?我已经购买了 ADS1115,我希望能够更好、更精确地读取这些值(最大 0.15mV)。使用模拟值,我可以反向获得压力作为数字。
现在真正的问题来了。我希望将设置连接到本地 wifi,人们可以在其中查看压力。而且我还想让他们输入他们希望收到的每封电子邮件的提醒值,他们也输入。我已经在可能的情况下使用 ESP32 ( https://randomnerdtutorials.com/esp32-email-alert-temperature-threshold/ )看过本教程。所以我会尝试用一个 ESP8266 nodeMCU 来完成它。
我知道这需要接受很多,我希望有人对我如何在这个项目中取得进展有一个想法。以下是我这边的一些问题:
这个项目我需要一个 arduino 和一个 ESP8266 吗?由于 Arduinos 的模拟范围是 0-5V,而 ESPs 的模拟范围是 0-1V,因此 arduino 可以处理更多。然后,ESP 的目的只是发送电子邮件和 Web 服务器的内容。
有没有办法只使用 ESP8266 和 ADS1115 并仍然以高精度读取模拟值?还是只是不可能?
有什么反馈在这里有意义吗?也许有一种方法可以做到这一点,我还没有用谷歌搜索过。
先感谢您!
解决方案
ADS1115 具有 I2C 接口。只需将其连接到 ESP 即可。不需要 Arduino nano。
请阅读您的 ADC 的数据表。
http://www.esp8266learning.com/ads1115-analog-to-digital-converter-and-esp8266.php
推荐阅读
- python - 将5001字节到5200字节范围内的数据从一个文件保存到另一个文件
- javascript - 如何从不和谐频道分散文件并将其发送到另一个不和谐频道?
- python - 使用Function和For循环for list的解决方案
- oauth - Keycloak - 如何更改 EmailSenderProvider?
- php - php str_replace 一一循环
- c - 'assert' 未声明,尽管 assert.h 包含在文件中
- angular - 在两个活动组件之间共享单个 API 调用的 Angular 最佳实践
- oracle-apex - Oracle Apex - 如果更改一页,应用程序的用户是否必须再次登录?
- node.js - Puppeteer 错误找不到选择器的节点(按钮单击)
- php - 将桌子与 foreach 并排放置