低功耗启动无法正常工作


9

我有一个定制的Arduino ATMega328板,该板通常以5V @ 8MHz运行(使用Arduino Pro 3.3V 8MHz配置文件和引导程序)。我使用此设置的主要原因是,当主电源断开并且它开始用完电池电源(纽扣电池3V)时,我可以使电路板进入睡眠状态。5V和3V电源经过二极管“或”运算,并且5V输入连接至INT0。在代码中,当它检测到INT0下降到低电平时,它将初始化睡眠模式,并且所有电源都将掉电,但看门狗定时器除外,该定时器保持1Hz周期以保持内部计数并检查是否应将芯片唤醒。这适用精美当第一施加5V电源,则电池被插入,然后5V已断开。它进入睡眠状态,当5V恢复时它会唤醒,我可以看到它并没有计数。

然而,当3V应用问题就来了第一个。老实说,我不确定它是否正在启动。但是应该做的是引导,检查INT0(数字2)是否为低电平,如果是,则直接进入睡眠状态。通过观察电流消耗,我可以看到电流在几秒钟内达到几mA,然后下降到约0.3mA(仍然高于睡眠模式下的电流)。但是当我重新施加5V电压时,什么也没有。功率消耗会恢复,但没有响应(通过FTDI串行)。

也许我错过了一些东西,它无法在3V电压下启动...从理论上讲,它应该可以正常运行。

更新:我在D13上放了一个LED,并尝试了眨眼草图。从3V或5V开始工作正常。但是,当我运行固件并从3V启动时,LED刚开始疯狂闪烁。我不知道是什么原因造成的,因为我什至从未将D13设置为代码中的任何内容。但这让我觉得这与引导加载程序有关...


1
BOD设置为什么,启动时当前消耗多少?
伊格纳西奥·巴斯克斯

设置为2.7V。在最初的几秒钟内,在3V时消耗的电流约为4mA,然后下降,LED变得疯狂。
亚当·海尔2014年

您是否尝试过没有引导程序,即通过ISP?
伊格纳西奥·巴斯克斯

不,我还没有尝试过。奇怪的是,只运行眨眼草图就可以了
Adam Haile 2014年

2
您是否可以添加图表以“精确”显示接线方式,包括每个传感器或电池上的负载。您正在使用哪种纽扣电池,它是锂离子电池(可充电)还是碱性电池?
罗恩·J.

Answers:


6

所以...原来发生的一切都在代码中。事实证明,在代码的开头,我正在初始化INT0上的中断,该中断为低电平时。问题在于,当它以3V备用电源启动时,INT0总是很低,因为INT0连接到5V线路(这就是它知道要睡觉的方式)。由于INT0为低电平,并且中断在低电平时触发,因此会导致发生恒定中断,从不让程序其余部分随时运行。仅当我进入完全唤醒模式后,才切换为启用该中断,并且现在可以正常工作了。


4

究竟发生了什么,为什么不能根据提供的信息量确定原因。但是,我看到至少一个潜在的问题,至少可以部分解释所描述的症状。

您说您正在使用二极管选择电源,其中一个电源是3V电池。如果您使用的标准二极管的电压下降了〜0.6V,那么MCU的电源电压仅为〜2.4V。如果使用电压降在0.15-0.45之间的肖特基二极管,则电源电压可能低至2.5V。您将BOD电压设置为2.7伏,因此理论上MCU永远不会通过电池启动。

至于为什么您可以在5v电压下启动它,然后降到3v电压,然后再次备份-我不确定。您可能会在代码中禁用BOD……也许……不确定为什么会起作用,但可能无法保证它会起作用。

我设置了一个5v和3.3v的二极管开关电路,以查看电压切换时示波器上的外观。当以3.3v的电压切换到5v时,电压最初会振荡很多。当MCU试图退出睡眠状态时,这可能会引起一些问题。在VCC和GND之间设置一个上限可以很好地平滑信号。从5v切换到3.3v时,实际上没有任何振荡,只是干净的下降。

根据此信息,您似乎应该降低BOD阈值或关闭BOD,并在VCC和GND之间放置一个去耦电容。您可能还应该确保在INT0上有一个下拉电阻,并阅读MCU数据手册的各节,其中介绍了各种睡眠模式以及所有有关睡眠和唤醒的注意事项-这确实涉及其中。干杯


2

我认为问题出在您的引导加载程序上,而不是您的思维方式上。

当Arduino启动时,引导加载程序会完成一些任务,例如寻找串行主机或从闪存加载程序数据,这将比休眠的Arduino消耗更多的精力。

我认为您的Arduino无法启动的原因是因为引导加载程序需要一个准确的时钟源,但是对其施加3v电压会弄乱该时钟,并且可能会崩溃或等待3.3v电压来获得稳定的电压源。

查看数据表:

版权ATMEL

我们看到,唤醒(运行引导程序)时消耗的电流可能约为2mA,而休眠电流约为0.8微安。如果没有适当的电流,这肯定会导致启动中断。

也许您只应使用5v电源将其打开,或者可能需要更高电流,更高电压的电池。


这是否也意味着Blink也不起作用?而且,我从纽扣电池运行了多个Arduino,没有任何问题。它们可以在短时间内提供大量电流。
Cyber​​gibbons 2014年

-5

尝试通过转到工具>刻录引导程序来重新引导arduino


1
您能否添加更多有关进一步执行此操作的详细信息?这不是很具体:您可以将什么连接到Arduino?有没有风险?谢谢!
匿名企鹅

为了安全起见,我会拔掉所有插头,但是不应该有任何风险
DeveloperACE

刻录引导加载程序的方法如下:arduino.stackexchange.com/a/474/37。您的答案并未说明所有操作方法。
帽子的家伙
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.