Пришлось изменить прошивку считывателя показаний счетчика Меркурий 231 AT, заодно и упростилась схема.
Как оказалось, конвертеры UART - IrDA MCP2120 закупленные на aliexpress.com оказались подделкой.
У них на 9600 бод ширина ТХ импульса 1.5us вместо 20us, и в итоге передача не устойчивая бывает.
В esp8266, в принципе, есть IrDA режим работы UART, но выяснилось, что с ним тоже не так все гладко...
Чтобы заработал встроенный IrDA должны быть включены биты UART0_CONF0: UART_IRDA_EN, UART_IRDA_TX_EN, UART_IRDA_RX_INV, UART_IRDA_DPLX.
Также нужно выключить подтяжку у RX пина.
Оказалось, в реализации IrDA в esp8266 два бага: глотает биты в четных байтах при блочной отправке и реальный baud rate ниже, причем только при отправке.
То есть, чтобы успешно использовать встроенный IrDA нужно писать в UART FIFO по 1 байту и повесить таймер на длительность байта + пауза между байтами.
Плюс одновременно увеличивать скорость UART на baud/15 перед отправкой блока данных и возвращать ее на место после.
Однако, все равно остается небольшая проблемка - между 7 и 8 битом интервал завышен:
Но счетчик это переваривает.
Если для вышеуказанного использовать стандартный ets_timer, то при активной передаче через wifi, паузы между байтами достигают нескольких миллисекунд.
ИК интерфейс счетчика Меркурий 231 AT при достижении паузы в 10ms начинает подвисать, поэтому, для надежности, используется NMI таймер.
Схема:
Вместо TFDU4100 нельзя использовать TFDU4101 - у него эхо.
Исходник тут: https://github.com/vad7/PowerMeter-IrDA
Как оказалось, конвертеры UART - IrDA MCP2120 закупленные на aliexpress.com оказались подделкой.
У них на 9600 бод ширина ТХ импульса 1.5us вместо 20us, и в итоге передача не устойчивая бывает.
В esp8266, в принципе, есть IrDA режим работы UART, но выяснилось, что с ним тоже не так все гладко...
Чтобы заработал встроенный IrDA должны быть включены биты UART0_CONF0: UART_IRDA_EN, UART_IRDA_TX_EN, UART_IRDA_RX_INV, UART_IRDA_DPLX.
Также нужно выключить подтяжку у RX пина.
Оказалось, в реализации IrDA в esp8266 два бага: глотает биты в четных байтах при блочной отправке и реальный baud rate ниже, причем только при отправке.
То есть, чтобы успешно использовать встроенный IrDA нужно писать в UART FIFO по 1 байту и повесить таймер на длительность байта + пауза между байтами.
Плюс одновременно увеличивать скорость UART на baud/15 перед отправкой блока данных и возвращать ее на место после.
Однако, все равно остается небольшая проблемка - между 7 и 8 битом интервал завышен:
Но счетчик это переваривает.
Если для вышеуказанного использовать стандартный ets_timer, то при активной передаче через wifi, паузы между байтами достигают нескольких миллисекунд.
ИК интерфейс счетчика Меркурий 231 AT при достижении паузы в 10ms начинает подвисать, поэтому, для надежности, используется NMI таймер.
Схема:
Вместо TFDU4100 нельзя использовать TFDU4101 - у него эхо.
Исходник тут: https://github.com/vad7/PowerMeter-IrDA
Здравствуйте. У меня в Меркурии нет инфракрасного порта... а если tx rx подать на микросхему pca82c250t(can шина) проект будет работоспособен?
ОтветитьУдалитьДобрый день!
ОтветитьУдалитьХочу повторить Ваш проект, закупил все детали, в том числе MCP2120. Какую версию посоветуете собрать - с ним или без него?
Добрый!
Удалитьу меня без него работает уже несколько лет норм.
С ним будет более универсальна. Если захочешь залить другую прошивку, к примеру easyesp.
УдалитьЗа проект спасибо, давно искал такую реализацию. было бы интерна прошивка без fram, т.к. она весьма не дешевая.
ОтветитьУдалитьЗдравствуйте, у меня такой же счетчик 231 at o1i, хотел бы приобрести у вас готовый комплект диспечеризации, как с вами связаться?
ОтветитьУдалитьДобрый день!
УдалитьПо электронной почте.
Этот комментарий был удален автором.
УдалитьДобрый день, уважаемый vad7. У меня есть к Вам вопрос как уже вижу к специалисту.
ОтветитьУдалитьНа предприятии у нас необходимо поставить 4шт электросчетчика по 380в, для анализа потребления с 4 точек.
Можете посоветовать какие счетчики поставить и можно ли у вас приобрести готовое решение по диспетчеризации с подключением к этим счетчикам с выводом показателей, графиков и т.д.? Нужна аналитика по потреблению, от дельных участков (парогенераторная, прачечная и т.д.)
P.S. почту вашу не смог найти куда писать...
Добрый день!
УдалитьПо счетчикам не подскажу, готовых решений для промышленной автоматизации нет.
Хочу сделать по вашему принципу.
УдалитьПодсказали электрики... На каждую фазу поставим трансформатор (TTC-DB - Трансформатор тока с разъемным сердечником) для понижения и подключим (например Меркурий 231 АТ). Дальше ESP8266 по вашим исходникам (я уже установил себе на ESP01 и ESP8266 для примера, все показывает, но без всей схемы... нет ни время ни опыта для этого...). Думаю что получиться. Первоначально нужно получить общие данные с парогенераторной где стоит 4шт котла по 200кВт каждый. Один общий счетчик, а второй на котёл который не давно отремонтировали для понимания его затрат в отдельности (или их вообще потом поменять на современные!). Котлам (американским) уже более 10 лет.
Что скажите, получиться получить аналитику по такой схеме? Потом можно и Raspberry подключить как общий сервер для объединения всех в одно место и т.д. На ваших картинках мне понравился интерфейс со всеми данными и по разному оборудованию. Это МастерСкада?
что-то тихо в данном чате...
ОтветитьУдалитьМожет есть идеи у других участников?
В инете есть подобные уже готовые предложения, но эта меня заинтересовала своей не зависимостью.