Оптопорт счетчиков, реализация програмирование.

Подключение исполнительных устройств, датчиков, контроллеров.

Модератор: immortal

Ответить
VladPTZ
Сообщения: 372
Зарегистрирован: Вт май 31, 2016 6:56 pm
Откуда: Россия Карелия Петрозаводск
Благодарил (а): 93 раза
Поблагодарили: 53 раза

Оптопорт счетчиков, реализация програмирование.

Сообщение VladPTZ » Чт фев 06, 2020 11:44 am

Пред история идеи.
Приобрел я себе в квартиру электросчетчик энергомера се102м с целью интеграции с MD при помощи модуля энергомера, но как потом выяснилось, продавец мне впарил счетчик без интерфейса rs485 (одна буква в названии модели отличается), типа сам дурак у всех такие других в продаже нет. Пришлось оставить, благо хотя бы на нет есть оптопорт.
Как пос же выяснилось считыватель оптопорта не смотря на простоту и дешевизну конструкции, стоит не адекватных денег в разы привыкающею стоимость счетчика в разы, и стоит больше 3000 т р, и длина USB провода и ограничение USB интерфейса не позволяют протянуть его через всю квартиру чтобы подключить к серверу мд.
Схем рабочего оптопорта я в интернете не нашел, пробовал изобрести велосипед, не получилось. Через три года дошли руки, и осцилограф появился.
Нашел схему http://vad-7.blogspot.com/2017/02/Mercu ... -IrDA.html
Собрал, счетчик не читается, как выяснилось оптопрот и irda на счетчиках это разные не совместимые протоколы.

Попался в руки считыватель оптопорта заводского исполнения на пару часов для пробы, счетчик успешно прочитался программой admintolls http://www.energomera.ru/ru/support/download/meters
Внутри этот девайс не сложен и выглядит вот так.
photo_2020-02-03_11-58-57.jpg
photo_2020-02-03_11-58-57.jpg (78.84 КБ) 172 просмотра
После анализа данной схемы, стало понятней в каком направлении двигаться.
Схема состоит из передающего ИК диода который через резистор напрямую подключен к микросхеме usb -uart конвертера ftdi232 а приемник реализован на фотодиоде и предположительно компараторе GT92.
На GT92 документации не нашел, может кто видел документацию на этот чип?
Очень похожая схема у датчика припядствия для ардуино https://aliexpress.ru/item/32813355026. ... b201603_53

Вот его схема
photo_2018-11-21_18-46-58.jpg
photo_2018-11-21_18-46-58.jpg (61.41 КБ) 167 просмотров
Немного переделал этот датчик под считыватель, отпаял минус у передающего ИК диода и подключил его на вход TX . Отпаял конденсатор который стоит параллельно приемному ик диоду чтобы не искажал принимаемый сигнал иначе не работало, выход data подключил к входу rx платы ftdi232.
IMG_20200206_120131.jpg
IMG_20200206_120131.jpg (1.61 МБ) 159 просмотров
Плату ftdi232 использую вот такую https://aliexpress.ru/item/32826575637. ... b201603_53
Для проверки работоспособности схемы запускаю программу putty выбираю СОМ порт выставляю скорость 9600, далее ставим на против ик приемо передающих диодов зеркало и переменным резисторов на плате добиваемся в putty стабильной передачи без искажений символов и текстов с клавиатуры.
Теперь можно пробовать подключиться к с счетчику энергомера се102м программой AdminTools и к счетчику Меркури1 236 программой с конфигурирования https://www.incotexcom.ru/support/soft
В моем случаю с меркурия боле мене стабильное считывания показаний происходит примерно в 3 см от счетчика, с энергомерой сложнее, стоит в щите и расстояние подобрать трудно, считывание проиходит три раза из десяти попыток.

Необходима дальнейшая доработка в плане стабильности конекта и удобства монтажа, например как то уменьшить рабочею зону считывания до такой как в заводских считывателей. Есть идеи как это сделать?

Дальнейшее развитие идеи это подключить считыватель к esp8266 и написать код чтобы esp считывала параметры напряжения мощность, текущие показания и т. и передавало их в мд по http запросу меняя свойства объекта.
вот лог обмена приложения admintools со счетчиком

Код: Выделить всё

Запрос
05.02.2020 22:15:14.810
2F 3F 21 0D 0A                                            /?!..

Ответ
05.02.2020 22:15:15.028
7F 0F 6A 77 7C 2F 45 4B                                   .jw|/EK

Ответ
05.02.2020 22:15:15.138
54 35 43 45 31 30 32 4D 76 30 31 0D 0A                    T5CE102Mv01..

Запрос
05.02.2020 22:15:15.153
06 30 35 31 0D 0A                                         .051..

Ответ
05.02.2020 22:15:15.372
07 30 35 31 63 61 01 50 30                                .051ca.P0

Ответ
05.02.2020 22:15:15.466
02 28 31 30 39 31 31 31 33 38 36 29 03 24                 .(109111386).$

Запрос
05.02.2020 22:15:15.482
01 50 31 02 28 37 37 37 37 37 37 29 03 21                 .P1.(777777).!

Ответ
05.02.2020 22:15:15.700
60 54 6C 30 6F 6A 60 64 06                                `Tl0oj`d.

Запрос
05.02.2020 22:15:15.794
01 52 31 02 53 4E 55 4D 42 28 29 03 5E                    .R1.SNUMB().^

Ответ
05.02.2020 22:15:15.810
60 3A 7E 30 3E 7F 55 2D 0A 29 6D 58                       `:~0>U-.)mX

Ответ
05.02.2020 22:15:16.075
02 53 4E 55 4D 42 28 30 31 30 35 31 30 31 30 39           .SNUMB(010384109
31 31 31 33 38 36 29 0D 0A 03 65                          111665)...e

Запрос
05.02.2020 22:15:16.091
01 42 30 03 75                                            .B0.u
Видео с полезным материалом https://www.youtube.com/watch?v=38w19u8 ... =22&t=675s
Сервер МД на x86 micro pc ssd + HDD, OC Debian, терминал Xiaomi Redmi note 7
Мои исходники для мд управляемых устройств https://github.com/vgamaev/ESPMDDEVICE
VladPTZ
Сообщения: 372
Зарегистрирован: Вт май 31, 2016 6:56 pm
Откуда: Россия Карелия Петрозаводск
Благодарил (а): 93 раза
Поблагодарили: 53 раза

Re: Оптопорт счетчиков, реализация програмирование.

Сообщение VladPTZ » Вт фев 11, 2020 10:01 pm

Покопавшись в Интернете нашел код http://arduino.ru/forum/programmirovani ... ent-350800 и доделал вот такой код для ардуины чтения счетчика Энергомера СE102М
https://github.com/vgamaev/Energomera-C ... Energomera
Вот что читает со счетчика.

Код: Выделить всё

ET0PE   7288.43------>7288.43
VOLTA   216.72------>216.72
POWEP   0.349126------>0.35
FREQU   50.01------>50.01
CURRE   1.689------>1.69
COS_f   0------>0.00

ET0PE   7288.43------>7288.43
VOLTA   218.55------>218.55
POWEP   0.343947------>0.34
FREQU   49.99------>49.99
CURRE   1.632------>1.63
COS_f   0------>0.00

ET0PE   7288.43------>7288.43
VOLTA   220.06------>220.06
POWEP   0.331969------>0.33
FREQU   49.98------>49.98
CURRE   1.615------>1.61
COS_f   0------>0.00

ET0PE   7288.44------>7288.44
VOLTA   221.13------>221.13
POWEP   0.331894------>0.33
FREQU   50.00------>50.00
CURRE   1.597------>1.60
COS_f   0------>0.00

ET0PE   7288.44------>7288.44
VOLTA   220.30------>220.30
POWEP   0.331338------>0.33
FREQU   49.99------>49.99
CURRE   1.587------>1.59
COS_f   0------>0.00
Значения аолучаю как строку так и float
Сервер МД на x86 micro pc ssd + HDD, OC Debian, терминал Xiaomi Redmi note 7
Мои исходники для мд управляемых устройств https://github.com/vgamaev/ESPMDDEVICE
Ответить