Система защиты от протечки воды

avton
avton аватар
Offline
Зарегистрирован: 11.05.2014

После того как лопнула гибкая подводка в ванной задумался над такой системой. Готовую покупать неспортивно :)

на текущий момент 2 варианта ,отличие в подключении кнопоп. У себя планирую выносной блок кнопок и индикации,поэтому задача была уложиться в восем проводов .

Логика : при срабатывание датчика перекрывается вода,включается бузер и блокируется кнопка " Открыть". При нажатии кнопки "Сброс/Уборка" блокируется датчик протечки на час(время можно выставить любое в самом скетче) и появлюяется возможность открыть воду. Так же эту кнопку можно использовать просто для отключения датчиков протечки на час,что удобно в случае уборки в ванной.

первый вариант( удобен когда всё в одном корпусе):


#define alarmLed 6 // индикатор "протечка/уборка"
#define openLed 4 // индикатор состояния "открыто"
#define closeLed 5 // индикатор состояния "закрыто"
#define openRele 3 // реле закрытия крана
#define closeRele 12 // реле открытия крана
#define openButton 10 // кнопка "Открыть" кран
#define closeButton 11 // кнопка "Закрыть" кран
#define resetButton 2 //  кнопка "Сброс/Уборка" 
#define leaksensor 8  // датчик протечки,при срабатывание на входе LOW

bool leakState = 0;  
bool lastleakState = 0;
bool openState=0;
bool lastopenState=0;
bool closeState=0;
bool lastcloseState=0;
bool resetState=0;
bool lastresetState=0;

boolean opS = 0;
boolean clS =0;
boolean leak=0;
boolean wait=0;

int ledStateLeak = LOW;
int ledStateWait = LOW;

boolean new_button_state1 = false;
boolean new_button_state2 = false;
boolean new_button_state3 = false;
boolean old_button_state1 = false;
boolean old_button_state2 = false;
boolean old_button_state3 = false;

unsigned long previousMillis = 0;
unsigned long previousMillisOpen = 0; 
unsigned long previousMillisClose = 0; 
unsigned long previousMillisWait = 0;
unsigned long previousMillisWaitLed = 0;
unsigned long intervalLeak =500;
unsigned long intervalWaitLed =3000; 
unsigned long intervalRele =4000;
unsigned long intervalWait=3600000;

void setup() {
  pinMode(alarmLed,OUTPUT);
  pinMode(openLed,OUTPUT);
  pinMode(closeLed,OUTPUT);
  pinMode(openRele,OUTPUT);
  pinMode(closeRele,OUTPUT);
  pinMode(openButton, INPUT);
  pinMode(closeButton, INPUT);
  pinMode(resetButton, INPUT);
  pinMode(leaksensor, INPUT);
  Serial.begin(9600);
}

void loop(){
  //**************Анализ состояния входов ***************************
  leakState=digitalRead(leaksensor);
  leakState=!leakState;
  if (leakState != lastleakState) {
    if ((leakState == HIGH)&&(wait==0)) {
      leak=1;                              // если сработал датчик протечки устанавливаем статус "протечка"
      Serial.println("LEAK");
    }
    lastleakState = leakState;
  }
  if  (leak==1){
    clS=1;
    opS=0;
  } 
  openState = digitalRead(openButton);
  if (openState != lastopenState) {
    if ((openState == HIGH)&&(leak==0)) {
      opS=1;                              // если нажата кнопка "открыть" устанавливаем статус "открыто"
      clS=0;
      Serial.println("OPEN");
    }
    lastopenState = openState; 
  }
  closeState = digitalRead(closeButton);
  if (closeState != lastcloseState) {
    if ((closeState == HIGH) ||(leak==1)) {
      opS=0;
      clS=1;                              // если нажата кнопка "закрыть" или статус "протечка" устанавливаем статус "закрыть"
      Serial.println("CLOSE");
    }
    lastcloseState = closeState; 
  }
  resetState = digitalRead(resetButton);
  if (resetState != lastresetState) {
    if (resetState == HIGH) {
      leak=0;                              // если нажата кнопка "сброс/уборка" сбрасываем статус "протечка" и  устанавливаем статус "уборка" и блокируем датчик протечки 
      wait=1;
      previousMillisWait = millis();
      Serial.println("RESET");
      Serial.println("WAIT");
    }
    lastresetState = resetState;
  }
  if((previousMillisWait>0) && (millis()-previousMillisWait >= intervalWait)) 
  {

    wait=0;                                // если прошло 60 минут убираем статус "уборка" и разблокируем датчик протечки
    previousMillisWait = 0;
    Serial.println("END WAIT");

  }
  //*************** Управление реле закрытия кранов**************************

  new_button_state1 = opS;
  if ( (new_button_state1 != old_button_state1) && new_button_state1 ) 
  {
    digitalWrite(openRele, HIGH);           //  если установлен статус "открыто" включаем реле открытия кранов на 4 секунды
    previousMillisOpen = millis();
  }
  old_button_state1 = new_button_state1; // сохраняем изменения
  if((previousMillisOpen>0) && (millis()-previousMillisOpen >= intervalRele)) 
  {
    digitalWrite(openRele, LOW);
    previousMillisOpen = 0;
  }
  new_button_state2 = clS;
  if ( (new_button_state2 != old_button_state2) && new_button_state2 ) 
  {
    digitalWrite(closeRele, HIGH);           //  если установлен статус "закрыто" включаем реле закрытия кранов на 4 секунды
    previousMillisClose = millis();
  }
  old_button_state2 = new_button_state2; // сохраняем изменения
  if((previousMillisClose>0) && (millis()-previousMillisClose >= intervalRele)) 
  {
    digitalWrite(closeRele, LOW);
    previousMillisClose = 0;
  }
  //*************** управление светодиодами индикации состояния ***************** 
  if (opS==1){
    digitalWrite(openLed, HIGH);     // если установлен статус "открыто" включаем индикатор состояния "открыто" 
  }
  else {
    digitalWrite(openLed, LOW);     //иначе выключаем
  }
  if (clS==1){
    digitalWrite(closeLed, HIGH);     // если установлен статус "закрыто" включаем индикатор состояния "закрыто" 
  }
  else {
    digitalWrite(closeLed, LOW);     //иначе выключаем
  }

  if ((leak==1)&&(wait==0)){         
    digitalWrite(alarmLed, ledStateLeak); // если "протечка" ,то моргаем индикатор "протечка/уборка" с интервалом  равным  intervalLeak
  }
  if ((leak==0)&&(wait==1)){
    digitalWrite(alarmLed, ledStateWait); // если "уборка" ,то моргаем индикатор "протечка/уборка" с интервалом  равным  intervalWaitLed
  }
   if ((leak==0)&&(wait==0)){
    digitalWrite(alarmLed, LOW);   // иначе выключаем
  }  
  //********** управление бузером ********
  if ( leak==1)  // если "протечка" включаем бузер
  { 
    tone(9, 600, 150);
    delay(300);
  }  
  //********* задание частоты мигания светодиода *******
  unsigned long currentMillis = millis();              // частота моргания для режима "протечка"
  if(currentMillis - previousMillis > intervalLeak) {
    previousMillis = currentMillis;   
    if (ledStateLeak == LOW)
      ledStateLeak = HIGH;
    else
      ledStateLeak = LOW;
  }
  unsigned long  currentMillisWaitLed = millis();      // частота моргания для режима "уборка"
  if(currentMillisWaitLed - previousMillisWaitLed> intervalWaitLed) {
    previousMillisWaitLed = currentMillisWaitLed;   
    if (ledStateWait == LOW)
      ledStateWait = HIGH;
    else
      ledStateWait = LOW;
  }
}

 

Схема в вормате sPlan https://yadi.sk/d/7UYPF58lVcs7h 

Второй вариант с кнопками подключенными к аналоговому входу :

#define alarmLed 6 // индикатор "протечка/уборка"
#define openLed 4 // индикатор состояния "открыто"
#define closeLed 5 // индикатор состояния "закрыто"
#define openRele 3 // реле закрытия крана
#define closeRele 12 // реле открытия крана
#define leaksensor 8  // датчик протечки,при срабатывание на входе LOW
int analog=0; // вход кнопок
bool leakState = 0;  
bool lastleakState = 0;

boolean opS = 0;
boolean clS =0;
boolean leak=0;
boolean wait=0;

int ledStateLeak = LOW;
int ledStateWait = LOW;

boolean new_button_state1 = false;
boolean new_button_state2 = false;
boolean new_button_state3 = false;
boolean old_button_state1 = false;
boolean old_button_state2 = false;
boolean old_button_state3 = false;

unsigned long previousMillis = 0;
unsigned long previousMillisOpen = 0; 
unsigned long previousMillisClose = 0; 
unsigned long previousMillisWait = 0;
unsigned long previousMillisWaitLed = 0;
unsigned long intervalLeak =500;
unsigned long intervalWaitLed =3000; 
unsigned long intervalRele =4000;
unsigned long intervalWait=3600000;

void setup() {
  pinMode(alarmLed,OUTPUT);
  pinMode(openLed,OUTPUT);
  pinMode(closeLed,OUTPUT);
  pinMode(openRele,OUTPUT);
  pinMode(closeRele,OUTPUT);
  pinMode(leaksensor, INPUT);
  Serial.begin(9600);
}

void loop(){
  //**************Анализ состояния входов ***************************
  leakState=digitalRead(leaksensor);
  leakState=!leakState;
  if (leakState != lastleakState) {
    if ((leakState == HIGH)&&(wait==0)) {
      leak=1;                              // если сработал датчик протечки устанавливаем статус "протечка"
      Serial.println("LEAK");
    }
    lastleakState = leakState;
  }
  if  (leak==1){
    clS=1;
    opS=0;
  } 
  analog=analogRead(A0);
  if ((analog>690&&analog<700)&&(leak==0)) {
    opS=1;                              // если нажата кнопка "открыть" устанавливаем статус "открыто"
    clS=0;
    Serial.println("OPEN");
  }
  if ((analog>768&&analog<798) ||(leak==1)) {
    opS=0;
    clS=1;                              // если нажата кнопка "закрыть" или статус "протечка" устанавливаем статус "закрыть"
    Serial.println("CLOSE");
  }
  if (analog>598&&analog<628) {
    leak=0;                              // если нажата кнопка "сброс/уборка" сбрасываем статус "протечка" и  устанавливаем статус "уборка" и блокируем датчик протечки 
    wait=1;
    previousMillisWait = millis();
    Serial.println("RESET");
    Serial.println("WAIT");
  }
  if((previousMillisWait>0) && (millis()-previousMillisWait >= intervalWait)) 
  {

    wait=0;                                // если прошло 60 минут убираем статус "уборка" и разблокируем датчик протечки
    previousMillisWait = 0;
    Serial.println("END WAIT");

  }
  //*************** Управление реле закрытия кранов**************************

  new_button_state1 = opS;
  if ( (new_button_state1 != old_button_state1) && new_button_state1 ) 
  {
    digitalWrite(openRele, HIGH);           //  если установлен статус "открыто" включаем реле открытия кранов на 4 секунды
    previousMillisOpen = millis();
  }
  old_button_state1 = new_button_state1; // сохраняем изменения
  if((previousMillisOpen>0) && (millis()-previousMillisOpen >= intervalRele)) 
  {
    digitalWrite(openRele, LOW);
    previousMillisOpen = 0;
  }
  new_button_state2 = clS;
  if ( (new_button_state2 != old_button_state2) && new_button_state2 ) 
  {
    digitalWrite(closeRele, HIGH);           //  если установлен статус "закрыто" включаем реле закрытия кранов на 4 секунды
    previousMillisClose = millis();
  }
  old_button_state2 = new_button_state2; // сохраняем изменения
  if((previousMillisClose>0) && (millis()-previousMillisClose >= intervalRele)) 
  {
    digitalWrite(closeRele, LOW);
    previousMillisClose = 0;
  }
  //*************** управление светодиодами индикации состояния ***************** 
  if (opS==1){
    digitalWrite(openLed, HIGH);     // если установлен статус "открыто" включаем индикатор состояния "открыто" 
  }
  else {
    digitalWrite(openLed, LOW);     //иначе выключаем
  }
  if (clS==1){
    digitalWrite(closeLed, HIGH);     // если установлен статус "закрыто" включаем индикатор состояния "закрыто" 
  }
  else {
    digitalWrite(closeLed, LOW);     //иначе выключаем
  }

  if ((leak==1)&&(wait==0)){         
    digitalWrite(alarmLed, ledStateLeak); // если "протечка" ,то моргаем индикатор "протечка/уборка" с интервалом  равным  intervalLeak
  }
  if ((leak==0)&&(wait==1)){
    digitalWrite(alarmLed, ledStateWait); // если "уборка" ,то моргаем индикатор "протечка/уборка" с интервалом  равным  intervalWaitLed
  }
  if ((leak==0)&&(wait==0)){
    digitalWrite(alarmLed, LOW);   // иначе выключаем
  }  
  //********** управление бузером ********
  if ( leak==1)  // если "протечка" включаем бузер
  { 
    tone(9, 600, 150);
    delay(300);
  }  
  //********* задание частоты мигания светодиода *******
  unsigned long currentMillis = millis();              // частота моргания для режима "протечка"
  if(currentMillis - previousMillis > intervalLeak) {
    previousMillis = currentMillis;   
    if (ledStateLeak == LOW)
      ledStateLeak = HIGH;
    else
      ledStateLeak = LOW;
  }
  unsigned long  currentMillisWaitLed = millis();      // частота моргания для режима "уборка"
  if(currentMillisWaitLed - previousMillisWaitLed> intervalWaitLed) {
    previousMillisWaitLed = currentMillisWaitLed;   
    if (ledStateWait == LOW)
      ledStateWait = HIGH;
    else
      ledStateWait = LOW;
  }
}

Схема в формате sPlan : https://yadi.sk/d/cCYmCrYnVctHx

 

Печатная плата датчиков протечки в Sprint-Layout : https://yadi.sk/d/jl14mQ4mVcu8n

Araris
Araris аватар
Offline
Зарегистрирован: 09.11.2012

Поставите исполнительные механизмы - отпишитесь, фото хорошо бы.

avton
avton аватар
Offline
Зарегистрирован: 11.05.2014

Araris пишет:

Поставите исполнительные механизмы - отпишитесь, фото хорошо бы.

Испольнительные механизьмы будут когда появятся наних финансы,пока в приоритете семейные проблемы.

Как придут кнопки (http://www.ebay.com/itm/201079742203?var=500259285110&ssPageName=STRK:ME...) соберу в корпус(http://www.ebay.com/itm/310878723786?ssPageName=STRK:MEWNX:IT&_trksid=p3...) и буду тестировать пока с выходом на бузер,попутно обкатаю конструкцию датчиков протечки.

Просьба отписатся об опыте эксплуатации  кранов с электроприводами....

был такой вариант,но доверия к нему нет (http://www.aliexpress.com/item/motorized-ball-valve-DN15-2-way-electrica...) ,заказывать не стал.

axill
Offline
Зарегистрирован: 05.09.2011

Краны с электроприводом рекомендую заказывать или у gidrolock или аквосторожа

некачественные краны сделают ваш проект не только бесполезным, но и вредным

не дешево, но оно может легко окупиться в случае протечки

avton
avton аватар
Offline
Зарегистрирован: 11.05.2014

axill пишет:

некачественные краны сделают ваш проект не только бесполезным, но и вредным

не дешево, но оно может легко окупиться в случае протечки

Это как бы и так понятно :)

axill
Offline
Зарегистрирован: 05.09.2011

У меня много лет в квартире стоят два гидролока и один нептун xp ( это который с беспроводными датчиками)

для дачи сейчас вот думаю самому делать или покупать. В цене финальной покупной системы блок электроники  стоит  около половины, если не меньше

так что разработка самому вопрос не однозначный ибо:

- радикально не снижает стоимость, хоть и снижает заметно

- нужно решить ряд технических проблем :

- автономное питание

- управление кранами. У гидролока шаговые двигатели, а у нептуна и аквастлрожа обычные моторы с концевиками

- разработать надежные датчики. Их тоже можно купить, но тогда смысл делать блок электроники еще станет меньше

- добиться высоченной надежности, иначе зависшая в момент протечки ардуина встанет ооооочень дорого

- встроить в скетч программу против закисания кранов, у гидролока и нептуна этт периодическое поворачиванте кранов туда-сюда

avton
avton аватар
Offline
Зарегистрирован: 11.05.2014

тогда вопрос : что надо подать на кран гидролока чтобы он закрылся? Так как смотрю именно в их сторону.

Контроллер с датчиками уже готов  и автономное питание тоже будет.Скетч уже доработан и изменен,защита от зависаний есть.

axill
Offline
Зарегистрирован: 05.09.2011

Я написал выше, у гидролока шаговые моторы. Надо подавать чередование импульсов. Какой там мотор, не знаю, можно их спросить. Скорее всего юниполярный с двумя катушками

правда.. В блоке электроники на плате не видно силовых ключей или микросхем для управления шаговиками. Может быть драйвер встроен в сам кран

avton
avton аватар
Offline
Зарегистрирован: 11.05.2014
axill
Offline
Зарегистрирован: 05.09.2011

Ну значит драйвер внутри и это все сильно упрощает

axill
Offline
Зарегистрирован: 05.09.2011

хм, блок электроники у гидролока стоит 1200р. Чтоит ли оно того?

avton
avton аватар
Offline
Зарегистрирован: 11.05.2014

в смысле их блок?

axill
Offline
Зарегистрирован: 05.09.2011

ну да. к блоку нужны краны и датчики. Датчики конечно дорогие, по 400р за проводной, но это вроде как за позолоту, которая гарантирует отсутствие окисления и надежное срабатывание

забыл, еще нужен аккумулятор

avton
avton аватар
Offline
Зарегистрирован: 11.05.2014

трудно сказать что там внутри,но в любом случае это готовое изделие.

axill
Offline
Зарегистрирован: 05.09.2011

я видел что там внутри) маленькая платка управления, но кроме нее ничего то и не нужно, зато все тех проблемы там уже решены и по цене очень сопоставима с самоделкой на ардуине

avton
avton аватар
Offline
Зарегистрирован: 11.05.2014

Мне интересен сам процесс )) Так бы уже давно купил).тем более у меня получилось 3 в одном)

http://arduino.ru/forum/proekty/umnye-tualet-i-vannaya?page=7#comment-72304

axill
Offline
Зарегистрирован: 05.09.2011

ну... с точки зрения надежности это чревато

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

avton
avton аватар
Offline
Зарегистрирован: 11.05.2014

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

А повседневно есть мысль прикрутить к домашней сигнализации,чтобы вода перекрывалась когда поставлено на охрану

axill
Offline
Зарегистрирован: 05.09.2011

мне больше нравится вариант автоматического перекрытия стояков в случае именно отъезда

статус отъезда уже давно автоматически выставляется, не хватает только интеграции с гидролоками

каждый раз акрывать краны по уходу не правильно. Может быть машинка на стирке, посудомойка на мойке и накопительный фильтр для воды тоже работает. А вот когда уже ясно, что никого долго не будет, тогда можно и перекрыть. Да и сами шаровые краны по нескольку раз в день дергать не правильно, это снизит сильно их ресурс

avton
avton аватар
Offline
Зарегистрирован: 11.05.2014

axill пишет:

 Да и сами шаровые краны по нескольку раз в день дергать не правильно, это снизит сильно их ресурс

Тоже разумно. Я стараюсь не оставлять работающую технику уходя из дома.

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

axill пишет:

 Да и сами шаровые краны по нескольку раз в день дергать не правильно, это снизит сильно их ресурс

Но и оставлять годами без движения - закиснет и не закроется в решающий момент!

axill
Offline
Зарегистрирован: 05.09.2011

trembo пишет:

Но и оставлять годами без движения - закиснет и не закроется в решающий момент!

об этом я выше писал - туда-сюда должно быть встроено в алгоритм, но не сильно часто

у меня такой алгоритм есть и в гидролоке и в нептуне, только там что-то типа раз в неделю или даже в месяц

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Это как дверные защёлки- нормально открытые и нормально закрытые. В общественных зданиях должны стоять нормально открытые- пропало питание ( или сработала пожарка) - входи-выходи кто хочет. А не как в филиале банка в Москве когда люди сгорели при закрытых дверях.

Для воды есть тоже подобное, нормально закрытые клапана, а еще годик назад крутил в руках шаровой вентиль с тихоходным мотором, мотор его медленно ( секунд за 20 ) открывал, а закрывала пружина когда снималось питание с моторчика.

rensi
Offline
Зарегистрирован: 19.07.2014

Скажите, а как насчет датчика протечки, а точнее обрыв провода, как это предусмотреть?

avton
avton аватар
Offline
Зарегистрирован: 11.05.2014

нет,если придумаете как -буду признателен :)

Araris
Araris аватар
Offline
Зарегистрирован: 09.11.2012

Уже придумано (давно используется в охранных и прочих системах). Итак, простейший датчик наличия воды - это два электрода/контакта/проводника, сопротивление между которыми мы измеряем. Он имеет два состояния: 0 - очень большое сопротивление когда воды нет, или когда датчик не присоединен; 1 - меньшее сопротивление когда вода на контактах.

Для контроля исправности датчика соединяем контакты резистором, например, у меня стоят 300 кОм. Теперь имеем три состояния: 0 - очень большое сопротивление когда датчик не присоединен; 1- большое сопротивление (300 кОм) когда воды нет; 2 - меньшее сопротивление когда вода на контактах. Датчик подтягиваем к земле, или к плюсу, и на аналоговый пин. Читаем показания, усредняем по времени и анализируем, например, так:

      if ( WaterLeakLevel1 < 10)  { WaterLeakLevel1 = -1; } // АЛЯРМ, Датчик не присоединен
else if ( WaterLeakLevel1 > 100) { WaterLeakLevel1 = 1; }  // АЛЯРМ, Вода на контактах
                                     else { WaterLeakLevel1 = 0; }  // Мир и спокойствие

P.S. А еще можно спросить Google про "шунтирующее сопротивление шлейфа"

avton
avton аватар
Offline
Зарегистрирован: 11.05.2014

Про это я знаю,но тогда изначально надо прросчитывать колличество датчиков ,их общее сопротивление.В случае отсутсвия одного из них будет тревога. Все равно буду передеввать блок управления,добавлять пир датчик и радиоканал,возможно буду паять в него голую атмегу( уже заказал) и выкидывать кампаратор на датчики протечки...( кстати на самих датчиках даже место предусмотрел для SMD резистора:) )

 Не в тему : заказал http://www.ebay.com/itm/140991979989  , но нигде не нашел на какой частоте работает,аналогичный купленный сто лет назад работает на 315 мГц,рулится с ардуины без проблем.

Пы.Сы.  Araris если придумаете как добавите пир датчик в ванну- поделитесь)))) Все таки переодически не четко страбатывают датчики прохода. ( жена уже привыкла ручками перед ними помахать :) )

Araris
Araris аватар
Offline
Зарегистрирован: 09.11.2012

avton пишет:

Пы.Сы.  Araris если придумаете как добавите пир датчик в ванну- поделитесь)))) Все таки переодически не четко страбатывают датчики прохода. ( жена уже привыкла ручками перед ними помахать :) )

У меня с четкостью тоже были проблемы, оттого от датчиков прохода и отказался.

А что там, собственно, придумывать ? Есть срабатывание - ставим количество присутствующих =  1, нет срабатывания в течение указанного периода времени - ставим количество присутствующих =  0. Как-то так на первый взгляд.

avton
avton аватар
Offline
Зарегистрирован: 11.05.2014

Вариант скетча с аналогвыми кнопками и контролем обрыва датчиков.

https://yadi.sk/d/y_brqCI2X9REf

avton
avton аватар
Offline
Зарегистрирован: 11.05.2014

Сделал наброски принципиальной схемы для блока WC . Включает в себя аквасторож,управление светом от ИК датчиков прохода и включение вытяжки в зависимости от влажности и состояния света . Блок кнопок и датчик влажности DHT11 (обьеденен с разьемом ISP) выносные. Алгоритм подключения кранов выбирается перемычками в зависимомти от преминяемых кранов. Контроль обрыва датчиков предусмотрен.

Схема в формате sPlan

https://yadi.sk/d/q9nkZ4RjXy8nk

 

techmike
Offline
Зарегистрирован: 27.02.2013

Мой опыт, может кому пригодится: http://rn3aig.ru/phpBB3/viewtopic.php?f=3&t=65

avton
avton аватар
Offline
Зарегистрирован: 11.05.2014

Спасибо

avton
avton аватар
Offline
Зарегистрирован: 11.05.2014

Вторая версия платы, выносным раьемом ISP и колодкой под NRF24L01 . Теперь не надо разбирать потолок чтоб перепрошить)

В процессе пострадала одна плата про мини- изьял процессор)))

Очень удобны эти телефонные розетки под разные датчики,дешево и сердито)

axill
Offline
Зарегистрирован: 05.09.2011

Перепрошивка по радио? Как организована?

avton
avton аватар
Offline
Зарегистрирован: 11.05.2014

По радио никак, радио на будущее, рядом с NRF ISP разьем. С радио пока не разберусь никак, со структурами, знаний не хватает. Задел на будущее )

avton
avton аватар
Offline
Зарегистрирован: 11.05.2014

Блок кнопок со встроенными светодиодами:

avton
avton аватар
Offline
Зарегистрирован: 11.05.2014

Куплены наконец краны,сделаны очень качественно. 

Напряжение срабатывания от 2.5 вольт,рабочее напряжение 5 вольт. Ток в момент пуска 0.17 А , дальше 0.07 А . Стоят микрики в качестве концевых выключателей ,так что о жестком времени импульса управления можно не беспокоиться :) 

Шестерни все целиком металлические .

Спасибо Ustas за наводку :)

Snubist
Offline
Зарегистрирован: 18.02.2013

Где брал?

avton
avton аватар
Offline
Зарегистрирован: 11.05.2014
avton
avton аватар
Offline
Зарегистрирован: 11.05.2014

Релизный вариант V3 :)  Симисторы и разьемы будут запаяны в последний момент ,после отладки..

avton
avton аватар
Offline
Зарегистрирован: 11.05.2014

Финал...

omusman
Offline
Зарегистрирован: 21.09.2014

Тупанул создав новую тему.....

Всех приветствую.
Тема "Умные туалет и ванная" обсуждаются довольно давно и оживленно, поэтому хочу поделиться своим опытом. Тему выделил отдельно, т.к. устройство законченное и работоспособное, изготовленное мной в 2004 году,после того как сосед сверху залил меня, собственно для него и сделал, а заодно и себе..., меня кстати тоже несколько раз за десять лет устройство выручило (соседа тоже).
Перейдем к устройству :
Вот схема, слева два электрода  при попадании воды срабатывает симистор, он включает сервопривод  который закрывает шаровый кран(о нем расскажу позже),включаются бузер и светодиод. 
После устранения протечки и удаления воды кнопка под красным светиком сбрасывает схему - бузер не пищит, красный светик не горит, кран закрыт...кнопкой под зеленым светиком приводим в движение серву в обратную сторону, т.е. открываем кран.
Желтый светик показывает переключение концевика в конечной точке.
Устройство питается от зарядки для мобильника 5вольт - 500 ма., электроды - "папки" от разъёма - такие как для ардуино.Концевик сдвоенная кнопка КМ2-1, серва переделанная - удален стопор, чтобы свободно вращалась и выброшены все кишки, мотор подключен на прямую...
В схеме достаточно точек, чтобы контролировать и управлять устройством при помощи различных дополнительных устройств...
Устройство было мной снято в связи с переездом, собственно поэтому и попалось на глаза...
И еще , на серву устанавливается маленькая шестеренка а на кран большая у меня например 
1 к 8 ,поэтому усилие было достаточным для нормальной работы.
Из опыта...- необходимо один раз в месяц проверять привод т.е. активировать его, что бы небыло эффекта прикипания...
 
Удачи!
omusman
Offline
Зарегистрирован: 21.09.2014

Контроль обрыва провода , применительно к схеме.....

Araris
Araris аватар
Offline
Зарегистрирован: 09.11.2012

omusman пишет:

Тупанул создав новую тему.....

Уже поправил, надеясь, что Вы будете не против.
omusman
Offline
Зарегистрирован: 21.09.2014

Спасибо...

axill
Offline
Зарегистрирован: 05.09.2011

avton пишет:

Релизный вариант V3 :)  Симисторы и разьемы будут запаяны в последний момент ,после отладки..

отличная работа!

что за краны?

avton
avton аватар
Offline
Зарегистрирован: 11.05.2014

Спасибо. Краны чуть выше http://arduino.ru/forum/proekty/sistema-zashchity-ot-protechki-vody#comment-85219  ,аквасторож. Оказались очень удачные в плане управления,на вид сделаны качественно,но время покажет.

ещё одна фотка,сорри за качество

faraddin
Offline
Зарегистрирован: 11.08.2013

Скажите, как я понял, краны управляются по двум проводам в заисимости от полярности, а в них есть концевики?

avton
avton аватар
Offline
Зарегистрирован: 11.05.2014

Да ,так и есть ,внутри концевики ,сами себя отрубают. Для закрытия достаточно 4-5 сек. Но я напряжение с них снимаю через 5 секунд.

faraddin
Offline
Зарегистрирован: 11.08.2013

А как они работают? ну в смысле, если концевик разрывает цепь как питается реверс? там стоят диоды?

avton
avton аватар
Offline
Зарегистрирован: 11.05.2014

там стоят микрики с перекидными контактами