如何在光敏电阻的模拟值发生变化之前让 Attiny 深度睡眠?

How to deep sleep an Attiny until an analog value of a photoresistor changes?

对于 电池供电 项目,我想在程序启动后立即将 Attiny85 置于深度睡眠模式并让它唤醒仅当传感器值(在本例中为光敏电阻器)发生变化时。不幸的是,我只能在互联网上找到按钮中断的例子,而找不到光敏电阻的例子。有谁知道我如何实现它,或者如果它不可能?

原来这可能是软件问题

可能以最低功耗和最简单的方式实现它是...

  1. 将模拟传感器值连接到 ATTINY 上的任一模拟输入引脚。
  2. 确保禁用该引脚上的数字缓冲器。
  3. 将 ADC 设置为指向引脚并设置其他相关值,如预调用器。
  4. 设置看门狗定时器以触发周期性中断。
  5. 进入深度睡眠并等待看门狗定时器触发。

每次看门狗触发...

  1. 启用 ADC。
  2. 取样。
  3. 如果值的变化超过您的阈值,则跳转到主代码。
  4. 禁用 ADC。
  5. 回去深度睡眠。

这将如何有效地真正取决于定时器中断触发的频率 - 越少越好。如果您的应用程序可以只检查传感器,比如说,每秒一次,那么我敢打赌用电量将是个位数的微安或更少。

如果当传感器值发生变化时你真的需要非常低的延迟,那么你可以改用内置的模拟比较器...... .. 当输入电压高于或低于阈值时产生中断,但这可能会消耗更多的功率,因为​​只有模拟比较器本身在开启时使用 ~30ua,并且您还需要产生您所需要的电压与内部 1.1 电压参考或外部电阻桥或缓冲电容器进行比较。