Как мы контроллер управления элементами наружной рекламы делали (часть 1)



    Однажды нам поступил интересный заказ на разработку и производство партии контроллеров для управления элементами наружной рекламы (ЭНР).

    Они должны были устанавливаться в аптеках одной сети и управлять по заданному времени наружной вывеской с рекламой, а также светящимся аптечным крестом.

    Помимо этого заказчик хотел, чтобы устройство измеряло напряжение в сети и ток потребления нагрузкой. В случае выхода этих параметров за заданные пределы все нагрузки должны были обесточиваться, а ему на телефон приходить SMS-сообщение.

    О том как начиналась разработка будет рассказано в первой части статьи.

    Часть 1
    Часть 2

    Итак, мы начали разработку с составления полных технических требований к устройству на основе «хотелок» заказчика. Для начала был проведён анализ текущего решения, которое уже эксплуатировалось в некоторых аптеках. Оказалось, что там было сделано всё довольно просто. Использовался вот такой электронный таймер:

    И всё! Ни ток, ни напряжение не измерялись, никакого информирования, соответственно, тоже не было.

    В ходе общения с заказчиком выяснился ещё один любопытный момент. Оказывается, его не устраивало то, что отсутствовала какая-либо возможность перепрограммировать устройство удалённо. А персонал аптек, естественно, с такой задачей не очень справлялся. Ещё заказчик жаловался, что в таймерах иногда сбоила сама программа и уходило время на встроенных часах. Собственно, под «перепрограммированием» он и имел в виду больше подстройку времени и простую смену интервалов работы.

    Таким образом, в результате эксплуатации этих таймеров заказчик и пришёл к понимаю какой именно функционал он хотел бы получить от нового устройства. Укрупнённо вышло четыре пункта, которые нам следовало реализовать:

    1. Включать/выключать вывеску по расписанию, чтобы не получить штраф за работу в ночное время, если вывеска расположена, например, напротив жилого дома. Персонал аптеки часто забывал обесточивать её перед уходом, а также включать с утра.
      А вывеска в городе для аптеки очень важна, потому что её неисправность приводит к потере потенциальных клиентов, которые могут не заметить аптеку на первых этажах зданий.
    2. Контролировать напряжение и ток. Превышение напряжения всегда сказывается не лучшим образом на любой электронике. Поэтому, чтобы избежать выхода из строя ЭНР, было решено их просто обесточивать в такой ситуации. Большое превышение по току свидетельствует о том, что блок питания ЭНР скоро может выйти из строя, либо произошло замыкание в каких либо отдельных элементах, а низкое потребление – что вышли из строя светящиеся элементы или сами источники питания ЭНР.
    3. Организовать оперативное уведомление о возникших неисправностях посредством отправки SMS-сообщений. Уж не знаю чем не устроило заказчика уведомление через боты различных мессенджеров (Telegram, TamTam, ICQ и пр.), но в ТЗ прописали именно отправку SMS.
    4. Хранить данные мониторинга (напряжение, токи, состояние реле, флаги срабатывания защиты и т.п.) в базе данных на нашем сервере с доступом к информации через Web-интерфейс.

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

    • Центральный контроллер со стеком протоколов TCP/IP для доступа к удалённому серверу.
    • Узел питания.
    • Узел измерения тока.
    • Узел измерения напряжения.
    • Узел управления нагрузками.

    Основным элементом схемы стал микроконтроллер серии PIC18 и внешний Ethernet-контроллер ENC28J60 фирмы Microchip. К микроконтроллеру мы подключили классическую микросхему часов DS1307 с кварцевым резонатором и литиевой батарейкой.

    Так как предполагалась постоянная связь с сервером, то с одной стороны можно было бы ограничиться программными часами и использованием внешнего NTP-сервера, но с другой стороны хотелось заложить большую автономность в устройство. В итоге это решение оказалось верным, так в процессе эксплуатации мы столкнулись с тем, что на ряде объектов не было постоянного доступа в Интернет, и устройства после первоначальных настроек работали полностью автономно иногда неделями.

    Для узла питания мы использовали AC-DC преобразователь с диапазоном входного напряжения питания 85…305В.

    Узел измерения тока выполнили на базе токового трансформатора:



    Он использовался один, хотя каналов управления нагрузкой было три. Сделано это с целью экономии на самих измерительных трансформаторах, а также для упрощения монтажа по просьбе заказчика. Мы ему поставляли только сами контроллеры, а работы по окончательной установке их в электрические щитки проводились его электриками.

    Надо отметить, что у нас не стояло задачи по точному измерению тока. Это была больше защитная функция (хотя по итогу мы получили точность порядка 0,1А). Поэтому был реализован следующий алгоритм. Превышение тока мы контролируем постоянно, а вот снижение его для нижнего порога только при всех включённых нагрузках. Это не совсем универсально, но в нашем случае в течение дня всегда есть диапазон времени, когда работают все ЭНР.

    Узел измерения напряжения решено было сделать на базе маленького трансформатора:



    Это недорогое решение, обеспечивающее при этом гальваническую развязку с сетью. На выходе трансформатора стоит образцовый резистор, на котором мы измеряем падение напряжения. Так как не бывает двух одинаковых трансформаторов, то такое решение требует индивидуальной калибровки каждого прибора. Мы её автоматизировали при помощи специального стенда и совместили с общей наладкой устройства во время производства. Подробнее об этом я расскажу в следующих частях статьи.

    В общем, все основные узлы выполнены без каких-либо хитрых решений. При этом самым интересным оказался узел управления нагрузками!

    На первый взгляд достаточно взять электромагнитное реле нужной мощности и всё готово. Но это не совсем так. Всегда необходимо учитывать характер нагрузки, который определяется таким параметром как cos(φ). Изначально у заказчика присутствовала ещё одна проблема, которую иногда списывали на неисправность таймера, но в процессе проведения нашей разработки она стала более понятна.

    Заключалась данная проблема в периодическом выходе из строя встроенного реле таймера. К сожалению, разобрать такой таймер и посмотреть тип реле у нас не получилось в силу его отсутствия, но и без этого причина была понятна. Стоит взглянуть на корпус самого устройства:



    Параметры коммутируемой нагрузки приводятся только для значения cos(φ) = 1. А это, по сути, резистивная нагрузка – обычный ТЭН.

    Самое интересное, что в документации на таймер этот параметр в явном виде не указан.

    Мы провели небольшое экспериментальное исследование и получили следующую табличку со значениями cos(φ) для различных нагрузок:
    Тип нагрузки cos(φ)
    AC-DC MeanWell RS-35-12 (35 Вт, 12В) с нагрузкой 35 Вт 0,55
    AC-DC MeanWell RS-35-12 (35 Вт, 12В) без нагрузки 0,07
    AC-DC MeanWell SE-450-12 (450 Вт, 12В) с нагрузкой 35 Вт 0,5
    AC-DC MeanWell SE-450-12 (450 Вт, 12В) без нагрузки 0,2
    AC-DC MeanWell SE-1000-12 (1000 Вт, 12В) с нагрузкой 340 Вт 0,6
    AC-DC MeanWell SE-1000-12 (1000 Вт, 12В) без нагрузки 0,2
    Компьютерный системный блок с БП 450 Вт 0,5
    Вытяжка (200 Вт) 0,86
    Кондиционер 24000 BTU (3 кВт) 0,97
    Печь-гриль (1,8 кВт) 1

    Измерения проводились специальным прибором APPA 138:



    Как известно, в случае превышения тока для заданного типа нагрузки ресурс контактов реле значительно уменьшается и увеличивается вероятность их «залипания».

    Мы использовали реле серии RT314 для которых максимальный ток указан в 16А. Но с учётом cos(φ) нужно использовать следующие значения:
    cos(φ) Максимальный ток нагрузки, А
    >0,95 16
    0,6 10
    0,4 0,5

    Также надо отметить, что при максимальном токе количество переключений сильно снижается. Оно составляет всего 50 тыс. циклов.

    В нашем случае, однако, максимальный ток не превышал 5А и переключения обычно осуществлялись два раза в сутки. Поэтому запас по мощности реле был довольно ощутимый.

    Но всё же, не имея возможности, измерять величину cos(φ) на каждом объекте, мы рекомендовали заказчику все нагрузки мощностью более 100 Вт подключать через развязывающие контакторы:

    На этом первая часть статьи окончена. Дальше я расскажу какое в итоге получилось устройство и как мы организовывали обмен данными с нашим сервером.

    Комментарии 29

      0
      коммутацию симистором не рассматривали?
        0
        Её отмели сразу из-за того, что очень длинные провода идут к рекламным конструкциям. Обычно около 50 м. Да и сам характер нагрузки очень разный. Изготовители рекламных конструкций используют различные типы источников питания и светящихся элементов. Поэтому и решили заложить реле. Кроме того, переключение происходит два раза в день, поэтому за ресурс мы не переживали.
          +1

          Где то на хабре была статья про "правильную коммутацию", так там ставили симистор параллельно с реле. При замыкании — сначала щелкает симистор (с контролем перехода напруги через 0), затем реле, размыкание — в обратной последовательности.

            0
            Да, мы тоже как-то делали такие «гибридные» реле. Но там свои тонкости. Для симисторов или готовых твердотельных реле надо дополнительно снабберную цепь ставить. В общем опять приходим к тому, что не универсально получается. Нужно знать какая будет нагрузка. Поэтому самое дубовое это реле и контактор, взятые с запасом по току.
              0
              цитата из habr.com/ru/company/unwds/blog/390601
              Причём при использовании современных симисторов, устойчивых к быстрым изменениям тока и напряжения (такие модели есть у всех основных производителей — NXP, ST, Onsemi, etc., наименования начинаются с «BTA»), снаббер не нужен вообще, ни в каком виде.
                +1
                Реальность показывает, что ещё как нужен.
        0
        А откуда взялась табличка, по которой изменение cos(φ) с 0,6 до 0,4 уменьшает допустимый ток нагрузки более, чем на порядок? В даташите на реле таких данных нет.
          0
          В документации вот такое значение приведено:

          В табличке мы его немного округлили.
          Реально, мы сталкивались с тем, что у реле типа TRD-5VDC (и различных аналогов) контакты «залипали» при нагрузке даже в 150 Вт, когда этой нагрузкой были AC-DC преобразователи.
          Забавно, что встроенный ККМ сильно дело не меняет.
            +2

            Естественно не меняет, для сети он в момент старта что есть, что нет. Контакты заваривает именно при включении, т.к. конденсаторы в БП разряжены и развивается пусковой ток (inrush current). Он может быть 30-40 ампер легко, а в дешевых китайских поделках, которые забивают на пусковые цепи и больше…
            Если коммутация произошла в момент достаточно большого мгновенного значения напряжения, то из-за дребезга контактов возникает дуга, которая оплавляет контакты, затем они смыкаются, остывают и свариваются.

              0
              На счёт пускового тока немного не соглашусь. Мы пробовали как-то ставить вот такой
              модуль защиты контактов.
              Он как раз для ёмкостных нагрузок предназначен. Так вот не особо он помогает. Реле типа TRD-5VDC залипают после сотни включений/выключений.
              При этом, в случае коммутации нагрузок типа кондиционера, проблем нет никаких даже без всяких доп. модулей. После этого мы и занялись вопросом изучения косинуса фи :-)
                0
                А просто термистор не поможет?
                  0
                  Может помочь. Проблема в нашем случае в том, что точек установки устройств очень много, и они в разных городах. Нет возможности везде проверить условия. В нашем городе было три точки, мы их обследовали как смогли. В результате решили просто заложить реле с запасом, да ещё и контакторы на более мощную нагрузку. Некоторые устройства, кстати, работают уже непрерывно два года. Эту статьи я пишу уже исходя из некоторого опыта их эксплуатации.
                    0
                    Поможет, но остаётся небольшой процент там где плохой контакт и может пропадать частенько(искрить), там термистор ещё горячий когда — тоже всё плохо. Но при цене термистора в десяток рублей и простоте — везде их ставлю. Даже в дрель для плавного старта)
                0
                Ну формально это тогда не максимальный ток нагрузки, а рекомендуемый, если вы хотите гарантировано получить свыше миллиона срабатываний.
              0
              На выходе трансформатора стоит образцовый резистор, на котором мы измеряем падение напряжения.

              Что то тут не так.
              На трансформаторах напряжения не используются эталлонные резисторы и измерение падения напряжения.
                0
                Немного неверно мысль я сформулировал. На выходе стоит резисторный делитель. Его нагружаем трансформатором (у нас он выдаёт номинально 12В). А уже напряжение с делителя измеряем микроконтроллером. Реальная схема, правда, чуть посложнее, т.к. измеряем мы RMS. В следующей части статьи я приведу саму схему. Будет намного понятнее. Но суть в том, что мы делаем индивидуальную калибровку, поэтому абсолютное значение сопротивления резисторов нам не сильно важно (в определённых пределах).
                0
                Основным элементом схемы стал микроконтроллер серии PIC18 и внешний Ethernet-контроллер ENC28J60 фирмы Microchip.
                Узел измерения тока выполнили на базе токового трансформатора:
                Узел измерения напряжения решено было сделать на базе маленького трансформатора:

                Непонятно зачем нужно было изобретать велосипед. Упомянутый Microchip/Atmel собаку съел на всяких измерителях параметров сети. Может надо было зайти на их сайт, сделать поиск power management или power metering application notes, стоят копейки, стандартные, понятные всем. Фронт работ можно распараллелить. В одно лицо на одном микроконтроллере работать и с нюансами силовой аппаратуры и с выходом в интернет может не получиться.

                По последовательному интерфейсу с гальванической развязкой передавать данные в основной микроконтроллер. Токовый трансформатор и трансформатор для измерения напряжения денег стоят, места много занимают, корпус для них и больше и дороже.

                Для симисторов или готовых твердотельных реле надо дополнительно снабберную цепь ставить.
                А она у вас и так должна стоять — при ваших сотнях ватт мощности и 50 метрах силового кабеля. То, что у вас пока не было проблем с инспекцией электросвязи, не означает, что не будет проблем дальше. Все-таки нагрузку лучше включать при переходе через 0 напряжения, а выключать тоже не абы-когда.
                  0
                  Ставить спец. микросхему для измерения параметров сети в данном случае это как из пушки по воробьям стрелять. Расчёт RMS делается в два десятка строчек кода на Си. Вся прошивка, включая стек TCP/IP и Web-интерфейс для настроек занимает около 40 кБ памяти микроконтроллера. Токовые трансформаторы можно покупать готовые, а можно намотать самому. Микротрансформатор для измерения напряжения также можно использовать любой (выходное напряжение большого значения не имеет). Всё это всегда доступно со складов поставщиков и стоит недорого.
                  По поводу переключения. Оно происходит дважды в день, поэтому усложнять схему без необходимости не стоит. Тут важнее надёжность, т.к. кабель выходит на улицу и там он может подвергаться внешним воздействиям. Линия питания для ЭНР в щитке защищена УЗО и обычными автоматами. Даже при жёстком КЗ ничего не выйдет из строя.
                    0

                    Насчет "Даже при жёстком КЗ ничего не выйдет из строя." я бы не был уверен. На 50 метрах кабеля автомат должен быть правильный очень, иначе он может отбить не сразу. А если ваш контроллер раньше автомата сообразит, что происходит перегрузка и попытается порвать ток КЗ маленькой релюшкой, то как минимум релюшку придется заменить.

                      0

                      Автомат с характеристикой C. При жестком КЗ он срабатывает за время не более 20 мс. Наше устройство усредняет показания за 200 мс, поэтому автомат при КЗ всегда сработает первым.

                      –1
                      Ставить спец. микросхему для измерения параметров сети в данном случае это как из пушки по воробьям стрелять. Расчёт RMS делается в два десятка строчек кода на Си. Вся прошивка, включая стек TCP/IP и Web-интерфейс для настроек занимает около 40 кБ памяти микроконтроллера.

                      Это сейчас 40 кБ, а потом захочется многое добавить, к примеру, — давать поочереди команды устройствам на отключение потребления тока перед тем, как отключить контактор, получать информацию о состоянии устройств — их температуру, количество отказавших светодиодов и т.д и т.п.
                        0
                        Для этого и составляется чёткое ТЗ перед началом разработки. Исходя из этого выбирается элементная база. Но и оставшейся 30% программной памяти хватит на реализацию очень большого куска логики при необходимости. Это же микроконтроллер. Тут всё байтами измеряется.
                          –1
                          Но и оставшейся 30% программной памяти хватит на реализацию очень большого куска логики при необходимости.

                          Исходя из этой фразы — наверное я не первый, кто спрашивает, почему только 16-битный микроконтроллер с только лишь 64 KByte программной памяти? Продукт совсем не массовый, покупать десятками тысяч микросхемы не будете, значит скидок не будет, а за эти доллар-полтора можно бы и 32-битный микроконтроллер с памятью в несколько раз больше взять наверное. Да и для проекта на сотни долларов — экономия (если есть) в несколько десятков центов непринципиальна. Наверное отвечаете, а зачем 32-битный, если 16-битнного достаточно для имеющегося четкого техзадания. А заказчику, когда он захочет большего, наверное скажете — надо было раньше думать, это совсем другая элементная база, это будет новая разработка с нуля.
                            0

                            Во-первых, это 8-битный микроконтроллер. Во-вторых, реализация алгоритмов управления в подобных задачах вообще никак не зависит от битности.

                              –1
                              Думаете многим здесь интересен ассемблерный код для 8-битных микроконтроллеров? При том, что за те же деньги (PIC18 + ENC28J60) можно взять, к примеру, STM32F107RCT6 (32-бит, 72 мгц, объем памяти программ 256 кбайт (256k x 8), объем RAM 64k x 8, встроенные интерфейсы — ethernet, корпус LQFP-64.
                              www.chipdip.ru/product/stm32f107rct6-2
                                0
                                Код пишется на Си в любом случае. Поэтому битность процессора тут ни при чём. Да и себестоимость надо правильно считать. Она определяется не одним только микроконтроллером.
                                  –1
                                  Код пишется на Си в любом случае. Поэтому битность процессора тут ни при чём.

                                  Если на С, то зачем брать 8-битный микроконтроллер с архитектурой, которая старше наверное 90% участников этого форума. За те же деньги (при таком обьеме производства) можно взять 32-битные, к примеру STM32. Как искать тех, кто согласится программировать в MPLAB XC8 для PIC18? Есть ли вообще такие на просторах великой и могучей сейчас, не говоря про потом. Как дальше поддерживать и развивать продукт, если вдруг текущий разработчик уйдет?

                                  Да и себестоимость надо правильно считать. Она определяется не одним только микроконтроллером.

                                  Так и я о том же. Брать надо микроконтроллер по мощности адекватный требованиям современных приложений, тем более, если еще и цена его ниже (при таком обьеме производства).
                    0
                    Дальше я расскажу какое в итоге получилось устройство и как мы организовывали обмен данными с нашим сервером.
                    Вот бы ещё увидеть, в какую сумму проект обошелся заказчику…
                      0
                      Один контроллер в серии обошёлся в 7500 руб. Разработка серверного ПО стоила примерно 5% от цены всей партии. Вся разработка заняла три месяца.

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

                      Самое читаемое