Датчик DHT11: режим ожидания или выключение?
У меня есть ATmega328P, который контролирует температуру и влажность в помещении. Мне достаточно контролировать каждые 8 секунд. В эти 8 секунд я укладываю свой Atmega в сон.
Теперь я хочу узнать: влияет ли выключение DHT11 на эти 8 секунд на работу датчика или целесообразно оставить его включенным (в режиме ожидания) на эти 8 секунд?
[Выключение означает подключение Vcc датчика к GND с помощью digitalWrite(Sensor_pin,LOW);]
Кроме того, (следующий вопрос применим только в том случае, если ваш ответ на предыдущий вопрос — оставить его в режиме ожидания):-
Я хочу изменить приведенный выше проект таким образом, чтобы температура и влажность измерялись только при нажатии кнопки ввода. В этом случае следует ли мне продолжать работу DHT11?
Является ли работающий датчик DHT11 более точным, чем мгновенно включенный DHT11?
[И если вы размышляете, да, я хочу сэкономить 50 микроампер тока в режиме ожидания датчика (но, конечно, не жертвуя точностью датчика)]
1 ответ
Лучший ответ:
В такие моменты полезно обратиться к техническому описанию. В этом документе вы можете найти этот абзац:
4. Питание и пин
Питание DHT11 составляет 3-5,5 В постоянного тока. Когда питание подается на датчик, не отправляйте никаких инструкций датчику в течение одной секунды, чтобы передать нестабильное состояние. Один конденсатор номиналом 100 нФ можно добавить между VDD и GND для фильтрации питания.
Итак, вы можете видеть, что если вы полностью отключите датчик, вам придется подождать не менее 1 секунды, прежде чем вы сможете что-либо с ним сделать.
Если он находится в режиме низкого энергопотребления, то по умолчанию между показаниями вы можете начать считывание сразу же, как только ваш ATMega проснется.
Поэтому вам следует спросить себя: потребляет ли работа ATMega на полной мощности в течение 1 секунды больше или меньше энергии, чем работа DHT11 в режиме пониженного энергопотребления в течение 8 секунд?
Грубо говоря, если ATMega потребляет 30 мА (примерная цифра) в течение 1 секунды (это 30 мАс - миллиампер-секунд), а DHT11 потребляет 50 мкА в течение 8 секунд, то у вас есть 0,05*8 = 0,4 мАс.
Это 0,4 мАс (спящий режим) против 30 мАс (выключенный). Поэтому я бы оставил его включенным и избежал задержки в одну секунду при полной мощности.
Другой вариант, который может сэкономить больше энергии, это:
- Выключите DHT11
- Сон 8 секунд
- Включите DHT11
- Сон 1 секунда
- Прочитать DHT11
- Перейти к 1
Конечно, это означает, что ваш цикл тогда займет 9 секунд, а не 8. Вы можете компенсировать это, проспав несколько раз, чтобы получить 7 секунд:
- Сон 4 секунды
- Сон 2 секунды
- Сон 1 секунда
- Включите DHT11
- Сон 1 секунда
- Прочитать DHT11
- Выключите DHT11
- Перейти к 1
Но, конечно, это сделает ваш сон менее эффективным — так стоит ли оно того?
- Идентификация детали
- Что выбрать между датчиками температуры и влажности: AM230x или DHT22?
- BMP280 возвращает 0
- Нужен усилитель сигнала датчика качества воздуха MQ135? Датчик более высокого качества?
- Потребляемая Мощность Arduino
- Проблема с подключением датчика сердцебиения и температуры на arduino uno, но работает по отдельности
- Проблема с условием if
- DHT20 и дисплей Oled не работают вместе