Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
Создание новых тем и ответов в разделе "Схемо - темы", должны соответствовать правилам сайта ( sxem.org/forum/pravila ).
  • Страница:
  • 1
  • 2

ТЕМА: Регистратор событий

Регистратор событий 13 окт 2016 11:10 #1

  • Айнцвайдрайченко
  • Айнцвайдрайченко аватар
  • Не в сети
  • Модератор
  • Сообщений: 282
  • Спасибо получено: 59
Уважаемый Soir, снова обращаюсь к Вам за помощью. Требуется счетчик посещений помещения, т.е. количества срабатываний геркона на двери. Вот ТЗ:
Комната закрыта на замок и посещается не чаще 1-2 раз в месяц. Каждое открытие двери, т.е. размыкание геркона, должно быть зафиксировано, с занесением в память даты и времени этого события. Максимальное количество записей лимитируется возможностями МК, но не более 999. После заполнения памяти, запись происходит "по кругу": при срабатывании геркона, стирается самая давняя запись, все записи смещаются на одну позицию, в ячейку №1 записывается новое событие.
Дисплей 1602, в дежурном режиме выключен. При нажатии на кнопку "плюс" или "минус", дисплей включается на 15 сек. Отображается запись о последнем событии: порядковый номер события, его дата и время; текущие дата и время. Последнее событие всегда имеет номер 1, предыдущее номер 2 и т.д. При каждом нажатии "плюс", отображается информация о предшествующем событии, при нажатии "минус" - о последующем.
Не просмотренные события обозначаются мигающим номером.
Верхняя строка дисплея: порядковый номер - 3 знакоместа, пробел, дата события - 6 знакомест, пробел, время события - 5 знакомест.
Формат даты события ЧЧММГГ, формат времени ЧЧ:ММ (двоеточие не мигает).
Нижняя строка - текущие дата и время, состояние источника питания. Формат отображения текущей даты ЧЧ-ММ-ГГ, текущего времени ЧЧ : ММ (двоеточие мигает). Одно знакоместо отображает состояние батарейки: при напряжении 4,5 В - полное заполнение; при 3, 2 В - минимальное заполнение; менее 3,2 - мигающий подчерк.
Третья кнопка - "меню" - для установки даты и времени, а также для очистки памяти событий. Отдельные записи стереть невозможно, можно стереть только всю память. Для удобства манипуляций с настройками, допустимо наличие 4й кнопки - не знаю, как её назвать.
При отсутствии нажатий в течение 15 сек., дисплей выключается и МК переходит в спящий режим с минимальным потреблением тока. Ключ питания дисплея - полевой транзистор с р-каналом.
При размыкании геркона, МК просыпается и записывает событие. Дисплей при этом не включается. Далее МК опять засыпает (независимо от состояния геркона) и ждёт следующего размыкания.
МК - AtMega-8 или AtTiny2313 (имеются в наличии)
часы - DS1307
СЛАВА УКРАЇНІ!
Позор агрессору, смерть оккупантам!
Администратор запретил публиковать записи гостям.

Регистратор событий 13 окт 2016 11:49 #2

  • Soir
  • Soir аватар
  • Не в сети
  • Moderator
  • Сообщений: 4101
  • Спасибо получено: 1415
Не понял про "не просмотренные события". Ведь если Вы видите мигающий номер, значит событие уже просмотренное. Или как? Распишите подробнее.

Что касается алгоритма - вроде все понятно. МК - ATMEGA8, да и то еще надо посчитать память, может и не хватит для 999 событий. Пока вижу, что на одну запись уйдет 6-8 байт - умножить на 999. А еще часы, индикатор, кнопки, меню и т.п...
Энергонезависимой памяти и подавно не хватит. Если нужна такая опция, тогда нужно вешать отдельную память.
Администратор запретил публиковать записи гостям.

Регистратор событий 13 окт 2016 12:32 #3

  • Айнцвайдрайченко
  • Айнцвайдрайченко аватар
  • Не в сети
  • Модератор
  • Сообщений: 282
  • Спасибо получено: 59
Спасибо за быстрый отклик. 999 - это допустимый максимум, диктуемый дефицитом знакомест в строке. Достаточно будет несколько десятков, в лучшем случае сотен.
Событие будем считать просмотренным, если, после включения дисплея, последовало нажатие любой кнопки. Далее, если мы опять попадаем на мигающий номер, то он считается непросмотренным до любого следующего нажатия.
СЛАВА УКРАЇНІ!
Позор агрессору, смерть оккупантам!
Администратор запретил публиковать записи гостям.

Регистратор событий 13 окт 2016 12:46 #4

  • Soir
  • Soir аватар
  • Не в сети
  • Moderator
  • Сообщений: 4101
  • Спасибо получено: 1415
Айнцвайдрайченко пишет:
Событие будем считать просмотренным, если, после включения дисплея, последовало нажатие любой кнопки.
Понятно. Значит еще 999 (или сколько там сотен, байт)
Администратор запретил публиковать записи гостям.

Регистратор событий 13 окт 2016 12:55 #5

  • Айнцвайдрайченко
  • Айнцвайдрайченко аватар
  • Не в сети
  • Модератор
  • Сообщений: 282
  • Спасибо получено: 59
Это на маркеры просмотра? Тогда лучше без. А можете навскидку прикинуть, сколько событий получится записать с меткой просмотра и без неё?
СЛАВА УКРАЇНІ!
Позор агрессору, смерть оккупантам!
Администратор запретил публиковать записи гостям.

Регистратор событий 13 окт 2016 14:15 #6

  • Soir
  • Soir аватар
  • Не в сети
  • Moderator
  • Сообщений: 4101
  • Спасибо получено: 1415
Глянул "типичный" проект с похожим набором функций. Если писать ЧЧ:ММ ДД/ММ/ГГ то речь будет идти примерно о 120-130 записях. Если с маркером то примерно 90-100. Это очень примерно, но порядок чисел такой.

И еще не понял, как все поместить в одну строку
ЧЧ:ММ ДД/ММ/ГГ - 14 знакомест. Места для номера записи нет. Разве что убрать пробелы.
Администратор запретил публиковать записи гостям.

Регистратор событий 13 окт 2016 15:48 #7

  • Айнцвайдрайченко
  • Айнцвайдрайченко аватар
  • Не в сети
  • Модератор
  • Сообщений: 282
  • Спасибо получено: 59
Да, без пробелов внутри даты, тогда уложимся в строку. И давайте без меток просмотра.
СЛАВА УКРАЇНІ!
Позор агрессору, смерть оккупантам!
Администратор запретил публиковать записи гостям.

Регистратор событий 13 окт 2016 16:08 #8

  • Oto
  • Oto аватар
  • Не в сети
  • Moderator
  • Сообщений: 929
  • Спасибо получено: 274
Без пробелов , плохо.
Лучше упразднить показания года, там помесячно и так будет ясно какой это год
01_ЧЧ:ММ_ДД/ММ вот так 14 символов, в принципе для этого дела лучше бы подошел дисплей 20х4 цена у китайцев та же.
#StopRussianAggression
Администратор запретил публиковать записи гостям.

Регистратор событий 13 окт 2016 16:31 #9

  • Soir
  • Soir аватар
  • Не в сети
  • Moderator
  • Сообщений: 4101
  • Спасибо получено: 1415
Можно развернуть на две строки. Не обязательно, чтобы текущее время все время было перед глазами.
Администратор запретил публиковать записи гостям.

Регистратор событий 13 окт 2016 16:45 #10

  • Oto
  • Oto аватар
  • Не в сети
  • Moderator
  • Сообщений: 929
  • Спасибо получено: 274
Или, сделать в одной строке посекундную ротацию время - дата.
#StopRussianAggression
Администратор запретил публиковать записи гостям.

Регистратор событий 13 окт 2016 17:42 #11

  • Айнцвайдрайченко
  • Айнцвайдрайченко аватар
  • Не в сети
  • Модератор
  • Сообщений: 282
  • Спасибо получено: 59
Дисплей выписывать не буду, чтобы не тормозить процесс. Ротация не нравится.
Да, капризный я...
Давайте так:
NN_ЧЧ:ММ_ДД/ММ/Г
где NN - двузначный номер записи (ограничимся макс. числом 99)
Год - только последняя цифра
СЛАВА УКРАЇНІ!
Позор агрессору, смерть оккупантам!
Администратор запретил публиковать записи гостям.

Регистратор событий 13 окт 2016 20:24 #12

  • Soir
  • Soir аватар
  • Не в сети
  • Moderator
  • Сообщений: 4101
  • Спасибо получено: 1415
Вот как-то начало проекта.
Работает запись, просмотр событий, контроль напряжения.
Не работают пока настройки - не хватило времени. Да и еще многое нужно дорабатывать. Этим займусь уже послезавтра.

Выход из режима сна - кнопка SET. Листание памяти - PLUS/MINUS. Если записи нет - прочерки. Вот и все.

---
P.S.
Доработал прошивку - установка времени и даты. Выбор кнопкой SET, установка PLUS/MINUS. Установки секунд нет, сбрасываются в 0 при настройке.

Надо проверить спящий режим, режим пробуждения, включение дисплея... тут Proteus не помощник, надо в железе.
Вложения:
Последнее редактирование: 16 окт 2016 07:40 от Soir. Причина: Обновление прошивки.
Администратор запретил публиковать записи гостям.
Спасибо сказали: Айнцвайдрайченко

Регистратор событий 14 окт 2016 19:12 #13

  • Айнцвайдрайченко
  • Айнцвайдрайченко аватар
  • Не в сети
  • Модератор
  • Сообщений: 282
  • Спасибо получено: 59
Смакетировал схему. Время и дата установились, счетчик работает, срабатывания запоминаются и отображаются правильно.
Неправильно:
1) регистрируются замыкания геркона. Надо регистрировать именно размыкания;
2) при замкнутом герконе, МК не уходит в сон, дисплей не выключается. При разомкнутом - есть сон, есть выключение дисплея;
3) при пропадании питания, стирается память событий;
4) задержка выключения 7 секунд - это мало. Хочется 20 сек.;
5) чувствительность к дребезгу геркона. Интегрирующая цепочка 10кОм 0,1мкФ спасает, но лучше сделать программно;
6) проблема с включением дисплея. Ключ IRLML2502 установлен в разрыв общего провода дисплея. Если закоротить канал вручную, дисплей включается, экран пустой. При нажатии SET, появляется правильная информация. Если же ключ управляется микроконтроллером, то при включении видим набор произвольных символов, повторное нажатие SET не помогает.

В спящем режиме ток потребления 0,6 мА, из них 0,4 - МК, 0,2 - DS1307
СЛАВА УКРАЇНІ!
Позор агрессору, смерть оккупантам!
Последнее редактирование: 14 окт 2016 20:34 от Айнцвайдрайченко.
Администратор запретил публиковать записи гостям.

Регистратор событий 15 окт 2016 06:12 #14

  • Soir
  • Soir аватар
  • Не в сети
  • Moderator
  • Сообщений: 4101
  • Спасибо получено: 1415
Айнцвайдрайченко пишет:
1) регистрируются замыкания геркона. Надо регистрировать именно размыкания;
2) при замкнутом герконе, МК не уходит в сон, дисплей не выключается. При разомкнутом - есть сон, есть выключение дисплея;
Особенности режима сна микроконтроллера.
Варианты:
а). Замена геркона.
б). Инвертор сигнала геркона.
в). Изменение режима сна (увеличение потребления).
Айнцвайдрайченко пишет:
3) при пропадании питания, стирается память событий;
Перенес запись событий в EEPROM. Стирание памяти - нажатие и удержании нажатой SET в течении 5 сек.
Айнцвайдрайченко пишет:
4) задержка выключения 7 секунд - это мало. Хочется 20 сек.;
Сделал 15, потом только дочитал, что нужно 20. При следующее правке прошивки исправлю на 20.
Айнцвайдрайченко пишет:
5) чувствительность к дребезгу геркона. Интегрирующая цепочка 10кОм 0,1мкФ спасает, но лучше сделать программно;
Сделал программно, но и "железно" лучше оставить.
Айнцвайдрайченко пишет:
6) проблема с включением дисплея. Ключ IRLML2502 установлен в разрыв общего провода дисплея. Если закоротить канал вручную, дисплей включается, экран пустой.
Доработал подачу питания. Но ручное замыкание силового ключа не включит дисплей. Если с дисплея снималось питание, то он должен быть инициализирован, это может сделать только микроконтроллер.

Прошивку перезалил. Проверяйте все еще раз.
Администратор запретил публиковать записи гостям.
Спасибо сказали: Айнцвайдрайченко

Регистратор событий 15 окт 2016 16:46 #15

  • Айнцвайдрайченко
  • Айнцвайдрайченко аватар
  • Не в сети
  • Модератор
  • Сообщений: 282
  • Спасибо получено: 59
Память сработок сохраняется, стирание памяти работает. Всё работает, кроме: Дисплей упорно не инициализируется :(((
____________________________________________
Поставлю инвертор сигнала геркона.
15 сек - номально, пусть так и остаётся.
И еще одна незадача: приходится подстраивать контраст при просадке батареи. При 3,5 В уже невозможно прочесть и регулировка не помогает. Думаю, стоит ли применить на питание дисплея Step-Up преобразователь... Вероятно, это ещё более замедлит включение; предполагаю, что это надо учесть в прошивке.
СЛАВА УКРАЇНІ!
Позор агрессору, смерть оккупантам!
Последнее редактирование: 15 окт 2016 17:14 от Айнцвайдрайченко.
Администратор запретил публиковать записи гостям.

Регистратор событий 15 окт 2016 17:17 #16

  • Soir
  • Soir аватар
  • Не в сети
  • Moderator
  • Сообщений: 4101
  • Спасибо получено: 1415
Айнцвайдрайченко пишет:
Дисплей упорно не инициализируется
Опишите подробнее в каких случаях.
Администратор запретил публиковать записи гостям.

Регистратор событий 15 окт 2016 17:22 #17

  • Айнцвайдрайченко
  • Айнцвайдрайченко аватар
  • Не в сети
  • Модератор
  • Сообщений: 282
  • Спасибо получено: 59
Можно включить только ручной коммутацией питания, экран пустой. Последующее нажатие SET инициализирует дисплей и он правильно отображает.
Любое включение от МК вызывает набор случайных символов в верхней строке. Нижняя строка пустая. Нажатие на SET ничего не изменяет.
СЛАВА УКРАЇНІ!
Позор агрессору, смерть оккупантам!
Администратор запретил публиковать записи гостям.

Регистратор событий 15 окт 2016 18:06 #18

  • Soir
  • Soir аватар
  • Не в сети
  • Moderator
  • Сообщений: 4101
  • Спасибо получено: 1415
Обновил прошивку.
Администратор запретил публиковать записи гостям.

Регистратор событий 15 окт 2016 18:24 #19

  • Айнцвайдрайченко
  • Айнцвайдрайченко аватар
  • Не в сети
  • Модератор
  • Сообщений: 282
  • Спасибо получено: 59
При включении питания проходит заставка, на 0,5 сек появляется информация, затем экран очищается. Питание не выключается (ждал несколько минут). Далее, при нажатии SET, появляется информация и через 0,5сек экран очищаетя. Питание не выключается. Дальнейшие нажатия не дают результата.
СЛАВА УКРАЇНІ!
Позор агрессору, смерть оккупантам!
Последнее редактирование: 15 окт 2016 19:10 от Айнцвайдрайченко.
Администратор запретил публиковать записи гостям.

Регистратор событий 15 окт 2016 20:16 #20

  • Soir
  • Soir аватар
  • Не в сети
  • Moderator
  • Сообщений: 4101
  • Спасибо получено: 1415
Странно. Ладно, наверно надо самому в железе посмотреть. Но это уже завтра.

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

Регистратор событий 15 окт 2016 20:44 #21

  • Айнцвайдрайченко
  • Айнцвайдрайченко аватар
  • Не в сети
  • Модератор
  • Сообщений: 282
  • Спасибо получено: 59
Когда МК спит, то:
При разорванном общем проводе, ток потребления 0,6 мА
При разорванной плюсовой линии питания, ток потребления 0,8 мА
Это и послужило причиной выбора разрываемой линии.

P.S. В предыдущих прошивках отключение дисплея работало правильно.
СЛАВА УКРАЇНІ!
Позор агрессору, смерть оккупантам!
Последнее редактирование: 15 окт 2016 20:56 от Айнцвайдрайченко.
Администратор запретил публиковать записи гостям.

Регистратор событий 16 окт 2016 07:41 #22

  • Soir
  • Soir аватар
  • Не в сети
  • Moderator
  • Сообщений: 4101
  • Спасибо получено: 1415
Айнцвайдрайченко пишет:
В предыдущих прошивках отключение дисплея работало правильно.
Починил.
Администратор запретил публиковать записи гостям.
Спасибо сказали: Айнцвайдрайченко

Регистратор событий 16 окт 2016 11:41 #23

  • Айнцвайдрайченко
  • Айнцвайдрайченко аватар
  • Не в сети
  • Модератор
  • Сообщений: 282
  • Спасибо получено: 59
:((( Дисплей не инициализируется при включении. Можно включить вручную и инициализировать кнопкой SET.
Не выключается. С выхода 4 подаётся логический ноль, но дисплей подпитывается через порты.
СЛАВА УКРАЇНІ!
Позор агрессору, смерть оккупантам!
Администратор запретил публиковать записи гостям.

Регистратор событий 16 окт 2016 11:48 #24

  • Soir
  • Soir аватар
  • Не в сети
  • Moderator
  • Сообщений: 4101
  • Спасибо получено: 1415
Вечером буду дома, соберу на макете.
Только в спящем режиме все порты, связывающие МК с дисплеем, переводятся в 0. Может через регулятор контрастности...

Вообще, не люблю отключать общий провод в таких ситуациях, очень трудно контролировать устройство. Вплоть до того, что забываешь, что одну часть надо измерять относительно одной "земли", другую относительно другой...
Администратор запретил публиковать записи гостям.

Регистратор событий 16 окт 2016 16:21 #25

  • Айнцвайдрайченко
  • Айнцвайдрайченко аватар
  • Не в сети
  • Модератор
  • Сообщений: 282
  • Спасибо получено: 59
Согласен, такой способ "режет глаз". Но я ищу пути уменьшить потребление.
Я пробовал размыкать Vcc дисплея... Пробую на каждой прошивке. Получается ток потребления более 1 мА, когда МК спит :(
При размыкании земли, ток 0,6 мА.
Чтобы уменьшить ток, регулятор контраста запитан вместе с дисплеем, т.е. при размыкании земли, он тоже выключается. Точно так же и делитель контроля питания.
СЛАВА УКРАЇНІ!
Позор агрессору, смерть оккупантам!
Последнее редактирование: 16 окт 2016 16:35 от Айнцвайдрайченко.
Администратор запретил публиковать записи гостям.
  • Страница:
  • 1
  • 2
Модераторы: wolf2000, Vakula, Айнцвайдрайченко