12.11.2013, 20:35 | #1 |
Member
|
Автоклимат в комнате на Ардуино
Решил сделать устройство, которое бы регулировало климат в комнате дома, для начала одной, если пройдет успешно внедрю во все остальные.
В комнате имеем: 1. Батарея с терморегулятором 2. Кондиционер 3. Пароувлажнитель. На данном этапе сделал пока только управление батареей: Вместо термоголовки устанавливается электропривод типа Открыто/Закрыто, нормальное положение открыто, фирмы Watts. Инфу пока вывожу на дисплей 16*2 вмонтированный в крышку распределительной коробки, управление осуществляется тремя кнопками(они пока не подписаны, слева направо: 1.Set, 2."+", 3."-" при нажатии сменяются 3 режима: 1. Отображаются действительные показания температуры и влажности: 2. установка требуемой температуры: 3. установка требуемой влажности: При установке нужной температуры, Ардуинка сравнивает ее с текущей, если она находится в диапазоне +/-2 градуса, то ничего не происходит, если температура поднимется( а она будет подниматься, т.к. у нас нормальное положение клапана открыто) на 2 градуса выше установленной, на пин 13(пока поставил его для проверки светодиодом) подается HIGH, пин 13 подключен к реле, через реле подключен электропривод, который перекрывает батарею, если же температура падает на 2 градуса от заданной, на пин 13 подается LOW, реле размыкается, клапан открывает батарею и теплоноситель опять начинает ее нагревать. Конечно дисплей и кнопки выглядят по-колхозному, но это тестовый вариант, для того чтобы понять нужно оно или нет и будет ли оно стабильно работать, потом планирую сделать на базе сенсорного дисплея 3,2 дюйма: С пароувлажнителем проблем не будет, подключу его тоже через реле на включение/выключение. Вот с кондером есть проблемы, пока разбираюсь в кодах пульта, основная проблема в том, что пульт похоже выдает все параметры: скорость, вращения, температуру, направление жалюзи и пр. вообщем все что можно на нем установить. Если кто-то имеет информацию по тому как с ардуинки рулить кондером буду очень благодарен. и еще, датчиков температуры в комнате будет 2, если кто знает где их лучше установить, просьба подсказать, пока планирую в двух более-менее нейтральных углах воткнуть. Принцип работы: среднее значение между ними. Вообще в планах к этой же дуинке подключить беспроводной либо блютуз приемник/передатчик, для сбора всей инфы в центре, и к нейже реле, для возможности централизованно выключать/включать освещение и реализовать эффект присутствия на момент длительного отсутствия. Вот скетч устройства на данном этапе, конструктивная критика и предложения приветствуются Код:
#include "DHT.h" #include <LiquidCrystal.h> #define DHTPIN 10 // пин подключения датчика //Установка типа вашего датчика #define DHTTYPE DHT11 // DHT 11 //#define DHTTYPE DHT22 // DHT 22 (AM2302) //#define DHTTYPE DHT21 // DHT 21 (AM2301) LiquidCrystal lcd(12, 11, 2, 3, 4, 5); int ledPin = 13;//выбор пина к которому подключено реле с термоголовкой int ButSetPin = A0;//Кнопка Set к пину А0 int ButMinPin = A1;//Кнопка "-" к пину А1 int ButMaxPin = A2;//Кнопка "+" к пину А2 DHT dht(DHTPIN, DHTTYPE); int h=45;//Задаем начальный параметр влажности int t=22;//Начальный параметр влажности int regim = 0;//Стартовый режим отображения дисплея //Вспомогательные флаги для кнопок int flag = 0; int flagmin = 0; int flagr = 0; void setup() { lcd.begin(16, 2); dht.begin(); pinMode(ledPin, OUTPUT); } void loop() { //Читаем температуру и влажность с датчика float humi = dht.readHumidity(); float temp = dht.readTemperature(); //Переключаем режимы отображения дисплея и ввода данных if(digitalRead(ButSetPin) == HIGH && flagr == 0) { regim ++; flagr = 1; if(regim > 2) // Если номер режима превышает требуемого { // то отсчет начинается с нуля regim = 0; } } if(digitalRead(ButSetPin) == LOW && flagr == 1) { flagr = 0; } //==================В режиме 0 выводим действительные данные температуры и влажности if(regim == 0) { lcd.setCursor(0,0); lcd.print("HUMI:"); lcd.print(humi); lcd.print(" %"); lcd.setCursor(0,1); lcd.print("TEMP:"); lcd.print(temp); lcd.print(" C"); } //======================В режиме 1 задаем нужную влажность if(regim == 1) { if(digitalRead(ButMaxPin) == HIGH && flag ==0) { h++; flag =1; } if(digitalRead(ButMaxPin) == LOW && flag == 1) { flag = 0; } if(digitalRead(ButMinPin) == HIGH && flagmin==0) { h--; flagmin = 1; } if(digitalRead(ButMinPin) == LOW && flagmin == 1) { flagmin = 0; } lcd.setCursor(0,0); lcd.print("Set HUMI: "); lcd.setCursor(0,1); lcd.print("HUMI: "); lcd.print(h); lcd.print(" % "); } //==============================В режиме 2 выставляем нужную температуру if(regim == 2) { if(digitalRead(ButMaxPin) == HIGH) { t++; } if(digitalRead(ButMinPin) == HIGH) { t--; } lcd.setCursor(0,0); lcd.print("Set TEMP: "); lcd.setCursor(0,1); lcd.print("TEMP: "); lcd.print(t); lcd.print(" C "); } if(t>temp-1.5) { digitalWrite(ledPin, HIGH); } else digitalWrite(ledPin, LOW); // Если данные с датчика не верные, пишем ошибку if (isnan(t) || isnan(h)) { Serial.println("Failed to read from DHT"); } } Последний раз редактировалось dimasinnet; 12.11.2013 в 21:23. |
13.11.2013, 17:53 | #2 |
Member
|
Народ, а кто-нибудь может встречал термоголовки с сервоприводом по доступной цене?
Данную систему хочу также на теплый водяной пол поставить, там 8 контуров у меня, я видел в интернете головки с сервой, но они стоили около 3500 руб каждая, накладно будет на все батареи и теплый пол такие ставить, а вариант вкл/откл мне не очень нравится, сдается мне что там в реальных условиях постоянно дергаться все будет то вкл то откл, частоту конечно замерять надо. |
09.10.2014, 13:24 | #3 |
Senior Member
Регистрация: 05.10.2014
Сообщений: 190
Вес репутации: 0 |
Re: Автоклимат в комнате на Ардуино
Подниму темку, у самого на днях такая же головка на радиатор поставлена, только китайская. Управление только не с ардуины а прикупил термостат для теплых полов, дак вот вывод мне не понравилось по следующим причинам.
Головка полностью закрывает радиатор то есть она не способна удержать температуру одну и туже. Термостат выставлен на 23.5г вкл/выкл разнице 0.5г то есть если температура падает до меньше 23г радиатор включается, если поднимается выше 24г то выключается. Итого мы имеем плавающею температуры, но ладно бы она плавала на 1г в реальности это больше т.к поток в радиатор полностью перекрывается и для дальнейшего нагрева ему нужно время и температура падает примерно до 22.5 так же и с нагревом радиатор начинает жарить и температура поднимается выше 24г, то есть в реальности имеем температуру в комнате от 22.5 до 24.5 что вызывает дискомфорт то чувствуешь прохладу то жару. За комплект головка+термостат с расписанием отвалил 1500р где то и получил такую фигню на выходе. Механическая термоголовка за 500р и то справлялась намного лучше, она не перекрывает полностью поток а просто уменьшает его, но имеет свой недостаток то что висит около радиатора. |
09.10.2014, 13:47 | #4 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 |
Re: Автоклимат в комнате на Ардуино
Можно перекрывать поток определенными расчетными промежутками
Открыли на хх сек, проверяем через хх сек. |
09.10.2014, 22:51 | #5 |
Senior Member
Регистрация: 05.10.2014
Сообщений: 190
Вес репутации: 0 |
Re: Автоклимат в комнате на Ардуино
А смысл по времени это делать? то же самое что по температуре. Просто смысл этой головки она полностью открывает поток или полностью закрывает из за этого в комнате будет гулять температура. Вот если бы такая головка могла регулировать поток больше/меньше то да можно было бы добиться одной температуры.
|
09.10.2014, 23:26 | #6 |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 |
Re: Автоклимат в комнате на Ардуино
Например, для того что бы была температура 23гр. нужно открыть клапан на 5 сек.
А если открыть и ждать пока радиатор прогреется то пройдет 20 сек. Учитывая инертность датчика и инертность радиатора, то температура батареи поднимется выше заданных значений Если коротко, то таким образом мы уменьшаем обьем входящей горячей воды в радиатор и не даем ему перегреться |
23.12.2014, 06:33 | #7 | |
Senior Member
Регистрация: 21.12.2014
Сообщений: 164
Вес репутации: 0 |
Re: Автоклимат в комнате на Ардуино
Цитата:
Последний раз редактировалось SergeS; 23.12.2014 в 06:41. |
|
24.12.2014, 04:11 | #8 | |
Senior Member
Регистрация: 21.12.2014
Сообщений: 164
Вес репутации: 0 |
Re: Автоклимат в комнате на Ардуино
Цитата:
Рекомендую всем, кого автоматическое регулирование чего угодно интересует. Ссылка: http://roboforum.ru/wiki/Перевод_ста...�итмах%22 |
|
04.02.2015, 11:16 | #9 | |
Senior Member
Регистрация: 12.10.2012
Адрес: Moscow-Voronezg
Сообщений: 272
Вес репутации: 0 |
Re: Автоклимат в комнате на Ардуино
Цитата:
- Парафиновая головка абсолютно бесшумна (представьте как ночью серва будет крутится в купе с резонирующей батареей) и очень долговечна, состоит из нагревающей парафин спиральки и гармошкообразной камеры с парафином, при нагреве парафин расширяется и толкает шток клапана - Достаточно использовать ПИ регулятор, что гораздо проще. - Такая схема в разы дешевле, и в полной мере решает поставленные задачи. Серву же ставят в купе с ПИД регулятором и на контура, контур, к примеру, может обслуживать сразу несколько помещений, или одно большое помщение. Как правило, в таких случаях всё оборудование размещается в подвалах, и шум никому не докучает. P.S. В принципе можно попробовать поиграться с парафиновой головкой, подавая не 220, а, к примеру 170 вольт, и посмотреть насколько расширится парафин и на сколько откроется клапан. Но это будет однозначно не стабильная система. Последний раз редактировалось Sirocco; 04.02.2015 в 11:19. |
|
04.02.2015, 11:39 | #10 | |
Administrator
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823 |
Re: Автоклимат в комнате на Ардуино
Цитата:
Теплые полы тоже работают по принципу вкл/выкл |
|
Здесь присутствуют: 5 (пользователей: 0 , гостей: 5) | |
|
|