Счетчик отработанного времени на Arduino или ESP

Antsanv
Antsanv аватар
Offline
Зарегистрирован: 18.12.2018

Требуется декрементный счетчик времени работы устройства (отработанных часов). Питание от сети 220, которое отрубается при выключение устройства.

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

Может кто сталкивался с такой задачей и есть более элегантное решение?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

А зачем для счетчика отработанного времени нужно абсолютное время?

rkit
Offline
Зарегистрирован: 23.11.2016

Просто дуня с батарейкой. Снять лишнее с платы и считать хоть до посинения.

Antsanv
Antsanv аватар
Offline
Зарегистрирован: 18.12.2018

Хотелось бы сохранять при выключении устройства значение счетчика в какой-то "энергонезависимой" памяти.

rkit
Offline
Зарегистрирован: 23.11.2016

Ну сохраняй

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Antsanv пишет:

Хотелось бы сохранять при выключении устройства значение счетчика в какой-то "энергонезависимой" памяти.

А EEPROM на што?

Green
Offline
Зарегистрирован: 01.10.2015

Antsanv пишет:

Может кто сталкивался с такой задачей и есть более элегантное решение?


Сталкивался. ЕЕПРОМ без батарейки.

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

Antsanv пишет:

Хотелось бы сохранять при выключении устройства значение счетчика в какой-то "энергонезависимой" памяти.

С какой точностью надо измерять? Минуты достаточно? Ну так увеличивай счетчик в EEPROM каждую минуту. Данные там сохраняются при отключении питания.

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

rkit пишет:

Просто дуня с батарейкой. Снять лишнее с платы и считать хоть до посинения.

 

Нахер там батарейка если есть 220В?

rkit
Offline
Зарегистрирован: 23.11.2016

Прочитай тз внимательно.

Antsanv
Antsanv аватар
Offline
Зарегистрирован: 18.12.2018

220 может в любой момент отключится.

Да, наверное лучший вариант сохранять периодически  в EPROM (сколько там циклов перезаписи?).

Либо на ум приходит вариант с DS3231 - хранение времени начала работы в регистре будильника и сравнение с текущем временем.

Green
Offline
Зарегистрирован: 01.10.2015

Ключевое слово "периодически". От него все пляски.

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

rkit пишет:

Прочитай тз внимательно.

Ты то сам читал? Вот попробуй вникнуть:

Цитата:
Требуется декрементный счетчик времени работы устройства (отработанных часов). Питание от сети 220, которое отрубается при выключение устройства.

И зачем нам батарейка? Пока питание есть считаем минуты работы и записывам раз в минуту в ЕЕPROM. Когда питание вырубилось нам, соответственно время работы считать не надо.Врубилось опять, ардуина считала последнее сохраненное значение счетчика минут и продолжило его увеличивать и сохранять.

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

Antsanv пишет:

220 может в любой момент отключится.

 

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

Цитата:
Да, наверное лучший вариант сохранять периодически  в EPROM (сколько там циклов перезаписи?

Гарантируют 100000. При поминутной записи это на 1600 часов. Но кто мешает перейти на следующие ячейки когда для предыдущих рессурс оказался близким к исчерапанию? Если исплользовать по 2 байта и переходить на следующие когда подошло к 0xFFFF то хватит  на пол миллиона  часов. Устроит?

Green
Offline
Зарегистрирован: 01.10.2015

Ну можно типа RTC на Ардуино. Только стрёмно - "одно неловкое движение..."

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

Green пишет:

Ну можно типа RTC на Ардуино. Только стрёмно - "одно неловкое движение..."

Зачем Real Time? Нужен счетчик отработанных часов. К Real Time это никакоо отношения не имеет.

Не доводилось видеть механические счетчики отработки на станках? 

Green
Offline
Зарегистрирован: 01.10.2015

asam пишет:

Гарантируют 100000. При поминутной записи это на 1600 часов. 


Делал посекундную. 100000 циклов хватает за 11 лет. Реально запас на порядок больше.)

Green
Offline
Зарегистрирован: 01.10.2015

asam пишет:

Зачем Real Time? Нужен счетчик отработанных часов. К Real Time это никакоо отношения не имеет.


"Типа". Важно что бы у устройства было резервное питание для хранения данных в ОЗУ.

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

Green пишет:

"Типа". Важно что бы у устройства было резервное питание для хранения данных в ОЗУ.

Зачем хранения данных в ОЗУ? Боитесь повреждения флеша при отрубании питания во время записи? Ну можно по 3 копии сохранять. Повредится только одна и при рестарте это можно отловить.

Green
Offline
Зарегистрирован: 01.10.2015

Не, не, не. Батарейку предложил не я.) Я рассматриваю как один из вариантов.
Кстати, не известна ни точность измерения времени наработки, ни разрешение, ни максимальное значение.)

b707
Offline
Зарегистрирован: 26.05.2017

про RTC с батарейкой - это идея ТС.

Antsanv - не нужна тут RTC никоим боком, поверьте. Используйте то, что описал Asam - хватит надолго.

Green
Offline
Зарегистрирован: 01.10.2015

К примеру нужна точность подсчёта +/- 3 сек в сутки. Нужен тут RTC или достаточно керамического резонатора?
Ну и сохранять в ОЗУ проще, нежели посекундно изгаляться с ЕЕПРОМ. Но это уже к ТС.

rkit
Offline
Зарегистрирован: 23.11.2016

asam пишет:

И зачем нам батарейка?

Чтобы время наработанное было видно всегда, зачем.

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

rkit пишет:

Чтобы время наработанное было видно всегда, зачем.

Ну прочитай начальный пост, наконец. Там такого требования нет.

 

Izvekoff
Offline
Зарегистрирован: 02.03.2020

да тут часиков на миллис думаю вполне достаточно, если не зашивать лодыря, то точности должно хватить

Green
Offline
Зарегистрирован: 01.10.2015

Офигеть! В огороде бузина - в Киеве дядько.(

rkit
Offline
Зарегистрирован: 23.11.2016

asam пишет:

rkit пишет:

Чтобы время наработанное было видно всегда, зачем.

Ну прочитай начальный пост, наконец. Там такого требования нет.

 

И что? Если нет требования сделать лучше, то нужно обязательно сделать хуже?

Antsanv
Antsanv аватар
Offline
Зарегистрирован: 18.12.2018

b707 пишет:

про RTC с батарейкой - это идея ТС.

Antsanv - не нужна тут RTC никоим боком, поверьте. Используйте то, что описал Asam - хватит надолго.

Там в любом случае RTC будет для установки вкл/выкл по расписанию.

b707
Offline
Зарегистрирован: 26.05.2017

Antsanv пишет:

Там в любом случае RTC будет для установки вкл/выкл по расписанию.

все равно для задачи "счетчика моточасов" данные RTC совершенно не нужны, ИМХО...

Izvekoff
Offline
Зарегистрирован: 02.03.2020

b707 пишет:

Antsanv пишет:

Там в любом случае RTC будет для установки вкл/выкл по расписанию.

все равно для задачи "счетчика моточасов" данные RTC совершенно не нужны, ИМХО...

это да, выходит что нужен таймер

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

Antsanv пишет:

Там в любом случае RTC будет для установки вкл/выкл по расписанию.

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

Antsanv
Antsanv аватар
Offline
Зарегистрирован: 18.12.2018

Часы реального времени в устройстве нужны для других задач (вкл/откл по расписанию).

Сделал сохранение в EEPROM (ESP8266), но как-то смущает количество циклов перезаписи.
Ресурс работы одной детали 9000 часов т.е. 540000 минут. Если записывать каждую минуту вылезаем далеко за 100000. Потом деталька меняется и опять 9000 часов...

b707
Offline
Зарегистрирован: 26.05.2017

Antsanv пишет:

Сделал сохранение в EEPROM (ESP8266), но как-то смущает количество циклов перезаписи.
Ресурс работы одной детали 9000 часов т.е. 540000 минут. Если записывать каждую минуту вылезаем далеко за 100000. Потом деталька меняется и опять 9000 часов...

возьмите внешнюю ЕЕПРОМ типа FRAM - гарантируют 10**14 (десять в 14 степени) перезаписей. Даже если в 10000 раз наврали - все равно это около 20 тыс лет, если раз в минуту записывать..

Цена на Али - 15 -20 руб за корпус

Antsanv
Antsanv аватар
Offline
Зарегистрирован: 18.12.2018
Green
Offline
Зарегистрирован: 01.10.2015

Antsanv пишет:

Часы реального времени в устройстве нужны для других задач (вкл/откл по расписанию).

А RTC на базе чего?

b707
Offline
Зарегистрирован: 26.05.2017

лучше поменьше, куда вам 64 кбита, вам же одну единственную переменную сохранять :)

Вот например FM24C04 - да и подешевле

https://aliexpress.ru/item/33036790378.html

b707
Offline
Зарегистрирован: 26.05.2017

Green пишет:

А RTC на базе чего?

кстати да, во многих RTC есть встроенная ЕЕПРОМ с кучей циклов

Green
Offline
Зарегистрирован: 01.10.2015

Более того, в некоторых ещё и куча RAM питаемой от батарейки.

b707
Offline
Зарегистрирован: 26.05.2017

Green пишет:

Более того, в некоторых ещё и куча RAM питаемой от батарейки.

не, это ненадежно - батарейка сдохла или вывалилась - и весь счетчик обнулился...

Antsanv
Antsanv аватар
Offline
Зарегистрирован: 18.12.2018

DS3231. В даташите не нашел никакой памяти кроме двух будильников.

sadman41
Offline
Зарегистрирован: 19.10.2016

На модуле с 3231 часто устанавливают епромку отдельную. Батарейный срам есть на 1302 и 1307. Однако фрам - более безгеморройное решение.

Green
Offline
Зарегистрирован: 01.10.2015

Antsanv пишет:

DS3231. В даташите не нашел никакой памяти кроме двух будильников.

Как раз будильники для вас самое то. 7 байт вполне.

Antsanv
Antsanv аватар
Offline
Зарегистрирован: 18.12.2018

Так я изначально писал про идею с будильниками, но отсоветовали :)
Ну и да, батарейка может разрядится, выпасть.... В EEPROM, видимо, надежней.