Пользователь
0,0
рейтинг
29 ноября 2013 в 14:00

Контроллер для насоса

image

Всем доброго дня! Хочу поделиться с вами схемой простого контроллера для насоса емкости с водой, которая может пригодиться в любом хозяйстве.



1. Как это работает.

Изначально замысел был очень простой — контроллер должен управлять насосом и следить за тем, что бы в баке вода не опускалась ниже заданного уровня. Для контроля уровня воды используется два датчика. Один устанавливает желаемый минимальный уровень в баке, а второй — максимальный. Позднее решено было добавить ещё один датчик — аварийный, который располагается выше максимального. Ещё хотелось что бы насос не работал по принципу бачка с водой от унитаза. Это значит что насос должен включаться только тогда, когда уровень воды опуститься ниже минимального и наполнять его до максимального уровня. А затем опять ждать пока вода не опустится ниже минимального уровня, что бы снова включить насос. Для управления насосом будем использовать реле с нормально разомкнутыми контактами, которые должны включать катушку пускателя насоса. Так же добавлена дополнительная защита в виде механического поплавка с микропереключателем, который подключается в разрыв цепи питания катушки реле. Вместо него можно поставить простую перемычку.

image

Предусмотрено два светодиода. Зеленый — индикатор работы и красный — горит в момент работы насоса, если сработал аварийный датчик — быстро моргает.

2. Принципиальная схема.

image

Для управления насосом и контроля уровня воды воспользуемся MSP430G2452 или MSP430G2553 (но последний использовать как то жалко ведь с задачей вполне справится младший контроллер). В качестве источника питания используется зарядное от телефона на выходе которого честные 5 Вольт. Это очень важно, так как использование другого напряжения влекут за собой изменение номиналов подтягивающих резисторов на входах контроллера к которым подключаются датчики уровня воды. Для стабильной работы необходимо что бы на вход поступала стабильный высокий уровень, который контроллер определяет как логическую «1» (желательно не менее 2,5 В) в случае питания от 5 вольт напряжение «1» составляет около 3.2 вольта, поэтому если питание будет больше 5 вольт на вход придет больше 3,3 вольт, что может повредить контроллер. В последнем случае необходимо уменьшить номиналы R3-R5 пока напряжение на входе не будет в пределах от 2,5В до 3,3В. А для получения 3,3 Вольта для питания контроллера воспользуемся LM317.

Датчики представляют собой два контакта с минимальным расстоянием между ними. Подключаются следующим образом +5 вольт — общий для всех датчиков и подключается на один контакт, а второй контакт подключается к соответствующим входам на контроллере. При их замыкании водой на контроллере появляется логическая «1».

3. Прошивка контроллера

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

Прошивка контроллера
// Управление насосом для резервуара с водой
// Используется два датчика минимальное и максимальное значение воды
// И аварийный датчик расположенный выше двух других
// Алгоритм работы
// 1. Изначально бак пустой
// 2. Начинаем наполнять воду до максимального уровня и оключаем насос
// 3. Насос выключен до тех пор пока вода не опустится ниже минимального уровня
// 4. Наполняем бак пока не достигнем отметки максимального уровня
// 5. Если вода достигает аварийного датчика, то насос отключается

int minim = 5; // пин мимальный уровень
int maxim = 6; // пин максимальный уровень
int maxstop = 7; // пин аварийного отключения
int realay = 8; // пин реле
int led = 3; // пин светодиода когда горит реле включено
int x=1; // переменная, если х=1 наполняем резервуар если х=0 — опустошаем
int mi = 0;
int ma = 0;
int ms = 0;
int ledon = 2; // светодиод — индикатор работы контроллера

void setup()
{
pinMode(realay, OUTPUT);
pinMode(led, OUTPUT);
pinMode(ledon, OUTPUT);
pinMode(minim, INPUT);
pinMode(maxim, INPUT);
pinMode(maxstop, INPUT);
digitalWrite(ledon, HIGH);
}

void loop()
{
mi = digitalRead(minim); // считываем значения с датчиков
ma = digitalRead(maxim); // минимального и максимального значения
ms = digitalRead(maxstop); // аварийный датчик

if (ms==HIGH) // Если вода достигла аварийного датчика, то отключаем насос и моргаем led об аварии
{
digitalWrite(realay, LOW);
digitalWrite(led, LOW);
delay(200);
digitalWrite(led, HIGH);
delay(200);
}
else // иначе работаем в штатном режиме
{

if (mi==LOW && ma==LOW) // Если меньше минимального значения, то включаем насос
{
digitalWrite(realay, HIGH);
digitalWrite(led, HIGH);
x=1;
}
if (mi==HIGH && ma==HIGH) // Если максимальный уровень то отключаем насос
{
digitalWrite(realay, LOW);
digitalWrite(led, LOW);
x=0;
}
if (mi==HIGH && ma==LOW && x==1) // наполняем водой
{
digitalWrite(realay, HIGH);
digitalWrite(led, HIGH);
}
if (mi==HIGH && ma==LOW && x==0) // опустошаем ёмкость
{
digitalWrite(realay, LOW);
digitalWrite(led, LOW);

}
}
}



4. Печатная плата

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

image

image

image

На данный момент остается очень важный момент. На сколько хватит датчиков воды? Я имею ввиду будут ли они подвержены коррозии и как это отразится на их работе. Может кто знает ответ на этот вопрос.

Вы можете скачать архив с прошивкой, файлами платы и датчиков вот тут. АРХИВ

Вот собственно и всё! Всем спасибо.
Иван @ivizil
карма
30,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

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

Комментарии (52)

  • +3
    Сразу отвечу насчет датчиков: крайне не правильно использовать замыкание водой. В общем, копайте в сторону герконов, это проще и надежнее.
    • +5
      Ну да геркон + магнит с поплавком, и ничего не сгниет и не надо заморачиваться по поводу напряжения на датчиках
      • 0
        Или же обычный поплавок. Правда там как только уровень воды опускается, включается нагнетательный мотор, который гоняет в бак городскую воду.
        • 0
          надо два поплавка и триггер (конечно, вместо триггера можно взять контроллер)
          • 0
            почему два?
            • 0
              либо два с коротким ходом (нижний, обычно утоплен и верхний) либо один на всю длину с двумя герконами
              • 0
                У меня дом стоит один поплавок, наверху. Как только уровень воды снижается, открывается подача воды. Поплавок как бы механический.
                • 0
                  ну так он у вас и работает как унитаз, без гистерезиса
                  • +1
                    да. просто городскую воды иногда выключают. при таком варианте бак бывает максимально заполнен, перед отключением
                  • 0
                    Неправда, у поплавка есть гистерезис. Он включается не в той же точке, в которой выключается.
    • +4
      И тем не менее замыкание водой используют в тысяче двадцати четырех промышленных решенияхimage
      • 0
        В промышленности используются как раз такие (правда у меня они были другой конструкции) и специальный блок управления.

        Для бытовых нужд есть клизьма (есть ниже в комментах) — часто текут и либо замыкают водой, либо не контачат.
        А также блок с микриком и двумя поплавками. Он тоже, бывает, дохнет. Правда один прожил год, второй вот уже 3 стоит и пока не сбоил.
        Их преимущества — замыкают хоть 220в (но можно для безопаснти на 24в работать через пускатель) и нет необходимости в блоке автоматики.

        hand-made датчики из поста долго не проживут, хотя всё зависит от состава воды.
    • 0
      геркон хрупкий
    • 0
      Геркон надо чем-то замыкать — магнитом с поплавком, а его заедает на раз, как под так и над водой. Так что их преимущество в простоте и надежности очень спорное.
  • +1
    Зимой, во всяких деревеньках/etc часто видел водонапорные башни, в которых вода вытекала через верх и намерзала огромными льдинами.
    Спрашивал у отца:
    — почему вода переливается через край?
    — лед намерзает на верхнем датчике и он не срабатывает.

    Так что геркон+магнит подойдет, главное чтобы магнит на боковую стенку сосуда не примагнитился (если это будет металлическая емкость).
  • +2
    У меня тоже подобная задача стояла, купил готовые «реле». Микроконтроллер для такой задачи это, конечно, сильно :). Релюшки те попроще.
    Да, контакты в воде, ток через воду, периодически контакты окисляются. Не быстро, жить особо не мешает.
    Пара реле — одно в скважине, включается, когда вода поднимается до определенного уровня и откачивает, второе (другого типа), а накопительном баке, отключает насос когда баки полные.
    Работает год уже. Это мой основной источник воды.

    Всякие герконы с поплавками проходили тоже, в другом месте. Работает, но очень чувствительно к загрязнениям, к коррозии. Контакты оказались проще и надежнее.
  • +12
    ИМХО. Данная задача решается вообще без микроконтроллера. Нужно всего 2 реле на 4 группы переключающих контактов, 2 геркона и поплавок с магнитом.

    • 0
      Использование микроконтроллера в любом случае предпочтительнее. Например, можно реализовать какие-то более интеллектуальные алгоритмы контроля ошибки. Скажем, если насос не отключался более 4 часов подряд, вероятна неисправность датчика — отключаем мотор итд итп. Также можно при необходимости реализовать разные режимы работы днём и ночью, в разные часы суток итд итп. А по цене данное решение не намного дороже релюхи с транзисторами.
      • +1
        По опыту использования различных насосных станций и скважинных насосов, надо ещё подсчитывать количество включений насоса в час, так как производители декларируют максимальную величину примерно равную 30 включениям (указано в паспорте). Количество включений в день – также ограничено. Грамотно настроенный контроллер поможет продлить срок службы мотора однозначно!
  • 0
    Вот тоже интересуюсь датчиками для емкости. Нашел в продаже кондуктометрические датчики. На вид просто нескоколькко стержней из нержавейки. Их длину выставляешь как тебе надо. В описании пишут что срок службы у них 12 лет, вот только не уточняют, это 12 лет в режиме поставил и забыл или надо будет время от вермени их чистить от налетов всяких. Пополовки всякие у меня почему-то или клинит или ломается сам механизм.
    • 0
      берите поплавки из латуни и пластмассы. У меня за 1 год только один раз заклинил
      • 0
        Да такой и стоит. В моем случае очень проблематично добираться к емкости. Поэтому хочется сделать один раз на всю жизнь, так что всё что может поломаться или заклинить было внизу.
        Пока кроме кондуктометрических датчиков, есть мысль поставить на трубу перелива датчик расхода воды который будет перекрывать подачу воды в емкость, но вот каким датчиком эту подачу возобновлять пока не придумал, может таймер какой.
      • 0
        В зависимости от обстоятельств, опыта от одного заклинившего раза может хватить на всю жизнь:))
    • 0
      У меня в морском аквариуме стоял 2 года производства F&F, потом начал глючить. Судя по спецэффектам где-то отвалился контакт. Просто пропайкой контактов дело не решилось, поменял. Электрод корродирует только один — общий, т.к остальные электроды целые, то виновата не соленая вода а электрохим. коррозия. Года за три кусок электрода из нержавейки 40х3мм разъело процентов на 60-70. Как вариант взять электрод подлиннее и сунуть поглубже — на дольше хватит.
  • +1
    На самом деле лучше всего смотреть в сторону емкостного уровнемера. У меня сейчас в работе проект, в котором я собираюсь применить такой. Принцип простой — дюралевая труба на 30-40 мм внутри протянута медная/алюминиевая проволока — это емкость. Подключается в цепь генератора на 555 микрухе как задающая RC-цепочка. По моим расчетам на 800 мм (глубина 200 л бочки) частота будет меняться 1кГц на 100 мм, т.е. от 1 до 80кГц. Можно конечно рассчитать на других параметрах это уже по желанию. Ну а алгоритмов для МК как сделать частотомер я видел кучу.
    В принципе когда я уже нарисовал схемку и сделал расчеты нашел почти подобный готовый вариант в инете :)
  • +1
    А вообще я хотел сделать на ультразвуковом датчике, который измеряет расстояние от верхней точки бака с водой с поверхностью воды. У него точность приемлемая и нет контакта с водой практически вечный датчик.
    • 0
      А есть где-то схема/описание устройства?
      • 0
        Вот такой есть ))
        www.youtube.com/watch?v=fJAP8FKxBpQ#t=0
        Почитать можно здесь
        • 0
          Ясно, спасибо. Для моих целей не очень подходит.
  • 0
    Еще очень простой вариант — ультразвуковой датчик + ардуинка. Пока писал, меня опередил ivizil :)
  • 0
    Здесь у нас проверка максимального уровня:

    if (mi==HIGH && ma==HIGH) // Если максимальный уровень то отключаем насос { digitalWrite(realay, LOW); digitalWrite(led, LOW); x=0; }

    Если что-то с датчиком и вода продолжает поступать, то срабатывает это условие:

    if (ms==HIGH) // Если вода достигла аварийного датчика, то отключаем насос и моргаем led об аварии { digitalWrite(realay, LOW); digitalWrite(led, LOW); delay(200); digitalWrite(led, HIGH); delay(200); }

    Возникает вопрос, в обоих случаях производится попытка выключить насос одной и той-же командой:

    digitalWrite(realay, LOW);

    Если учесть, что между первым событием и вторым цикл

    (mi==HIGH && ma==HIGH)

    успеет выполниться +100500 раз, чем поможет цикл

    (ms==HIGH)

    ? Не думаю, что мигающий светодиод среди ночи убережет Вас от затопления…

    Ну и нет проверки на ситуацию, когда верхний датчик клинануло, а вода уже вся ушла, то есть

    mi==LOW && ma==HIGH
    • 0
      Замечание по существу. )) Из за того что датчики в воде и неизвестно когда они выйдут из строя и был введен цикл (ms==HIGH). По задумке самый верхний аварийный датчик никогда не погружается в воду, поэтому он не подвержен коррозии и изначально считается полностью исправным. Чего не скажешь о тех датчика, которые погружены в воду, ведь помимо коррозии они подвержены процессу электролиза. А значит вероятность их выхода из строя относительна велика. И в случае если это произойдет и вода будет продолжать набираться, то по достижению аварийного датчика насос должен будет отключится. Единственное, что я заметил только сейчас, так это нужно присвоить х=0, когда ms==HIGH, что бы вода потом шла на убывание и насос снова не включился… А вообоще, для того что бы спать спокойно, предусмотрено подключение механического поплавка, который должен отключить насос как только вода достигнет критического уровня… И я бы категорически рекомендовал его использовать.

      Красный светодиод, да ещё и мигающий вас точно не разбудит ночью ))) Но вместо него можно установить биппер или что по-мощнее… Тут ограничений нет ))
      • 0
        Мне почему-то кажется, что датчик «ma» самый первый выйдет из строя, так как он будет изредка омываться водой, но при этом большую часть времени он будет на воздухе. Он первым окислится. Так что да, надо выбирать другие датчики, благо хабрахабравчане предложили уйму вариантов.
  • 0
    А еще плату при минимальных модификациях можно было бы развести вообще без перемычек.
    • 0
      Думаю вы правы)) Но отсутствие большого опыта мне не позволило сделать это. Может у вас получится? В архиве есть файлик платы для Sprint-Layout. ))
      • +1
        Примерно так. Переделывать не стал.
        UPD: Странно. Картинка отклеилась: habrastorage.org/storage3/b9a/d97/9eb/b9ad979eb48db48dce22690831075a23.png
        • 0
          А вы молодец! =) А я и не догадался нарисовать дорожку к 8-ой ноге контроллера с другой стороны…
  • +1
    Возьмите датчик уровня масла в поддоне от ВАЗ2110. Цена вопроса около 100р.
    Там латунная трубка с герконом и магнит на пластиковом поплавке

    Вот так он выглядит
    gavdog.ru/sites/default/files/datchik_masla.jpg

    Партийник 32.3839 или 24.3839
  • +1
    Вообще есть специальный поплавок контроля уровня (электрический поплавок). В крайних точках замыкает или размыкает контакт, работать может напрямую с 220В и мотором/насосом. Имеет три контакта, два крайних (верх и низ) один центральный. Так что можно сделать чтобы при опускании поплавка в них замыкалась цепь с мотором, после наполнения он поднимается вверх и размыкает цепь. У моего еще в комплекте был груз, для создания центральной точки поплавка вокруг которой он работает (точки опоры). Стоит такой на даче на огороде наполняет емкость с водой для полива. Управляет насосом в колодце.
    image
    • 0
      Аналогично дома на таком сделал подачу воды из колодца в накопитель. + на насосе, чтоб не качал при низком уровне воды в колодце.
  • +1
    Водный чип!
  • 0
  • 0
    В таких случаях сенсоры лучше питать не постоянным напряжением, а короткими импульсами. В этом случае можно продлить их срок службы, особенно самого нижнего, который почти всегда в воде.
    • 0
      Ну уж коль пошла такая пьянка, то можно вообще сделать герметичные ёмкостные датчики…
      • 0
        Можно много чего, но это становится дороже. А софт немного изменить и подключение обычно дешевле будет.
        • 0
          Почему-же дороже чисто программная реализация, а технически просто кусок провода в термоусадке…
          … в большинстве применений у современных микроконтроллеров туева хуча свободного времени, я часто делаю сенсорные кнопки и регуляторы
  • 0
    Аварию лучше контролировать независимой схемой. Исполнительную часть аварийной, объединить с основной логическим «И» (два контакта реле включенные последовательно). И отдельный контроль работы аварийной схемы надо предусмотреть. Например, кнопку вывести, нажатие которой имитировало бы переполнение бака и приводило к аварийному отключению.
  • 0
    На контакты нужно подавать переменное напряжение.
    А вообще, зачем тут микроконтроллер? Помню в журнале Радио как-то один умелец предлагал замудрённую схему электрочайника — с блоком управления на тиристоре и сложным датчиком кипения. При том, что современные чайники обходятся простейшим биметаллическим реле.
  • 0
    Можно как вариант попробовать использовать оптические датчики. Направить луч лазера на фотодиод. Вода как и лёд преломляют свет. Именно принцип преломления света водой используется в датчиках дождя для управления дворниками в автомобиле.

    А можно сделать разные датчики одновременно: поплавковые, на пропускание тока и опто. Они будут в любом случае страховать друг друга.
    • 0
      Кстати, в двигателе автомобиля зачастую один датчик страхует другой. Например, датчик угла коленвала и датчики углов распредвалов. Если проц видит несоответствие, он зажигает индикатор ошибки.
  • 0
    Объясните логику — зачем вам два датчика мин. и макс. уровня? Чем это лучше одного датчика макс. уровня?
    Ведь все равно насосу придется закачивать воду до макс. уровня.
    В чем выигрыш такой такой схемы — сократить количество запусков насоса?
    Я не специалист — неужели сокращение количества запусков может так сильно повлиять на срок эксплуатации насоса?
    • 0
      Я не специалист — неужели сокращение количества запусков может так сильно повлиять на срок эксплуатации насоса?
      Да, и вот почему.

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