Обсуждаем контроллеры компании Atmel.
Ответить

Сохранение данных в EEPROM при пропадании питания

Чт июн 08, 2017 10:17:50

Здравствуйте.
В моей поделке (на Ардуино) появилась нужда сохранять переменную (координату) при выключении питания (неважно сам выключил или свет пропал). Долго мучился, пока появилось такое решение. На 2м выводе настроил прерывание на фронт, в функции запись в EEPROM. Вывод 2 через делитель напряжения (270к и 360к) мониторит лог.уровень на конденсаторе 1000мкФ, подключенному через диод Шотки к питанию 5В. В нормальном состоянии на выводе 2 ноль, при отключении питания напряжение падает, выв.2 переходит в "1" и срабатывает прерывание. Пока есть напряжение Ардуина успевает записать.
Может есть способы проще, удобнее или надежнее?

Re: Сохранение данных в EEPROM при пропадании питания

Чт июн 08, 2017 10:37:21

Уже много раз поднимался этот вопрос.
Не совсем корректно ловить прерывание от цифрового входа с таким примитивным детектором. Дело в том, что напряжение срабатывания будет зависеть от напряжения питания цифровой части и в какой-то мере температуры. Здесь уместнее использовать встроенный аналоговый компаратор.
Или применить монитор питания вроде MC33064. Его как раз можно завести на цифровой вход.

Re: Сохранение данных в EEPROM при пропадании питания

Чт июн 08, 2017 12:13:45

uk8amk спасибо! Не знал про такие элементы. Изучу.
А про встроенный аналоговый компаратор можно подробнее.

Нашел про компаратор, он на выводах 6 и 7. Получается на 7й вывод надо повесить резистор и стабилитрон, а на 6й просто делитель? И настроить прерывание по этому компаратору. Я правильно понял?

Добавлено after 1 hour 27 minutes 37 seconds:
Наверно правильней будет мониторить сетевое напряжение через оптопару по схеме: шунтирующие резисторы - диод - конденсатор - оптопара, конденсатор подобрать, чтобы прерывание срабатывало при пропуске 2х-3х полупериодов. Все равно у меня будет плата с тиристорами, там и разместить этот детектор.

Re: Сохранение данных в EEPROM при пропадании питания

Чт июн 08, 2017 15:50:23

в МК обычно есть встроенный источник опорного напряжения и один из входов компаратора можно подключить к нему прямо внутри микросхемы (тут ДШ читать надо), а меги могут и своё питание померять (тоже без лишних проводов) при помощи встроенного АЦП (но, это конечно медленнее чем компаратор)

Re: Сохранение данных в EEPROM при пропадании питания

Чт июн 08, 2017 22:46:39

Если речь идёт про сетевое напряжение, то достаточно определять пропуск импульсов самим МК. И для этого не нужен конденсатор.

Re: Сохранение данных в EEPROM при пропадании питания

Чт июн 08, 2017 22:54:16

uk8amk писал(а):достаточно определять пропуск импульсов самим МК
Да Вы что, в документации на абдурину нет же такой команды "Пропустить период сетевого напряжения" :)

Re: Сохранение данных в EEPROM при пропадании питания

Пт июн 09, 2017 13:39:04

Если вопрос с внезапностью пропажи питания - наиболее просто использование константы в ОЗУ DS1307.
В других случаях исключительно резервное питание с достаточным запасом по мощности.
8)

Re: Сохранение данных в EEPROM при пропадании питания

Пт июн 09, 2017 15:09:04

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

Re: Сохранение данных в EEPROM при пропадании питания

Сб июн 10, 2017 07:16:04

Воть потому и предлагается использование I2Cшных ОЗУ (или spi).
8)

Re: Сохранение данных в EEPROM при пропадании питания

Пн июн 12, 2017 09:01:42

Я в одном проекте реализовал так: + 5 V подается через резистор 10 Ом, диод Шоттки на МК, параллельно питанию МК ионистор. Емкость ионистора подбирается из расчета: запись 1 байта EEPROM длится 8 мс. Емкость брать с запасом по времени. Плата запитывается от 24 V. Стоит DC-DC преобразователь 24-5 V. Один пин МК через оптрон следит за питанием 24 V. Эта схема уже несколько лет исправно работает.

Re: Сохранение данных в EEPROM при пропадании питания

Пн июн 12, 2017 11:03:35

Как вариант при малом энергопотреблении ВСЕЙ конструкции вполне уместно.
8)

Re: Сохранение данных в EEPROM при пропадании питания

Вс июл 09, 2017 07:02:10

Как вариант при малом энергопотреблении ВСЕЙ конструкции вполне уместно.
8)

Причем тут ВСЯ конструкция ? Ионистор висит на ногах МК через диод.

Re: Сохранение данных в EEPROM при пропадании питания

Вс июл 09, 2017 07:20:31

А выводы МК не имеют дополнительных в данном применении "паразитных" цепей?
:wink:
Вроде пока окромя "открытый коллектор/открытый сток" схемотехники разделяемых с достаточной степенью защиты от утечек с энергонезависимой части RTC на "окружающее схемное пространство" не придумано.
Были правда попытки рвать "общий корпус" - но настолько "кривоработающие", что даже батарейки пальчиковые через пол-года менять приходилось.
8)
На сегодня есть альтернатива в виде специальных режимов в навороченных МК - но такой режим касается исключительно аппартной начинки самого МК, а не внешних, по отношению к нему аппаратных устройств. Вдобавок программисту головная боль в отслеживании состояния критичных регистров как при переходе в режим "заторможенности" так и для корректного выхода из него. Для начинающего весьма болезненный вопрос.
:tea:

Re: Сохранение данных в EEPROM при пропадании питания

Вс июл 09, 2017 11:48:51

меги могут и своё питание померять (тоже без лишних проводов) при помощи встроенного АЦП (но, это конечно медленнее чем компаратор)
А можно подробнее? Потому что я нашел только функцию измерения встроенного постоянного напряжения 1.1, 1.22 В или нуля. Можно, конечно, мерить его относительно AVCC, но придется инвертировать показания, то есть немного не то что вы описали.

Re: Сохранение данных в EEPROM при пропадании питания

Пн июл 10, 2017 12:50:13

Относительно внутреннего опорного напряжения...
:roll:

Re: Сохранение данных в EEPROM при пропадании питания

Пн июл 10, 2017 13:11:16

COKPOWEHEU, да, замер опоры относительно питания, но инвертировать не надо, просто запомнить пороги и по их превышению срочно сохраняться.

Re: Сохранение данных в EEPROM при пропадании питания

Пн июл 10, 2017 13:22:33

Вообще-то там еще и контроль питания по схеме Brown-out Detector имеется...
:roll:

Re: Сохранение данных в EEPROM при пропадании питания

Пн июл 10, 2017 13:44:22

так он же ресет...

Re: Сохранение данных в EEPROM при пропадании питания

Пн июл 10, 2017 18:01:01

Относительно внутреннего опорного напряжения...
:roll:

Я боюсь представить для каких целей может понадобиться мерить одну опору относительно другой :shock:

Re: Сохранение данных в EEPROM при пропадании питания

Пн июл 10, 2017 18:09:16

есть поделки, измеряющие таким образом состояние своей батареи (Li-Ion фонарик) опора стабильна по напряжению, но растет относительно питания при снижении последнего

Добавлено after 3 minutes 26 seconds:
я делал фонарик на тиньке - там нет ADC поставил конденсатор на минус и резистор на плюс и замерял время заряда конденсатора - чем больше питающее напряжение, тем быстрее заряжается конденсатор (только сам кондей надо термостабильный).
Ответить