Предисловие Лето закончилось, и мне хотелось бы поделиться результатами одной интересной работы, а именно разработки, сборки, настройки и эксплуатации комбинированного ультразвукового датчика.
Сразу хочу сказать, что все устройство собиралось «на коленках», потому что было важно понять, насколько жизнеспособной может оказаться система.
Поэтому никакой защиты от дождя, солнца и ветра сделано не было.
Само устройство было установлено снаружи помещения.
Забегая вперед, скажу, что надежность оказалась весьма впечатляющей, несмотря на то, что устройство было собрано из остатков оборудования старых проектов.
Постановка задачи
Задача была поставлена ранней весной – одновременно с приобретением в питомнике 120 кустов малины.Как известно, малина очень отзывчива на полив, но в то же время не любит избытка воды.
Поэтому было решено собрать из подручных материалов систему, которая бы решала следующие задачи: 1. Управление погружным вибрационным насосом.
2. Измерение уровня воды в бочке емкостью 220 литров.
3. Когда электромагнитный клапан включается по требованию, начинается полив.
Отключение осуществляется по сигналу измерителя уровня воды.
4. По завершении цикла полива начинается цикл наполнения бочки.
Отключение осуществляется по сигналу измерителя уровня воды.
Часть оборудования
— УС-100 — ультразвуковой дальномер.Старший брат знаменитого HC-SR04. Основное отличие — наличие температурной компенсации и возможность работы в режиме передачи данных по UART. Сравнить их по точности мне не удалось из-за отсутствия HC-SR04. — Плата оснащена микропроцессором STM8S003F3P6. — ЖК-дисплей 2x16, совместимый с HD44780. — HLK-PM01 — блочный малогабаритный источник переменного и постоянного тока.
Входное напряжение 220 В переменного тока, выходное 5 В 600 мА постоянного тока.
- Электромагнитный клапан установочным диаметром 3/4 на напряжение 24В постоянного тока.
Ток потребления достигает 2 А.
— Корпус для основного устройства.
— Корпус ультразвукового датчика.
Конструкция этого корпуса — IP67, и как показала практика, такая конструкция выбрана не зря.
Инструменты разработки
Сразу хочу сказать, что я являюсь счастливым обладателем двух замечательных плат Arduino Mini. Но увы, ардуинизация сознания для меня закончилась, когда выяснилось, что даже при использовании операционной системы реального времени эта плата не хочет работать как слейв Modbus RTU с таймаутами менее 100 мс на скорости 57,6. кБить с запросом всего 64 регистра и еще делать хоть какую-то полезную работу.Именно поэтому была выбрана плата на базе платформы STM8, обладающая гораздо меньшими ресурсами.
В качестве среды программирования и отладки была выбрана IAR Embedded Workbench для STM8. Эта среда прекрасно работает с программатором-отладчиком ST-LINK V2. Программатор имеет интерфейс USB и подключается к отлаживаемому изделию всего 4 проводами.
При этом тока от отладчика зачастую бывает достаточно для питания отлаживаемой платы.
Я немного старомоден, поэтому мне нравится иметь возможность онлайн-отладки.
Я просто хочу посмотреть, что делает мой код во время выполнения.
Такой подход не раз экономил время и деньги.
Операционная система
Интересный факт: известный российский производитель Зодиака выпускает ПЛК без операционной системы реального времени.В самом начале своего пути передо мной стоял выбор, использовать или нет операционную систему реального времени для микропроцессора с такими ресурсами.
И был сделан очень неожиданный выбор – ChibiOS RT v2.6.9. В этой публикации я не буду рассматривать все особенности этой системы — отмечу лишь, что на создание двух потоков с одинаковыми приоритетами потребовалось 2547 байт флэш-памяти и 461 байт оперативной памяти.
На самом деле, немало — но результатом этой потери стало то, что теперь у меня есть 8-битный недорогой микроконтроллер, которым управляет операционная система реального времени.
И поэтому я могу управлять выполнением своих задач так, как мне нужно.
Ход работы: создание прототипа и написание программы
Сборка прототипа прошла достаточно быстро, особых проблем не возникло.
Результат показан на картинке ниже:
При программировании единственная проблема заключалась в том, что не нашлось готовых драйверов для дисплея и ультразвукового датчика.
В результате мне пришлось написать это самому.
Результатом работы стала стабильно работающая программа, исходный код которой вы можете найти в архиве .
Внешний вид прототипа, установленного в корпусе, показан ниже.
Вы можете просто увидеть процесс тестирования в домашних (читай: тест сферического процессора в вакууме) условиях.
Именно в таких режимах обычно тестируются направляющие Arduino, а результатом становятся отзывы об исключительной надежности получаемых «решений».
Поведение моего продукта в таком тесте было просто идеальным – никаких сбоев и отклонений замечено не было.
Ход работ: установка и запуск системы
Для установки было выбрано здание, расположенное в непосредственной близости от пункта управления.Как я уже говорил выше, никакой защиты от осадков не было предусмотрено.
В конце концов, затяжной дождь сделал свое дело – но об этом чуть позже.
На рисунке ниже показана установка ультразвукового датчика.
Устройство контролирует включение системы капельного орошения и управляется с помощью программируемого логического контроллера.
Контроллер имеет встроенную 1-проводную шину с возможностью подключения до 128 устройств к одному порту связи.
Датчик влажности комбинированный, емкостной, работает на частоте 80 МГц и имеет 1-проводной интерфейс.
Вместе с влажностью он передает количество освещенности на уровне установки датчика.
Эти устройства не обсуждаются в данной публикации.
Ход работы: эксплуатация
Применив мощность, было приятно видеть, что заложенный в программу алгоритм работает так, как хотел разработчик.Аппарат измерил расстояние до воды, определил, что бочка пуста, и включил насос, чтобы наполнить ее.
В процессе заливки отклонения показаний датчика уровня составили не более 15 мм, что вполне приемлемо.
Наполнив бочку, я выключил насос.
Теперь система готова начать процесс полива.
На начальном этапе все было гладко и красиво – но многолетний опыт подсказывал, что самое интересное еще впереди.
Ход работы: проблемы и решения
Как оказалось, установка дискового фильтра для очистки воды оказалась совсем не лишней – через 3 недели эксплуатации фильтр оказался настолько засорен, что просто не пропускал воду в систему.Изображение ниже.
Несмотря на то, что вода прозрачная, она оказалась достаточно агрессивной для стенок железной бочки.
Ствол начал ржаветь, результат вы можете увидеть ниже.
Решение оказалось простым – берем и красим внутреннюю часть бочки в два слоя прочной эмали.
Но это еще не все – как оказывается, бочка с водой очень привлекательна для различных видов водорослей, и они охотно в ней селятся.
В моем случае это даже получилась такая маленькая экосистема — картинка ниже.
Решение тоже простое – как известно, для развития водорослей необходим солнечный свет. Просто покрываем ствол непрозрачным материалом.
Полностью прекратить доступ света мне не удалось, в связи с чем необходима профилактическая промывка контейнера раз в месяц.
Но решение одной проблемы приводит к появлению другой – на покрытии начал скапливаться конденсат. И если бы не IP67-конструкция датчика, блок очень быстро пришел бы в негодность.
Кстати, несмотря на кажущуюся деликатность конструкции, ультразвуковой датчик показал себя весьма положительно.
Но пришлось его модифицировать — установить кольцевой отражатель, чтобы компенсировать ложные эхосигналы на некоторых расстояниях.
По-видимому, эхосигналы появляются в результате отражения пакета звуковых импульсов от стенок ствола.
В моем случае это расстояние составило 230-250 мм.
Заключение: путь вперед
Как я уже упоминал выше, ливень поздней осенью остановил испытания - резкий хлопок ознаменовал выход из строя клеммного разъема питания 220 В.И наступило время года, когда необходимость в самом устройстве отпала.
Анализируя полученный материал, я пришел к неожиданному выводу – в таком виде устройства нет необходимости.
Если модифицировать сам датчик и предоставить ему доступ к стандартным протоколам обмена типа modbus rtu, то управлять им можно будет напрямую из программы контроллера, не используя никаких промежуточных звеньев.
Я также рассматривал вариант использования 1-проводной шины — но лучше передавать 4-16-битные значения, используя более быструю версию протокола обмена.
В заключение хочу сказать, что если данная публикация вызовет интерес, то я буду рад продолжить серию публикаций о проектах, которые я собрал с паяльником и программатором в руках.
Теги: #STM8 US-100 ChibiOS/RT #Программирование микроконтроллеров
-
Сила Кредитов Swtor Для Игроков
19 Oct, 24 -
Одноразовый Бизнес
19 Oct, 24 -
Сколько Висеть В Пикселях?
19 Oct, 24