UA-23773963-1
Ваш браузер устарел. Рекомендуем обновить его до последней версии.

 Счетчик импульсов (расходомер) с  интерфейсом ModBus RTU RS485

 

    В представленном проекте реализован двухканальный счетчик импульсов, обеспечивающий раздельный подсчет входных импульсов поступающих на счетные входы, с частотой до 0,5 кГц и программный USART обеспечивающий связь счетчика с устройством центрального управления по интерфейсу RS485.

    Источником таких импульсов могут быть герконы встроенные в современные водосчетчики, или фототранзисторы, считывающие вспышки контрольного светодиода на электросчетчиках. Для снятия импульсов с центрального индикаторного «колесика» водосчетчиков можно воспользоваться вот таким устройством или вот таким, если колесико черное, а под ним белая или блестящая поверхность. Фотодиод от последнего хорошо снимает импульсы со светодиода электросчетчика. Принципиальная схема устройства показана на рис.1

Рис. 1

 

    Для счета непосредственно в единицах величины, в каждом счетчике предусмотрен шестнадцати битный (два байта) делитель входных импульсов, для преобразования импульсов в значение величины. Например на моем электросчетчике написано 3200 имп, на 1 кВт/ч. Соответственно если в делитель записать число 32 то счетчик будет считать с ценой деления 10 вт/ч

    Объем счетчика 4 байта, т.е. максимальное число сосчитанной величины - 4 294 967 295. Этого объема счета хватит считать электроэнергию и в милливаттах, а воду в стопках, очень долго. Поэтому для обеспечения сохранения данных в случае отсутствия электропитания, в схеме один вход микроконтроллера используется для обнаружения снижения питания. Цепь питания микроконтроллера отвязана диодом от основного питания и параллельно питающим ножкам микроконтроллера установлен накопительный конденсатор, который удерживает питание микросхемы достаточным, необходимое время для записи значений счетчиков, делителей, и прочей служебной информации в EEPROM. Дальше алгоритм программы построен так что микроконтроллер крутится в ожидании возобновления питания и после удержания его в течении нескольких миллисекунд в норме, восстанавливает значение счетчиков и делителей из памяти и продолжает работу.

    Счетчик импульсов управляется по интерфейсу RS485 протоколом Modbus RTU. Перечень команд выполняемых счетчиком сведен в таблицу (см. архив к статье)

    Значения счетчиков и делителей считываются и записываются двух байтными словами, в шестнадцатеричном виде. По умолчанию при программировании микроконтроллера в делители записаны коэффициенты 2 и 3. Для сведения в ячейку с адресом 00h записывается адрес устройства в сети Modbus, в ячейки с адресами 01h и 02h записываются значения делителя первого счетчика, в ячейки с адресами 03h и 04h - значения делителя второго счетчика. Следует отметить, что коэффициенты деления счетчиков переписывается в специальные регистры делителей, а далее происходит их декремент с каждым входящим импульсом до нуля. А далее увеличивается значение счетчика величины на единицу, и в делитель вновь загружается коэффициент деления. Поэтому в обновленную прошивку счетчика внесен сброс этих делителей при загрузке нового коэффициент деления.

    Вся последующая  обработка информации возлагается на центральное устройство. Периодически снимая информацию со счетчиков и занося ее в таблицы, синхронизированные по времени, можно проводить подробный анализ потребления величины, определять периоды и величины максимального и минимального объемов, анализировать расходы за определенный период, находить корреляции, между посещениями тещи и возрастанием потребления и даже обнаруживать утечки. Я уж не говорю о тривиальной передаче показаний в сбытовую организацию. В общем должен быть полезный девайс!

    Вот собственно и все На этом пока устройства с программным USART я выпускать не планирую. Но разработанные в нем модули применю в более сложном устройстве, которое уже в проекте.

 Архив материалов к статье 

 

Вот небольшое видео с демонстрацией работы макета: