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

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

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

Метки:
  1. Senkiivan
    Регистрация:
    23.08.12
    Сообщения:
    2.634
    Благодарности:
    1.502

    Senkiivan

    электронщик

    Senkiivan

    электронщик

    Регистрация:
    23.08.12
    Сообщения:
    2.634
    Благодарности:
    1.502
    Адрес:
    Боровичи
    Контакты термостата замкнуты. Температура теплоносителя равна заданной уставке (Задаётся пользователем или погодозависимым блоком)
    Контакты термостата разомкнуты. Температура теплоносителя равна первоночально заданой уставке, которую каждые 2 минуты понижает на 1 градус.
    Как только добираемся до значения ниже минимального, становимся на минимальном значении.
    Контакт термостата замыкается возращаемя на заданую температуру и так в цикле.
    Регулятор по значению заданой температуры управляет вентилятором.
     
  2. Senkiivan
    Регистрация:
    23.08.12
    Сообщения:
    2.634
    Благодарности:
    1.502

    Senkiivan

    электронщик

    Senkiivan

    электронщик

    Регистрация:
    23.08.12
    Сообщения:
    2.634
    Благодарности:
    1.502
    Адрес:
    Боровичи
    В самом начале темы приводил схему на 2ТРМ1. посмотрите внимательно.
    Можно тоже самое на разных комплектующих.
     
  3. Senkiivan
    Регистрация:
    23.08.12
    Сообщения:
    2.634
    Благодарности:
    1.502

    Senkiivan

    электронщик

    Senkiivan

    электронщик

    Регистрация:
    23.08.12
    Сообщения:
    2.634
    Благодарности:
    1.502
    Адрес:
    Боровичи
    Заложил корридор по дымовым в работу вентилятора. Посмотрим что будет.
     
  4. Оксфорд
    Регистрация:
    12.04.12
    Сообщения:
    9.356
    Благодарности:
    1.859

    Оксфорд

    Живу здесь

    Оксфорд

    Живу здесь

    Регистрация:
    12.04.12
    Сообщения:
    9.356
    Благодарности:
    1.859
    Адрес:
    Уфа
    Электронщики. Подскажите. Замер температуры по двум каналам. Тг на операционном усилителе. Тт -термистором. Питание обоих каналов с +5V аурдины. Получается канал Тг немного следит за каналом Тт. Хотелось бы уменьшить влияние. Темистор 20 кОм. Взять поменьше?
     
  5. Senkiivan
    Регистрация:
    23.08.12
    Сообщения:
    2.634
    Благодарности:
    1.502

    Senkiivan

    электронщик

    Senkiivan

    электронщик

    Регистрация:
    23.08.12
    Сообщения:
    2.634
    Благодарности:
    1.502
    Адрес:
    Боровичи
    Взять сторонее стабилизированное. При изменение величины 5В на термисторе будут плыть показания.
     
  6. Оксфорд
    Регистрация:
    12.04.12
    Сообщения:
    9.356
    Благодарности:
    1.859

    Оксфорд

    Живу здесь

    Оксфорд

    Живу здесь

    Регистрация:
    12.04.12
    Сообщения:
    9.356
    Благодарности:
    1.859
    Адрес:
    Уфа
    Брал стороннее через LM7805 на Тг. Тоже самое. А термистор все нормально не чувствует Тг. Мистика какая-то.
     
  7. Senkiivan
    Регистрация:
    23.08.12
    Сообщения:
    2.634
    Благодарности:
    1.502

    Senkiivan

    электронщик

    Senkiivan

    электронщик

    Регистрация:
    23.08.12
    Сообщения:
    2.634
    Благодарности:
    1.502
    Адрес:
    Боровичи
    Надо схему. Здесь мистики нет. ;)
     
  8. Senkiivan
    Регистрация:
    23.08.12
    Сообщения:
    2.634
    Благодарности:
    1.502

    Senkiivan

    электронщик

    Senkiivan

    электронщик

    Регистрация:
    23.08.12
    Сообщения:
    2.634
    Благодарности:
    1.502
    Адрес:
    Боровичи
    Делаю оформление проекта.
    Вот костяк. :):):)
    Плюс принципиальная схема.
     

    Вложения:

  9. pasko2680
    Регистрация:
    10.01.15
    Сообщения:
    9
    Благодарности:
    1

    pasko2680

    Участник

    pasko2680

    Участник

    Регистрация:
    10.01.15
    Сообщения:
    9
    Благодарности:
    1
    Приветствую Вас:hello:. Мне очень нравится Ваша разработка. Не поделитесь кодом с использованием даласовских датчиков температуры?
    За наглость извините:|:
    За терпение Спасибо:hndshk:
     
  10. Senkiivan
    Регистрация:
    23.08.12
    Сообщения:
    2.634
    Благодарности:
    1.502

    Senkiivan

    электронщик

    Senkiivan

    электронщик

    Регистрация:
    23.08.12
    Сообщения:
    2.634
    Благодарности:
    1.502
    Адрес:
    Боровичи
    Как Успехи.
    По далласам взято из библиотеки выложу вечером.
     
  11. Atm67
    Регистрация:
    26.11.12
    Сообщения:
    27
    Благодарности:
    7

    Atm67

    Участник

    Atm67

    Участник

    Регистрация:
    26.11.12
    Сообщения:
    27
    Благодарности:
    7
    Адрес:
    Набережные Челны
    Senkiivan Благодарю за "костяк"!
    По последней схеме Вы использовали в управлении вентилятором симистор, он оказался лучше чем полевик? Какой вариант ШИМ был выбран, "отгрызание" полупериода или пропускании синусоиды?
    По питанию транс наверное нужен на вольт восемь, защититься от проседании в сети.
    Долее по ПИД, так-как котел является относительно инертными ему не надо мгновенного реагирования, целесообразно ли обойтись без "Д" составляющей. То-есть регулировать по ПИ закону?

     
    Последнее редактирование: 03.02.15
  12. Senkiivan
    Регистрация:
    23.08.12
    Сообщения:
    2.634
    Благодарности:
    1.502

    Senkiivan

    электронщик

    Senkiivan

    электронщик

    Регистрация:
    23.08.12
    Сообщения:
    2.634
    Благодарности:
    1.502
    Адрес:
    Боровичи
    Резанье синусоиды.
    При пропуске вентилятор работает как лошадка цокает тык-дык, тык-дык:)]:)]:)]

    Меньше тепловыделение на симиристоре чем на полевике. Поэтому остановился на симисторе.
    Плюс схема унифицировалась.

    Регулятор настраивается коэфицентами делаете Д=0, и получаете ПИ, и так далее
    можете сделать П, ПИ, ПД, ПИД - какой вам больше подайдет.
    У меня пока ПИД, Д составляющая чисто символическая.

    Выход регулятора привязан к дымовым и дельте Т под/ Т обр.

    Сделано управления 2 вентиляторами, второй подстраивается к первому в процентах.
    Реализация
    Вентилятор ПВ, Вентилятор ВВ.
    Вентилятор ПВ, Вентилятор ПВ 2 канала.
    Вентилятор, Дымосос.
     
  13. Atm67
    Регистрация:
    26.11.12
    Сообщения:
    27
    Благодарности:
    7

    Atm67

    Участник

    Atm67

    Участник

    Регистрация:
    26.11.12
    Сообщения:
    27
    Благодарности:
    7
    Адрес:
    Набережные Челны
    Мне подходит третий вариант: Вентилятор, Дымосос. Если я правильно понял, вентилятор это насос подмеса? Как подстраивается второй к первому, в большую сторону или меньшую и, если так можно выразиться, величина шага в процентах или использовалась функция "map"?
    Далее отказ от сервы заслонки. Значит заслонку, если она есть, предварительно "механически" настраиваем, фиксируем и далее котел работает без регулировки заслонкой?
     
  14. Senkiivan
    Регистрация:
    23.08.12
    Сообщения:
    2.634
    Благодарности:
    1.502

    Senkiivan

    электронщик

    Senkiivan

    электронщик

    Регистрация:
    23.08.12
    Сообщения:
    2.634
    Благодарности:
    1.502
    Адрес:
    Боровичи
    Ветилятор1- подключаем дымосос
    Вентилятор2- подключаем вентилятор.
    Выход вентилятор1 основной на него завязан ПИД со всеми обратными связями.
    Выход вентилятор2 настраивается на процент от выхода вентилятор1.
    100%- работают синхроно, 50%- 1/2 от выхода вентилятор1. дискретность 1%
    Можно подкорректировать в разную сторону.

    Задаётся программно или можно лямбду добавить и по ней управлять вентилятор2.

    Заслонка сама по себе. Работает автономно, использует тот же самый ПИД что и ветилятор1 иолько изменены обратные связи по температуре дымовых газов.
    Можно ставить сервопривод, можно не использовать- по желанию.

    Получился универсальный комплект с возможностью широкой адаптации к разному оборудованию.
    Это и закладывал в самом начале - гибкость системы управления.
     
  15. Senkiivan
    Регистрация:
    23.08.12
    Сообщения:
    2.634
    Благодарности:
    1.502

    Senkiivan

    электронщик

    Senkiivan

    электронщик

    Регистрация:
    23.08.12
    Сообщения:
    2.634
    Благодарности:
    1.502
    Адрес:
    Боровичи
    Работа с датчиками далас в программе

    #include <OneWire.h>
    #include <DallasTemperature.h>
    / опрос цифровых датчиков температуры
    #define ONE_WIRE_BUS 9 /шина опроса датчиков на пин9
    #define RES_TEMP 12 / разрешение (точность) темп. датчика в битах

    OneWire oneWire (ONE_WIRE_BUS);
    DallasTemperature ds(&oneWire);

    / адреса датчиков температуры забивать вручную
    DeviceAddress sensor1 = {0x28, 0x8C, 0x4E, 0xBE, 0x05, 0x0, 0x0, 0x73};
    DeviceAddress sensor2 = {0x10, 0x95, 0xF1, 0x81, 0x02, 0x08, 0x0, 0xA5};
    DeviceAddress sensor3 = {0x28, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0};
    DeviceAddress sensor4 = {0x10, 0x8E, 0xD9, 0x81, 0x02, 0x08, 0x0, 0xC0};

    /текущая температура теплоносителя
    float temp1=0;/текущая температура подачи теплоносителя
    float temp2=0;/текущая температура дымовых газов
    float temp3=0;/текущая температура обратки теплоносителя
    float temp4=0;/текущая температура обратки ГВС
    float temp5=0;/текущая температура на улице

    void setup()
    {
    ds. begin(); / Start up the library
    ds. setWaitForConversion (false);
    ds. setResolution (sensor1, RES_TEMP); / установить разрешение (точность)
    ds. setResolution (sensor2, RES_TEMP); / установить разрешение (точность)
    ds. setResolution (sensor3, RES_TEMP); / установить разрешение (точность)
    ds. setResolution (sensor4, RES_TEMP); / установить разрешение (точность)
    ds. requestTemperatures();

    /считываем время с момента запуска программы
    currentTime=millis();
    loopTime=currentTime;
    }
    void loop()
    {

    / отсчёт текущего времени
    currentTime=millis();
    if (currentTime>=(loopTime+3000){loopTime=currentTime; / время из расчёта 4*750=3000мс

    ds. requestTemperatures();

    temp1 = ds. getTempC (sensor1);
    delay_ms (10);
    temp3 = ds. getTempC (sensor2);
    delay_ms (10);
    temp4 = ds. getTempC (sensor3);
    delay_ms (10);
    temp5 = ds. getTempC (sensor4);
    }

    if (temp1 =(-127){ds.requestTemperatures();temp1 = ds. getTempC (sensor1); }
    if (temp3 =(-127){ds.requestTemperatures();temp3 = ds. getTempC (sensor2); }
    if (temp4 =(-127){ds.requestTemperatures();temp4 = ds. getTempC (sensor3); }
    if (temp5 =(-127){ds.requestTemperatures();temp5 = ds. getTempC (sensor4); }

    if (temp1 =(-127){lcd.init();lcd.setCursor (0,0);lcd.print("Avaria T1");avaria1=HIGH;delay_ms (1000);}
    if (temp1 !=(-127){avaria1=LOW;}
    if (temp3 =(-127){lcd.init();lcd.setCursor (0,0);lcd.print("Avaria T3");avaria2=HIGH;delay_ms (1000);}
    if (temp3 !=(-127){avaria2=LOW;}
    if (temp4 =(-127){lcd.init();lcd.setCursor (0,0);lcd.print("Avaria T4");avaria3=HIGH;delay_ms (1000);}
    if (temp4 !=(-127){avaria3=LOW;}
    if (temp5 =(-127){lcd.init();lcd.setCursor (0,0);lcd.print("Avaria T5");avaria4=HIGH;delay_ms (1000);}
    if (temp5 !=(-127){avaria4=LOW;}
    }