如何在 Arduino 中使用 3.3V 和 5V 输出传感器?

电器工程 Arduino
2022-02-02 09:47:38

要在使用 3.3V 传感器时从 Arduino ADC 获得全分辨率,您必须做两件事。

  1. 将 3.3V 电源连接到 AREF 引脚。
  2. 在代码中调用analogReference(EXTERNAL)

但是如果我必须混合 3.3V 和 5V 输出传感器呢?我有哪些选择?

3个回答

一个简单的解决方案是使用电阻分压器(比率约为 1:1.94)并将 5v 信号降低到 3.3v 的峰值,这样您就可以保持全分辨率,而无需切换参考。合适的分压器是使用从传感器到模拟输入的 18k 和从模拟输入到地的 33k。这会将 5v 输入转换为 3.23v 输入。如果需要,使用更高精度的电阻器会使电压接近 3.3v。您需要确保传感器能够提供给定值所需的电流——在本例中约为 0.1mA。ATMega 模拟输入的输入电阻约为 100M 欧姆,因此您可以在担心输入电阻的影响之前显着增加这些值(减少传感器上的负载)。

两件事,忍受 3.3v 传感器降低的分辨率,并将参考电压保持在 5V。这就是我通常做的,它已经足够好了。

您还可以在读取每个相应传感器时即时切换您的模拟参考。我确实记得阅读过有关混合外部参考和内部参考以及在 AREF 上具有串联限流电阻的信息,因此请仔细阅读 Arduino 参考的那部分内容。

您也可以考虑寻找更新版本的传感器。您可能能够获得在相同电压限制下工作的传感器,或者您可能会发现可以使用更新版本的传感器,这些传感器将为您提供数字输出,并且可以使用 I2C 或其他简单的串行通信协议进行轮询。当然,这需要购买新芯片,但它们并不是非常昂贵,而且您不仅可以消除问题,而且您可能会为您的项目提供更高水平的精度,因为您不必担心噪音在你的电路中。

没有重新设计您的整个项目以适应新芯片,John C and the ham 提供了出色、简单的解决方案。根据我的经验,我使用 5v 电源和参考电压运行 3v3 传感器,并且在休闲项目中遇到的噪声问题比分辨率损失更大。这是最简单的出路,但确实需要你做一些数学运算,我已经相应地投票给了 ka1kjz 的帖子(请检查参考表)。

就分压器解决方案而言,只要您使用更高精度的电阻器,您就可以获得所有测量值都在相同电压范围内的优势,并且您可以获得使用 AREF 跟踪任何电压纹波的比率校正优势。然而,在实践中,我发现我的项目中的噪声和缺乏校准技术导致的误差比一点电压纹波或 10% 电阻器可能合理造成的误差更大。出于这个原因,我也投票赞成 JohnC 的解决方案,因为他更详细地介绍了所有这些。