Товары из Китая

Вентиляция в бане


  1. Цена: 1690 р
  2. Перейти в магазин

Вентиляция в бане

Воздушная заслонка.

Габаритные размеры.

Длина — 150 мм

Диаметр 100 мм.

Вентиляция в бане

Изготовлена из нержавеющей стали.

Имеет моторизованный редуктор на 220 В.

Клапан снабжен силиконовым уплотнителем.

Опорный подшипник клапана пластиковый.

Китайцы заявляют следующие параметры:

Напряжение питания 220 В

Потребляемая мощность 4 Вт

Номинальный крутящий момент 1 Н*м

Срок службы 60 000 закрытий.

Схема подключения:

Вентиляция в бане

Центральный контакт — ноль.

Крайние — фаза на открытие или закрытие.

Качество изготовления — хорошее.

Я покупал их в 2020 году по цене от 12 до 14 USD.

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

Но вот только сейчас руки дошли до бани.

Итак. Баня имеет размер 12 х 6 м. Проекта не было, был эскиз.

Получилось вот что:

Вентиляция в банеСхема вентиляции:

Вентиляция в бане

Работать должна так.

1. При нажатии кнопки вытяжки, земля подается на вход сенсора 1, открывается задвижка 1 и включается вентилятор.

При выключении кнопки — задвижка 1 закрывается.

2. При обнаружении человека в туалете открывается задвижка 2, взводится таймер.

После удаления человека из туалета через время timeout закрывается задвижка 2

3. При обнаружении человека в душе открывается задвижка 3, взводится таймер.

После удаления человека из душа через время timeout закрывается задвижка 3

4. Вентилятор включен если нажата кнопка вытяжки или взведен хоть один таймер

Вот такой простой алгоритм.

И еще. Из вытяжки на кухне я выдрал встроенный вентилятор.

Я не понимаю зачем в этом приборе нужно управление скоростью вращения вентилятором.

В итоге я припаял к кнопкам реле и сухим контактом даю сигнал на ноль для блока управления вентиляцией.

Вентиляционные трубы покупал в Леруа.

Вентилятор канальный.

Вентиляция в банеПо чем брал уже не помню. Сейчас аналогичные в Леруа от 2,500 р.

Блок управления.

Собран на базе Arduino.

Вентиляция в бане

В качестве сенсоров перепробовал всякие. В итоге использовал модули hsf-dc6, как наиболее стабильные.

Покупал здесь: https://aliexpress.ru/item/item/32786483344.html

Поскольку я хотел попробовать разные датчики, на плате установил Джампер J1, переключающий напряжение питания сенсоров 3,3V, 5V.

Для питания 3,3V используется DC-DC преобразователь.

Покупал здесь: https://aliexpress.ru/item/item/32320177001.html

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

Поскольку это не серийное устройство я установил LCD индикатор, подключенный по шине I2C.

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

Вентиляция в банеНу и последний модуль — плата с реле на 4 канала.

Покупал здесь: https://aliexpress.ru/item/item/32649659086.html

Сначала было желание развести и заказать плату в Китае.

Но пошел по пути наименьшего сопротивления и распаял модули на макетке.

Вот что получилось.

Вентиляция в банеВсе поместил в коробочку, купленную в Леруа.

Вентиляция в бане

Протестил.

Вентиляция в бане

И установил на чердаке в бане.

Вентиляция в бане

Ниже привожу код. Может кому будет полезно.

// #define DEBUG

#define LCD
#include <Wire.h>
#include <avr/interrupt.h>
#ifdef LCD
#include <LiquidCrystal_I2C.h>
#endif
#define LEDPIN 13
// реле включаются при низком потенциале на входе
#define ON LOW
#define OFF HIGH
// Назначение Pins
const int RRR = A0; // Потенциометр, устанавливает timeout.
const int sensor1 = 2; // Датчик Кухни. Сухой контакт реле при
// срабатывании замыкается на землю.
const int valve1 = 5; // Задвижка кухни.
const int sensor2 = 3; // Датчик Туалета.
const int valve2 = 6; // Задвижка Туалета.
const int sensor3 = 4; // Датчик Душа.
const int valve3 = 7; // Задвижка Душа.
const int fan = 8; // Вентилятор.

unsigned int timerValve2; // Таймер задвижки туалета
unsigned int timerValve3; // Таймер задвижки душа
#ifdef LCD
LiquidCrystal_I2C lcd(0x27, 16, 2); // Инициализируем дисплей
#endif

// Тест исполнительного механизма (задвижки, вентилятора)
void test_drive(int pin, char* name){
char buff[20];
digitalWrite(pin, ON); // Открываем задвижку
lcd.setCursor(0, 1);
strcpy(buff,name);
strcat(buff, " On ");
lcd.print(buff);
delay(3000); // Три секунды задержка
lcd.setCursor(0, 1);
strcpy(buff,name);
strcat(buff, " Off ");
lcd.print(buff);
digitalWrite(pin, OFF); // Закрываем задвижку
delay(1000);
}
// Проверка работы систем на 3 секунды послеовательно включаем каждый прибор.
void test_env(){

lcd.clear();
lcd.noAutoscroll();
lcd.setCursor(0, 0);
lcd.print("Valve & Fun Test");
lcd.setCursor(0, 1);
lcd.print("All Valve Closed");
digitalWrite(valve1, OFF); // Все закрываем, выключаем
digitalWrite(valve2, OFF);
digitalWrite(valve3, OFF);
digitalWrite(fan, OFF);
delay(1000); // 1 секунда задержка
test_drive(valve1, "Valve1");
test_drive(valve2, "Valve2");
test_drive(valve3, "Valve3");
test_drive(fan, "Fan");

lcd.clear();
}
//-------------------------------------------
void setup() {
// Устанавливаем режи работы Pin
pinMode(sensor1, INPUT);
pinMode(sensor2, INPUT);
pinMode(sensor3, INPUT);
pinMode(valve1, OUTPUT);
pinMode(valve2, OUTPUT);
pinMode(valve3, OUTPUT);
pinMode(fan, OUTPUT);
pinMode(RRR, INPUT);
timerValve2 = 0;
timerValve3 = 0;
// инициализация Timer1. Будет делать прерывания раз в секунду
cli(); // отключить глобальные прерывания
TCCR1A = 0; // установить регистры в 0
TCCR1B = 0;
OCR1A = 15624; // установка регистра совпадения
TCCR1B |= (1 << WGM12); // включение в CTC режим
// Установка битов CS10 и CS12 на коэффициент деления 1024
TCCR1B |= (1 << CS10);
TCCR1B |= (1 << CS12);
TIMSK1 |= (1 << OCIE1A); // включение прерываний по совпадению
sei(); // включить глобальные прерывания
#ifdef LCD
// Инициализация дисплея
lcd.init();
lcd.backlight(); // Включаем подсветку дисплея
#endif
#ifdef DEBUG
// Инициализация serial
Serial.begin(9600);
#endif
// установка внутреннего референсного источника
analogReference(DEFAULT);
// Проверяем задвижки и вентиллятор
test_env();
// Выводим строку заголовка
lcd.setCursor(0, 0);
lcd.print(" Fan");
}

//-------------------------------------------
// Читаем значение потенциометра
// и делим на 4
int set_timer_val(){
const int meterings = 50; // Усредняем показания по 50-ти значениям
int delay = 0;
for(int x=0; x < meterings; x++)
delay += analogRead(RRR);
delay /= (meterings * 4);
#ifdef DEBUG
Serial.println(delay);
#endif
return delay;
}
#ifdef LCD
//-------------------------------------------
// Вывод на дисплей состояния датчиков
void siaplay_sensors(int c1, int c2, int c3){
// c1 - датчик вытяжки
// c2 - датчик туалета
// c3 - датчик душа
lcd.setCursor(0, 1); // Состояние датчика 1
if(c1 == HIGH)
lcd.print("On ");
else
lcd.print("Off");
lcd.setCursor(4, 1); // Состояние датчика 2
if(c2 == HIGH)
lcd.print("On ");
else
lcd.print("Off");
lcd.setCursor(8, 1); // Состояние датчика 2
if(c3 == HIGH)
lcd.print("On ");
else
lcd.print("Off");
}

//-------------------------------------------
// Вывод на дисплей состояния таймеров
void display_timers(int c1, int t2, int t3, int timeout) {
// c1 - датчик вытяжки
// t2 - таймер включения вытяжки туалета
// t3 - таймер включения вытяжки душа
char tmp_str[3];
lcd.setCursor(0, 0);
sprintf(tmp_str, "%3d", timeout);
lcd.print(tmp_str);
lcd.setCursor(4, 0);
sprintf(tmp_str, "%3d", t2);
lcd.print(tmp_str);
lcd.setCursor(8, 0);
sprintf(tmp_str, "%3d", t3);
lcd.print(tmp_str);
lcd.setCursor(13, 1);
if (c1 == HIGH || t2 > 0 || t3 > 0)
lcd.print("On ");
else
lcd.print("Off");
}
#endif
//-------------------------------------------
// Обработка прерывания каждую секунду
ISR(TIMER1_COMPA_vect) {
digitalWrite(LEDPIN, !digitalRead(LEDPIN)); // Мигаем светодиодом
if (timerValve2 > 0) // если таймер заслонки туалета больше 0
timerValve2--; // уменьшаем его на единицу
if (timerValve3 > 0) // если таймер заслонки душа больше 0
timerValve3--; // уменьшаем его на единицу
}
//-------------------------------------------
// Основной цикл
void loop() {
int fanDelay = set_timer_val(); // Устанавливаем время работы вентилятора

int s1 = !digitalRead(sensor1); // Инверсный сигнал. 0 - включен
int s2 = digitalRead(sensor2);
int s3 = digitalRead(sensor3);

// реле включаются при нулевом потенциале на входе
if (s1 == HIGH) // Если нажата кнопка вытяжки
digitalWrite(valve1, ON); // Открываем воздушный клапан
else
digitalWrite(valve1, OFF);
if (s2 == HIGH) { // Сработал датчик туалета
timerValve2 = fanDelay; // Устанавливаем таймер
digitalWrite(valve2, ON); // Открываем клапан
}
if (timerValve2 == 0) // таймер закончился?
digitalWrite(valve2, OFF);// Закрываем клапан
if (s3 == HIGH) { // То же самое с душем
timerValve3 = fanDelay;
digitalWrite(valve3, ON);
}
if (timerValve3 == 0)
digitalWrite(valve3, OFF);
// управляем вентилятором
if (s1 == HIGH || // Если нажата кнопка вытяжки или
timerValve2 != 0 || // активен любой таймер, то
timerValve3 != 0)
digitalWrite(fan, ON); // включаем вентилятор
else
digitalWrite(fan, OFF); // иначе - выключаем
#ifdef LCD
siaplay_sensors(s1, s2, s3); // показать состояния сенсоров
display_timers(s1, timerValve2, timerValve3, fanDelay); // показать состояние таймеров
#endif
}

Планирую купить

+9


Добавить в избранное


Обзор понравился

+39
+54

    Вентиляция в бане

    Воздушная заслонка.

    Габаритные размеры.

    Длина — 150 мм

    Диаметр 100 мм.

    Вентиляция в бане

    Изготовлена из нержавеющей стали.

    Имеет моторизованный редуктор на 220 В.

    Клапан снабжен силиконовым уплотнителем.

    Опорный подшипник клапана пластиковый.

    Китайцы заявляют следующие параметры:

    Напряжение питания 220 В

    Потребляемая мощность 4 Вт

    Номинальный крутящий момент 1 Н*м

    Срок службы 60 000 закрытий.

    Схема подключения:

    Вентиляция в бане

    Центральный контакт — ноль.

    Крайние — фаза на открытие или закрытие.

    Качество изготовления — хорошее.

    Я покупал их в 2020 году по цене от 12 до 14 USD.

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

    Но вот только сейчас руки дошли до бани.

    Итак. Баня имеет размер 12 х 6 м. Проекта не было, был эскиз.

    Получилось вот что:

    Вентиляция в банеСхема вентиляции:

    Вентиляция в бане

    Работать должна так.

    1. При нажатии кнопки вытяжки, земля подается на вход сенсора 1, открывается задвижка 1 и включается вентилятор.

    При выключении кнопки — задвижка 1 закрывается.

    2. При обнаружении человека в туалете открывается задвижка 2, взводится таймер.

    После удаления человека из туалета через время timeout закрывается задвижка 2

    3. При обнаружении человека в душе открывается задвижка 3, взводится таймер.

    После удаления человека из душа через время timeout закрывается задвижка 3

    4. Вентилятор включен если нажата кнопка вытяжки или взведен хоть один таймер

    Вот такой простой алгоритм.

    И еще. Из вытяжки на кухне я выдрал встроенный вентилятор.

    Я не понимаю зачем в этом приборе нужно управление скоростью вращения вентилятором.

    В итоге я припаял к кнопкам реле и сухим контактом даю сигнал на ноль для блока управления вентиляцией.

    Вентиляционные трубы покупал в Леруа.

    Вентилятор канальный.

    Вентиляция в банеПо чем брал уже не помню. Сейчас аналогичные в Леруа от 2,500 р.

    Блок управления.

    Собран на базе Arduino.

    Вентиляция в бане

    В качестве сенсоров перепробовал всякие. В итоге использовал модули hsf-dc6, как наиболее стабильные.

    Покупал здесь: https://aliexpress.ru/item/item/32786483344.html

    Поскольку я хотел попробовать разные датчики, на плате установил Джампер J1, переключающий напряжение питания сенсоров 3,3V, 5V.

    Для питания 3,3V используется DC-DC преобразователь.

    Покупал здесь: https://aliexpress.ru/item/item/32320177001.html

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

    Поскольку это не серийное устройство я установил LCD индикатор, подключенный по шине I2C.

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

    Вентиляция в банеНу и последний модуль — плата с реле на 4 канала.

    Покупал здесь: https://aliexpress.ru/item/item/32649659086.html

    Сначала было желание развести и заказать плату в Китае.

    Но пошел по пути наименьшего сопротивления и распаял модули на макетке.

    Вот что получилось.

    Вентиляция в банеВсе поместил в коробочку, купленную в Леруа.

    Вентиляция в бане

    Протестил.

    Вентиляция в бане

    И установил на чердаке в бане.

    Вентиляция в бане

    Ниже привожу код. Может кому будет полезно.

    // #define DEBUG
    
    #define LCD
    #include <Wire.h>
    #include <avr/interrupt.h>
    #ifdef LCD
    #include <LiquidCrystal_I2C.h>
    #endif
    #define LEDPIN 13
    // реле включаются при низком потенциале на входе
    #define ON LOW
    #define OFF HIGH
    // Назначение Pins
    const int RRR = A0; // Потенциометр, устанавливает timeout.
    const int sensor1 = 2; // Датчик Кухни. Сухой контакт реле при
    // срабатывании замыкается на землю.
    const int valve1 = 5; // Задвижка кухни.
    const int sensor2 = 3; // Датчик Туалета.
    const int valve2 = 6; // Задвижка Туалета.
    const int sensor3 = 4; // Датчик Душа.
    const int valve3 = 7; // Задвижка Душа.
    const int fan = 8; // Вентилятор.

    unsigned int timerValve2; // Таймер задвижки туалета
    unsigned int timerValve3; // Таймер задвижки душа
    #ifdef LCD
    LiquidCrystal_I2C lcd(0x27, 16, 2); // Инициализируем дисплей
    #endif

    // Тест исполнительного механизма (задвижки, вентилятора)
    void test_drive(int pin, char* name){
    char buff[20];
    digitalWrite(pin, ON); // Открываем задвижку
    lcd.setCursor(0, 1);
    strcpy(buff,name);
    strcat(buff, " On ");
    lcd.print(buff);
    delay(3000); // Три секунды задержка
    lcd.setCursor(0, 1);
    strcpy(buff,name);
    strcat(buff, " Off ");
    lcd.print(buff);
    digitalWrite(pin, OFF); // Закрываем задвижку
    delay(1000);
    }
    // Проверка работы систем на 3 секунды послеовательно включаем каждый прибор.
    void test_env(){

    lcd.clear();
    lcd.noAutoscroll();
    lcd.setCursor(0, 0);
    lcd.print("Valve & Fun Test");
    lcd.setCursor(0, 1);
    lcd.print("All Valve Closed");
    digitalWrite(valve1, OFF); // Все закрываем, выключаем
    digitalWrite(valve2, OFF);
    digitalWrite(valve3, OFF);
    digitalWrite(fan, OFF);
    delay(1000); // 1 секунда задержка
    test_drive(valve1, "Valve1");
    test_drive(valve2, "Valve2");
    test_drive(valve3, "Valve3");
    test_drive(fan, "Fan");

    lcd.clear();
    }
    //-------------------------------------------
    void setup() {
    // Устанавливаем режи работы Pin
    pinMode(sensor1, INPUT);
    pinMode(sensor2, INPUT);
    pinMode(sensor3, INPUT);
    pinMode(valve1, OUTPUT);
    pinMode(valve2, OUTPUT);
    pinMode(valve3, OUTPUT);
    pinMode(fan, OUTPUT);
    pinMode(RRR, INPUT);
    timerValve2 = 0;
    timerValve3 = 0;
    // инициализация Timer1. Будет делать прерывания раз в секунду
    cli(); // отключить глобальные прерывания
    TCCR1A = 0; // установить регистры в 0
    TCCR1B = 0;
    OCR1A = 15624; // установка регистра совпадения
    TCCR1B |= (1 << WGM12); // включение в CTC режим
    // Установка битов CS10 и CS12 на коэффициент деления 1024
    TCCR1B |= (1 << CS10);
    TCCR1B |= (1 << CS12);
    TIMSK1 |= (1 << OCIE1A); // включение прерываний по совпадению
    sei(); // включить глобальные прерывания
    #ifdef LCD
    // Инициализация дисплея
    lcd.init();
    lcd.backlight(); // Включаем подсветку дисплея
    #endif
    #ifdef DEBUG
    // Инициализация serial
    Serial.begin(9600);
    #endif
    // установка внутреннего референсного источника
    analogReference(DEFAULT);
    // Проверяем задвижки и вентиллятор
    test_env();
    // Выводим строку заголовка
    lcd.setCursor(0, 0);
    lcd.print(" Fan");
    }

    //-------------------------------------------
    // Читаем значение потенциометра
    // и делим на 4
    int set_timer_val(){
    const int meterings = 50; // Усредняем показания по 50-ти значениям
    int delay = 0;
    for(int x=0; x < meterings; x++)
    delay += analogRead(RRR);
    delay /= (meterings * 4);
    #ifdef DEBUG
    Serial.println(delay);
    #endif
    return delay;
    }
    #ifdef LCD
    //-------------------------------------------
    // Вывод на дисплей состояния датчиков
    void siaplay_sensors(int c1, int c2, int c3){
    // c1 - датчик вытяжки
    // c2 - датчик туалета
    // c3 - датчик душа
    lcd.setCursor(0, 1); // Состояние датчика 1
    if(c1 == HIGH)
    lcd.print("On ");
    else
    lcd.print("Off");
    lcd.setCursor(4, 1); // Состояние датчика 2
    if(c2 == HIGH)
    lcd.print("On ");
    else
    lcd.print("Off");
    lcd.setCursor(8, 1); // Состояние датчика 2
    if(c3 == HIGH)
    lcd.print("On ");
    else
    lcd.print("Off");
    }

    //-------------------------------------------
    // Вывод на дисплей состояния таймеров
    void display_timers(int c1, int t2, int t3, int timeout) {
    // c1 - датчик вытяжки
    // t2 - таймер включения вытяжки туалета
    // t3 - таймер включения вытяжки душа
    char tmp_str[3];
    lcd.setCursor(0, 0);
    sprintf(tmp_str, "%3d", timeout);
    lcd.print(tmp_str);
    lcd.setCursor(4, 0);
    sprintf(tmp_str, "%3d", t2);
    lcd.print(tmp_str);
    lcd.setCursor(8, 0);
    sprintf(tmp_str, "%3d", t3);
    lcd.print(tmp_str);
    lcd.setCursor(13, 1);
    if (c1 == HIGH || t2 > 0 || t3 > 0)
    lcd.print("On ");
    else
    lcd.print("Off");
    }
    #endif
    //-------------------------------------------
    // Обработка прерывания каждую секунду
    ISR(TIMER1_COMPA_vect) {
    digitalWrite(LEDPIN, !digitalRead(LEDPIN)); // Мигаем светодиодом
    if (timerValve2 > 0) // если таймер заслонки туалета больше 0
    timerValve2--; // уменьшаем его на единицу
    if (timerValve3 > 0) // если таймер заслонки душа больше 0
    timerValve3--; // уменьшаем его на единицу
    }
    //-------------------------------------------
    // Основной цикл
    void loop() {
    int fanDelay = set_timer_val(); // Устанавливаем время работы вентилятора

    int s1 = !digitalRead(sensor1); // Инверсный сигнал. 0 - включен
    int s2 = digitalRead(sensor2);
    int s3 = digitalRead(sensor3);

    // реле включаются при нулевом потенциале на входе
    if (s1 == HIGH) // Если нажата кнопка вытяжки
    digitalWrite(valve1, ON); // Открываем воздушный клапан
    else
    digitalWrite(valve1, OFF);
    if (s2 == HIGH) { // Сработал датчик туалета
    timerValve2 = fanDelay; // Устанавливаем таймер
    digitalWrite(valve2, ON); // Открываем клапан
    }
    if (timerValve2 == 0) // таймер закончился?
    digitalWrite(valve2, OFF);// Закрываем клапан
    if (s3 == HIGH) { // То же самое с душем
    timerValve3 = fanDelay;
    digitalWrite(valve3, ON);
    }
    if (timerValve3 == 0)
    digitalWrite(valve3, OFF);
    // управляем вентилятором
    if (s1 == HIGH || // Если нажата кнопка вытяжки или
    timerValve2 != 0 || // активен любой таймер, то
    timerValve3 != 0)
    digitalWrite(fan, ON); // включаем вентилятор
    else
    digitalWrite(fan, OFF); // иначе - выключаем
    #ifdef LCD
    siaplay_sensors(s1, s2, s3); // показать состояния сенсоров
    display_timers(s1, timerValve2, timerValve3, fanDelay); // показать состояние таймеров
    #endif
    }

СМОТРИ ТАКЖЕ

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *