Вопрос по датчику протечки воды

ZhenyaRUS39
Offline
Зарегистрирован: 08.10.2015

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

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Женя, ну Вы попробуйте! И нам расскажете! Для этой пробы ведь не нужно никакого дорогого оборудования или там запчастей. Соедините, попробуйте - расскажите другим. И Вы себя больше будете уважать, и другие Вас. Ну зачем Вам наше одобрение на каждый чих?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

ZhenyaRUS39, ответ на Ваш вопрос сильно зависит от электрических свойств той воды, что течет у Вас в трубах, читай - от ее химического состава. Поэтому опыт, приобретенный в одной географической локации, може оказаться бесполезным в другой.

Остается один совет - пробуйте, но Вы его уже получили в предыдущем сообщении.

ZhenyaRUS39
Offline
Зарегистрирован: 08.10.2015

Да вот спалить не хотел ничего, потому и спросить сначала хотел. Буду проверять эксперементально.

kalapanga
Offline
Зарегистрирован: 23.10.2016

ZhenyaRUS39 пишет:

Да вот спалить не хотел ничего, потому и спросить сначала хотел. Буду проверять эксперементально.

А почему тогда не использовать готовые датчики, примеров по которым миллион?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

И стоют 50р вместе с платой канпаратора. 

ZhenyaRUS39
Offline
Зарегистрирован: 08.10.2015

DetSimen пишет:

И стоют 50р вместе с платой канпаратора. 

ехать будут пару месяцев с али

Проверил, работает через резистор на 10КОм (вешам на приём), источник от 5V, но  (плата Nano)

 

int IN_PIN = 2;
int LED_PIN = 13;
int val = 0; 
void setup() 
{
Serial.begin(9600);      // открываем последовательное соединение
pinMode(IN_PIN, INPUT);
pinMode(LED_PIN, OUTPUT);
}

void loop() 
{
val = digitalRead(IN_PIN);      // считываем значение с входа
Serial.println(IN_PIN);
//digitalWrite(LED_PIN, HIGH);  
if (val == 1)
{
digitalWrite(LED_PIN, HIGH);  
Serial.print(LED_PIN);
Serial.println("=ON");
} else
{
digitalWrite(LED_PIN, LOW);
Serial.print(LED_PIN);
Serial.println("=OFF");
}  
delay(50);
} 

так избавдяемся от наводок:

 

 

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

Ловите схему  и не вздумайте писать программу:

http://www.delaysam.ru/kvartira/kvartira35.html

Pyotr
Offline
Зарегистрирован: 12.03.2014

В растворах нужно работать на переменке.
Пин на выход. Через последовательно соединенные резистор 4.7 кОм (зависит от удельной электропроводности воды-раствора и постоянной измеряемой ячейки) и кондер на 0.1-1 мкФ на один электрод. Второй электрод на массу.

С точки резистор-кондер на аналоговый вход.
 Функция чтения значения переменки на электродах примерно так:

word conductivity(){
  word valLow = 0, valHigh = 0, valOut = 0;
  pinMode(OUT_PIN, OUTPUT);
  byte oldSREG = SREG;
  cli();
  for(byte i=0; i < 64; i++){    
    digitalWrite(OUT_PIN, HIGH);
    valHigh += analogReading(IN_PIN);
    digitalWrite(OUT_PIN, LOW);
    valLow += analogReading(IN_PIN);
  }
  SREG = oldSREG;
  pinMode(OUT_PIN, INPUT);
  valOut = valHigh - valLow;
  return valOut;
}

valOut будет близко к нулю при замыкании электродов и около 1023*64 при разомкнутых.

Или аппаратно меандр на выходе.