Управление отоплением в загородном доме (GSM)

Тема в разделе "Глядите, что я сделал", создана пользователем Вячеслав, 6 дек 2012.

  1. scort

    scort Нерд

    Вы в код смотрели?
    Определитесь какой юнит соответствует теплице, похоже что первый.

    Дальше явно перевернуть знаки больше меньше, вот тут для юнит2, например:

    if (unit2status==true){
    if (t2 < autoTemp-delta){
    digitalWrite(unit2, HIGH); us2=0;}

    else if (t2 > autoTemp+delta)
    {digitalWrite(unit2, LOW);

    Что по русски если какой-то там статус активен и температура с датчика 2 меньше автотемпературы за минусом дельты тогда включить реле.
    Если больше то выключить реле.
    us2=0 какой-то флаг реле2, нужно мотреть где он используется.
     
  2. Alba

    Alba Нерд

    Смотрел,эх, и так и всяк менял.Фиаско одно, вот! Готов оплатить работу.
     
  3. Alba

    Alba Нерд


    Вот все то что нужно было поменять,ты прав был.Горит с меня;)

    if (unit1status==true){
    if (t1 > autoTemp+delta){
    digitalWrite(unit1, HIGH); us1=0;}

    else if (t1 < autoTemp-delta)
    {digitalWrite(unit1, LOW); us1=1;}
    }
     
  4. Alba

    Alba Нерд


    Баба Вера у меня не компилируется вот эта строка
    statusHome = String("Valdai")+ String(";")+int(u1st)+ String(";")+float(t1)+ String(";")+float(h1)+ String(";")+int(u2st)+ String(";")+float(t2)+ String(";")+float(h2)+ String(";")+int(u3st)+ String(";")+float(t3)+ String(";")+float(h3)+ String(";")+int(u4st)+ String(";")+float(t4)+ String(";")+float(h4)+ String(";")+int(unit5status)+ String(";")+int(isPerimetr)+ String(";")+int(autoTemp)+ String(";")+ String(bal)+ String(";")+float(t5)+ String(";")+int(svetsost);
    delay(3000);//дал задержку для успевания ловли счета
    sendTextMessage(statusHome);
     
  5. Потому что надо все инт которые связаны с температурой и влажностью поменять на флоат раньше
     
  6. Alba

    Alba Нерд

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

    Вложения:

  8. Alba

    Alba Нерд

    Спасибо за скетч но баланс не кажет,куда смотреть ответ такой на запрос


    +CMT: "+7996*******","","18/05/23,21:26:21+12"
    Zapros
    Unit1status=0
    Unit2status=0
    Unit3status=0
    Unit4status=0
    Temperature street=nan

    ATD*100#

    OK

    +CUSD: 0,"041204300448002004310430043B0430043


    +CMGS: 28

    OK
     

    Вложения:

  9. Alba

    Alba Нерд

    На МТС работает. Тогда стояла Yota
     
  10. Ztepan

    Ztepan Нуб

    Всем привет, апну тему.
    Я тоже собрал контроллер на ардуинке, только для управления горелкой на отработанном масле.
    Все работает, но столкнулся с проблемой инерционности ситемы, т.е. пока теплоноситель и воздух холодный система включается в нагрев, теплоноситель греется, а воздух отстает. Далее когда воздух достигает нужной температуры, теплоноситель уже перегрет. Нагрев прекращаем, но температура воздуха продолжает расти, а теплоноситель уже остывает. И вот когда воздух остывает до температуры запуска нагрева теплоноситель уже конкретно остыл. И так по кругу прыгает температура, что совсем не хорошо, как для человека, так и системы отопления и дома в целом.
    Кто нибудь реализовывал подбор температуры теплоносителя контроллером?
    Нашел статью о пид-регулыторе http://we.easyelectronics.ru/Theory/pid-regulyatory--dlya-chaynikov-praktikov.html , но не пойму как в коде реализовать.
     
  11. yul-i-an

    yul-i-an Гик

    Вот мой ПИД
    Код (C++):

    //расчет мощности по ПИД закону регулирования
        //Параметры регулятора
        #define kP 6//коэффициент пропорциональности
        #define p_min 0.0//минимум П составляющей - не < 0
        #define p_max 100.0//максимум П составляющей - не > 100
        #define kI 0.100//коэффициент интегрирования
        #define i_min 0.0//минимум И составляющей
        #define i_max 30.0//максимум И составляющей
        #define kd 0//коэффициент диференциирования
        #define d_ctl 7.0//зона пропорциональности ust-d_ctl
        #define out_min 0//минимальный выходной %
        #define out_max 100//максимальный выходной %
       
        //Расчет управляющего воздействия
        //возвращает необходимое воздействие в %
        uint8_t PIDctl(float temp, float ust) {
            uint8_t out = 0;
            static float i = 0;
            static float ed = 0;
            float e, p;
            float d;
            e = (ust - temp); //ошибка регулирования
            p = (temp < ust - d_ctl) ? p_max : (temp > ust) ? p_min : (kP * e); //П составляющая
            i = (i < i_min) ? i_min : (i > i_max) ? i_max : i + (kI * e); //И составляющая
            d = kd * (e - ed); //Д составляющая
            ed = e;
            out = (p + i + d < out_min) ? out_min : (p + i + d > out_max) ? out_max : p + i + d;
        return out;
        }
     
    Но Вам предется придумать как будет осуществлено управление производительностью.
     
    Ztepan нравится это.
  12. Ztepan

    Ztepan Нуб

    Вот спасибо! Покурю с производительностью.
     
  13. Ztepan

    Ztepan Нуб

    yul-i-an, еще помощь нужна.
    Контроллер может зажигать и тушить горелку отслеживая температуру теплоносителя или воздуха.
    Аварийные значения задаются.
    Необходимая температура воздуха тоже задается.
    Если я правильно понял, то используя ваш код на выходе получаем процент на который нужно увеличить или уменьшить температуру теплоносителя?
     
  14. Оперировать температурой в процентах это что-то новенькое. ПИД обычно регулирует мощность.
     
    parovoZZ и Ztepan нравится это.
  15. Ztepan

    Ztepan Нуб

    Ну регулировать уровень пламени в этой горелке проблематично, а зажечь или потушить реально.
    Поэтому и нужен подбор оптимальной температуры.
     
  16. Ну и подбирайте. С чего вы вообще решили, что вам нужен пид. Сделайте таблицу, и все дела.
     
  17. Ztepan

    Ztepan Нуб

    Я уже пытался осуществить подбор.
    Если 2 раза остановили по темп-ре воздуха то снижаем темп-ру воды, 3 раза остановили по воде то добавили пару градусов к темп-ре воды.
    Это бы наверное работало, но тут вмешивается перепад температуры на на улице. И получается утром тепло, даже жарковато, а вечером прохладненько, не успевает система, ведь время от запуска горелки до первой остановки может составлять более часа.
    Вот и ищу как заставить держать комфортную температуру в доме.
     
  18. Ну наверно придется поставить градусник на улице, раз температура на улице влияет.
     
  19. Ztepan

    Ztepan Нуб

    Предположим поставили датчик на улице, но тут при равной температуре в солнечный безветренный день и при ночном ветре теплосъем с дома очень разный.
    Я у же второй год голову ломаю.
    Может есть гений решивший проблему?
     
  20. Если больше теплосъем, то меньше разница температуры внутри-снаружи. Достаточная таблица это покроет.