Всем доброго дня! Хочу поделиться с вами схемой простого контроллера для насоса емкости с водой, которая может пригодиться в любом хозяйстве.
1. Как это работает.
Изначально замысел был очень простой — контроллер должен управлять насосом и следить за тем, что бы в баке вода не опускалась ниже заданного уровня. Для контроля уровня воды используется два датчика. Одни устанавливает желаемый минимальный уровень в баке, а второй — максимальный. Позднее решено было добавить ещё один датчик — аварийный, который располагается выше максимального. Ещё хотелось что бы насос не работал по принципу бачка с водой от унитаза. Это значит что насос должен включаться только тогда, когда уровень воды опуститься ниже минимального и наполнять его до максимального уровня. А затем опять ждать пока вода не опустится ниже минимального уровня, что бы снова включить насос. Для управления насосом будем использовать реле с нормально разомкнутыми контактами, которые должны включать катушку пускателя насоса. Так же добавлена дополнительная защита в виде механического поплавка с микропереключателем, который подключается в разрыв цепи питания катушки реле. Вместо него можно поставить простую перемычку.
Предусмотрено два светодиода. Зеленый — индикатор работы и красный — горит в момент работы насоса, если сработал аварийный датчик — быстро моргает.
2. Принципиальная схема.
Для управления насосом и контроля уровня воды воспользуемся 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. Печатная плата
Плата разведена с учетом имеющихся в наличии деталей и сделана по народной технологии ЛУТ. Обратите внимание, что в моей плате необходимо установить две перемычки.
На данный момент остается очень важный момент. На сколько хватит датчиков воды? Я имею ввиду будут ли они подвержены коррозии и как это отразится на их работе. Может кто знает ответ на этот вопрос.
Вы можете скачать архив с прошивкой, файлами платы и датчиков вот тут. АРХИВ
Вот собственно и всё! Всем спасибо.
Автор: ivizil