Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Климатические системы

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.11.2013, 20:35   #1
dimasinnet
Member
 
Регистрация: 27.08.2013
Адрес: Челябинск
Сообщений: 44
Вес репутации: 0
dimasinnet is an unknown quantity at this point
Отправить сообщение для dimasinnet с помощью Skype™
По умолчанию Автоклимат в комнате на Ардуино

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

В комнате имеем:
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");
  } 
}
Миниатюры
Нажмите на изображение для увеличения
Название: $T2eC16VHJHwFG1tPDczfBRwdHsQ8!!~~60_3.JPG
Просмотров: 9803
Размер:	46.9 Кб
ID:	1273  

Последний раз редактировалось dimasinnet; 12.11.2013 в 21:23.
dimasinnet вне форума   Ответить с цитированием
Старый 13.11.2013, 17:53   #2
dimasinnet
Member
 
Регистрация: 27.08.2013
Адрес: Челябинск
Сообщений: 44
Вес репутации: 0
dimasinnet is an unknown quantity at this point
Отправить сообщение для dimasinnet с помощью Skype™
По умолчанию

Народ, а кто-нибудь может встречал термоголовки с сервоприводом по доступной цене?

Данную систему хочу также на теплый водяной пол поставить, там 8 контуров у меня, я видел в интернете головки с сервой, но они стоили около 3500 руб каждая, накладно будет на все батареи и теплый пол такие ставить, а вариант вкл/откл мне не очень нравится, сдается мне что там в реальных условиях постоянно дергаться все будет то вкл то откл, частоту конечно замерять надо.
dimasinnet вне форума   Ответить с цитированием
Старый 09.10.2014, 13:24   #3
avgaz
Senior Member
 
Регистрация: 05.10.2014
Сообщений: 190
Вес репутации: 0
avgaz is an unknown quantity at this point
По умолчанию Re: Автоклимат в комнате на Ардуино

Подниму темку, у самого на днях такая же головка на радиатор поставлена, только китайская. Управление только не с ардуины а прикупил термостат для теплых полов, дак вот вывод мне не понравилось по следующим причинам.
Головка полностью закрывает радиатор то есть она не способна удержать температуру одну и туже. Термостат выставлен на 23.5г вкл/выкл разнице 0.5г то есть если температура падает до меньше 23г радиатор включается, если поднимается выше 24г то выключается. Итого мы имеем плавающею температуры, но ладно бы она плавала на 1г в реальности это больше т.к поток в радиатор полностью перекрывается и для дальнейшего нагрева ему нужно время и температура падает примерно до 22.5 так же и с нагревом радиатор начинает жарить и температура поднимается выше 24г, то есть в реальности имеем температуру в комнате от 22.5 до 24.5 что вызывает дискомфорт то чувствуешь прохладу то жару.
За комплект головка+термостат с расписанием отвалил 1500р где то и получил такую фигню на выходе. Механическая термоголовка за 500р и то справлялась намного лучше, она не перекрывает полностью поток а просто уменьшает его, но имеет свой недостаток то что висит около радиатора.
avgaz вне форума   Ответить с цитированием
Старый 09.10.2014, 13:47   #4
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Автоклимат в комнате на Ардуино

Можно перекрывать поток определенными расчетными промежутками
Открыли на хх сек, проверяем через хх сек.
Admin вне форума   Ответить с цитированием
Старый 09.10.2014, 22:51   #5
avgaz
Senior Member
 
Регистрация: 05.10.2014
Сообщений: 190
Вес репутации: 0
avgaz is an unknown quantity at this point
По умолчанию Re: Автоклимат в комнате на Ардуино

Цитата:
Сообщение от Admin Посмотреть сообщение
Можно перекрывать поток определенными расчетными промежутками
Открыли на хх сек, проверяем через хх сек.
А смысл по времени это делать? то же самое что по температуре. Просто смысл этой головки она полностью открывает поток или полностью закрывает из за этого в комнате будет гулять температура. Вот если бы такая головка могла регулировать поток больше/меньше то да можно было бы добиться одной температуры.
avgaz вне форума   Ответить с цитированием
Старый 09.10.2014, 23:26   #6
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Автоклимат в комнате на Ардуино

Например, для того что бы была температура 23гр. нужно открыть клапан на 5 сек.
А если открыть и ждать пока радиатор прогреется то пройдет 20 сек. Учитывая инертность датчика и инертность радиатора, то температура батареи поднимется выше заданных значений

Если коротко, то таким образом мы уменьшаем обьем входящей горячей воды в радиатор и не даем ему перегреться
Admin вне форума   Ответить с цитированием
Старый 23.12.2014, 06:33   #7
SergeS
Senior Member
 
Регистрация: 21.12.2014
Сообщений: 164
Вес репутации: 0
SergeS is an unknown quantity at this point
По умолчанию Re: Автоклимат в комнате на Ардуино

Цитата:
Сообщение от avgaz Посмотреть сообщение
Подниму темку, у самого на днях такая же головка на радиатор поставлена, только китайская. Управление только не с ардуины а прикупил термостат для теплых полов, дак вот вывод мне не понравилось по следующим причинам.
Головка полностью закрывает радиатор то есть она не способна удержать температуру одну и туже. Термостат выставлен на 23.5г вкл/выкл разнице 0.5г то есть если температура падает до меньше 23г радиатор включается, если поднимается выше 24г то выключается. Итого мы имеем плавающею температуры, но ладно бы она плавала на 1г в реальности это больше т.к поток в радиатор полностью перекрывается и для дальнейшего нагрева ему нужно время и температура падает примерно до 22.5 так же и с нагревом радиатор начинает жарить и температура поднимается выше 24г, то есть в реальности имеем температуру в комнате от 22.5 до 24.5 что вызывает дискомфорт то чувствуешь прохладу то жару.
За комплект головка+термостат с расписанием отвалил 1500р где то и получил такую фигню на выходе. Механическая термоголовка за 500р и то справлялась намного лучше, она не перекрывает полностью поток а просто уменьшает его, но имеет свой недостаток то что висит около радиатора.
Тут надо смотреть в сторону ПИД-регуляторов, если уж по правильному... В википедии есть статья. В общем случае, упрощенно, - задача имеет множество решений в плоскости "точность регулировки vs скорость регулировки".

Последний раз редактировалось SergeS; 23.12.2014 в 06:41.
SergeS вне форума   Ответить с цитированием
Старый 24.12.2014, 04:11   #8
SergeS
Senior Member
 
Регистрация: 21.12.2014
Сообщений: 164
Вес репутации: 0
SergeS is an unknown quantity at this point
По умолчанию Re: Автоклимат в комнате на Ардуино

Цитата:
Сообщение от SergeS Посмотреть сообщение
Тут надо смотреть в сторону ПИД-регуляторов, если уж по правильному... В википедии есть статья. В общем случае, упрощенно, - задача имеет множество решений в плоскости "точность регулировки vs скорость регулировки".
Кстати, если кого сама статья в википедии отпугнула - в ссылках там же внизу есть хорошая переводная статья про пид-регуляторы, без высшей математики, с графиками и с хорошим пояснением, практически и не сильно заумно, сам вчера на ночь с удовольствием просмотрел ;-)...

Рекомендую всем, кого автоматическое регулирование чего угодно интересует. Ссылка: http://roboforum.ru/wiki/Перевод_ста...�итмах%22
SergeS вне форума   Ответить с цитированием
Старый 04.02.2015, 11:16   #9
Sirocco
Senior Member
 
Регистрация: 12.10.2012
Адрес: Moscow-Voronezg
Сообщений: 272
Вес репутации: 0
Sirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant futureSirocco has a brilliant future
По умолчанию Re: Автоклимат в комнате на Ардуино

Цитата:
Сообщение от dimasinnet Посмотреть сообщение
Народ, а кто-нибудь может встречал термоголовки с сервоприводом по доступной цене?
Сервопривод на радиаторах никогда не используют, если по хорошему. Используют парафиновые головки совместно с ПИ регулятором. ПИ регулятора почти всегда вполне хватает. Плюсы такой системы:
- Парафиновая головка абсолютно бесшумна (представьте как ночью серва будет крутится в купе с резонирующей батареей) и очень долговечна, состоит из нагревающей парафин спиральки и гармошкообразной камеры с парафином, при нагреве парафин расширяется и толкает шток клапана
- Достаточно использовать ПИ регулятор, что гораздо проще.
- Такая схема в разы дешевле, и в полной мере решает поставленные задачи.
Серву же ставят в купе с ПИД регулятором и на контура, контур, к примеру, может обслуживать сразу несколько помещений, или одно большое помщение. Как правило, в таких случаях всё оборудование размещается в подвалах, и шум никому не докучает.
P.S. В принципе можно попробовать поиграться с парафиновой головкой, подавая не 220, а, к примеру 170 вольт, и посмотреть насколько расширится парафин и на сколько откроется клапан. Но это будет однозначно не стабильная система.

Последний раз редактировалось Sirocco; 04.02.2015 в 11:19.
Sirocco вне форума   Ответить с цитированием
Старый 04.02.2015, 11:39   #10
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию Re: Автоклимат в комнате на Ардуино

Цитата:
В принципе можно попробовать поиграться с парафиновой головкой, подавая не 220, а, к примеру 170 вольт, и посмотреть насколько расширится парафин и на сколько откроется клапан. Но это будет однозначно не стабильная система.
вкл/выкл достаточно для того что бы регулировать температуру в помещении.
Теплые полы тоже работают по принципу вкл/выкл
Admin вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 5 (пользователей: 0 , гостей: 5)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 02:06. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика