Система вентеляции подвала, этюд в 3 частях. Часть 1 - теория
- Войдите на сайт для отправки комментариев
Уровень сложности - новичек!
Я новичек в этой области, поэтому данный проект описывается и выкладывается сюда чтобы получить здоровую критику более опытных ардуинщиков.
Проект на стадии разработки, а именно проработана теоретическая и програмная часть, далее будет создание макета проекта, создание финального проекта.
Итак суть проекта: есть загородный дом, в нем есть подвал, в подвале есть комнотка, что-то вроде кладовой, в котором должна поддерживаться определенная температура в зимний период.
В этой комнате есть отверстие с улици, в которую планируется вставка вентелятора для нагнетания холодного воздуха, также там же планируется заслонка которая будет припятствовать поступлению холодного воздуха с улицы когда это уже не требуется.
Задача проекта такова:
*Если температура в комнате в пределе нормы, которую можно настроить в программе, то ничего не делаем
*Если температура в комнате выше чем на улице и выше максимума, то включаем вентилятор и нагнетаем холодный воздух с улицы.
*Если температура в комнате меньше минимальной, то закрываем заслонку, и комната нагревается от естественного тепла в остальном доме.
Также в проекте должна быть предусмотрена возможность ручного управления вентилятором и заслонкой без использования нашей автоматики.
Этап разработки :
1) ТЕОРИЯ
a. Теоретическая схема (Done)
b. Подборка компонентов (Done)
c. Симуляция схемы и скетча (Done)
2) Сборка макета (Waiting hardware)
a. Собственно сборка макета.
b. Дополнительная отладка скетча на реальном железе.
c. Устранение возможных неисправностей чего-либо
3) Сборка финального проекта
a. Установка вентелятора.
b. Установка ардуинки.
c. Сдача объекта тестю.
d. Последующая модернизация программной и аппаратной составляющей.
1) Теоретическая схема.
Принципиальная схема такая
Упрощенная электрическая схема такая
2) Подборка компонентов
Итак нам нужно:
1) Ардуино нано
2) 2 датчика температуры, я выбрал (DHT22)
3) реле ( взял двойное )
4) серво
5) переключатели
6) кнопки
7) серво-тестер
8) конвертер 220 to 12
9) конвертер 12 to 5
11) вентилятор от 220 (пока нет)
12) заслонка (пока нет)
3) Симуляция схемы и скетча
В симуляторе набросал такую схему.
Здесь нет развода по питанию на 12 и 5 в, но это больше для отладки скетча, пока жду железа.
Настрочил такой скетч:
#include <LiquidCrystal.h> // Подключаем библиотеку лсд экрана #include <Servo.h> // Подключаем библиотеку серво Servo motor; // обозначаем серву как мотор //////////ЗАДАНИЕ ПОРТОВ////////////////// uint8_t servo = 3; // вешаем серву на 3 пин LiquidCrystal lcd(4, 5, 6, 7, 8, 9); // подключаем ЛСД к портам 4-9 int lcd_led = 13; // вешаем подсветку ЛСД на пин 13 int prop = 2; // вешаем вентелятор (реле от него) на пин 2 int t1 = A0; // вешаем датчик температуры внутр на пин А0 int t2 = A1; // вешаем датчик наружней температуры на пин А1 int button_1 = 12; //порт кнопки 1 (+) int button_2 = 11; //порт кнопки 2 (-) int button_3 = 10; //порт кнопки 3 (настройка) ////////////////////////////////////////// boolean button_push_1 = false; //переменная нажатой кнопои 1 boolean button_push_2 = false; //переменная нажатой кнопои 2 boolean button_push_3 = false; //переменная нажатой кнопои 3 boolean maxmin_next = false; // boolean goto_maxmin = false; // boolean screen_update = true; // переменная обновления экрана int temp_inside = 0; // переменные для датчика температуры int temp_outside = 0; // int hum_inside = 0; // int hum_outside = 0; // int tmax = 5; // начальная максимальная температура = 5 int tmin = 1; // начальная минимальная температура =0 int menu = 1; // переменная меню int regim = 0; // переменная режима работы int i=0; // вспомогательная переменная boolean error_1 = false; // ошибка датчика 1 boolean error_2 = false; // ошибка датчика 2 unsigned long time_last_push=millis(); //время последнего нажатия кнопки unsigned long time_last_term_update=0; //время последнего обновления датчиков unsigned long time_period = 0; // переменные для экрана отображения времени работы int days = 0; // int hours = 0; // int minutes = 0; // unsigned long seconds = 0; // //////// Настраиваемые параметры ///////// int time_term_update = 500; //время обновления датчиков int sleep = 2000; // время гашения экрана int open_servo = 90; //положение открытой заслонки int close_servo = 0; //положение закрытой заслонки ////////////////////////////////////////// void setup() //предварительные настройки { pinMode(lcd_led, OUTPUT); //пин с подсветкой как выход digitalWrite(lcd_led,HIGH); // включаем подсветку lcd.begin(16, 2); // включаем экран ////////////////////////////////////////// //lcd.setCursor(5,0); // //lcd.write("HELLO!"); // П //delay(100); // Р //lcd.clear(); // И //lcd.setCursor(4,0); // В //lcd.write("LOADING..."); // Е //lcd.setCursor(0,1); // Т // for (i=0;i<17;i++){ // С //lcd.setCursor(i,1); // Т //lcd.print("#"); // В //delay(10); // И // } // Е //lcd.clear(); // ////////////////////////////////////////// lcd.setCursor(0,0); Serial.begin(9600); //включаем вывод в порт pinMode(t1, INPUT); //ОБОЗНАЧАЕМ ПОРТЫ pinMode(t2, INPUT); // pinMode(button_1, INPUT); // pinMode(button_2, INPUT); // pinMode(button_3, INPUT); // pinMode(prop, OUTPUT); // term_update (); // обновляем показания датчиков } void loop() { ////////////////////////////////////////если кнопку нажали больше чем слип милисекунд назад if(millis()-time_last_push>=sleep) //то гасим экран, если нет то зажигаем { digitalWrite(lcd_led,LOW); } else { digitalWrite(lcd_led,HIGH); } /////////////////////////////////////////////////Если кнопка плюс нажата, то листаем вперед if(digitalRead(button_2)==HIGH&&!button_push_2) { button_push_2=true; menu++; screen_update=true; if (menu==6) {menu=1;} time_last_push=millis(); } if(digitalRead(button_2)==LOW&&button_push_2) { button_push_2=false; time_last_push=millis(); } ///////////////////////////////////////////////// Если кнопка минус нажата, то листаем назад if(digitalRead(button_1)==HIGH&&!button_push_1) { button_push_1=true; menu--; screen_update=true; if (menu==0) {menu=5;} time_last_push=millis(); } if(digitalRead(button_1)==LOW&&button_push_1) { button_push_1=false; time_last_push=millis(); } //////////////////////////////////////////////////// Если нажимаем кнопку 3 то приравниваем переход к правде if(digitalRead(button_3)==HIGH&&!button_push_3) // здесь эта заморочка с переменной перехода нужна для того, { // чтобы при отпускании кнопки 3 переменная пушбаттон 3 button_push_3=true; // принимала ложь, иначе кнопка 3 работает не корректно далее goto_maxmin =true; time_last_push=millis(); } if(digitalRead(button_3)==LOW&&button_push_3) { button_push_3=false; time_last_push=millis(); } //////////////////////////////////////////////////// идем в настройки лимитов if (!button_push_3&&goto_maxmin) { maxmin(); } //////////////////////////////////////////////////// Если пришло время обновлять датчики делаем это if (millis()-time_last_term_update>=time_term_update) { term_update(); screen_update=true; } //////////////////////////////////////////////////// Сравниваем температуры и ставим режим if(temp_inside>=tmax) { if(temp_inside>temp_outside) { regim1(); } else { regim2(); } } else { if (temp_inside>tmin) { regim2(); } else { regim3(); } } ///////////////////////////////////////////////////// В зависимости от значения меню идем туда switch (menu){ case 1: menu_1(); break; case 2: menu_2(); break; case 3: menu_3(); break; case 4: menu_4(); break; case 5: menu_5(); break; } } ////////////////////////////////////////////////////// 3 режима: // 1 вент включен, заслонка поднята (усиленное охлаждение) // 2 вент выключен, заслонка открыта (умеренное охлаждение) // 3 вент выключен, заслонка закрыта (сохранение/нагрев) void regim1 (){ digitalWrite(prop, HIGH);//включаем вент motor.attach(servo); motor.write(open_servo);// заслонка открыта regim=1; } void regim2 (){ digitalWrite(prop, LOW);//выключаем вент motor.attach(servo);// заслонка открыта motor.write(open_servo); regim=2; } void regim3 (){ digitalWrite(prop, LOW);//выключаем вент motor.attach(servo);// заслонка закрыта motor.write(close_servo); regim=3; } ////////////////////////////////////////////////////// Обновление показания датчиков температуры // пока нет железа, делаем из эмулятора // показания влажности чисто для справки // Если температура не получена, выводим ошику void term_update () { temp_inside =(analogRead(t1)-103)*0.5; temp_outside =(analogRead(t2)-103)*0.5; hum_inside = 90; hum_outside = 80; time_last_term_update = millis(); if (temp_inside == 0) {error_1=true;} else {error_1=false;} if(temp_outside == 0) {error_2=true;} else{error_2=false;} } /////////////////////////////////////////////////////// Вывод данных о температуре void menu_1() { if(screen_update) { lcd.clear(); lcd.setCursor(0,0); lcd.clear(); lcd.print("1) TEMPERATURE"); lcd.setCursor(1,1); lcd.print("IN="); if (error_1) { lcd.print("ERR"); } else { lcd.print(temp_inside); } lcd.setCursor(8,1); lcd.print("OUT="); if (error_2) { lcd.print("ERR"); } else { lcd.print(temp_outside); } } screen_update=false; } ////////////////////////////////////////////////////// Вывод данных о влажности void menu_2(){ if (screen_update) { lcd.clear(); lcd.setCursor(0,0); lcd.clear(); lcd.print("2) HUMIDITY"); lcd.setCursor(1,1); lcd.print("IN="); if (error_1) {lcd.print("ERR");} else{lcd.print(hum_inside);} lcd.setCursor(8,1); lcd.print("OUT="); if (error_2) {lcd.print("ERR");} else {lcd.print(hum_outside);} } screen_update=false; } ////////////////////////////////////////////////////// Вывод крайних значений (не настройка) void menu_3(){ if (screen_update) { lcd.clear(); lcd.setCursor(0,0); lcd.clear(); lcd.print("3) LIMITS"); lcd.setCursor(1,1); lcd.print("MIN="); lcd.print(tmin); lcd.setCursor(8,1); lcd.print("MAX="); lcd.print(tmax); } screen_update=false; } ////////////////////////////////////////////////////// Информация о текущем режиме работы void menu_4(){ if (screen_update) { lcd.clear(); lcd.setCursor(0,0); lcd.clear(); lcd.print("4) MODE "); lcd.print(regim); lcd.setCursor(0,1); lcd.print("FUN "); if (regim == 1){lcd.write("ON");}else{lcd.write("OFF");} lcd.setCursor(8,1); lcd.print("GATE "); if (regim != 3){lcd.write("ON");}else{lcd.write("OFF");} } screen_update=false; } ////////////////////////////////////////////////////// Информация о продолжительности времени работы void menu_5(){ if (screen_update) { lcd.clear(); lcd.setCursor(0,0); lcd.print("5) WORK TIME"); lcd.setCursor(1,1); time_period = millis()/1000; seconds=time_period-60*minutes-3600*hours-86400*days; while (seconds>=60){ minutes++; seconds=seconds-60; } while (minutes>=60){ hours++; minutes=minutes-60; } while (hours>=24){ days++; hours=hours-24;} if (days<10){lcd.print(" ");} lcd.print(days); lcd.print("D "); if (hours<10){lcd.print(" ");} lcd.print(hours); lcd.print("H "); if (minutes<10){lcd.print(" ");} lcd.print(minutes); lcd.print("M "); if (seconds<10){lcd.print(" ");} lcd.print(seconds); lcd.print("S"); } screen_update=false; } ////////////////////////////////////////////////////// Настройка митимальной и максимальной температуры void maxmin() { maxmin_next=false; screen_update=false; while(!maxmin_next)// Печатаем мин пока нет некс { button_push_3=false; lcd.clear(); lcd.setCursor(3,0); lcd.print("SET LIMITS"); lcd.setCursor(5,1); lcd.print("MIN="); lcd.print(tmin); while(!screen_update)// Читаем кнопки пока не изменится значение Тмин { if (digitalRead(button_1)==HIGH&&!button_push_1) { button_push_1 = true; tmin++; screen_update=true; } if (digitalRead(button_1)==LOW&&button_push_1) { button_push_1= false; time_last_push=millis(); } if (digitalRead(button_2)==HIGH&&!button_push_2) { button_push_2=true; tmin--; screen_update=true; } if (digitalRead(button_2)==LOW&&button_push_2) { button_push_2=false; time_last_push=millis(); } if (tmin>=tmax-1) { tmax=tmin+1; } if (digitalRead(button_3)==HIGH&&!button_push_3) { button_push_3=true; maxmin_next=true; screen_update=true; time_last_push=millis(); } if (digitalRead(button_3)==LOW&&button_push_3) { button_push_3=false; time_last_push=millis(); } } screen_update=false; } screen_update=false; maxmin_next=false; while(!maxmin_next) { lcd.clear(); lcd.setCursor(3,0); lcd.print("SET LIMITS"); lcd.setCursor(5,1); lcd.print("MAX="); lcd.print(tmax); while(!screen_update) { if (digitalRead(button_1)==HIGH&&!button_push_1) { button_push_1=true; tmax++; screen_update=true; } if (digitalRead(button_1)==LOW&&button_push_1) { button_push_1=false; time_last_push=millis(); } if (digitalRead(button_2)==HIGH&&!button_push_2) { button_push_2=true; tmax--; screen_update=true; } if (digitalRead(button_2)==LOW&&button_push_2) { button_push_2=false; time_last_push=millis(); } if(tmax<=tmin+1) { tmin=tmax-1; } if (digitalRead(button_3)==HIGH&&!button_push_3) { button_push_3=true; maxmin_next=true; screen_update=true; time_last_push=millis(); } if (digitalRead(button_3)==LOW&&button_push_3) { button_push_3=false; time_last_push=millis(); } } screen_update=false; } maxmin_next=false; goto_maxmin=false; screen_update=false; }
Скетч обильно прокомментирован, поэтому вопросов по моей логике и ходе рассуждения быть не должно.
Итак, вроде все худо-бедно работает.
На этом теоретическая часть заканчивается, жду железа для сборки макета.
Мысли для последующей реализации (будут реализовываться в дальнейшем):
1) Прикрутить спящий режим для экономии энергии.
2) Добавить датчик движение и включение света (в помещении).
3) В меню настроек включить другие функции (поворот серво, яркость экрана, время задержки обновления датчиков и.т.д.)
4) Запись в память настроек максимума и минимума, чтение из памяти настроек в начале.
В порядке размышлений, не критика. Заменить серву с заслонкой на второй вентилятор - первый вент.выполняет функцию перемешивания (забор сверху, выход снизу.) и нормализует температуру по всему объему помещения. Приточный вентилятор поставить как вытяжной, на выход воздушный клапан (заслонку). Температуру помещения измеряем по двум точкам (верх-низ), при заданной разнице осуществляем перемешивание, если средняя выше заданной, включаем вытяжку.
А лепить спящие режимы на систему с сетевым питанием занятие бесполезное, сэкономите на миллисекунду работы вентилятора.
Предложения по железу:
1. Используйте один ИП на 220 в 5 вольт и подавайте на Vcc. Иначе встроенный стабилизатор будет не хило грется. Заодно "большая" экономия энергии будет. Правда одновремеенно включать USB и питатель не рекомендую.
2. Согласен с bwn. Вентилятор лучше ставить на вытяжку + обратный клапан. Заслонку выкинуть с сервоприводом, сделать отверстие приточки с жалюзи. Подсос конечно будет но он будет минимален. Если помещение небольшое то перемешивание можно не делать.
3. Датчики влажности температуры - нужен подтягивающий резистор на каждый датчик 4.7 к.
4. Кнопки если как на картинке то очень плохие.
5. ИХМО я бы выкинул тумблера для ручного управления и сделал бы управление програмное через кнопки и выбор из меню. Либо тумблера ставил параллельно реле на 220 вольт.
По программе:
1. Вопрос - не увидел подавления дребезга кнопок.
2. Однозначно надо учитывать влажность иначе весной можно получить обильный конденсат в подвале.
Заменить серву с заслонкой на второй вентилятор - первый вент.выполняет функцию перемешивания (забор сверху, выход снизу.) и нормализует температуру по всему объему помещения. Приточный вентилятор поставить как вытяжной, на выход воздушный клапан (заслонку).
На счет этого я тоже думал, что заслонка не нужна. Просто сейчас система вентеляции подвала заключается в затыкании дырки в стене пробкой. Те кто ее эксплуатирует (тесть, теща) убеждены в том что затычка эта нужна и без нее никак. Вы просто не слышали как со стророны заказчиков серьезно говорилось о том что заслонку нужно утеплить каким нибудь мехом, от чего они мною были отговорены. Так что заслонка это больше прихоть заказчика так сказать.
Температуру помещения измеряем по двум точкам (верх-низ), при заданной разнице осуществляем перемешивание, если средняя выше заданной, включаем вытяжку.
Помещение не большое, буквально 2м х 3м х 2м. тоже сначала думал о 2-х датчиках, но потом отказался. По той же причине нет смысла использовать 2-ой перемешивающий вентелятор.
1. Используйте один ИП на 220 в 5 вольт и подавайте на Vcc. Иначе встроенный стабилизатор будет не хило грется. Заодно "большая" экономия энергии будет. Правда одновремеенно включать USB и питатель не рекомендую.
спасибо за совет, может так и сделаю, опять же сообщаю что я новичек и руководствовался рекомендуемым входным напряжением 7-12V, я так понял что если подавать на Vcc то он идет без стабилизации. Учту.
2. Согласен с bwn. Вентилятор лучше ставить на вытяжку + обратный клапан.
Вытяжка там есть, так сказать естественная, и вытягивает она хорошо, с этим проблем не должно быть.
5. ИХМО я бы выкинул тумблера для ручного управления и сделал бы управление програмное через кнопки и выбор из меню. Либо тумблера ставил параллельно реле на 220 вольт.
прихоть заказчика, мы видите не любим все электронное, а ручками надежнее. Ну надо так надо.
1. Вопрос - не увидел подавления дребезга кнопок.
Кнопочки сделаю, наверное прикручу "титановый велосипед"
2. Однозначно надо учитывать влажность иначе весной можно получить обильный конденсат в подвале.
Я в этом деле не разбираюсь, а именно какая должна быть логика при той или иной влажности? опишите пожалуйста. я так понимаю либо не качать с улицы слишком влажный воздух, либо удалять воздух из подвала при избыточной влажности. Но в данном подвале естественная вытяжка работает и так не плохо, поэтому думаю с этим проблем не будет, в любом случае над этим нужно будет думать если данная проблема возникнет...
У меня помещение тоже небольшое, перемешивание делал для ликвидации темных углов с плесенью. Застойные зоны там всегда.
Ну а воздушный клапан вместо заслонки. Он и заслонку изображает и воздуху течь не мешает.
У себя из них еще и кошкам вход с улицы сделал.
По поводу тумблеров их надо ставить как дубль контактов реле. Так надежнее будет.
По поводу влажности http://arduino.ru/forum/proekty/kontrol-vlazhnosti-podvala-arduino-pro-mini
Вы ссылаетесь на естественную вытяжку, которая не плохо работает. Тогда зачем городить устройство.
При увеличении воздухообмена возможно выпадение конденсата.
Вы ссылаетесь на естественную вытяжку, которая не плохо работает. Тогда зачем городить устройство.
При увеличении воздухообмена возможно выпадение конденсата.
Я сейчас понял что название темы может смутить, но по функционалу устройство нужно, чтобы поддерживать температуру, забирать с улицы холодный воздух, но не переохлаждать помещение ниже установленного уровня.
Проект медленно эволюционирует на данный момент код такой:
ИЗМЕНЕНИЕ :
добавлены символы (градусник, капелька, вентелятор)
прикручен велсипед для кнопок
добавлен цветной диод для обозначения режимов и ошибок
ручной режим прикручен через ардуинку
пока закоментирована серва, целесообразность установки рассматривается.
прикручена пещалка
прикручена красотень при загрузке
реализовано множество войдов
реалезовано сохранение параметров при сохранении.
все что закоменчено, раскоменчено с комментариями закоментить нужно чтобы вся эта шняга работала в онлайн симуляторе вот ссыль https://123d.circuits.io/circuits/1187491-termovent/
В будущем планируется сборка макета, дальнейшая оптимизация-эволюция кода.
если честно то я пока не понял функционального предназначения помещения.
вы пишите "что-то вроде кладовой в котором должна поддерживаться определенная температура в зимний период." Также смущает слово подвал.
если речь идет о подвале в котором храняться маркошка картошка соленья варенья - то это одно дело! а если это полу жилое подвальное помещение (комната) вы там проводите время или там хряняться вещи это другое дело.
В любом случае вам человек правильно подсказал нужно идти по пути наименьшего сопротивления - тоесть использовать возможности естественого циркулирования воздуха по максимуму. (тем более если это подвальное помещение).
При этом забор свежего воздуха должен производиться из вашего подполья (1го этажа) диаметр трубы около 150 -200 мм в зависимости от объема (помещения) о котором вы говорите , вход этой трубы в ваше помещение на высоте 0.3 -0.5 м от пола. Выхлоп отработанного воздуха должен производиться с верхней точки вашего помещения д=80 -120мм(в зависимости от V) и уходить на крышу вашего дома и там торчать на высоте не менне 0.5 метра от кровли. (получили полный функционал естественной вентиляции).
Вот теперь достаточно дополнить принудительную вентиляцию - если хотим теплый воздух зимой.
вентилятор и заслонку на отводящию трубу, заслонку на входящую.
при проектировании я бы больше делал упор на влажность а не на температуру.
сервоприводы и клапана я бы посоветовал BKA-150 или ченить от Belimo. не забывайте о безопасности линий если полезите в 220в. ставьте на линии вентеляторов АВДТ обязательно. но лучше с 220 не заморачиваться а через трансформатор брать 12 или 24 в.
если пол в вашей комнатке в подвале земляной обязательно положите гидро изоляцию, цементную подушку и пролейте наливным полом - так вы избавитесь от влажности на %30 сразу. стены заштукатурьте - и побелите это даст возможность им дышать от земли вокруг них тоесть брать естественное тепло земли.
Если это помещение для хранения овощей и фруктов, а из коментов в кодинге так и думаеться: тмакс=5 тмин=1 то тут задача немного другая - температура не должна опястится ниже 5гр. зимой при любых морозах для нашей полосы. (все зависит от типа овощей которые вы храните) и не привышать +15 самые жаркие периоды. влажность держим в районе не превышающей 80 это средний вариант. С этими задачами выбираеться правильная глубина залегания подвала, его тепло изоляция и перечисленная выше вентеляция. При этом принудительная выполняет роль борьбы с влажносью в подвале. (это делать нужно обязательно иначе возникнит плесень).
В любом случае я бы лично не находился в таком помещении в момент просушки - лично у меня когда продуваеться подвал даже летом без бушлата лучше не находиться - ветрище бешеный можно сразу просквозиться. Вентеляторы я использую от телекомунникационного шкафа блок сразу на 6-ть штук.
Не используя принудительную вентеляцию: имею февраль tул=-25 tпод=+5 ВЫТЯЖКА ЗАКРЫТА. весна tул=+15 tпод=+5~+7 ВСЕ вытяжки ОТКРЫТы. лето tул=+35 макс tпод= +7~+12макс. ВХОДная вытяжка ЗАКРЫТа НА 50%.
Режим просушки (принудительная вентиляция) если летом то tпод =+15 макс. Зимой только при условии что tподполья не ниже +5 - тоесть когда первый этаж отоплен. Продуваю пока влажность не понизится до 40% этого хватает на 3-4 месяца затем влажность доходит до нормы подполья тоесть до 80-90%.
Всем привет, после того как проект пролежал ящике (руки не доходили) собрал макетик на плате, все работало ок, потом спаял между собой все детальки, тут начались проблемы, релюшка отказывалась работать от питания ЮСБ (точнее при включении релюшки выключался экран, видимо им на двоих не хватало мощности. Запитал от ибп, вроде релюха работает норм. Потом начались проблемы с кнопками. Они нажимаются через раз да и иногда просто срабатывает нажатие. Не могу понять в чем проблема. Возможно я зря их решил подтянуть от встроенного сопротивления, буду перепаивать на внешнее, да еще и конденсатор добавлю. Это все при том, что на макете все работало норм. Скетч через пол-года моего не быстрого изучения ардуино выглядет очень убого, но решил его не переписывать. т.к. он работает... в общем буду паять дальше, после чего отпишусь о результатах...
Mr.Privet )) привет!
Я сам не особо крут в контроллерах - но решил вспомнить молодость и повелся на вашу затею.
Скажу сразу у меня задача в принципе такая же как и у тебя толко я ее немного упростил и одновременно расширил и совмещал еще и с охранкой!
Скетч у тебя для - моего уровня меня устраивает я его во всяком случае читать могу и т.д.
Проблема скорее всего в сборке!
или
Попробуй отдельно (ну тут нужно все вспомнить поднять доки)! - запитать лсидишку от питалова - затем отдельно попинать микроконтроллер с релюхой на предмет вкл выкл. ит.д.
Мне кажеться просто мат часть подзабыл!
Итак, проблема была кажется в питании, причем когда я запитывал нано от AC\DC диодной лампочки, после долгих страданий она благополучно сгорела, я взял уно, заменил кнопки на энкодер, питаться решил через USB, теперь все пашет нормально, осталось только проверить как поведет себя вся схема когда к релюшке подключить нагрузку. С энкодером мне даже больше понравилось, теперь все запихну в коробочку и тогда уже отпишусь. Из скетча выкинул пищалку и трехцветный диод, поскольку добавлял всю эту красоту больше для собственного развития чем для функциональности. скетчик выложу попозже.
А конструктив заслонки какой? Ну которой сервомотор управляет? Фото есть?
А то тоже буду делать вентиляцию, не хотелось бы наступать на грабли.
от заслонки в итоге отказались, вместо них будут шторки которые поднимаются от ветряного потока вентелятора. Так как у меня помещение маленькое думаю этого будет достаточно. А заслонку хотел как то приколхозить от сервы (может и отказался потому что плохо представлял как это будет выглядить. А вообще есть промышленные заслонки для вентеляции, только какой на них управляющий сигнал нужен все зависит от конкретной моделе. Они в мой бюджет не укладываются...
Нужно разделить питание реле и МК (разные БП) т.к. возможны глюки на LCD и вплоть до зависания МК
Мне интересно, поможет это система вентиляции, в подвале всегда будет высокая влажность из за конденсата?
мне тоже интересно, как все будет работать отпишусь. а до этого конкретно в данном помещении проблем с влажностью не было потому что там хорошая вытяжка.
возможно и нужно, но пока все работает без глюков если будет глючить разнесу. А вообще сейчас переключился на другой проект, к этому вернусь позже, поскольку актуален он в основном зимой...
Пороект хороший но...
Моё мнение - не стоит игнорировать данные влажности улицы и подвала!
Есть такое понятие абсолютной влажности и относительной.
Абсолютная - количество воды в парообразном состоянии в объеме воздуха, гр/м3. Понятие "насыщенного пара" по другому завется - "точка росы", это когда влажности в воздухе столько, что влага из воздухе конденсируется на поверхностях. Значения давления насыщенного пара напрямую зависит от ТЕМПЕРАТУРЫ!
Относительная - процентное соотношение замеряемой влажности от значения насыщенного пара при одной температуре, выражается в %.
Попробую пояснить. Приведу график давления насыщенного пара в зависимости от температуры.
что из это следует?
К примеру, на улице +25 гр.С, влажность 40%. При такой температуры давление насыщенного пара - 31,67, соответственно, 40% от этого 12,66
Но... в подвале +15гр.С влажность 60%. При такой температуры давление насыщенного пара - 17,04, соответственно, 60% от этого 10,53...
Т.е. если воздух с улицы попадет в подвал и остынет до +15, то влажность в подвале повысится, что не есть хорошо.
Другой пример
на улице +10 гр.С, влажность 80%. При такой температуры давление насыщенного пара - 12,27, соответственно, 80% от этого 9,82
Но... в подвале +15гр.С влажность 60%. При такой температуры давление насыщенного пара - 17,04, соответственно, 60% от этого 10,53...
Т.е. если воздух с улицы попадет в подвал инагреется до +15, то влажность в подвале понизится, что хорошо.
Что этим хочу сказать - надо не только температуры сравнивать, но и влажность. Имея сухой подвал со стабильной температурой, это мечта многих. А т.к. используются датчики DHТ22, то тут сам бог велел...
про влажность я тоже думал, она у меня только показывается. Хочу заметить что в данном помещении естественная вытяжка вполне хороша (из подвала труба идет на крышу) и отток воздуха хороший, проблема с повышенной влажностью в данном помещении не наблюдались. Я уже говорил что немного не точно назвал этот проект, это больше не вентеляция подвала а поддержание постоянной температуры в небольшом подвальном помещении. Из приведенных BogADом примеров следует что повышение влажности возможно при охлаждении теплого воздуха, забранного с улицы, но у меня по условиям если на улице теплее чем в подвале то воздух с улицы не сосется, соответственно он может быть только холоднее, и соответственно при нагревании влажность будет понижаться. Спасибо BogADу за разъяснения. Если проблемы с влажностью будет иметь место быть то буду его "контролить". Пока пинаю тестя на установку "силовой" части, а "мозги" почти готовы...