Разработка и эксплуатация ультразвукового сенсора наполнения бака

Предисловие

Закончилось лето, и мне хотелось бы поделиться результатами одной интересной работы — а именно разработкой, сборкой, наладкой и эксплуатацией комбинированного ультразвукового датчика. Хочу сразу сказать, что всё устройство собиралось «на коленках», потому что было важно понять, насколько система может быть жизнеспособна. Поэтому не было сделано никакой защиты от дождя, солнца и ветра. Сам прибор был установлен снаружи помещения. Забегая вперёд, скажу, что надёжность оказалась весьма впечатляющей, несмотря на то, что устройство было собрано из остатков оборудования от старых проектов.

Постановка задачи


Задача была поставлена ранней весной — вместе с приобретением в питомнике 120 кустов малины. Как известно, малина очень отзывчива к поливу, но одновременно не любит и избытка воды. Поэтому было решено из подручных материалов собрать систему, которая бы решала следующие вопросы:

1. Управление погружным вибрационным насосом.
2. Измерение уровня воды в 220 литровой бочке.
3. Включение электромагнитного клапана по запросу — начало полива. Отключение производится по сигналу от измерителя уровня воды.
4. По завершению цикла полива запуск цикла заполнения бочки. Отключение производится по сигналу от измерителя уровня воды.

Состав оборудования


— US-100 — ультразвуковой измеритель расстояния. Старший брат знаменитого HC-SR04. Главное отличие — наличие температурной компенсации и возможность работы в режиме передачи данных по UART. По точности сравнить мне их не удалось ввиду отсутствия HC-SR04.
— Плата, оборудованная микропроцессором STM8S003F3P6.
— LCD 2x16, совместимый с HD44780.
— HLK-PM01 — блочный малогабаритный источник питания типа AC-DC. Входное напряжение 220В переменного тока, выходное 5В 600 мА постоянного тока.
— Электромагнитный клапан с установочным диаметром 3\4 на напряжение 24В постоянного тока. Потребляемый ток достигает 2 А.
— Корпус для основного прибора.
— Корпус для ультразвукового сенсора. Исполнение этого корпуса IP67, и как показала практика, такое исполнение было выбрано не напрасно.

Средства разработки


Хочу сразу сказать, что я являюсь счастливым владельцем двух замечательных плат Arduino Mini. Но увы — ардуинизация сознания для меня закончилась тогда, когда оказалось, что даже с использованием операционной системы реального времени данная плата ну никак не желает работать в качестве Modbus RTU slave с тайм-аутами меньше 100 мсек на скорости 57,6 кБит при запросе всего 64 регистров и при этом делать хоть какую-то полезную работу. Именно поэтому была выбрана плата на платформе STM8 с гораздо меньшим количеством ресурсов. В качестве среды программирования и отладки был выбран IAR Embedded Workbench for STM8. Данная среда прекрасно работает с программатором — отладчиком ST-LINK V2. Программатор имеет интерфейс USB и подключается к отлаживаемому изделию всего 4-мя проводами. При этом зачастую тока от отладчика достаточно для питания отлаживаемой платы. Я немного старомоден, и поэтому мне нравится иметь возможность онлайн — отладки. Я просто хочу видеть, что делает мой код в режиме исполнения. Этот подход не раз экономил время и деньги.

Операционная система


Интересный факт: известный российский зодиакальный производитель выпускает ПЛК без операционной системы реального времени.

В самом начале пути я встал перед выбором — использовать или нет операционную систему реального времени для микропроцессора, обладающими такими ресурсами. И выбор был сделан весьма неожиданный — ChibiOS RT v2.6.9. Не буду в этой публикации рассматривать все особенности этой системы — только отмечу, что создание двух потоков с одинаковыми приоритетами заняло 2547 байт флеш — памяти и 461 байт оперативной. Собственно, немало — но результатом этой потери стало то, что теперь я имею 8 — разрядный недорогой микроконтроллер, который управляется операционной системой реального времени. И следовательно, я могу управлять исполнением моих задач так, как мне необходимо.

Ход работ: сборка прототипа и написание программы


Сборка прототипа прошла достаточно быстро, особых проблем не возникало. Что получилось в результате, показано на картинке ниже:

image

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

Внешний вид прототипа, установленного в корпус, показан ниже. Как раз виден процесс тестов в домашних( читайте — тест для сферического процессора в вакууме) условиях. Именно в таких режимах обычно тестируют ардуиноводы, и результатом являются отзывы об исключительной надёжности получаемых «решений». Поведение моего изделия в таком тесте было просто идеальным — никаких сбоев или отклонений замечено не было.

image

Ход работ: монтаж и запуск системы


Для монтажа было выбрано строение, расположенное в непосредственной близости от объекта управления. Как я говорил выше, никакой защиты от атмосферных осадков не было предусмотрено. В конце концов, затяжной ливень сделал своё дело — но об этом немного позже. Ниже на картинке показана установка ультразвукового датчика.

image

Устройство управляет включением системы капельного полива, причём управляется от программируемого логического контроллера. Контроллер имеет встроенную шину 1-wire с возможностью подключения до 128 устройств на один коммуникационный порт. Датчик влажности комбинированный, емкостный, работает на частоте 80 МГц и имеет как раз интерфейс 1-wire. Вместе с влажностью передаёт величину освещённости на уровне установки сенсора. Данные устройства в этой публикации не рассматриваются.

Ход работ: эксплуатация


Подав питание, было приятно увидеть, что алгоритм, заложенный в программе, работает так, как и хотел разработчик. Блок измерил расстояние до воды, определил, что бочка пустая, и включил насос для заполнения. В процессе заполнения отклонения показаний датчика уровня составили не более 15 мм, что достаточно приемлемо. Заполнив бочку, отключил насос. Теперь система готова к началу процесса полива. На начальном этапе всё было гладко и красиво — но многолетний опыт подсказывал, что самое интересное будет впереди.

Ход работ: проблемы и решения


Как оказалось, установка дискового фильтра для очистки воды оказалась совсем не лишней — через 3 недели эксплуатации фильтр оказался забит настолько, что просто не пропускал воду в систему. Картинка ниже.

image

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

image

Но это ещё не всё — как оказалось, бочка с водой очень привлекательна для разного рода водорослей, и они охотно селятся в ней. В моём случае получилась даже вот такая небольшая экосистема — картинка ниже.

image
Решение тоже простое — как известно, для развития водорослей необходим солнечный свет. Просто накрываем бочку непрозрачным материалом. Мне не удалось полностью прекратить доступ света, и поэтому раз в месяц необходима профилактическая промывка емкости.

Но решение одной проблемы вызывает появление другой — на накрывающем покрытии стал собираться конденсат. И если бы не исполнение IP67 сенсора, то очень быстро блок пришёл бы в негодность. К слову сказать, несмотря на кажущуюся нежность конструкции, ультразвуковой датчик показал себя весьма положительно. Но пришлось его доработать- поставить кольцевой отражатель для того, чтобы компенсировать ложные эхо — сигналы на некоторых дистанциях. По видимому, эхо-сигналы появляются в результате отражения пачки звуковых импульсов от стенок бочки. В моём случае эта дистанция составила 230-250 мм.

Заключение: дальнейший путь


Как я упомянул выше, ливень поздней осенью прекратил тестирование — резкий хлопок ознаменовал собой выход из строя терминального соединителя питания 220 В. Да и наступило то время года, когда отпала необходимость в самом устройстве.

Анализируя полученный материал, я пришёл к неожиданному выводу — нет необходимости в приборе в таком виде. Если доработать сам сенсор, и дать ему доступ к стандартным протоколам обмена типа modbus rtu — то можно будет управлять прямо из программы контроллера, не используя никаких промежуточных звеньев. Я также рассматривал вариант использования шины 1-wire — но передачу 4-х 16 разрядных величин лучше делать на более скоростном варианте протокола обмена.

В заключение хочу сказать, что если эта публикация вызовет интерес, то я с удовольствием продолжу серию публикаций про проекты, которые собраны мной с паяльником и программатором в руках.
Поделиться публикацией
Комментарии 59
    0
    Не совсем понял заключение, в следующей версии вы планируете отказаться от промежуточного контроллера (STM8) и подключить к вибрационному насосу непосредственно сенсор US-100? Планируете написать для него новую прошивку (нашёл фото сенсора, но не понял, какой там стоит контроллер) для поддержки нужного протокола?
      0
      Немного сумбурное получилось заключение…
      Следующая версия — это датчик уровня воды, который будет использовать всё тот же ультразвуковой сенсор US-100.
      На плате сенсора имеется МК, но я просто добавлю к нему ещё один- дополнительный.
      В качестве дополнительного я применю уже STM32 — просто STM8 с 2-мя UART стоит едва ли не больше. А согласитесь, 32 разрядный CPU это намного приятнее в использовании. Тем более, что для STM32 у меня уже для новой версии ОС( ChibiOS/RT 16.1.1) имеются отлаженные и проверенные библиотеки для modbus rtu slave, как раз с поддержкой работы через драйвера операционной системы.
      И опять же, использую ОСРВ и обязательно гальваническую развязку для шины RS-485.
      +1
      Ультразвуковой датчик избыточен. Достаточно и поплавка с магнитом и герконом. Причём геркон будет надёжнее.
        0
        Совершенно верно — для просто наполнения бочки избыточен. А вот для обеспечения хитрых режимов полива, когда я по уровню рассчитываю дозу воды — как раз то, что надо. Ведь при наличии обратной связи по влажности и правильно настроенном алгоритме полив включается примерно через 30 минут, и при этом работает всего 2-4 минуты.
          0
          Тогда уж надо ставить датчики потока на трубы, идущие к разным грядкам и делать более точное распределение.
            0
            Для распределения воды я использую компенсированные эмиттерные трубки, а у них есть одна характерная особенность — малая зависимость водовылива эмиттера от длины и перепада уровня. Так что конкретно в моём случае можно и не заниматься выравниванием расхода воды по ветвям. Один мой коллега из Сербии кстати вот попался на этом — купил нескомпенсированную систему, и на его достаточно большом участке была как раз эта проблема- по краям трубок был недостаток воды.
        +1
        Был опыт подобной же разработки. Делал систему контроля за уровнем воды в котле, из которого обеспечивается водоснабжение частного дома. При этом автоматически осуществлялся долив котла и остановка насоса, заполняющего котел. В качестве датчика уровня при этом использовался датчик давления. Датчик помещался в тонкую пластиковую трубку. Трубка в котле располагалась вертикально, верхний конец ее был герметически закрыт. Датчик давления измерял давление воздуха в трубке. При поднятии уровня жидкости в котле, давление в трубке поднимается. Удавалось контролировать уровень жидкости с точностью порядка 1-2 см.
          0
          Если есть информация, какой был датчик? Или хотя бы пределы измерения и дискретность…
            +1
            Использовал датчик типа 24PCAFA6D от Honeywell. Если честно датчик был неоптимальным по цене. Использовал его лишь потому, что был под рукой.
          +2
          О, коллега!
          Решал в точности такую же задачу для того же самого.
          Влажность у меня считала небольшая широкая отдельная ёмкость, подвешенная на рычаге кнопки — пока в ней вода есть (дожди налили) — насос разомкнут. Как высохло — можно поливать.
          Полив по хитрому таймеру, с утра наливаем бак ледяной водой из колодца до срабатывания геркона или отсечки по таймеру 30 минут, (защита от слетания шланга с насоса). В где-то 14 «ноль-нуль» пять минут доливаем, что бы уровень заведомо превысил верхнюю часть сифона и пошёл подсос. Дальше бак выливается сам сифоном почти весь до дна, к сожалению начиная с самой холодной воды внизу, но постепенно ко всё более тёплой. Но там на вход стояла шайба с малой дырочкой (а перед ней большой дуршлаг от жуков) — что бы слив был медленный (час где-то бежала).
          Собственно всё. Из элетроники только розеточный таймер за 300 р (механический кажется), один геркон, одна копка, одно реле (для гальваничекой развязки бака от сети (а насос всё равно в воде — сам собой заземлён).

          Чисто советы — «бочка» должна быть чёрной, сверху открытой и широкой-широкой — тогда солнце лучше прогревает воду. Можно сверху пустить плавать пупырчатую плёнку, но тогда есть шанс утопить в баке глупую ворону.
            0
            Добавлю, что у меня там в баке — аквариум: водоросли, мотыль, жуки плавунцы и их личинки, личинки стрекоз и т.п. живность открытого водоёма. Пыль, листья, птичий помёт… Земле всё равно, малине тоже, сетку-дуршлаг чищу раз в год, поплавок для магнита для ГК — размером с кирпич, ему всё по барабану.
              0
              А в Вашем случае тоже применяли компенсированные эмиттерные трубки для распределения воды? В моём случае вообще получился как анекдот — водоросли росли снаружи эмиттера. Вот картинка
              image
                0
                видимо у меня между поливами шланг высыхает полностью — ничего подобного.
                Всё же да, был не точен и даже, скорее, неправ — у меня задача сильно проще вашей — постоянной подпитки капельной мне не надо — раз в сутки полить, пусть и час-два цедить — более чем хватает.
                  0
                  Мне кажется, что это побочный эффект того, что система автоматическая и вода постоянно присутствует. Видимо, влажность вокруг эмиттера поддерживается такой, что хватает для поддержания жизни водорослей.
                  Удивительно — но они выдерживают достаточно большую температуру днём!

                  P.S.Пример с вороной мне жутко понравился — совершенно неожиданно! Ведь вороны считаются достаточно умными… Видно, эту ворону звали не Беар Гриллс.
              0
              Спасибо за информацию, коллега!
              Про пупырчатую плёнку сразу беру на вооружение — ворона в дисковом фильтре 120 нм застрянет.
              А вот с цвет бочки выбрали именно такой потому, что влажность почвы падает примерно с 10 утра на наших широтах(Новороссийск), а в это время солнце уже жарит порядочно. У меня чёрные шланги- и они очень быстро нагреваются выше 41 градуса. Так что прохладная вода будет как раз в меру.
              А как вы тогда боролись с водорослями? Или у вас не возникало за 2-3 дня вот такой «бороды»?
              image
                +1
                У меня подмосковье — мне «не залить до болота» — важнее.
                В баке у меня чуть ли не камыши растут и лягушки квакают — не вижу проблемы от мусора там — на воде в шланг фильтр размером с трёхлитровую банку из двух сетчатых дуршлагов «хайлами навстречу».
                Но всё прекрасно работает и вообще без фильтров — если жук-плавунец смог попасть в шланг через входное — то он выйдет через выходное в торце пливочного шланга (тонкие дырочки натыкны по пути, но дальный конец тупо открыт и чуть приподнят) и улетит с грядки — ему там делать нечего, а тина/ряска и мотыль будут удобрениями.

                У меня это вообще поделка из серии «за вечер на коленке», сложностью «как насадить лопату на черенок», просто не вижу тут предмета обсуждения — «как ни сделай — всё ладно».
              0
              Признаюсь — ту публикацию я читал несколько раз.Помнится, там тоже была дилемма «быть или не быть герконам».
              Но данный проект — это не финальная версия устройства. Это была реализация «малой кровью» очевидных решений.
              И оказалось, что очевидные решения совсем не очевидные.
              Что касается гидростатического метода измерения — то я его тоже рассматривал, но выбрал именно ультразвуковой метод по нескольким причинам — US-100 у меня уже был, датчика давления у меня не было, не хотелось делать в бочке лишние отверстия.
              В ближайшем времени я буду готовить публикацию по новому прибору — и его уже можно будет рассматривать как отдельный прибор в достаточно серьёзных системах автоматизации.
                0
                А что за кольцевые отражатели на УЗ-датчик? Как они выглядят?
                  0
                  Кольцо высотой 32 мм, отрезанное от какой-то пластиковой трубы… Диаметр точно не помню- но могу измерить.
                    0
                    Нашёл параметры УЗ-датчика US-100: измеряемое расстояние — от 2 см до 450 см.
                    На какое расстояние от датчика у вас опускается вода?
                      0
                      Я опоздал с ответом по параметрам — но зато могу дополнить.
                      Я проверял температурную компенсацию — просто грел феном сам сенсор.
                      При этом на дистанции в 1 метр показатели поплыли примерно на 5 мм.
                      В помещении показывает стабильно- если оставить на сутки, то цифры расстояния как влитые.
                      Я могу дать ответы прямо по картинкам в публикации — на индикаторе 870 мм — это нижний предел, 70 мм- верхний предел.
                      Нижний предел так настроен, что ещё остаётся 30-35 мм воды.
                        0
                        В этих сенсорах нет температурной компенсации, потому что она там тупо не нужна.

                        Он измеряет время задержки между отправкой и приёмом пачки импульсов, погрешностей первого порядка там всего две — температурный дрейф кварцевого резонатора микроконтроллера и изменение скорости звука в воздухе в зависимости от температуры.

                        В диапазоне -50...+50 °С скорость звука меняется на 20 %, если такая точность кому-то важна — надо ставить датчик температуры воздуха и компенсировать программно. Кварц можно не учитывать, даже самый дешёвый уплывёт максимум на сотые доли процента.
                          0
                          День добрый!
                          Насчёт наличия компенсации — она тут необходима, потому что
                          В диапазоне -50...+50 °С скорость звука меняется на 20 %,
                          .
                          Если вы видели модуль US-100, то обратите внимание на большой диод внизу — по описанию разработчиков, это и есть датчик. Можете провести натурный эксперимент — слегка прогрейте паяльником, и следите за показаниями.
                          Если у Вас имеется схема этого модуля или может исходник — буду рад посмотреть. И вот уже тогда
                          мы сможем обсудить наличие или отсутствие компенсации.
                          А пока это извините, но просто беседа о возможностях.
                            0
                            http://gloimg.gearbest.com/gb/2015/201507/source-img/1437953071195-P-2836382.jpg

                            Красный справа?

                            Судя по количеству остальных компонентов, компенсация если и есть, то грубая. Точный датчик на диоде требует источника тока, источника опорного напряжения и ОУ, здесь всего этого явно нет.
                              0
                              Коллега, истина где-то рядом!
                              Действительно, такого рода компенсация не может блистать точностью.
                              Но ведь сама идея этого сенсора — копеечный датчик, которых можно купить просто мешок.
                              Самое главное — мы совместно выяснили, что компенсация имеется, хотя и не совсем такая, как бы хотелось.
                              Согласитесь, что для применений, описанных в статье, сенсора с подобной точностью более чем достаточно. Я мог бы установить промышленный датчик -но его стоимость превосходит стоимость всей системы просто в десятки раз! Согласитесь, неразумно. Да и не наш это путь.
                                0
                                Для уровня воды в бочке его даже без компенсации — по уши.
                                  0
                                  Именно так, коллега!
                  +1
                  По опыту, самый надежный датчик на участке или даче, — гирлянда герконов в пластиковой трубе(типа для полива, или алюминиво-пластиковой, — применяемой для водопровода в доме, и поплавок из плотного пенопласта (ПСБ С 35, к примеру), склеенный из двух кружков, верхнего и нижнего, меж которых вкладываем(или вклеиваем) кольцевой магнит.
                  Герконы берутся нормально замкнутые, спаиваются последовательно, и параллельно каждому паяется N-ное кол-во последовательных сопротивлений в 10-15 ом, в зависимости от номера геркона от нижнего конца трубки. Т.е. на первом в параллель 10 ом, на втором 20, на третьем 30… и т.д.

                  Есть и оч. дешевые китайские датчики давления воды бросаемые на дно бочки, и выдающие ток 4-20 ma (настройка граничного тока от высоты бочки), — токовывод датчика типо в мягком кембрике-термоусадке, от дна выводится наверх, длина заказывается, хотя, имхо, датчик минимальной длины около 2-3-x метров
                    0
                    Коллега! Было бы любопытно посмотреть на фото такого надёжного датчика после хотя бы полугода работы… Водоросли листья и живность, иногда падающая в воду, частенько меняет мнение о надёжности.
                    В моём случае метод бесконтактный — и этим многое сказано… Так что даже толстый жук просто воспринимается как временная девиация уровня. а не как монстр, заклинивший поплавок.
                    Но суть не в этом — проект это ведь исследовательский…
                      0
                      Было бы любопытно посмотреть на фото такого надёжного датчика после хотя бы полугода работы

                      труба под датчик — 20мм, поплавок с кольцевым магнитом от 50 ватного динамика — внутреннее отверстие 42мм
                      Вообщем 2 см запас по щели меж осью и поплавком и поплавок приличный, думаю килограмма полтора-два — грузоподъемностьт, жука размажет… но у меня не было ни водорослей, ни жуков, суриковое днище, марганцовка, в период поливки крышка с москитной сеткой, в межполивной длительный промежуток закрывалось тротуарной плитой *бочка прикопана в земле.

                      Что было из живности, — это через полгода некая слизь на трубе датчика и стенах бочки, ну и периодически протирал стенки бочки и датчик керосином(сказали это что это типа плесени), но вообщем поливу не мешало, но обеззараживал дабы положено по «уставу» ...)))(Да мышь еще однажды свалилась, неплотно прикрыл крышкой на ночь
                        0
                        Ну, положим, сколько у вас эти УЗ-излучатели проживут — тоже вопрос открытый.

                        По-хорошему для таких применений делается корпус не менее IP67 и ставятся герметичные излучатели.
                          0
                          День добрый!
                          Позволю себе цитату из статьи -
                          И если бы не исполнение IP67 сенсора, то очень быстро блок пришёл бы в негодность.

                          Как видите, корпус сделан с исполнением не менее IP67, и герметизация проведена как положено. Будет свободное время — сделаю фото сенсора со стороны излучателей, чтобы было видно их состояние.
                            0
                            http://gloimg.gearbest.com/gb/2015/201507/source-img/1437953071559-P-2836382.jpg

                            Вот это ни разу не IP67. За пару лет внутри запросто может что-нибудь сгнить.
                              0
                              Вот именно поэтому и применяется корпус с исполнением IP67, уже в который монтируется сенсор.
                              И поверьте, герметизация при помощи компаундов весьма эффективна, хотя и крайне затрудняет демонтаж.
                              А что касается ультразвуковых головок приёмника и передатчика — сколько они могут выдержать, действительно вопрос. Но я по крайней мере, на реальном примере убедился — больше 5-ти месяцев выдержали.

                              Вот как срок работы достигнет 2 лет — обязательно поделюсь.
                                0
                                Вот пример водостойких излучателей:
                                https://ru.aliexpress.com/item/Transceiver-integrated-16mm-40KHz-Ultrasonic-Sensor-waterproof-type-Ultrasonic-module/32561790166.html
                                https://ru.aliexpress.com/item/Ultrasonic-sensor-probe-XNQ40-18A-one-ultrasonic-distance-sensor-18MM-40KHZ/32381692052.html

                                Ну и датчики от парктроника тоже подойдут.

                                Но максимальная дальность с ними, скорее всего, упадёт, у таких датчиков чувствительность похуже, чем у открытых.
                                  0
                                  Коллега, такого типа преобразователи требуют обычно резонансную систему возбуждения — и поверьте, не зря у них максимальное напряжение около 120 В!
                                  Я их тоже рассматривал — но сами датчики получаются дороже, чем готовый модуль с двумя открытыми датчиками.
                                  Да и не стоит задача сделать вечный сенсор — наоборот, надо понять, сколько протянут открытого типа.
                        0
                        Ps: По поводу водорослей в бочке, после откачки воды из оной почти до полного осушения(оставляем полтора — два сантиметра и высыпаем два флакона марганцовки, и забываем минимум на час, или до следующего наполнения, но не менее часа… бочку можно не промывать после этого, ибо при заполненной на 2/3 бочке концентрация марганцовки безвредна даж для глаз. Но приводит к большей необходимости следить за качеством окраски дна бочки, чего можно избежать, окрасив дно бочки автомобильным суриком(ксать полгода тогда и плесени-водорослей не появляется, ибо они сурик не оч любят(но тогда бочка только для полива…
                        0
                        Просто моя бочка стоит в дальнем конце участка так сказать на крыше туалета, и причём достаточно высоко. Собственно, для этого система и создана- минимизировать человеческое участие в работе. Тут понятно, что полностью решить проблему водорослей не получится — и методов решения много. В моём случае применить 100% затемнение — и просто посмотреть, что получится.
                          0
                          Просто моя бочка стоит в дальнем конце участка так сказать на крыше туалета, и причём достаточно высоко.
                          Ну у меня наоборот: была почти полностью прикопана, а после двух лет эксплуатации была заменена на две пластиковых 150 литровых ( рыбокомбинат неподалёку, все бочки под засолку — пластиковые), ибо надоело искать-закупать железные, дно с марганцовкой разъедается года за полтора. Ксать у соседа реализовалась хитрая идея, он тоже бочку прикопал наполовину, но дно срезал и приколпачил под дно крышку от пластиковой бочки на автогерметике, вот третий год пока у него проблем с днищем нет
                            0
                            Особенности регионов… Пластиковая бочка — мечта, решение многих проблем сразу. Для меня железная оказалась самой доступной.
                          0
                          Честно говоря, не очень понял, чем не устроила Arduino nano.
                          У меня схожий функционал (120л аквариум) вполне себе работает на Arduino UNO.
                          Датчик HC-SR04 следит за уровнем воды. Когда уровень падает ниже критического, отключает систему подачи CO2 (есть PH-сенсор), поскольку на не погруженном сенсоре ph начинает прыгать туда-сюда и ЭМ-реле без конца щелкает. Это нужно, в основном, при регулярной замене воды в аквариуме.
                          Та же UNO льет удобрения в аквариум по расписанию и шлет телеметрию через TCP-UART мост на главный контроллер аквариума, на котором уже экран и прочие ништяки.
                          Ресурсы UNO оцениваю, как занятые процентов на 15-20.

                          PS: не берите HC-SR04, у него аппаратный баг. берите HC-SR04+ или тот, что у ТС.
                          PPS: когда по поверхности воды проплывает пучек моха (есть у меня такой плавучий остров), у HC-SR04 прыгают показания. Пришлось этот остров «поставить на якорь» в углу. Не знаю, как такой датчик реагирует на мусор в бочке.
                          PPPS: в вашу систему можно ещё поставить датчик расхода воды (на эффекте холла). У меня есть такой, я с его помощью мониторю степень засранности внешнего фильтра.
                            0
                            Коллега! Хороший вопрос — и скажу честно, я ожидал, что его зададут намного ранее.
                            Итак — по порядку.
                            Сенсор я применяю именно US-100, и выбор пал на него потому, что у него уже цифровой интерфейс.И конечно, то, что он был в наличии.
                            Датчик расхода воды у меня реализован математически — по уровню. Ведь геометрия бочки известна.
                            Собственно, признаюсь — я старый фанат контроллеров AVR. Когда я собрал свой первый JTAG, моему счастью не было границ.Но годы шли, требования тоже менялись… Моя любимая Atmega128 стала потихоньку сдавать позиции- слишком мало оперативной памяти… Тогда я сваял в P-CADе плату для меги с расширением памяти до 64 К. Был горд ровно до тех пор, пока её не запустил — внешняя память работала не так быстро и кушала приличный ток.
                            Вот тогда я и попробовал STM32. После первой прошивки камня все проекты с Atmega128 я заархивировал и скинул на хранилище.Если кому интересно- пишите, поделюсь.
                            А у меня возникли вопросы уже к вам — как вы оценили загрузку ресурсов UNO?
                            У меня понятно — есть встроенные средства для этого в самой операционной системе.

                              0
                              честно говоря, абсолютную загрузку процессора оценить проблематично. только по косвенным признакам — исходя из задержек при минимальных delay (если вы не используете прерывания по таймерам).
                              однозначно, мониторится память. компилятор сам оценивает свободный флеш.
                              макс.размер доступной ОЗУ — freeram()
                                0
                                В системе с применением операционных систем реального времени ( в классическом режиме) выделяется какое-то количество процессорного времени. Назовём его условно тик. Каждой задаче определяется, сколько тиков ей выделяется перед переключением диспетчером задач, то есть отдаче управления другому процессу. Сильно в дебри лезть не буду — надо будет рассмотреть много материала. Поэтому вкратце скажу так — у меня один процесс опрашивает сенсор, другой работает с дисплеем и клавиатурой, плюс выходную логику реализует. И самое главное — есть процесс простоя, который неявно создаётся системой. Так вот, отношение времени, потраченное полезными процессами можно разделить на суммарное время всех процессов и получить загрузку системы. В моей системе эта величина 5%. То есть процессор большую часть времени делает «ничего». Если же рассмотреть системы, где только одна нитка выполнения, то там всегда 100% — потому что переключаться некуда, есть только плюсом прерывания. Как-то так. Кто более подробно владеет данным вопросом -прошу, поправьте.
                                0
                                PS: подключение сенсора такое же, как и старого — цифровое. HC-SR04(+) можно подключить как на одну, так и на две ноги (trigger input + pulse output объединяются). Разницы в скорости и точности не увидел, а одна нога на контроллере экономится. Примеры гугляться.
                                  0
                                  Собственно, насчёт HC-SR04 никаких планов и не было. US-100 более чем достаточно для тех целей, которые мной были поставлены.
                                  0
                                  Упс, страница была открыта N часов назад, не обновил.
                                  Как оценить загрузку UNO? Легко:
                                  — Объем занимаемой flash памяти выдает все подряд,
                                  — Объем оперативной занятой под глобальные и статические переменные — аналогично (я вообще в шоке что некоторые библиотеки требуют много такой памяти)
                                  — Загрузку процессора? Выделяем ножку, перед sleep или while(ждем) выставляем ножку в 1, после в 0. Осталось измерить усредненное напряжение или посмотреть осциллографом.
                                  — Сколько памяти осталось стеку до конца? Должны помочь регистры SPL+SPH, признаюсь, не пробовал, просто пришла такая идея, на практике обычно ОЗУ или с запасом или совсем не хватает.
                                  — Размер кучи? По идее аналогично, но здравый смысл и NASA не рекомендуют нею пользоваться.
                                  — EEPROM, периферия — промолчу.
                                    0
                                    Что касается arduino, оборудованных Atmega328P, то с ними вообще была отдельная история. Специально для них я собрал проект под Atmel Studio для ChibiOS 3.0.1.Адаптировал драйвер мастера 1-wire и слейва modbus rtu. В потоке простоя(idle) поместил инструкцию типа (а++;), и передавал по шине мастеру.
                                    Постепенно увеличивал количество сенсоров, причём было 3 потока, работавшие на разные ноги проца.
                                    В каждом потоке нещадно опрашивал сенсоры- без каких-либо тайм-аутов.
                                    Датчики быстро закончились, приходилось опрашивать одни и те же — но для системы нет разницы, нагружается одинаково. Мой результат — 46 датчиков, и ещё был запас по нагрузке( переменная а постоянно инкреметировалась).
                                0
                                Ксать я наверно знаю почему я с водорослями проблем не имел…
                                Судя по всему вы качаете трубкой со дна бочки, посколь она на возвышении, а я качаю «малышом» — погружной насос, посколь бочка прикопана (он сосёт со дна бочки как пылесос, любые водоросли да и мелкие частицы земли просасываются со дна бочки, поэтому дно достаточно чистое, ксать именно поэтому не стал использовать китайский погружной датчик давления, ибо малыш присасывал и его… и да, фильтр малыша чистить приходится еженедельно)
                                  +1
                                  «Малыш» у меня работает в колодце — поднимает воду в бочку. Причём наполняет её полную( а это 220 литров)за 17 минут.
                                  Вы правы — мой метод отбора воды самый ленивый. Самое что любопытное — создаваемого давления достаточно для уверенной работы системы полива. В моём случае длина трубок составила 128 метров.
                                    0
                                    Вы правы — мой метод отбора воды самый ленивый. Самое что любопытное — создаваемого давления достаточно для уверенной работы

                                    Ну у меня импульсный полив( автоматизировать что-то было лениво, ибо в нём собственная автоматика, сама включает и отключает насос, разбрызгивает минуты по три тремя вращающимися головками(автомат полива типо австрии, приобрёл года три назад будучи на выставке по садоводству)

                                    И да, не поленился, глянул свой набросок схемки по герконовому датчику, там все таки трех контактный геркон, ибо верхний геркон замыкает геркон уровня ниже, дабы не было одновременного срабатывания двух уровней и тестирование суммарного сопротивления (магнит сильный и поплавок может колебаться на пару сантиметров)
                                      0
                                      Насчёт схемы принципиальной — надо обязательно её мне подготовить и добавить для загрузок.
                                      Без схем достаточно тяжело будет повторить блок.
                                        0
                                        Герконов 52 штуки ( пару дополнительных — верхний/нижний предельный уровень) разрешение датчика по высоте заполнения 1.7 см из них, — два геркона предельных уровней, — отключать/включать «малыш» когда вода в бочке закончилась, либо включать при переливе через край, вода сливается в водосток, если полив не включен
                                          0
                                          Такое количество герконов правильно собрать — это надо иметь просто колоссальное терпение. Кажется, нашлась ещё одна причина того, что я применил бесконтактный сенсор — мне просто лень делать такую работу.
                                      0
                                      Чтобы не было водорослей, можно пропускать воду через УФ-стерилизатор. Продаются на алиэкспресс
                                        0
                                        Тут скорее другая проблема… Водоросли вездесущи — это как основа самой жизни, как кирпичик, от которой невозможно избавиться даже с помощью УФ -излучения. Но меня водоросли как бы не сильно волнуют — с ними есть средства борьбы, причём они разнообразны. Всех не убить, но снизить концентрацию до приемлемого уровня вполне можно. За подсказку спасибо — любая идея для меня очень важна.
                                          0
                                          Имейте в виду, что «УФ стерилизаторы бесполезны против водорослей, червей и других организмов, которые не находятся в свободном плавании»
                                        0
                                        Ягода малина, нас к себе манила…
                                          0
                                          И пришло время показать итоги всех усилий.
                                          Вот ниже два фото — это результат первого урожая.
                                          image
                                          image
                                          Усилия потрачены совсем не зря.

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

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