就像ajs410和Thomas所说,使用二极管压降从 5V 变为 3.3V 是个坏主意™。那是因为,尽管你在学校被告知,二极管电压绝不是恒定的。3 个二极管压降可能会给您大约 2.3V 和 3.2V 之间的任何电压,这对您来说可能太低也可能不会太低μC 或 SD 卡。
我首先将 D4 替换为肖特基类型,例如BAT54,它的漏电流低 <1μ一个典型。这将为缓冲电容器提供几百毫伏的额外费用。
接下来是3.3V电源。使用低接地电流LDO,例如 Microchip MCP1703,其接地电流仅为 2μA. (精工S-812C40是我的最爱,它的规格甚至更好,但小批量时的可用性似乎很差。)
然后你想检测你的 5V 电源的损失。为此,我通常使用MAX809。当其输入电压降至某个阈值以下时,这将产生一个低输出信号。对于 5V 电源,可提供 4.63V、4.55V 和 4.38V 的阈值电压。该MAX809的输出去你μC 的中断管脚,让您在 5V 下降时立即收到警告,您可以立即将缓冲区写入 SD 卡。
现在只剩下一点:缓冲电容的大小。在写入 SD 卡时,您需要知道从 3.3V 电源中消耗了多少电流。假设这是 20mA。当汲取恒定电流时,电容器电压将线性下降:
ΔV=I×tC
要么
C=I×tΔV
让我们进一步假设您需要 100 毫秒来将缓冲区写入 SD 卡。那么剩下的唯一变量是ΔV. 我们从 5V 减去 1 个肖特基二极管压降开始,得到 4.5V。MCP1703 的最小压降为 725mV,因此我们可以降至 4V,并且ΔV= 0.5V。然后
C=20mA×100ms0.5V=4000μF
现在我使用的值是粗略的猜测,您必须使用正确的数字进行计算,但猜测表明您甚至可能根本不需要 0.5F 超级电容,尽管它为您提供了很大的安全余量。例如,您将有 10 秒而不是 100 毫秒来将缓冲区刷新到 SD 卡。
(精工 S812C 的压降仅为 120mV,因此这将使您的允许电压降低加倍,从而使您的可用时间增加一倍。)