...

пятница, 29 ноября 2013 г.

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

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


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


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


Вот собственно и всё! Всем спасибо.


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers.


Комментариев нет:

Отправить комментарий