1 2 3 4 5 6 7 8 9 10 10/10 9,80оценок: 15

Автоматика управления ТТ котлами своими руками

Тема в разделе "Котлы, горелки, котельное об-е своими руками", создана пользователем Senkiivan, 28.03.14.

Метки:
  1. V757V
    Регистрация:
    23.11.11
    Сообщения:
    1.683
    Благодарности:
    633

    V757V

    Живу здесь

    V757V

    Живу здесь

    Регистрация:
    23.11.11
    Сообщения:
    1.683
    Благодарности:
    633
    Адрес:
    Москва
    Позиция - имеется ввиду передача значения pos
    Код:
    pos=.(.......); // вычисление позиции по ПИД
    .....
    if (OverT_flag)
    {
    myservo.write(90*);// прикрыли по перегреву (*- или 85 или еще сколько)
    }
    else if (UnderT_flag)
    {
    myservo.write(0*);// открыли пока на разгорится (*- на сколько надо) 
    }
    else
    {
    myservo.write(pos);// угол вычисленный из ПИДа
    }
    
     
  2. Виктрычч
    Регистрация:
    05.06.17
    Сообщения:
    2.387
    Благодарности:
    1.327

    Виктрычч

    Живу здесь

    Виктрычч

    Живу здесь

    Регистрация:
    05.06.17
    Сообщения:
    2.387
    Благодарности:
    1.327
    Понятно. Но мне кажется, что при допустим перегреве дымовых нужно не просто прихлопнуть заслонку, а временно перейти на совместное управление. И термостатом помещения и дымовых. В моём варианте идёт прямое поддержание комфорта. Но первично полное сгорание. А перегрев можно скомпенсировать проветриванием. По любому при плюсовых за бортом это правильнее, чем совсем душить топку и расхлебывать последствия. Потому и вписал всё датчики в одну упряжку. Но с с разными коэффициентами и моментом пристегивания. Несколько своеобразная концепция. В перспективе и датчик за бортом.
    Кроме того релейное открытие заслонки может вызвать детонацию в доугольной фазе. И наоборот. Прихлопывание может спровоцировать нарост графита на участок трубы подачи ПВ. Некоторые тонкости сей конструкции. Только плавное изменение любого режима. Экология ети её. Установлена то можно сказать в спальне. И это будет задано в общем блоке.
     
    Последнее редактирование: 26.11.21
  3. V757V
    Регистрация:
    23.11.11
    Сообщения:
    1.683
    Благодарности:
    633

    V757V

    Живу здесь

    V757V

    Живу здесь

    Регистрация:
    23.11.11
    Сообщения:
    1.683
    Благодарности:
    633
    Адрес:
    Москва
    Тогда я бы так написал
    Код:
    pos=.(.......); // вычисление позиции по ПИД
    .....
    if (OverT_flag)
    {
    pos-=XX; // вычисляется там же где  флаг перегрева
    }
    else (UnderT_flag)
    {
    pos=YY;
    }
    myservo.write(pos);
    
    
     
  4. Виктрычч
    Регистрация:
    05.06.17
    Сообщения:
    2.387
    Благодарности:
    1.327

    Виктрычч

    Живу здесь

    Виктрычч

    Живу здесь

    Регистрация:
    05.06.17
    Сообщения:
    2.387
    Благодарности:
    1.327
    Пока недопонимаю действия новых терминов, но чувствую что это то что надо. Пошёл листать учебник. Мне Петин попался. Пока справляется. Может ещё чего посоветуете?
     
  5. V757V
    Регистрация:
    23.11.11
    Сообщения:
    1.683
    Благодарности:
    633

    V757V

    Живу здесь

    V757V

    Живу здесь

    Регистрация:
    23.11.11
    Сообщения:
    1.683
    Благодарности:
    633
    Адрес:
    Москва
    это просто унарная форма записи, в привычном написании это будет коррекция
    pos=pos-XX; Только тут + должен быть, при перегреве надо прикрывать.
    Можно писать, как у вас в одном выражении коррекцию делать, но еще раз повторюсь, когда программа разрастется, воспринимать и модифицировать будет сложнее.
    Я сейчас даже и не знаю, какие учебники.
     
  6. Виктрычч
    Регистрация:
    05.06.17
    Сообщения:
    2.387
    Благодарности:
    1.327

    Виктрычч

    Живу здесь

    Виктрычч

    Живу здесь

    Регистрация:
    05.06.17
    Сообщения:
    2.387
    Благодарности:
    1.327
    Добрый вечер. По крайней мере на даче уже давно темно. Наконец то освободился, вкрячил серву, прошил Нану. Заслонку не обнулил, поставил на дурака. Т. е. этот момент нужно добавить. Типа проверка механизмов при включении. Снова работает. Даже угадал направление. Но заслонка немного подергивается. Чуток пролетает позицию и возвращается.
    Уставка 25. На термометре 24,7. Серва приоткрывается. Температура дымовых 85. Будем наблю
     

    Вложения:

    • IMG_20211127_181046.jpg
    • IMG_20211127_180805.jpg
  7. V757V
    Регистрация:
    23.11.11
    Сообщения:
    1.683
    Благодарности:
    633

    V757V

    Живу здесь

    V757V

    Живу здесь

    Регистрация:
    23.11.11
    Сообщения:
    1.683
    Благодарности:
    633
    Адрес:
    Москва
    Если есть колебания заслонкт относительно какой то точки, то это перерегулирование. Тогда надо уменьшать коэффициент пропорциональности. И нужно добавлять интегральную компоненту.
     
  8. Виктрычч
    Регистрация:
    05.06.17
    Сообщения:
    2.387
    Благодарности:
    1.327

    Виктрычч

    Живу здесь

    Виктрычч

    Живу здесь

    Регистрация:
    05.06.17
    Сообщения:
    2.387
    Благодарности:
    1.327
    Похоже шнурок от зарядки древнего телефона не держит. Так как примаргтвает всё. Ну а так то можно задержку на серву сделать. Дёргается два раза в секунду по опросу датчика при инерции печи часа в два.
    А так то пока расчёт на то, что регулирует у печки у стенки 25. В центре 24 и не шелохнется. Это опыт из прошлой жизни. 10 лет КИПу отдал. Посмотрим, как ночь пройдёт. Пока отлично. Только за окном пока -3. А конечки я ещё не подключил. Нужно определить параметры.
    Так что респект.
     
  9. Виктрычч
    Регистрация:
    05.06.17
    Сообщения:
    2.387
    Благодарности:
    1.327

    Виктрычч

    Живу здесь

    Виктрычч

    Живу здесь

    Регистрация:
    05.06.17
    Сообщения:
    2.387
    Благодарности:
    1.327
    На данный момент дымовые упали до 58. В 55 попробую добавить.
     
  10. Виктрычч
    Регистрация:
    05.06.17
    Сообщения:
    2.387
    Благодарности:
    1.327

    Виктрычч

    Живу здесь

    Виктрычч

    Живу здесь

    Регистрация:
    05.06.17
    Сообщения:
    2.387
    Благодарности:
    1.327
    К утру выскочил косячек программы. Похоже при шагании сервы к нулю она его перешагиват и прыгает устойчиво в 180. Т. е. Если при задании 28 греть термометр, то примерно до 30,5 серва топает к нулю и дальше прыгает в 180. Это подтверждает и монитор.
    Фрагмент
    Err_T=Set_T-sensor2.getTemp();
    pos=(byte)P_gain*Err_T+45.); / будет около 45 гр +-
    pos = constrain (pos, 0, 180);
    Serial. print("pos=");
    Serial. println (pos);
    myservo. write (pos);
    Serial. println (pos);
    byte переполняется?
    Пока попробовать негде.
    Ну и отстаёт температура помещения без интегральной градуса на 2. Пока приподнял задание.
     
    Последнее редактирование: 28.11.21
  11. V757V
    Регистрация:
    23.11.11
    Сообщения:
    1.683
    Благодарности:
    633

    V757V

    Живу здесь

    V757V

    Живу здесь

    Регистрация:
    23.11.11
    Сообщения:
    1.683
    Благодарности:
    633
    Адрес:
    Москва
    А как я написал? Разницу видите?
    Код:
    Err_T=Set_T-sensor2.getTemp();
    pos=(int)(P_gain*Err_T+45.); // будет около 45 гр +-
    pos = constrain (pos, 0, 90);
    Serial. print (pos);
    myservo. write (pos);
    
    Байтовая переменная не может быть отрицательной величиной.
     
  12. Виктрычч
    Регистрация:
    05.06.17
    Сообщения:
    2.387
    Благодарности:
    1.327

    Виктрычч

    Живу здесь

    Виктрычч

    Живу здесь

    Регистрация:
    05.06.17
    Сообщения:
    2.387
    Благодарности:
    1.327
    Угу, я уже понял. Ещё момент. Строку записи в порт сервы перенёс в блок милс, который отправляет раз в минуту данные на монитор. Ну что бы серва не вертелась, как ужаленая на каждый чих. Не сработало. Есть какие то тонкости, или я чего-то не так перенёс? Т. е. вычисление после каждого опроса датчика по циклу, а отправка на серву последнего раз в минуту.
     
  13. V757V
    Регистрация:
    23.11.11
    Сообщения:
    1.683
    Благодарности:
    633

    V757V

    Живу здесь

    V757V

    Живу здесь

    Регистрация:
    23.11.11
    Сообщения:
    1.683
    Благодарности:
    633
    Адрес:
    Москва
    Скорее второе, что-то не так перенесли.
    Но, в принципе, так делать не нужно, а если будет еще интегральная часть и дифференциальная, то и нельзя. Потому что, время дискретизации вычисления - (когда dT не участвует явно в вычислениях) есть время дифференцирования и интегрирования. Вычисление сигнала ПИД регулятора и его отработка должны идти с одним и тем же временем. Т. е. переносить нужно не только отправку значения в серворегулятор, но само вычисления этого значения. И если это время (оправки/вычисления) меняется, будет меняться и поведение системы.
     
  14. Виктрычч
    Регистрация:
    05.06.17
    Сообщения:
    2.387
    Благодарности:
    1.327

    Виктрычч

    Живу здесь

    Виктрычч

    Живу здесь

    Регистрация:
    05.06.17
    Сообщения:
    2.387
    Благодарности:
    1.327
    В моём случае какое dT выставить допустим при периоде вычислений минута и автоколебании системы час?
    Интегральную нужно сохранять при выключении?
     
  15. V757V
    Регистрация:
    23.11.11
    Сообщения:
    1.683
    Благодарности:
    633

    V757V

    Живу здесь

    V757V

    Живу здесь

    Регистрация:
    23.11.11
    Сообщения:
    1.683
    Благодарности:
    633
    Адрес:
    Москва
    Налицо полное непонимание. @Виктрычч, попробуйте своими словами объяснить как вы понимаете работу интегральной компоненты. Только без Гугля, уговор?