Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: долгий входной импульс, короткий выходной
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Схемотехника
dontsov
Добрый день!

Делаю устройство на микроконтроллере, используя прерывания. Столкнулся с проблемой: у меня вход может быть замкнут очень долгое время (неделю). Пока он не разомкнется микроконтроллер потребляет большой ток около 20мкА. Ток сна 4мкА.

Нужно, чтобы вне зависимости от длительности входного сигнала на пин МК приходил короткий импульс.

Сейчас прерывание - это замыкание Пина на GND. Входной сигнал может быть любым: GND или питание.
Используемый МК: Attiny85.

Спасибо!
Александр1
Цитата(dontsov @ Mar 27 2018, 15:14) *
Пока он не разомкнется микроконтроллер потребляет большой ток около 20мкА.

Ток потребляет контроллер или ток течет через подтягивающий резистор?
dac
QUOTE (dontsov @ Mar 27 2018, 18:14) *
Добрый день!

Делаю устройство на микроконтроллере, используя прерывания. Столкнулся с проблемой: у меня вход может быть замкнут очень долгое время (неделю). Пока он не разомкнется микроконтроллер потребляет большой ток около 20мкА. Ток сна 4мкА.

схему бы, что бы гаданием не заниматься.
но в порядке упражнения по телепатии: 20мкА - это порядка 150кОм при 3В. Я фиг его знает, что там у тиньки, как вариант - это встроенная подтяжка.
Если так, то подтяжку отключить, и использовать внешний резистор подтяжки подключить не к питанию, а к одному из выводов мк. периодически подавать на него 1, потом опрашивать вход. после опроса снимать единичку. если наоборот - тогда подавать 0. если сигнал не сухой контакт и линии не длинные, увеличить сопротивление подтяжки до 1МОм.
яман-тау
а просто дифференцирующая цепь не подойдет?
A.Lex
Цитата(яман-тау @ Mar 27 2018, 16:20) *
а просто дифференцирующая цепь не подойдет?

+ триггер Шмитта
ViKo
Триггеры Шмитта обычно в МК внутри.
dontsov
Цитата(dac @ Mar 27 2018, 15:41) *
схему бы, что бы гаданием не заниматься.
но в порядке упражнения по телепатии: 20мкА - это порядка 150кОм при 3В. Я фиг его знает, что там у тиньки, как вариант - это встроенная подтяжка.
Если так, то подтяжку отключить, и использовать внешний резистор подтяжки подключить не к питанию, а к одному из выводов мк. периодически подавать на него 1, потом опрашивать вход. после опроса снимать единичку. если наоборот - тогда подавать 0. если сигнал не сухой контакт и линии не длинные, увеличить сопротивление подтяжки до 1МОм.


упражнение выполнено.
действительно, подключен подтягивающий резистор..

А 1Мом не отразятся на стабильности работы attiny? будет подключен счётчик воды "сухой контакт". провода у него 50см, можно укоротить.

Спасибо!
rx3apf
При полуметровом проводе и отсутствии утечек проблем не будет и с таким номиналом. Но вообще-то правильнее сделать сделать с опросом, подключая запитку кратковременно.
Plain
Цитата(dontsov @ Mar 27 2018, 23:14) *
будет подключен счётчик воды "сухой контакт"

Коммерчески пригодную систему сбора Вам не сделать, стало быть, речь о единственном числе для себя любимого — по-настоящему умный дом начинается с конкретного ремонта и нормальной проводки для питания любых мыслимых и немыслимых "мозгов", которых по нему раскидало.
dontsov
Цитата(rx3apf @ Mar 27 2018, 23:28) *
При полуметровом проводе и отсутствии утечек проблем не будет и с таким номиналом. Но вообще-то правильнее сделать сделать с опросом, подключая запитку кратковременно.


А почему "правильнее"? Это более помехозащищеннее?
Счётчик воды замыкает контакты больше, чем на 1 сек, поэтому можно опрашивать вход раз в секунду.

Вопрос по триггерам Шмитта: в чем преимущество от его использования, кроме устранения дребезга?

Вроде бы sn74lvc2g17 потребляет очень мало..
http://www.ti.com/lit/ds/symlink/sn74lvc2g17.pdf

Сейчас я устраняю дребезг конденсатором на 0.1 мкФ и программно.

Цель проекта: чтобы каждый внук считал своим долгом спаять бабушке такой счетчик воды, чтобы она не лазила по стоякам.
Александр1
Цитата(dontsov @ Mar 28 2018, 00:48) *
А почему "правильнее"? Это более помехозащищеннее?
Счётчик воды замыкает контакты больше, чем на 1 сек, поэтому можно опрашивать вход раз в секунду.

Подключая подтягивающий резистор только на время опроса, появляется возможность уменьшить номинал этого резистора до того значения, когда наводки на линию уже не влияют, а в перерывах между опросами ток через резистор не течет при 0 на опрашиваемой линии и потребляемый устройством ток не увеличивается.

dontsov
Цитата(Александр1 @ Mar 28 2018, 08:19) *
Подключая подтягивающий резистор только на время опроса, появляется возможность уменьшить номинал этого резистора до того значения, когда наводки на линию уже не влияют, а в перерывах между опросами ток через резистор не течет при 0 на опрашиваемой линии и потребляемый устройством ток не увеличивается.


Спасибо! А как понять, какой номинал подтягивающего резистора взять? 500к? 1мом?

Насколько улучшит жизнь Триггер Шмитта?
Он экономит время пробуждения: с ним не нужна проверка дребега. Его потребление не нивелирует ли экономию?

Plain
Цитата(dontsov @ Mar 28 2018, 00:48) *
Цель проекта: чтобы каждый внук считал своим долгом спаять бабушке такой счетчик воды, чтобы она не лазила по стоякам

На данный момент проект однозначно лишь обувает бабушку, помимо ежемесячной записи показаний, ещё и на ежемесячное раскошеливание из ничтожной пенсии на комплект батареек, ежемесячную их замену, с непременным попутным периодическим утоплением нескольких из них в унитазе, равно как ежемесячным же загрязнением планеты отслужившими.
dontsov
Цитата(Plain @ Mar 28 2018, 13:31) *
На данный момент проект однозначно лишь обувает бабушку, помимо ежемесячной записи показаний, ещё и на ежемесячное раскошеливание из ничтожной пенсии на комплект батареек, ежемесячную их замену, с непременным попутным периодическим утоплением нескольких из них в унитазе, равно как ежемесячным же загрязнением планеты отслужившими.


Не понимаю, почему вы считаете потребление большим.
Посмотрите схему: https://github.com/dontsovcmc/ImpCounter
Внизу описания есть ссылка на прородителя с графиками потребления.

Давайте доведём до ума =)
rx3apf
Цитата(dontsov @ Mar 28 2018, 12:13) *
А как понять, какой номинал подтягивающего резистора взять? 500к? 1мом?

При опросе с импульсной запиткой номинал должен быть на пару порядков меньше - единицы килоом (4.7...10K). Время опроса выбирать исходя из всех возможных паразитных емкостей (единицы, максимум десятки us). Дополнительных формирователей (ТШ) - не нужно. При опросе 1 раз в секунду прирост потребления - субмикроамперный, сногократно меньше, чем при любом разумном номинале постоянно включенного pull-up. И нет никаких сложностей обрабатывать единовременно два, четыре или больше счетчиков.

ps - ESP01 жрет всегда, поскольку на ней постоянно запитанный светодиод. Питание ключевать не собираетесь ?

Порог разряда алкалиновой батарейки - 0.9V. Сопоставьте это с нижней границей рабочего напряжения модуля.
Александр1
Цитата(dontsov @ Mar 28 2018, 12:13) *
А как понять, какой номинал подтягивающего резистора взять? 500к? 1мом?

Если есть затруднения с выбором подтягивающего резистора, то его можно выбрать и практическим методом: взять предполагаемую длину линии, на одном конце которой подключить резистор, а на другом подключить осциллограф через делитель 1:10 (для увеличения Rвх). При разных сопротивлениях наблюдать уровень наводимых помех и выбрать приемлемое значение резистора. Можно подключить параллельно емкость для подавления ВЧ наводок.
При 10 кОм прикосновение руки уже не приводит к заметному наведению на линию помех с частотой сети, только ВЧ наводки, которые легко фильтруются подключением конденсатора.
Если использовать подключение подтягивающего резистора отдельным портом МК на время опроса линии, то устройство будет очень экономично.
dontsov
Цитата(rx3apf @ Mar 28 2018, 13:54) *
При опросе с импульсной запиткой номинал должен быть на пару порядков меньше - единицы килоом (4.7...10K). Время опроса выбирать исходя из всех возможных паразитных емкостей (единицы, максимум десятки us). Дополнительных формирователей (ТШ) - не нужно.


Постоянно подключённый к входу резистор, разве не потребляет ничего?
Или он не потребляет если вход в режиме output?
Прошу прощения за столь глупые вопросы =(.

Про время опроса не понял.. Нужно делать задержки при чтении входа?

Светодиод успешно ампутирован =). Потребление во сне 18мкА
rx3apf
Основное время вход датчика должен находиться в режиме "вывод" с уровнем "0". На время опроса выдаем туда "1", затем, переведя в режим "ввод", считываем. Хорошо бы, чтобы при этом кроме емкости шлейфа был бы еще и небольшой (500...1000 pF) конденсатор. Он и от возможных ВЧ-наводок защитит. Можно, конечно, все датчики запитывать и от отдельного выхода.

Задержка при чтении после переключения режима с вывода на ввод возможно и потребуется, но небольшая (такт или два), бОльшая задержка нужна для зарядки емкости шлейфа и конденсатора, если от там есть. Речь о единицах микросекунд.
Александр1
Цитата(dontsov @ Mar 28 2018, 15:21) *
Постоянно подключённый к входу резистор, разве не потребляет ничего?
Или он не потребляет если вход в режиме output?

Если вход подтянут резистором к питанию и вход не замкнут на корпус, то резистор ничего не потребляет. А если вход замкнут на корпус, то от +U источника на -U течет ток через подтягивающий резистор, независимо от того, внутри МК он стоит или снаружи. Для микромощных устройств это может быть существенно, тем более, что, как в Вашем случае, вход может быть замкнут очень долго.
А если на этот резистор подавать напряжение не напрямую от источника питания, а от порта МК (порт как выход), и включать 1 на подтягивающий резистор только на время опроса входа, то величина сопротивления подтягивающего резистора существенно не влияет на общее потребление устройства.

jcxz
Цитата(dontsov @ Mar 28 2018, 13:51) *
Не понимаю, почему вы считаете потребление большим.
Посмотрите схему: https://github.com/dontsovcmc/ImpCounter
Внизу описания есть ссылка на прородителя с графиками потребления.

Поражаюсь людям, которые найдя в инете ролик с какими-то утверждениями, высосанными из пальца выложенный очередным "спецЫалистом", считают его за истину в последней инстанции даже не пытаясь хоть немного подвергнуть проверке! laughing.gif
Открываем даташит на ESP8266, читаем:
Нажмите для просмотра прикрепленного файла
Обращаем внимание на столбец "Typical".
Кроме того, у меня есть хоббийный проект - интернет-радио на ESP8266. В своё время мерил на нём потребление ESP8266 - оно иногда достигало почти 200мА.
ESP8266 на нём всё время на ощупь довольно горячий.
Мне даже именно из-за ESP8266 пришлось туда поставить более мощный LDO, так как со слабым после подключения ESP к WiFi питание просаживалось и приводило к сбросу МК.
Опять-же из опыта работы этого приёмника (включаю его каждый день когда утром пью кофе) подключается он к роутеру секунд 5-10. Но точно не 2.

Да и насчёт быстрого подключения из сна - это видимо режим "Light-Sleep" из приведённой выше таблицы? Тогда о каких 20мкА тут автор рассуждает, если один ESP только будет жрать почти 1ма???
А если "Deep-Sleep", так там "During Deep-Sleep mode, Wi-Fi is turned off" как говорит тот же самый даташит. А значит и соответствующее время подключения к точке WiFi laughing.gif

PS: Так что совет автору - сразу закладывайте в проект хороший такой аккумулятор с зарядником. Чтоб бабушку на пенсию не разорять laughing.gif
dontsov
Цитата(jcxz @ Mar 28 2018, 17:15) *
Поражаюсь людям, которые найдя в инете ролик с какими-то утверждениями, высосанными из пальца выложенный очередным "спецЫалистом", считают его за истину в последней инстанции даже не пытаясь хоть немного подвергнуть проверке! laughing.gif
PS: Так что совет автору - сразу закладывайте в проект хороший такой аккумулятор с зарядником. Чтоб бабушку на пенсию не разорять laughing.gif


1. человек вряд ли вручную графики рисовал: https://www.cron.dk/esp8266-on-batteries-for-years-part-5/
да, я поверил этим графикам =).

2. то, что время подключения ESP8266 к разным роутерам разное - известный факт. в комментариях тоже пишут, что 7 сек подключается.

3. Время подключения к роутеру с нуля и из deep sleep + reset разное. Я мерил именно из сна + static ip. DHCP у ESP медленный. И нужна не родная AT прошивка, а скомпилированная из SDK.
"А значит и соответствующее время подключения к точке WiFi" - это не так. Из полного включения и из deep sleep время подключения разное. Я не изучал почему.



Цитата(Александр1 @ Mar 28 2018, 15:38) *
Если вход подтянут резистором к питанию и вход не замкнут на корпус, то резистор ничего не потребляет. А если вход замкнут на корпус, то от +U источника на -U течет ток через подтягивающий резистор, независимо от того, внутри МК он стоит или снаружи. Для микромощных устройств это может быть существенно, тем более, что, как в Вашем случае, вход может быть замкнут очень долго.
А если на этот резистор подавать напряжение не напрямую от источника питания, а от порта МК (порт как выход), и включать 1 на подтягивающий резистор только на время опроса входа, то величина сопротивления подтягивающего резистора существенно не влияет на общее потребление устройства.


Отличная мысль подавать питание от порта МК! Правда, все пины в attiny85 кончились =)

SCK или SDA для подачи питания нельзя, т.к. они подтянуты на питание 3к3 sad.gif


А что, если сделать вот так:


Будет работать? laughing.gif
Myron
А что так схема изображена по американским правилам как Лего (пазл)? По человечески не можете?
dontsov
Цитата(Myron @ Mar 28 2018, 22:23) *
А что так схема изображена по американским правилам как Лего (пазл)? По человечески не можете?


А разве теперь не так чертят? Я посмотрел у Adafruit, перерисовал =).

Вот обычный вид:

https://github.com/dontsovcmc/ImpCounter/bl...heme-ESP-01.png
Myron
Цитата(dontsov @ Mar 28 2018, 14:05) *
А разве теперь не так чертят? Я посмотрел у Adafruit, перерисовал =).

Вот обычный вид:

https://github.com/dontsovcmc/ImpCounter/bl...heme-ESP-01.png
Это "две большие разницы", эта схема хотя бы читается. Я не понимаю, почему это непонятно.
dontsov
Нашел статью =)
"Защита входов цифровой электроники": http://cxem.net/beginner/beginner102.php

Пока не понял, как предложенную мной схему на диодах защитить.
Всем спасибо за помощь!
dontsov
Прекраснейшая ссылка про помехи:
http://caxapa.ru/lib/emc_immunity.html

Еще дна про http://faqs.org.ru/electron/embconst.htm#P2

Статья: Вид взрывозащиты «искробезопасная электрическая цепь»
Отличное описание проблем с питанием МК: https://electronix.ru/forum/index.php?showt...p;#entry1529792

Еще решения:
Защита USB от ESD: USBLC6-2
IP4220CZ6 тема: https://electronix.ru/forum/index.php?showtopic=126926
Триггер-шмитта: 74HC2G14
Защита iButton от статики волшебным диодом: DS9503

Задумался о питании:
https://github.com/dontsovcmc/ImpCounter/issues/3
По моим подсчетам, если запитать схему от 3х батареек АА, вместо двух + преобразователь 2мкА 2.8В (вместо 3.3В ради снижения напряжения батареек), то выходит, я могу за 4 года 500мкА потреблять!
А это значит, что можно нормальные подтягивающие резисторы поставить!

Гляжу на заводские решения: Болид С2000-АСР2, у него 85мкА ток утечки. Надо разобрать железку и посмотреть входной каскад.
k155la3
Цитата(dontsov @ Mar 28 2018, 12:13) *
. . . .
Насколько улучшит жизнь Триггер Шмитта?
Он экономит время пробуждения: с ним не нужна проверка дребега. Его потребление не нивелирует ли экономию?

Триггер Шмидта ни в коем случае не решает проблему дребезга.
"Дребезг" подавляется таймаутами, которые реализуются или аналоговой схемой, или программным алгоритмом.
ТШ используют для "исправления" фронта-спада импульсов с пологой формы на прямоугольную. (основное применение в цифровых схемах)



Herz
Цитата(k155la3 @ Apr 5 2018, 20:18) *
Триггер Шмидта ни в коем случае не решает проблему дребезга.
"Дребезг" подавляется таймаутами, которые реализуются или аналоговой схемой, или программным алгоритмом.
ТШ используют для "исправления" фронта-спада импульсов с пологой формы на прямоугольную. (основное применение в цифровых схемах)

Смелое заявление, настойчивое, хоть и голословное. rolleyes.gif
Вы хоть бы в Википедию заглянули прежде, чем учить начинающих "плохому".
Триггер Шмитта, как компаратор с гистерезисом, как раз проблему дребезга призван решать.
k155la3
Цитата(Herz @ Apr 6 2018, 11:38) *
Смелое заявление, настойчивое, хоть и голословное. rolleyes.gif
Вы хоть бы в Википедию заглянули прежде, чем учить начинающих "плохому".
. . .
Т.е., применять ТШ "напрямую" для подавления дребезга от "сухого контакта" - это правильно sad.gif
dac
QUOTE (Herz @ Apr 6 2018, 14:38) *
Смелое заявление, настойчивое, хоть и голословное. rolleyes.gif
Вы хоть бы в Википедию заглянули прежде, чем учить начинающих "плохому".
Триггер Шмитта, как компаратор с гистерезисом, как раз проблему дребезга призван решать.

как он ее решит, если при дребезге контактов сигнал меняется по полной амплитуде? триггер шмитта предназначен для подавления дребезга при медленном изменении сигнала, когда этот сигнал близок к уровню переключения стандартного логического элемента и незначительные колебания вокруг этого уровня вызывают многократные переключения.
Решить дребезг контактов может с соответствующими цепями ОС, т.е. с введением задержки, но это явно не уровень ТС

QUOTE
Т.е., применять ТШ "напрямую" для подавления дребезга от "сухого контакта" - это правильно sad.gif

неправильно, для подавления дребезга контактов он никак не поможет, это лишняя сущность. Можете взять осциллограф и проверить. Наиболее простой путь программный. Опрашиваете входной сигнал каждые 20-50мс, если 2-3 раза подряд один и тот же уровень, значит запоминаете этот уровень.
Вот если бы Вы делали преобразователь синуса в прямоугольный сигнал, там да, триггер Шмитта действительно нужен.
jcxz
Цитата(dac @ Apr 6 2018, 14:09) *
как он ее решит, если при дребезге контактов сигнал меняется по полной амплитуде?
...
неправильно, для подавления дребезга контактов он никак не поможет,

Поможет, если ввести дополнительно интегрирующую цепочку (RC).
Herz
Цитата(k155la3 @ Apr 6 2018, 12:20) *
Т.е., применять ТШ "напрямую" для подавления дребезга от "сухого контакта" - это правильно sad.gif

А где сказано, что надо "напрямую"?
Цитата(dac @ Apr 6 2018, 14:09) *
как он ее решит, если при дребезге контактов сигнал меняется по полной амплитуде?
...
неправильно, для подавления дребезга контактов он никак не поможет, это лишняя сущность. Можете взять осциллограф и проверить. Наиболее простой путь программный. Опрашиваете входной сигнал каждые 20-50мс, если 2-3 раза подряд один и тот же уровень, значит запоминаете этот уровень.
Вот если бы Вы делали преобразователь синуса в прямоугольный сигнал, там да, триггер Шмитта действительно нужен.

Ответили уже как. С дребезгом боролись аналоговыми средствами задолго до "программных путей". И весьма успешно.
Цитата
но это явно не уровень ТС

biggrin.gif Вот оно нынче как. Добавить резистор и конденсатор в схему - это уже высокий уровень, не то что программирование.
dontsov
Я почему заморочился с защитой: На работе Attiny85 перезагружается если подвигать кондесатором в макетной плате. Питание от USB компьютера через преобразователь на 3.3В.
Особенность офиса - высокая статика. Иногда достаточно встать-сесть на стул, как будет искра ~3мм c корпусом ПК. Может из-за этого?
dac
QUOTE (Herz @ Apr 6 2018, 18:30) *
Ответили уже как. С дребезгом боролись аналоговыми средствами задолго до "программных путей". И весьма успешно.

biggrin.gif Вот оно нынче как. Добавить резистор и конденсатор в схему - это уже высокий уровень, не то что программирование.

а еще раньше даже на лампах sm.gif а сейчас в некоторых мк есть аппаратное подавление дребезга, на таймерах в stm32 или на GPIO у TMS3228x например.
я все таки считаю что внешний триггер шмитта лишний, гораздо лучше для защиты вывода последовательный резистор на 10-50кОм и программное подавление дребезга. Но это мое личное мнение.
ну был бы другой уровень, этого топика бы не было
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.