Deepsleep хардварные особенности

Тема в разделе "ESP8266, ESP32", создана пользователем Anrikigai, 7 янв 2020.

  1. Anrikigai

    Anrikigai Нерд

    Есть пара вопросов по особенностям железа при реализации deep sleep

    1) Как подключить кнопку Reset, если RST уже соединен с GPIO16?
    Есть плата типа NodeMCU.
    Соединил GPIO16 и RST, выходит из DeepSleep без проблем.
    Могу нажимать встроенную на плату кнопку Reset для перезагрузки.

    Но хочу для реального проекта использовать ESP-201, где никаких кнопок.
    Если у меня будет соединен RST с GPIO16, а я повешу кнопку, чтобы коротить RST на землю для принудительной перезагрузки, не сожгу ли я этим GPIO16?
    Может резистор добавить (какой?) или вообще диод? Резистор, конечно, проще :)

    В качестве кнопки хочу использовать сенсорную TTP223. У нее есть настройки:
    • На время касания на выходе “1”
    • На время касания на выходе “0” // вот этот мне надо, насколько я понимаю?
    • режим триггера, состояние выхода после касания – “0”
    • режим триггера, состояние выхода после касания – “1”
    Примечание:
    Как только на NodeMCU я соединяю RST и GPIO16, как PlatformIO (да и Arduino IDE) перестают автоматически прошивать. Приходится вручную жать RST и EN, отпускать RST...
    Т.е. даже на NodeMCU мне не нравится тупое соединение RST и GPIO16.
    Может есть получше вариант, чтобы программно через RS232 сброс продолжал работать?

    2) Как подавать питание на датчики только при пробуждении?
    Хочу отправлять температуру влажность по WiFi раз в 5-10 минут.
    Датчик GY-213V-SHT20 Temperature & Humidity Sensor, подключен по I2С.
    Подключение к WiFi занимает 1.5 секунды после "просыпания" (4 секунды после подачи питания)
    Ну и сама отправка примерно 1.5 сек на каждый параметр.
    Думаю, если при просыпании сразу подать питание на датчик, через 1.5 сек, что WiFi поднимется, уже вполне можно с него считывать показания.

    По даташиту на нечто подобное (gy-213v-si7021) 150 µA active current (в момент снятия показаний?), 60 nA standby current (просто подается питание, как раз deep sleep ESP8266?)
    Стоит ли вообще заморачиваться с отключением на 5-10 минут при столь малом токе по сравнению с остальным (60 nA против 80 мкА в Deep Sleep)?

    Если стоит (психологически правильнее), то как? Тупо с одного из пинов запитать?

    3) Как определить оставшийся заряд аккумулятора?
    Для экспериментов я на ESP32 подавал напряжение от батарейки на ADC через делитель на резисторах.
    С учетом коэффициентов калибровки вполнеточные данные были.
    а) ESP8266 тоже позволит таким образом более-менее определить, что аккумулятор скоро сядет?
    б) Глупо наверное постоянно тратить энергию на делитель? Правильнее, чтобы на резисторы напряжение подавалось только при просыпании?
    Т.е. даже если в п.2 можно не заморачиваться, то здесь все-таки хочется совета, как подать напряжение при просыпании. Вплоть до модели транзистора.
    В идеале вообще каких деталек прикупить, чтобы под рукой были. Резисторами-конденсаторами запасся, а вот какие тразисторы, диоды часто в схемах с ESP8266/ESP32 используются? Чтобы за каждым не бегать.

    Спасибо
     
  2. parovoZZ

    parovoZZ Гуру

    Вообще не стоит. 60 нА это очень мало, если всё остальное спроектировано грамотно.

    Никак. Можно снимать только напряжение. Чтобы посчитать заряд, необходимо ещё и ток по времени интегрировать, что в условиях батареечного питания не целесообразно совсем.
     
  3. parovoZZ

    parovoZZ Гуру

    TTP223 также хорошо кушает. Что-то порядка 4 мкА в режиме ожидания (медленный режим) и 15 мкА в режиме рекалибровки (у серии TTP рекалибровка выполняет частично свою функцию - так, на заметку) каждые 8 секунд.
     
  4. Anrikigai

    Anrikigai Нерд

    Хм... Хотел без дырок в корпусе обойтись, TTP223 же сквозь пластик хорошо срабатывает..
    А про потребление и не подумал :(

    Касательно "счиать заряд" - ну это я слишком пафосно сказал.
    Конечно, мне достаточно просто поймать момент для подачи сигнала "уже совсем скоро я сдохну от голода"
    По крайней мере на ESP32 хорошо виден момент, когда ниже определенного напряжения начинается резкое падение напряжения.
    Типа опустилось напряжение на 18650 ниже 3.3V - пора менять. А уж 5% или 10% осталось - неважно.
    Screenshot_20191219-095610.png
    Так что хотелось бы все-таки схемку, как с пина ESP управлять подключением к питанию.
    MOSFET перебор, но, к примеру, чтобы 200-300 mA могло коммутировать (на будущее).
     
  5. parovoZZ

    parovoZZ Гуру

    А SHT20 это делать не умеет? В каких-то датчиках есть такой блок. Только он на фиксированное напряжение.

    Почему перебор? Другое дело, что найти такой MOSFET сложно. Проще купить готовый верхний ключ типа как у меня здесь
    http://forum.amperka.ru/threads/Сенсорная-кнопка-на-стекле-dashkova-und-parovozz.18103/
     
  6. Anrikigai

    Anrikigai Нерд

    SHT-20? По каким словам погуглить, как это может называться?

    Про мосфет- мне IRF3708 приглянулся. Gate th. voltage of 2.0V max (0.6 min)
    IRF3708.png
    Просто слишко жирно кажется. Или для разового изделия норм, нет смысла заморачиваться с более тонким подбором?
     
  7. parovoZZ

    parovoZZ Гуру

    Такой сгодится только в нижний ключ, что может породить токи утечки по цепям управления.

    Надо не гугол смотреть, а даташит. У него триггер настроен на 2.25 вольт, что в данном случае слишком мало.
     
  8. Anrikigai

    Anrikigai Нерд

    Не понимаю, о чем речь :(

    Для меня SHT-20 - это датчик температуры и влажности. Как это может помочь моей ESP определить, что скоро у нее отберут питание?

    Пока писал, пришла мысль, что типа если датчику нужно более высокое напряжение питания, чем ESP, его исчезновение может косвенно свидетельствовать, что скоро батарейка совсем сядет.
    Но меня такое не устроит. Поздно пить Боржоми, когда показатели перестали определяться (фактически устройство перстало работать).

    Про ключи:
    Я о железе только общее представление имею. "Нижний ключ" - это транзистор внизу, нагрузка наверху?
    Т.е. мне нужен P-типа?
    [​IMG]

    И, если подобное все-таки использовать для подачи на ножку ADC, подключить ее к "R нагр" снизу от стока (ну или заменить его на делитель из пары резисторов).

    Я точно не могу с N-типом добавить резистор еще и снизу (сейчас исток на левой картинке на земле, а я туда тоже резистор поставлю, будут резистор сверху и снизу примерно одинаковые)?

    У меня идея "разрывать" делитель из резисторов, чтобы через него ток шел не постоянно, а только когда какой-то пин скомандует.

    Опять же, у меня ведь по умолчанию 0 на ножке, когда ESP спит, а 1 в рабочем состоянии ставлю, когда проснется.
    Это как раз про N-тип, нет?
     
    Последнее редактирование: 7 янв 2020
  9. Пытался экономить энергию батарейки на esp8266 (esp-01), но в режиме deep-sleep потребление безумно высокое ~20 uA
    Поставил рядом 45-ю тиньку, она зажимает chip_en на esp (выключает её совсем) и потребление снизил раза в 3-4 (осталась обвязка, подтягивающие к плюсу резисторы и dht-22 спящий).
    На esp-01 сдул ещё светодиод лишний с питания.
     
  10. parovoZZ

    parovoZZ Гуру

    Шины питания в схемах принято рисовать так: в самом вверху расположена плюсовая шина, ниже нулевая. Так вот если ключ предназначен для коммутации плюсовой шины, он называется верхним, если нулевой шины - нижним.

    У него есть user register. В нем есть бит состояния питания. Порог срабатывания - 2.25 вольт. Но для примененного источника питания это мало: для лития пороговым напряжением является 2.4 вольта.

    Для верхнего ключа - да. Но им просто так поуправлять не получится - необходима схема вольтдобавки. Самая распространенная - бутстрепная. В интегральном ключе это всё есть.

    Да. Но если у датчика с интерфейсом I2C отрубать нулевую шину ("землю"), он может запитаться через резисторы подтяжки с непредсказуемыми последствиями. N-канальник можно ставить и в плюс, но опять-таки потребуется схема вольтдобавки.
     
  11. Anrikigai

    Anrikigai Нерд

    "Коммутация плюсовой шины" - это значит тразистор сверху, отрубает нагрузку от плюса?
    Т.е. "верхний ключ" - это P-тип на картинке сверху?
    Впрочем, я пока не готов заморачиваться со всякими вольтдобавками, IR2210 и прочими.

    Издевательство какое-то :(
    Моторчик запитать легко, а с простешими фигнюшками черт ногу сломит.

    Ну а в моем-то случае - банальный делитель на резисторах, чтобы на нем напряжение мерять - там опасности нет? Просто не хочу, чтобы постоянно ток утекал.
    Кстати, я правильно считаю, что если сделать делитель на двух резисторах по 10 кОм (итого 20кОм), при батарейке 4В будет утекать 200 мкА? Это же дофига по сравнению с даже 80 мкА ESP в режиме Deep Sleep.
    Вот тут точно нельзя так оставлять. Или я на пару порядков ошибся?
    Или можно вместо 10кОм ставить 1МОм и не заморачиваться (2мкА я переживу)?

    А вообще я примерно так это себе представлял:
    BatteryCheck.png

    Блин, я все не мог понять, что за потребление тока у ESP "в выключенном состоянии". Вот оно что, оказывается :)
     
  12. parovoZZ

    parovoZZ Гуру

    Фигня. Так не делают. Будет всё плавать.
    А делают так: с помощью АЦП измеряют напряжение на внутреннем ИОН, а в качестве ИОН выступает внешний пин, который подключен к плюсовой шине питания. Возможно ли это на ESP - не знаю.

    Надо смотреть даташит на АЦП ESP на предмет максимального сопротивления источника сигнала. Мегаом - это очень много в любом случае. Дело в том, что в АЦП последовательного приближения есть блок УВХ, в котором имеется конденсатор. Так вот перед началом измерения этот конденсатор подключается кратковременно к внешнему пину и далее напряжение на нем фиксируется. Чтобы конденсатор успел зарядиться, через пин должен протекать минимальный ток. А мы его искусственно занижаем. Что измерять будем?
     
    Daniil нравится это.
  13. parovoZZ

    parovoZZ Гуру

    А я чушь написал - у I2C датчика землю и надо рвать, но линии I2C обязательно "отпускать".
     
  14. Anrikigai

    Anrikigai Нерд

    Да, точно, там же последовательное приближение, много раз быстро одно и то же измеряет... Значит, резисторы должны килоомами измеряться. И тогда либо вообще не измерять, либо доводить до ума по типу, как я хотел.

    К сожалению, я не настоящий сварщик и фраза "с помощью АЦП измеряют напряжение на внутреннем ИОН, а в качестве ИОН выступает внешний пин, который подключен к плюсовой шине питания" мне вообще не понятна.

    Самый непонятный мне момент - в моей схеме МОСФЕТ неправильно подключен? Или сам подход с делителем?

    Просто без МОСФЕТа (только резисторы по 10кОм) на ESP32 вполне корректо работало. И при полном заряде совпадало с измеренным вольтметром, и при почти полном разряде. Если не до сотых, то до десятых долей вольта точно. Мне этого вполне достаточно. Напрягает только слишком большой ток, теряющийся через эти резисторы.
    И, если саму ESP можно, как я понял от Алексей.А, "выключить" с Attiny, то с этими резисторами проблема остается.
    Может не МОСФЕТ использовать для временного их подключения, а что-то другое, способное сработать от пина ESP?

    Я, кстати, в схеме ведь вообще наврал. Верхний резистор должен быть подключен не к VCC (3V3 питания ESP), а к батарейке. 3.7В...
    Т.е. земля общая, а вот плюс разный.
    Что еще бывает? Релюшка твердотельная (IMHO перебор)?
    Сборка Дарлингтона (TIP120)?
    Оптопара?
    Скажем, LTV-817A 50мА выдает, даже на 1кОм резисторах делитель можно сделать.
    HCPL-3150 вообще 0.5А, если что-то мощное типа питания на саму ESP понадобится скоммутировать...

    И, если да, этот разрывающий цепь "батарейка-делитель на резисторах" компонент все-таки ставить "выше" резисторов, ниже или пофиг?
     
  15. parovoZZ

    parovoZZ Гуру

    Если АЦП ESP так не умеет, то можно измерять аттинькой. Её на 3.7 вольт можно вешать вообще без опаски (на полностью заряженной банке 4.2 вроде?).

    Включено правильно. Только ток через канал мосфета будет зависеть от напряжения сток-исток и на затворе, от внешней температуры.
     
  16. alp69

    alp69 Форумчанин

    По батарейному питанию esp ИгорьК публиковал следующее...
    P.S. Если изучите его публикации - найдете тему про сон esp. Очень доходчиво и детально исложено.
     
  17. Anrikigai

    Anrikigai Нерд

    Спсибо, многое прояснилось

    А DS2438 - да, классная штука, оказывается.
    Только вот с ценой не понял. Глянул на Зенере : 400+ руб модель DS2438AZ+T&R. Как две ESPшки
    А на Али 5 штук DS2438 за $4 дают.
    Это разные модели или на мелочевку такая наценка?

    Просто смотрел датчик CO2 Sensirion SCD30. На Али в одном месте $100, а на Зенере 3500руб, что для этого датчика весьма привекательно, мне кажется.
    А тут наоборот в разы разница...
     
  18. Anrikigai

    Anrikigai Нерд

    Ну и просто для моего понимания, если можно, вот такой вариант прокомментируйте, пожалуйста.
    BatteryCheck.png
    Оптопара таким ведь образом подключается, просто через резистор к ножке? Сопроотивление, как я понял, от 300 Ом, чтобы ножку не перегрузить. Но и не 10+КОм, чтобы все-таки открывалось полностью.

    Много ли "утечет" через R1 и ADC?
    Еще какие подводные камни возможны?

    Плавающие показания из-за влияния температуры на транзистор в оптопаре вряд ли меня будут беспокоить в данном случае.
    а) комната, т.е. температура меняется всего на несколько градусов
    б) мне просто определить, что напряжение просело ниже какого-то предела. 3.3 или 3.2 - да без разницы, сколько намеряет. Важно, что не 2.9, ибо при 2.8 уже отключится, и не 3.5, ибо еще долго жить будет.

    Для чего-то серьезного, особенно, если литий заряжать прямо в устройстве, конечно, что-то специализированное типа DS2438 потребуется, это я понял.
     
  19. parovoZZ

    parovoZZ Гуру

    Потому что отбраковка. Как она попадает в руки лохотронщиков с Алёши - загадка, но никто не будет торговать себе в убыток.
     
  20. parovoZZ

    parovoZZ Гуру

    Это ещё хуже, т.к. добавляется ещё одна переменная в виде нестабильности светодиода.