Александр (AlexAW) продолжает ударными темпами выдавать «на гора» свои разработки. На этот раз речь пойдет о создании устройства, предназначенного для контроля расходы воды. И не только.....
В представленном проекте реализован двухканальный счетчик импульсов, обеспечивающий раздельный подсчет входных импульсов поступающих на счетные входы, с частотой до 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 я выпускать не планирую. Но если будут идеи, готов обсудить.
Вот небольшое видео с демонстрацией работы макета: