Arduino:测量外部电压

电器工程 Arduino 电压测量 电池
2022-01-11 06:58:50

我在尝试测量纽扣电池的外部电压时遇到了“问题”。我已经简化了我的电路,但基本上我有一个由 Arduino 5v 输出供电的 DS1307 实时时钟,以及一个连接到 vBat 的纽扣电池,以在 Arduino 关闭时保持时钟活跃。我的想法是通过将其正极连接到模拟输入并读取电压电平来使用 Arduino 测量电池电量。所以,我想,由于最大电压是 3v,我可以使用 3v3 作为 AREF 并将模拟参考设置为外部,然后读取准确的结果。结果非常酷,Arduino 的读数与我的万用表读取的电池电压相同。当我从 Arduino(USB 连接)断开电源时,问题就来了。令我惊讶的是,Arduino 没有关闭(一些 LED 一直亮着),

为什么会这样?Arduino 如何从模拟引脚获取电流?这个小电路是电子畸变吗?

在此处输入图像描述

1个回答

AVR 控制器上的大多数(如果不是全部)输入引脚都受到钳位二极管的内部保护。这些二极管可防止输入电压高于电源电压。

为什么有这些内部二极管:

重要的是要认识到,当输入引脚确实上升到电源电压以上并且这些二极管不存在时,芯片可能会充当 SCR、锁存器、使电池短路,并且芯片本身可能会因过流/过热而损坏.

为什么您的 Arduino 由电池供电 看看下面的电路图。当 Vcc 与正常电源分离时,有一条从电池通过 D1 到 Vcc 的路径。电池电压刚好够控制器运行。

示意图

模拟此电路- 使用CircuitLab创建的原理图

如何解决

解决方案很简单,在电池和控制器输入之间串联一个高阻值电阻。大多数 AVR 的最大输入漏电流 (I IL ) 规定为 1μA,因此您要确保该电流的电压降是可接受的,例如 100kΩ。

但要小心!

您必须意识到输入可能会从您的纽扣电池中汲取此电流并缩短其使用寿命。