Реализация идеи беспроводного уровнемера

в 13:58, , рубрики: avr, bluetooth, diy или сделай сам, MEGA16, метки: , ,

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

Условия:

  • Объем баков: 2 по 8000 литров
  • Геопозиция баков: -2й этаж (8 метров под землей)
  • Перекрытия этажей: дерево
  • Необходимая точность определения уровня: ± 10 литров
  • Предупреждение о критических уровнях
  • Индикация на рабом месте

Аналоговый вариант

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

Реализация идеи беспроводного уровнемера

Вывод уровня — точка или столбик на линейку светодиодов. На плате видно одно плечо делителя напряжения, которым устанавливался начальный уровень.

Реализация идеи беспроводного уровнемера

В качестве измерительного элемента была сделана цепочка резисторов длиной в полтора метра, она же являлась вторым плечом делителя на входе микрухи. Номиналы резисторов подбирались так, чтобы выходное напряжение варьировалось от 2 до 5 В, необходимых по даташиту для LM-ки. Цепочка погружена в трубку для визуального контроля вдоль бака. Связь со «щупом» — 15 метров двужильного провода.

Реализация идеи беспроводного уровнемера

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

Back to the old drawing board.

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

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

Составляющие:

Все это было врезано в слой теплоизоляции, которой обшиты баки, вот выпотрошенная обратная сторона блока который был врезан в обшивку бака:

Реализация идеи беспроводного уровнемера

Программу контроллера писал на С (CodeVision AVR), клиентскую часть на Delphi 7.
Суть работы заключается в следующем, контроллер по таймеру считает длительность эхо-импульсов от УЗ-датчика, пересчитывает в расстояние, потом в объем. Данные по блутусу передаются на компьютер, где идет графический вывод заполнения бака, расстояние до глади и глубина. Все это вычисляется в контроллере. С клиента в контроллер задаются максимальная и минимальная границы, при достижении которых загорается красный или зеленый светодиод на прилабуде, а в программе на компьютере выводится звук и мигает отображение бака в котором достигли границы. Также задается коэффициент объема [л/см] для того, чтобы можно было позиционировать датчик или вообще поставить его на бак с другой геометрией. Все параметры хранятся в EPPROM. Система имеет два канала, передаются данные с двух баков одновременно. На момент съемки один бак был спущен и я этот канал отключил, чтобы глаза не мусолил.

Реализация идеи беспроводного уровнемера

Изначально идея была передавать данные по проводам, но 15 метров провода было проблематично проложить мимо перекрытий. По воздуху расстояние получилось порядка 8 метров. Приемник стоит в компе, в спецшкафу около шахты, система управления установкой, которая питается от подопытных баков разнесенная, одно место оператора рядом с шахтой и трубопроводом, второе вынесено подальше. Сами датчики установлены в пластиковую трубу диаметром 100 мм внутри бака для того, чтобы при сливе воды в баки их не забрызгивало и уровень плавно изменялся, не было волн и ряби на поверхности, так, на всякий случай. Плюс этого еще и в том, что заузилась диаграмма направленности УЗ датчика. К сожалению, фото места установки нет, крышки баков уже закручены на 40 мелких болтов и весят немерено, сам не сдвину + там сейчас ремонт затеяли.

Вид дисплея в теплоизоляции (один канал):

Пленку забыл снять

Глобально, то я, кроме того, что решил проблему контроля уровня в подземных баках, еще и немножко развился, потрогал блутусный модуль, дописал библиотеки для графики, потрогал УЗ-датчик, а прогресс — это всегда хорошо.

Можно залить это все силиконом или компаундом, но у меня ничего не окислилось пока при влажности 60-70%, на сами УЗ-датчики китайцы пишут IP68, кто их знает может и правда, я все равно залил термоклеем по кругу.

Вот такая получилась система, работает исправно, возможно, кому-то пригодится, вполне применима на даче в колодце да и в других труднодоступных местах. Главное — идея.

В архив не жалея слил все что было, прошивка МК, файлы PROTEUS, сырцы на Delphi 7, скомпиленый экзешник, все библиотеки, короче, вся папка проекта. [пароль архива: idkfa]
AVR LevelMeter Graphic LCD 2ch BLUETOOTH.rar [2.6 Mb]

Автор: Arezus, Реализация идеи беспроводного уровнемера

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js