Счетчик импульсов на дин рейку
Счетчик имеет два варианта исполнения, первый для снятия показаний со счетчиков с низкочастотным выходом импульсов, например водосчетчики, а второй для снятия показаний с электросчетчиков с импульсным выходом, где частота импульсов может достигать 16000 импульсов на 1 кВт⋅ч.
Первый вариант:
Счетчик имеет два входа. После С16 и С13 сигнал поступает на аналоговый коммутатор сигналов MM74HC4066, он коммутириует входные сигналы для разных типов датчиков. Например для датчиков системы NAMUR, если датчик используется герконовый или транзисторный например, то коммутатор коммутирует входы на триггер шмитта SN74LVC1G14DBVR для формирования сигнала с четким фронатами.
Далее сигнал поступает на цифровые или аналоговые (в случае NAMUR) входы микроконтроллера Atmega328, который и ведет подсчет импульсов. Счетчик имеет связь с внешним миром через Ethernet выполненного на микросхеме W5500 или WiFi (при установке на плату счетчика ESP8266) по протоколу MQTT.

При пропадании питания подсчитанные импульсы записываются в энергонезависимую память EEPROM микроконтроллера и при подачи питания счет продолжается.


Счетчик собран в корпусе фирмы меандр и представляет собой одномодульный (в соответствии с международным стандартом DIN 43-880) пластмассовый корпус для электронной аппаратуры, способ сборки без винтовой (на защёлках). Материал корпуса — ABS пластик светло серого цвета (RAL7035). Крепление корпуса на DIN рейку (35мм) или на ровную поверхность.
Код счетчика в открытом доступе на GitHub. Счетчик имеет несколько конфигурируемых параметров. Изменение параметров через топики MQTT:

Топик MQTT | Значения | Описание |
namur | true/false | Переключает входы счетчика на тип — NAMUR. |
polling | 500 — 4294967295 мс | Интервал публикации изменений данных в миллисекундах, т.е. данные счетчика публикуются только по изменению состояния, но не чаще заданного периода. |
correction | 0;0 | Для ручного задания текущих показаний счетчика, данные отправляются с разделителем «;» |
ratio | 1 — 32767 | Множитель, лучше использовать не на счетчике, а непосредственно в IoBroker |
namur_lvl_1 / namur_lvl_2 | 0 — 1023 | Значение аналогового входа, для типа NAMUR, выше которого будет считаться как срабатывание датчика. |
namur_brk_1 / namur_brk_2 | 0 — 1023 | Значение аналогового входа, для типа NAMUR, ниже которого будет выдаваться ошибка на обрыв кабеля. |
interrupt_1 / interrupt_2 | 1, 2 , 3 | 1 — CHANGE прерывание вызывается при смене значения на порту, с LOW на HIGH и наоборот. 2 — RISING прерывание вызывается только при смене значения на порту с LOW на HIGH. 3 — FALLING прерывание вызывается только при смене значения на порту с HIGH на LOW. |
bounce | 0 — 5000 мс | Задержка в миллисекундах для программного подавления дребезга |
save | true/false | При записи значения true происходит сохранение данных и параметров в энергонезависимую память EEPROM |
A_1 / A_2 | 0 — 1023 | Отображает текущие значения аналоговых входов при активном режиме NAMUR. Для облегчения конфигурации параметров — namur_lvl_x и namur_brk_x |
count_1 / count_2 | 0 — 4 294 967 295 | Значения счетчика. |
Второй вариант:
Схема счетчика отличается только входной и программной частью. Входная часть сделана на отдельном микроконтроллере Atmega328 которая занимается подсчетом импульсов, расчетом текущей нагрузки, замером тока и выводит значения на UART порт.
Код для второго варианта так же на моей странице GitHub.
После отключения питания счетчик автоматически сохраняет текущие показания в энергонезависимой памяти EEPROM.

Топик MQTT | Значения | Описание |
count | 0 — 4 294 967 295 кВт. | Значения счетчика. |
power | 0 — 32767 Вт | Текущее значение мощности нагрузки |
amp | 0 -100 А. | Ток нагрузки (требует подключения трансформатора тока) |
polling | 1000 — 32767 мс | Интервал публикации изменений данных в миллисекундах, т.е. данные счетчика публикуются только по изменению состояния, но не чаще заданного периода. |
bounce | 0 — 10000 мс | Задержка в миллисекундах для программного подавления дребезга |
num | 0 — 32767 | Значение передаточного числа счетчика. Количество импульсов на 1 кВт*ч |
save | true/false | При записи значения true происходит сохранение данных и параметров в энергонезависимую память EEPROM |
correction | 0 — 4 294 967 295 | Для ручного задания текущих показаний счетчика |
reset | true/false | Перезагрузка устройства с сохранением текущих значений |
RAW | count;power;amp;bounce;num;error | Вывод сырых данных одной строкой. |
MC34063, которая имеет широкий диапазон входных напряжений от 5.5 до 40 Вольт.

Огромную работу проделали!
Я делал Attiny85+ESP8266. А шлю в Blynk.сс или HTTP.
Идея была «подключил дома и забыл на 5 лет», чтобы питалась от батареек.
https://github.com/dontsovcmc/waterius