如何提高ESP32睡眠时间的准确性



当发送一个esp32设备进入睡眠状态大约一天时,它会比预期提前3.34%醒来。这相当于大约48分钟。

这是该设备的预期精度,还是可以调整为更准确?

混凝土设备是ESP32-CAM,在室温约25°C下以80MHz运行。

发送设备进入睡眠状态的代码:

unsigned int time_to_sleep_sec = 86400;
esp_sleep_enable_timer_wakeup(1ULL * unsigned int time_to_sleep_sec * 1000 * 1000);
esp_deep_sleep_start();

该设备在大约83465秒后醒来,而不是86400秒。

默认RTC时钟源的准确率仅为5%,因此在规范范围内。检查信息:

RTC计时器具有以下时钟源:

内部150kHz RC振荡器(默认(:具有最低深度睡眠电流消耗并且不依赖于任何外部组件。然而,由于频率稳定性受到温度的影响波动,时间可能在深度睡眠模式和轻度睡眠模式中漂移。

外部32kHz晶体:需要连接32kHz晶体XP和32K_ XN引脚。在费用略高(1 uA(深度睡眠电流消耗。

32K_XN引脚处的外部32kHz振荡器:允许使用32kHz时钟由外部电路产生。外部时钟信号必须连接到32K_ XN引脚。振幅应小于1.2 V对于正弦波信号,而对于方波信号小于1V。常见的模式电压应当在0.1<Vcm<0.5xVamp,其中Vamp是信号幅度。此外,1 nF电容器必须放置在32K_ XP引脚和地之间。在这种情况下,32K_XP引脚不能用作GPIO引脚。

内部8.5MHz振荡器,除以256(~33kHz(:提供比内部更好的频率稳定性以更高(5 uA(深度睡眠为代价的150kHz RC振荡器电流消耗。它也不需要外部组件。

因此,如果您无法添加组件,5uA的"费用"似乎是合理的。否则,最好的解决方案是添加一个外部32kHz晶体。

或者你在睡眠中唤醒设备,借助SNTP等互联网来调整时间。

最新更新