Найти в Дзене
Паяльник

Дисплей с ModBus интерфейсом

На работе дали задачку – установить шкаф с 3-х фазными розетками и защитами электрических двигателей. Для полного счастья необходимо показывать ток/мощность устройства на фасаде шкафа. Посмотрев на цены для начала, решил установить счетчик электроэнергии с Modbus протоколом RS485 – Schneider electric iEM3350. На счетчике есть маленький дисплей и кнопки, но это было временное решение, потому что не дело открывать шкаф каждый раз. Для дальнейшего развития посмотрел на широкий выбор дисплеев, которые бы могли бы считывать показания и, собственно, показывать значения тока и мощности. Ценник зашкаливал, и зачастую дисплей стоил дороже счетчика. Поэтому решил сделать дисплей самостоятельно. Выбор пал на то что лежало в шуфлядке, а именно Winstar WG12864M Данный дисплей не имеет встроенного знакогенератора и по сути имеет два идентичных контроллера NT7107 управляемых соответствующими выводами CS1 и CS2. В интернете множество всяких примеров под данный дисплей. В моём случае для управления чипами CS должна быть в состоянии 1. Счетчик э/э на фотографии ниже.

Первый блин я попытался сделать на основе STM32G0b1 и, к сожалению, из двух чипов заработал только один, потому что напряжение STM- 3.3 вольта, у дисплея 5В и напряжение единицы должно быть больше чем 3.5 В, поэтому плату переделал на PIC18F4520, который пылился у меня уже больше 15 лет, вот и пришло его время????. Переделав плату, через неделю она лежала уже на столе.

-2

И так, схема, изображенная на рисунке  выше проста до безобразия. Линейный стабилизатор питания 7805, если уровень напряжения не превышает +14 В, так как у меня 24 В в схеме используется шим регулятор R-78E5.0-0.5 с выводами как КРЕН5А. Микросхема драйвера RS485 -SN65HVD485E на маркировке VP485, включена по стандартной схеме. Помимо всего прочего на плате есть место под микросхему памяти – 24LC512, если не хватит памяти МК, то можно использовать её, хотя для моих целей и этого было достаточно. Разведён разъём программатора, я использую PICKIT2, но можно использовать любой. Плата сделана по размерам платы дисплея и устанавливается по принципу бутерброда. Практически все детали для поверхностного монтажа. Программа для МК написана на MPLABX v.6.15 и компилятор XC8 v.2.45. На плате есть место под кнопку и под другие микросхемы, но они не задействованы и будут использованы для занятий с детьми, данного проекта это не касается.

-3

Программа имеет следующие особенности:

  1. Инициализация всей периферии и дисплея.
  2. Вывод начальной картинки, я выводил лого компании, для примера осуществляется вывод ссылки cxem.net двойной высотой. В левом нижнем углу показывается количество включений/выключений
  3. В бесконечном цикле происходит запрос параметров, путём отправки пакета с запросом тех или иных значений.  Мне не хотелось заморачиваться с полным стеком Modbus, поэтому я установил программу Modbus Poll, собственно сделал 3 запроса для токов, напряжений, мощностей и перенёс их в программу.
  4. В прерывании происходит обработка двух событий – от таймера – мигание светодиода, показывает, что МК живой и приём данных от USART, а также по приходу всех пакетов разбор пакетов от счётчика. Здесь надо остановиться на том, что от счетчика данные приходят в формате float 32 bit MSB, что означает что сначала приходят старшие байты, а, по умолчанию у компилятора тип float имеет 24 bit LSB. Поэтому необходимо поменять настройки компилятора на 32 bit. Это делается в свойствах проекта XC8 linker, выбрать memory model с 24 на 32 бита.
  5. Для формирования шрифтов использовал программу mikroElektronika GLCD Font Creator.

На счетчике необходимо поменять скорость на 9600 и отменить 9й бит четности, нечётности. В принципе можно было заморочиться на этот 9й бит, но если для STM32 это всё входит в состав CubeMX, то здесь (для PIC) придётся писать процедуру вычисления и отправки этого бита.

Устройство рассчитано на относительно начинающего радиолюбителя, единственно требует навыков паяния SMD компонентов. Не требует какой либо настройки, единственно что необходимо переменным резистором выставить контрастность. А так можно использовать как некий рабочий инструмент для создания своих устройств. После включения происходит вывод заставки и количества числа включения/отключений

-4

Затем экран переходит в основной режим работы, где показываются основные параметры сети. Буквы на английском языке, собстанно сам шрифт был сделан с помощью программы Mikroelectronika GLCD Font Creater, данное программное обеспечение позиционируется как бесплатное, но на сайте производителя уже нет, наверное слишком старое.

-5

Затем на работе попросил сделать корпус для дисплея. Были напечатаны на 3D принтере следующие детали, я сам не ожидал такого высокого качества деталей.

-6

И собственно получился такой дисплей:

-7

Который был установлен в шкаф. Показывает фазные напряжения и маленький ток блока питания.

-8

В файлах как сама схема, так и файлы печатной платы в гербере и Diptrace и программа.

Прикрепленные файлы:

Автор: Mesha