Система отопления дома на базе ТТ котла.

glory24
Offline
Зарегистрирован: 29.11.2013

Собрали устройство контроля системы отопления жилого дома посредством твердотопливного пиролизного котла. Блок управляет различным оборудованием согласно такой вот схемы: Схема отопления 140104.pdf

Логика примерно такая: Пояснения схеме отопления 150104.dox

В состав устройства вошли:

Arduino Mega 2560 R3 

Arduino Ethernet Shield W5100

4-канальный реле модуль Relay 4ch  4-channel relay               

Датчик температуры Dallas 18B20 (DS18B20)

Дисплей - QC12864B

Усилитель сигнала термопары: http://avrproject.ru/publ/kak_podkljuchit/podkljuchaem_termoparu_k_mikrokontrolleru/2-1-0-70

Наблюдать за работой СО можно тут: https://xively.com/feeds/520156923

Есть необходимость удаленно менять пороговые температуры, то есть те температуры, при достижении которых происходит срабатывания реле. Нужна помощь в реализации.

//-----------------------------

if (tempCels[2] > 93 || txaTemp > 115){ // если температура воды

   reactorActive=1;} //на выходе из котла более 93 градусов или дыма более 115 градусов 

if (tempCels[2] < 93 && txaTemp < 95){ // если  температура воды менее 93 и

   reactorActive=0;}  //  температура дыма менее 95 град. С

//-----------------------------

if (tempCels[4] > 26){ // есть ли в аккумуляторе тепло (больше чем 26С)

   accumulatorWarm=1;}

if (tempCels[4] <25){ // есть ли в аккумуляторе холодно (мньше чем 25С)

accumulatorWarm=0;}

//-----------------------------

if (tempCels[2] > 95){ // если котел нагрет, более 95 градусов

systemCRIHot=1;}

if (tempCels[2] < 94){ // если котел нагрет, менее 94 градусов

systemCRIHot=0;}

//-----------------------------

if (tempCels[2] > 85){ // если температура котла более 85 градусов

systemVeryHot=1;}

if (tempCels[2] < 84){ // если температура котла меньше 84 градусов

systemVeryHot=0;}

//---------------------

if (reactorActive){

   on(nasosKranKotel);

   on(nasosPotrebiteli);

 //  if (tempCels[3] > 55) {  если reactorActive и температура воды на входе в котел более 55 градусов      }

 //  else {off (nasosPotrebiteli);}

   if (systemVeryHot) { on(kranTA); } // в случае нагрева котла до 85 градусов открыть кран подачи в ТА

   else { off(kranTA); }

   if (systemCRIHot) { // Если котел перегрет более 95 градусов

      on(zaslonkaVozduha);} // остановить подачу воздуха в котел

  else {off (zaslonkaVozduha);}

На мой взгляд, удобнее веб интерфейс.

Еще нужно вместо усилителя термопары, который используется сейчас прикрутить MAX 31855.

Приглашаю к обсуждению всех, кому проект покажется интересным. Отвечу на все вопросы. Система отопления моя. Предлагаю использовать как полигон для отработки работоспособности блока. О результатах внесенных изменений подробно отпишусь.

glory24
Offline
Зарегистрирован: 29.11.2013

glory24
Offline
Зарегистрирован: 29.11.2013
// Исправлена отправка темперетуры дыма, переименованы имена датчиков для Ксивели, изменен порядок их вывода
// Сменил аналоговый вход ТХА (Датчик термопары дыма) A0 на А8  
// Добавлена отправка на Ксивели 4 датчиков - работает
// Добавлена термопара и операционный усилитель. Напряжение с термопары усиляется в 101 раз,
// то есть на выходе усилителя имеем 4.14 мВ/град Цельсия
#include <SPI.h>
#include <Ethernet.h>
#include <HttpClient.h>
#include <Xively.h>
#include <OneWire.h>
#include "U8glib.h"
#define nasosKranKotel 47     // Реле 4 - верхнее - НЦ1, КЭ1
#define nasosPotrebiteli 44   // Реле 3 - второе сверху - НЦ2, НЦ3, НЦ4
#define kranTA 45             // Реле 2 - третье сверху - КЭ2
#define zaslonkaVozduha 46    // Реле 1 - нижнее - МЗ
#define txa 8 // Аналоговый вход A8 ТХА (Датчик термопары дыма).

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
IPAddress ip(192,168,0,20);
char xivelyKey[] = "8kSv3fJUP6SrrlEbCZvKZWI6NNCdbdsji6WAZj3PTTuiof9i";
unsigned long feedId = 520156923;

char sensor1Id[] = "1_Dymovaya_Truba"; // ТХА
char sensor2Id[] = "2_Kotel_Vyhod";    // ДТ2
char sensor3Id[] = "3_Kotel_Obratka";  // ДТ3
char sensor4Id[] = "4_Verh_TA";        // ДТ4
char sensor5Id[] = "5_Niz_TA";         // ДТ5
char sensor0Id[] = "6_Test_Sensor";
 
XivelyDatastream datastreams[] = {
 XivelyDatastream(sensor0Id, strlen(sensor0Id), DATASTREAM_FLOAT),   
 XivelyDatastream(sensor1Id, strlen(sensor1Id), DATASTREAM_FLOAT),
 XivelyDatastream(sensor2Id, strlen(sensor2Id), DATASTREAM_FLOAT),
 XivelyDatastream(sensor3Id, strlen(sensor3Id), DATASTREAM_FLOAT),
 XivelyDatastream(sensor4Id, strlen(sensor4Id), DATASTREAM_FLOAT),
 XivelyDatastream(sensor5Id, strlen(sensor5Id), DATASTREAM_FLOAT),
 };
 // Finally, wrap the datastreams into a feed
 XivelyFeed feed(feedId, datastreams, 6/* number of datastreams */);
 
 EthernetClient client;
 XivelyClient xivelyclient(client);
 
U8GLIB_ST7920_128X64_1X u8g(24, 22, 23);	// SPI Com: SCK = en = 24, MOSI = rw = 22, CS = di = 23
//int tempCelsVal[6], tempCelsPre[6], txaCode;
int txaCode;
float tempCels[6], txaTemp;
boolean reactorActive=0, accumulatorWarm=0,systemCRIHot=0, systemVeryHot=0,postplenieGar=0, sensorOnline[5];
OneWire  ds1(28); // Неиспользуемый датчик 
OneWire  ds2(29); // Температура воды Котел подача  ДТ2
OneWire  ds3(30); // Температура воды Котел обратка ДТ3
OneWire  ds4(27); // Температура воды ТА Верхняя часть ДТ4
OneWire  ds5(31); // Температура воды ТА Нижняя  часть ДТ5
//----------------------------------------
void draw(void) {
  u8g.setFont(u8g_font_freedoomr10r);
  //-------------------Котел Подача--------------
  u8g.drawFrame(0,15,33,48); // прямоугольник
  tempOutGraph(2, 3, 32); // Определяет положение индикации  ds2 "Температура воды Котел подача  ДТ2"
  u8g.drawVLine(25,0,15); // труба левая часть
  u8g.drawVLine(29,0,15); // труба правая часть
  if (!digitalRead(zaslonkaVozduha)) {u8g.drawLine(24,9,30,3);} // вывод изображения заслонки, если она включена 
  
  //-------------------Аккумулятор Верх--------
  u8g.drawEllipse(67,32,4,10,U8G_DRAW_UPPER_LEFT|U8G_DRAW_LOWER_LEFT);
  u8g.drawEllipse(110,32,4,10);
  u8g.drawHLine(69,21,41); // верхняя линия
  u8g.drawHLine(69,42,41); // нижняя линия
  tempOutGraph(4, 79, 21); // Определяет положение индикации  ds4 "Температура воды ТА Верхняя часть ДТ4"
    //----------------Аккумулятор Низ----------
  tempOutGraph(5, 79, 59); // Определяет положение индикации  ds5 "Температура воды ТА Нижняя  часть ДТ5"
  //--------------------Трубы-------------
  
  u8g.drawHLine(33,17,16); // выход котла
  u8g.drawHLine(33,48,16); // вход котла
  u8g.drawFrame(50,2,74,62); // рамка ТА
  u8g.drawVLine(80,42,22); // выход аккумулятора
  u8g.drawVLine(80,2,20); // вход аккумулятора 
  u8g.drawDisc(122,26,3); // насос система
  u8g.drawDisc(49,26,3); // насос обратка
  u8g.drawCircle(42,48,2); // кран обратка
  u8g.drawCircle(79,2,2); // кран аккумулятора
  tempOutGraph(3, 3, 62); // Определяет положение индикации  ds3  "Температура воды Котел обратка ДТ3"
  //--------------------------------------
  //-------------------Стрелки------------
   if (!digitalRead(nasosKranKotel)) // Если включены кран и насос обратки
  { // рисуем соответствующую стрелку
    u8g.drawHLine(39,21,6); 
    u8g.drawVLine(44,21,10);  // обратка
    u8g.drawHLine(39,31,6);
    u8g.drawLine(39,31,41,29);
    u8g.drawLine(39,31,41,33); 
  } 
  //------------

  if (!digitalRead(nasosPotrebiteli)) // Если включен насос системы
  {   // рисуем
    u8g.drawHLine(104,5,14); // стрелка перед насосом системы
    u8g.drawLine(118,5,116,3);
    u8g.drawLine(118,5,116,7);
  //------------
    u8g.drawVLine(119,37,12); // стрелка после насоса системы
    u8g.drawLine(119,49,117,47);
    u8g.drawLine(119,49,121,47);
  //------------
   /* u8g.drawVLine(66,40,12); // стрелка после батарей
    u8g.drawLine(66,40,64,42);
    u8g.drawLine(66,40,68,42);*/
    if (!digitalRead(nasosKranKotel)) // Если включен насос системы и открыт кран котла
    {  // рисуем
      u8g.drawVLine(46,3,12); // выход в систему
      u8g.drawLine(46,3,44,5);
      u8g.drawLine(46,3,48,5);
      //------------
      u8g.drawHLine(59,5,14); // стрелка перед краном аккумулятора
      u8g.drawLine(73,5,71,3);
      u8g.drawLine(73,5,71,7);
      //------------
      u8g.drawHLine(51,34,12); // стрелка на выходе из аккум. и батарей 
      u8g.drawLine(51,34,53,32); // в кран перед котлом
      u8g.drawLine(51,34,53,36);
      if (!digitalRead(kranTA)) // Если включен насос системы, открыты кран котла и кран аккумулятора
      {  // рисуем
        u8g.drawVLine(110,15,12); // стрелка аккумулятор (прямой)
        u8g.drawLine(110,27,108,25);
        u8g.drawLine(110,27,112,25);   
      }  
    }
    else if (!digitalRead(kranTA)) // Если включен насос системы, кран котла закрыт и кран аккумулятора открыт
      { // рисуем
         u8g.drawVLine(110,15,12); // стрелка аккумулятор (обратный)
         u8g.drawLine(110,15,108,17);
         u8g.drawLine(110,15,112,17); 
      }  
  }
  //-------------------------------------- 
    u8g.setPrintPos(0, 12); // Вывод показаний датчика 
    u8g.print((int)txaTemp); // температуры дыма
  //--------------------------------------   
}
//----------------------------------------
void setup()
{ 
  pinMode(zaslonkaVozduha, OUTPUT); // Назначаем порт "Выходом"
  pinMode(kranTA, OUTPUT); // Назначаем порт "Выходом"
  pinMode(nasosPotrebiteli, OUTPUT); // Назначаем порт "Выходом"
  pinMode(nasosKranKotel, OUTPUT); // Назначаем порт "Выходом"
  digitalWrite(zaslonkaVozduha, HIGH); // Назначаем первичное состояние ячейки Воздушой заслонки "HIGH" - подача воздуха включена
  digitalWrite(kranTA, HIGH); // Назначаем первичное состояние ячейки Крана ТА "HIGH"
  digitalWrite(nasosPotrebiteli, HIGH); // Назначаем первичное состояние ячейки Насос потребители "HIGH"
  digitalWrite(nasosKranKotel, HIGH); // Назначаем первичное состояние ячейки Насоса и крана котла "HIGH"
  u8g.setRot180();
  u8g.setColorIndex(1);         // pixel on
  Serial.begin(9600);
  Serial.println("Starting single datastream upload to Xively...");
  if (Ethernet.begin(mac) == 0) {
    Serial.println("Failed to configure Ethernet using DHCP");
    // Ошибка DHCP, установка стандартного IP-адреса 
    Ethernet.begin(mac, ip);
    }
  Serial.print("IP address: ");
  for (byte thisByte = 0; thisByte < 4; thisByte++)
   {
     Serial.print(Ethernet.localIP()[thisByte], DEC);
     Serial.print(".");
   } 
  Serial.println();
  Serial.println();
} 
void loop()
{
txaCode=analogRead(8); // считывание показаний ТХА (код от 0 до 1023, 4.9 мВ/ед)
txaTemp=txaCode*1.0+1; // вычисление температуры дыма и добавление примерной температуры холодного спая 1 гр.С
tempCels[1] = txaTemp;
sendToXively(1);
secondSensorInquiry(2);
temperaturePrint(2);
sendToXively(2);
thirdSensorInquiry(3);
temperaturePrint(3);
sendToXively(3);
fourthSensorInquiry(4);
temperaturePrint(4);
sendToXively(4);
fifthSensorInquiry(5);
temperaturePrint(5);
sendToXively(5);
Serial.print("Smoke temp:");
Serial.println(txaTemp);
//-----------------------------
if (tempCels[2] > 93 || txaTemp > 115){ // если температура воды
   reactorActive=1;} //на выходе из котла более 93 градусов или дыма более 115 градусов  
if (tempCels[2] < 93 && txaTemp < 95){ // если  температура воды менее 93 и
   reactorActive=0;}  //  температура дыма менее 95 град. С
//-----------------------------
if (tempCels[4] > 26){ // есть ли в аккумуляторе тепло (больше чем 26С)
   accumulatorWarm=1;}
if (tempCels[4] <25){ // есть ли в аккумуляторе холодно (мньше чем 25С)
accumulatorWarm=0;}
//-----------------------------
if (tempCels[2] > 95){ // если котел нагрет, более 95 градусов
systemCRIHot=1;}
if (tempCels[2] < 94){ // если котел нагрет, менее 94 градусов
systemCRIHot=0;}
//-----------------------------
if (tempCels[2] > 85){ // если температура котла более 85 градусов
systemVeryHot=1;}
if (tempCels[2] < 84){ // если температура котла меньше 84 градусов
systemVeryHot=0;}
//---------------------
if (reactorActive){
   on(nasosKranKotel);
   on(nasosPotrebiteli);
 //  if (tempCels[3] > 55) {  если reactorActive и температура воды на входе в котел более 55 градусов      }
 //  else {off (nasosPotrebiteli);}
   if (systemVeryHot) { on(kranTA); } // в случае нагрева котла до 85 градусов открыть кран подачи в ТА
   else { off(kranTA); }
   if (systemCRIHot) { // Если котел перегрет более 95 градусов
      on(zaslonkaVozduha);} // остановить подачу воздуха в котел
  else {off (zaslonkaVozduha);}
}
else {
   off(nasosKranKotel);
   on(zaslonkaVozduha); // остановить подачу воздуха в котел
   if (accumulatorWarm) { // если в аккумуляторе есть тепло
      on(kranTA); // обогрев 
      delay (1000);        // от
      on(nasosPotrebiteli); }  // накопителя
   else {
      off(nasosPotrebiteli);
      delay (1000);
      off(kranTA);
        }
    }
//-----------------------------
  u8g.firstPage();  
  do {
    draw();
  } while( u8g.nextPage() );
  delay(300);
//-----------------------------
}
//-----------------------------
void sendToXively(byte sensorNumber) 
{
  datastreams[sensorNumber].setFloat(tempCels[sensorNumber]);
  Serial.print("Sensor ");
  Serial.print(sensorNumber);
  Serial.print(" value is: ");
  Serial.print(datastreams[sensorNumber].getFloat());
  Serial.print("  Sending...  ");
  int ret = xivelyclient.put(feed, xivelyKey);
  Serial.print("xivelyclient.put returned ");
  Serial.println(ret);
} 
//-----------------------------
/*void firstSensorInquiry(byte sensorNumber)
{
byte i;  
byte ram[12];
byte rom[8];
float temp;
int divider;   
ds1.reset_search();
if ( !ds1.search(rom)) {
   sensorOnline[sensorNumber] = 0;
    tempCels[sensorNumber]=0;}// если не включен- задает значение ноль
else {
   sensorOnline[sensorNumber] = 1;    
   ds1.reset();
   ds1.select(rom);
   ds1.write(0x44, 1);     
   delay(900);
   ds1.reset();
   ds1.select(rom);    
   ds1.write(0xBE);
   for ( i = 0; i < 9; i++) {  
      ram[i] = ds1.read();}
   crcTest(rom, ram, sensorNumber);
   divider = sensorType(rom[0]);   
   temp=(ram[1]<<8)+ram[0];
   tempCels[sensorNumber] = temp/divider;
 }
return;
}  */
//-----------------------------
void secondSensorInquiry(byte sensorNumber)
{
byte i;  
byte ram[12];
byte rom[8];
float temp;
int divider;  
ds2.reset_search();
if ( !ds2.search(rom)) {
   sensorOnline[sensorNumber] = 0;
 tempCels[sensorNumber]=0;}// если не включен- задает значение ноль
else {
   sensorOnline[sensorNumber] = 1;    
   ds2.reset();
   ds2.select(rom);
   ds2.write(0x44, 1);     
   delay(900);
   ds2.reset();
   ds2.select(rom);    
   ds2.write(0xBE);
   for ( i = 0; i < 9; i++) {  
      ram[i] = ds2.read();}
   crcTest(rom, ram, sensorNumber);      
   divider = sensorType(rom[0]);
   temp=(ram[1]<<8)+ram[0];
   tempCels[sensorNumber] = temp/divider;
 }
return;
}  
//-----------------------------
void thirdSensorInquiry(byte sensorNumber)
{
byte i;  
byte ram[12];
byte rom[8];
float temp;
int divider;   
ds3.reset_search();
if ( !ds3.search(rom)) {
   sensorOnline[sensorNumber] = 0;
 tempCels[sensorNumber]=0;}// если не включен- задает значение ноль
else {
   sensorOnline[sensorNumber] = 1;    
   ds3.reset();
   ds3.select(rom);
   ds3.write(0x44, 1);     
   delay(900);
   ds3.reset();
   ds3.select(rom);    
   ds3.write(0xBE);
   for ( i = 0; i < 9; i++) {  
      ram[i] = ds3.read();}
   crcTest(rom, ram, sensorNumber);
   divider = sensorType(rom[0]);   
   temp=(ram[1]<<8)+ram[0];
   tempCels[sensorNumber] = temp/divider;
 }
return;
}  
//-----------------------------
void fourthSensorInquiry(byte sensorNumber)
{
byte i;  
byte ram[12];
byte rom[8];
float temp;
int divider;   
ds4.reset_search();
if ( !ds4.search(rom)) {
   sensorOnline[sensorNumber] = 0;
 tempCels[sensorNumber]=0;}// если не включен- задает значение ноль
else {
   sensorOnline[sensorNumber] = 1;    
   ds4.reset();
   ds4.select(rom);
   ds4.write(0x44, 1);     
   delay(900);
   ds4.reset();
   ds4.select(rom);    
   ds4.write(0xBE);
   for ( i = 0; i < 9; i++) {  
      ram[i] = ds4.read();}
   crcTest(rom, ram, sensorNumber); 
   divider = sensorType(rom[0]);   
   temp=(ram[1]<<8)+ram[0];
   tempCels[sensorNumber] = temp/divider;
 }
return;
}
//-----------------------------
void fifthSensorInquiry(byte sensorNumber)
{
byte i;  
byte ram[12];
byte rom[8];
float temp;
int divider;   
ds5.reset_search();
if ( !ds5.search(rom)) {
   sensorOnline[sensorNumber] = 0;
 tempCels[sensorNumber]=0;} // если не включен- задает значение ноль
else {
   sensorOnline[sensorNumber] = 1;    
   ds5.reset();
   ds5.select(rom);
   ds5.write(0x44, 1);     
   delay(900);
   ds5.reset();
   ds5.select(rom);    
   ds5.write(0xBE);
   for ( i = 0; i < 9; i++) {  
      ram[i] = ds5.read();}
   crcTest(rom, ram, sensorNumber);
   divider = sensorType(rom[0]);   
   temp=(ram[1]<<8)+ram[0];
   tempCels[sensorNumber] = temp/divider;
 }
return;
}  
//-----------------------------
void crcTest(byte romCode[8], byte ramCode[12], byte sensorNumber)
{
if ( OneWire::crc8(romCode, 7) == romCode[7] && OneWire::crc8(ramCode, 8)== ramCode[8] ){
   Serial.print("CRC-");
   Serial.print(sensorNumber);
   Serial.print(" OK.");
   return;}
else {   
   Serial.print("CRC-");
   Serial.print(sensorNumber);
   Serial.print(" ERROR!");
   sensorOnline[sensorNumber] = 0; 
   return;}   
}
//-----------------------------
int sensorType(byte serCode)
{
if ( serCode == 0x10) {
Serial.print("Sensor is 18S20.");
return 2;}
if ( serCode == 0x28) {
Serial.print("Sensor is 18B20.");
return 16;}
}  
//----------------------------- 
void temperaturePrint(int sensorNumber)
{
if (sensorOnline[sensorNumber]) {  
Serial.print("Temp ");
Serial.print(sensorNumber);
Serial.print(" is ");
Serial.print(tempCels[sensorNumber],2);
Serial.print("C.\n");} 
else { 
   Serial.print("Sensor ");
   Serial.print(sensorNumber);
   Serial.print(" not connected\n");
   delay (200);
}
return;}  
//----------------------------- 
void on (int relay)
{
digitalWrite(relay, LOW);  
}
//----------------------------- 
void off (int relay)
{
digitalWrite(relay, HIGH);  
}
//----------------------------- 
void tempOutGraph(int sensor, int x, int y)
{
  if (sensorOnline[sensor]){
  u8g.setPrintPos(x, y);
  u8g.print(tempCels[sensor],1);
  }
  else {u8g.drawStr(x+7, y, "NC");
  }  
}  

 

glory24
Offline
Зарегистрирован: 29.11.2013

Не смог прикрепить вордовский и .pdf фаилы, поэтому логику описываю на ветке

СО (система отопления) имеет два режима, которые определяет блок управления:

1.       Когда котел работает - reactorActive=1

2.       Когда котел не работает - reactorActive=0

 

reactorActive=1 если выполняется хотя бы одно из условий:

a.       Температура дыма (термопара ТХА . http://sensorse.com/page11.html (на рис. ТХА) выше 1150С (значение приведено условно),

или

b.      Температура ДТ2 (DS18s20) выше 930С.

В режиме reactorActive=1

Начальные состояния реле для этого режима:

 

(Реле №1) включено - Работает насос циркуляционный контура котла (на рис. НЦ1), открыт кран этого контура (на рис. КЭ1),

(Реле №2) включено, циркуляционные контура ОП (Отопительных приборов дома (батареи, теплые полы, бойлер (на рис. НЦ2, НЦ3, НЦ4)).

(Реле №3) выключено, если температура на ДТ2 ниже значение 850С, иначе включено

(Реле №4) выключено, если температура на ДТ2 ниже значение 950С, иначе включено

3.       Датчик температуры ДТ2 (на рис. ДТ2) установлен на корпусе котла, в верхней его части. Выполняет в режиме reactorActive=1 три функции:

                                                               i.      определяет режим СО reactorActive=0 или reactorActive=1;

                                                             ii.      защищает котел от перегрева, а именно - при превышении температуры на ДТ2 850С (значение приведено условно) включает (Реле №3), то есть открывает кран подачи горячей воды в аккумуляторную емкость (на рис. КЭ2), при этом котел подпитывается холодной водой из аккумуляторной емкости;

                                                            iii.      защищает котел от перегрева, а именно - при превышении температуры на ДТ2 950С (значение приведено условно) включает (Реле №4), то есть перекрывает подачу воздуха в котел;

 

4.     Датчик температуры ДТ4 (DS18s20 (на рис. ДТ4)) установлен в верхней части ТА (Теплоаккумулятор) - позволяет осуществлять контроль за поступлением горячей воды в аккумуляторную емкость;

5.       Датчик температуры DS18s20 (на рис. ДТ5) установлен, в нижней части ТА. По мере повышения температуры на нем дает представление о мере прогрева воды в ней.

reactorActive=0 если выполняется хотя бы одно из условий:

a.       Температура дыма (термопара ТХА . http://sensorse.com/page11.html (на рис. ТХА) ниже 700С (значение приведено условно),

или

b.      Температура ДТ2 (DS18s20) ниже 800С.

 

В режиме reactorActive=0

 

(Реле №1) выключено, то есть не работает насос циркуляционный контура котла (на рис. НЦ1), закрыт кран этого контура (на рис. КЭ1).

(Реле №2), включено если температура на ДТ4 выше 270 С, иначе выключено

(Реле №3) включено, если температура на ДТ4 выше 270 С, иначе выключено

(Реле №4) включено, то есть закрывает задвижку (на рис. МЗ), которая перекрывает подачу воздуха в котел.

  •  

char sensor2Id[] = "2_Kotel_Vyhod";

char sensor3Id[] = "3_Kotel_Obratka";

char sensor4Id[] = "4_Verh_TA";

char sensor5Id[] = "5_Niz_TA";

char sensor0Id[] = "6_Test_Sensor";

 

#define nasosKranKotel 47     // Реле 4 - верхнее

#define nasosPotrebiteli 44   // Реле 3 - второе сверху

#define kranTA 45             // Реле 2 - третье сверху

#define zaslonkaVozduha 46    // Реле 1 - нижнее

cikacika
Offline
Зарегистрирован: 11.01.2015

Здравствуйте,
интересный ваш проект получилось . Было интересно посмотреть электрическую схему. Если такая имеется.
За ранее спасибо.

Чеслав

glory24
Offline
Зарегистрирован: 29.11.2013

Схемы нет, в основном "мурзилки" (инструкции в картнках). Кстати буду признателен если таковую нарисуете. Дам всю необходимую информацию. Датчики подключены как на фотке, но теперь думаю, правильнее было бы как тут. Тут по ссылке вообще все завидно сделано, э то о чем только мечтаем, может когда нибудь дойдем.

Дисплей подключен так 

Про блок реле рассказывать нечего там все просто: земля, питане и на четыре цифровых выхода согласно скетчу: #define nasosKranKotel 47     // Реле 4 - верхнее

#define nasosPotrebiteli 44   // Реле 3 - второе сверху

#define kranTA 45             // Реле 2 - третье сверху

#define zaslonkaVozduha 46    // Реле 1 - нижнее

cikacika
Offline
Зарегистрирован: 11.01.2015

Спасибо за быстрый ответ.
Принципе нарисовать то можно, если найду времени попробую.
Я пока неопределился делать простой варыянт управлять только ТТ котлу
или боле сложный варыянт который обнимал боле апаратуры.
По каким критериям выбрали "Arduino Mega 2560 R3" a не другой какой.

glory24
Offline
Зарегистрирован: 29.11.2013

Я бы пока не рискнул на этой стадии усложнять систему. Надо прежде решить те задачи, торые я указал выше. Почему именно Mega 2560? Когда приступали к пректу, хотелось всего и сразу. Планов было - тьма. Казалось, не хватит выходов на плате. Теперь запросы стали скромнее, но куплено уже три комплекта, так что развиваться будем дальше в выбраном напрвлении.

cikacika
Offline
Зарегистрирован: 11.01.2015

Вы вероятно правильно говорите что не надо сразу занятся пo сложнея.
Хотел спросить:
1. вашем проекте не видно кнопки управления,так настройки делаются однократно с компьютером?
2. что отображает дисплей температуру актуальных точках,включение - выключения насосов?
3. котёл красиво топится - управляется а какие воздействие снаружи может имеет отношение?
( температура снаружи воздуха, температура комнат или пока несделано)

glory24
Offline
Зарегистрирован: 29.11.2013

cikacika пишет:
Вы вероятно правильно говорите что не надо сразу занятся пo сложнея. Хотел спросить: 1. вашем проекте не видно кнопки управления,так настройки делаются однократно с компьютером? 2. что отображает дисплей температуру актуальных точках,включение - выключения насосов? 3. котёл красиво топится - управляется а какие воздействие снаружи может имеет отношение? ( температура снаружи воздуха, температура комнат или пока несделано)

1. Пока да, но надеюсь, когда ни будь будет web-интерфейс

2. Дисплей отображает текущую температуру на датчиках и движение воды по отопительным контурам  Включение- выключение нагрузок видно по светодиодам шилда реле. Было бы не плохо еще выводить значение пороговых температур, (что бы не держать их в голове) но сюда уже не очень хочется, что бы не перегружать его необязательной информацией. Будет тяжело читаться. Можно выводить пороговые температуры на дисплей по нажатию кнопки, но это еще предстоит реализовать.

3. По моему глубочайшему убеждению, на работу ТТ котла не должны влиять температуры наружного воздуха, температуры комнат и т.д. У ТТ котла есть довольно узкий диапазон условий при котором он будет работать с максимальной эффективностью. Для обеспечения таких условий ему нужно обеспечить связку с Теплоаккумулятором. Эти и должен заниматься блок управления. Он длжен еще управлять воздушной заслонкой (или заслонкой на дымовой трубе), как програмно, так и вручном режиме. И это тоже нужно сделать через web- инетрфейс.

cikacika
Offline
Зарегистрирован: 11.01.2015

Спасибо за ответы получилось интересная беседа.
Моя цель как раз есть управлять 4-ходовом от температуры комнат тогда могу продлить горения топлива.
(разница у меня нет теплоаккумулятора и меньше насосов) котла пока могу и не трогать он и так хорошо
с механическим терморегуляторам работают.Ещё есть охота сделать нормальный запуск котла(сначала прогреть
холодный а потом постепенной включить в систему.
Мой котел Dakon DOR 32D

glory24
Offline
Зарегистрирован: 29.11.2013

cikacika пишет:
Ещё есть охота сделать нормальный запуск котла(сначала прогреть холодный а потом постепенной включить в систему. Мой котел Dakon DOR 32D

Для этого Ардуино не нужен. Это решается подобными устройствами. Поищите тут, тат это все подробно обсуждается.

cikacika
Offline
Зарегистрирован: 11.01.2015

Как раз хочю сделать такой аппарат который управлял и котлом, отопительной системы и подхватил солнечную энергию может ечё охрану подключит. Да есть такие аппараты на пример (Danfoss ECL Comfort 300)но аны стоит не так и мало(около 800 Эур.) Eчё сам я могу это сделать эта свя электроника есть моя специальность. Самый подходящий вариант моего соотечественника: http://www.jonis.eu/silumos-ukio-valdiklis/

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

glory24
Offline
Зарегистрирован: 29.11.2013

cikacika пишет:

К есть такие аппараты на пример (Danfoss ECL Comfort 300)но аны стоит не так и мало(около 800 Эур.) 

Дело даже не в Том, что этот блок стоит 800 евро. Дело в том, что он не делает того, что мне нужно.

1.    Мне нужно удаленно управлять воздушной заслонкой не в режиме «открыл» «закрыл», а в режиме изменения угла поворота в переделах 900

2.    Мне нужно удаленно иметь возможность менять пороговые температуры.

3.    Мне нужно удаленно наблюдать за состоянием системы (видеть текущие показания с температурных датчиков, видеть динамику изменения этих показаний, видеть состояние реле и положение воздушной заслонки) и при необходимости вмешаться в ее работу.

Для этого нужен веб-интерфейс как тут.

И самое главное, нужна возможность гибкой модификации блока в соответствии с растущими потребности. Завтра я пойму, что для более комфортной жизни с моей системой отопления неплохо было бы добавить еще какую-то приблуду, я хочу что бы у меня такая возможность была.

Danfoss ECL Comfort 300 за свои 800 евро ничего этого мне дать не может. При этом имеет малопонятный, слабо информативный интерфейс.

cikacika
Offline
Зарегистрирован: 11.01.2015

Я эксплуатирую (предприятие которой я работаю) токой Danfoss ECL Comfort 300 уже около 8 лет и хорошо ознакомлен как он работает. Можно всё сделать.
Например:
Котельная работает круглосуточно бесперсонала полностью автоматизирована;
Аварийные ситуации сразу я получаю телефон смс;
Когда я хочу могу посмотреть параметры через смс;
Могу изменить параметры через смс;
Но там в комплекте с данфосс есчё стоит управляющий модуль с мобильной связью. Когда это делалась тогда почти не было мобильного WEBa и делалось на СМС.
Я вижу с Ардуинам можно всё сделать просто и не дорого.Такую систему хoчу приспособить у себя дома ТТ котлу. Мне тоже нужно состояние катла и управления системы через WEB.

glory24
Offline
Зарегистрирован: 29.11.2013

cikacika пишет:

Самый подходящий вариант моего соотечественника: http://www.jonis.eu/silumos-ukio-valdiklis/

Это, пожалуй, самое впечатляющее, что я видел за последнее время. Особенно тут

Я пока не разобрасля, есть ли возможность тут прямо на сайте менять какие либо настройки системы (те же самые пороговые температуры), но интерфейс читается прекрасно,  графики отлично детализированы, хотя меня пока и на Xively устраивает.

Мне только сташно представить, каких денег это может стоить.

 

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Красиво сделано.  Тоже про деньги возник вопрос .  А у них с 1 Января уже ЕВРО...

glory24
Offline
Зарегистрирован: 29.11.2013

cikacika пишет:

 но как я понимаю есть маленькая недостатка когда вы топите котла круглосуточно температура комнатах поднимается а не скапливается аккумуляторе и по том по спросу используется.

Емкость моего ТА 3м3, то есть 3 тонны воды. Площадь одного этажа моего дома 150 м2, при толщине стяжки теплого пола 6 см. – это 9 м3 бетона. Плотность бетона 2,5т/м3, значит масса бетона, которая накапливает тепло от котла 22,5 тонны. И это только на одном этаже. Так есть ли смысл говорить о том, что мы накапливаем тепло в ТА?

 

У ТА другая функция. Его задача обеспечить максимально комфортные условия работы ТТ котла. Тепло которое накопил ТА в период работы котла, тоже в дальнейшем используется, на в основном по конкретному целевому назаначению.

glory24
Offline
Зарегистрирован: 29.11.2013

trembo пишет:

Красиво сделано.  Тоже про деньги возник вопрос .  А у них с 1 Января уже ЕВРО...

Что именно "красиво" и у кого "у них"?

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011
glory24
Offline
Зарегистрирован: 29.11.2013

trembo пишет:

http://jonis.sildau.lt/

Согласен, красиво. А ходят ли там Евро, не важно. Они и у нас неплохо ходят, если нужно.

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Но я бы ещё с удовольствием похвалил топикстартера  -    glory24   ! Присоединяйтесь!

cikacika
Offline
Зарегистрирован: 11.01.2015

Да у нас в Литве 2015 01 01 деньги Евро.
Я так и подумал что у Вас отопление пол и вы не переживайте за регулировкой. Но есть но люди отказываются от такого варианта отопление из множества болезни суставов или ног
кровяных сосудов,принципе очень хорошая и продвинутая.
Там есть емейл можете писать этому парню побеседуйте если интересно.
A стоит наверняка не так и дорого много более дешевле как Danfoss.
Но всегда хочется что то сделать своего и своими руками.

glory24
Offline
Зарегистрирован: 29.11.2013

trembo пишет:

Но я бы ещё с удовольствием похвалил топикстартера  -    glory24   ! Присоединяйтесь!

Вы меня совсем засмущали. . .

Спасибо.

glory24
Offline
Зарегистрирован: 29.11.2013

cikacika пишет:
Я так и подумал что у Вас отопление пол и вы не переживайте за регулировкой.

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

Никогда не слышал, что теплые полы отрицательно влияют на суставы и сосуды ног. Его температура редко превышает 280. Это даже рукой не ощущается, а уж ногой в тапке и подавно. К тому же для периодической системы отопления, которой является система на базе ТТ котла + ТА, иначе просто не рационально. Ведь когда температура в ТА падает ниже 500. В радиаторы ее подавать уже бессмысленно, а в теплый пол я прекращаю подавать воду ниже 260, а до этого она все еще греет пол.

glory24
Offline
Зарегистрирован: 29.11.2013

cikacika пишет:
Там есть емейл можете писать этому парню побеседуйте если интересно. A стоит наверняка не так и дорого много более дешевле как Danfoss. Но всегда хочется что то сделать своего и своими руками.

Если я буду переписываться лично с ним, то другие не узнают о результатах наших переписок. Я предпочитаю общаться на форуме, так, что бы и другие смогли при необходимости воспользоваться результатами совместного труда. Что касается "купить", то я не против, покажите мне то что удовлетворит моим условиям, я их уже выше перечислил, и я буду готов купить. 

 

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Сщас спою  (с)....  то есть буду спорить.

Таким способом нельзя регулировать пёплый пол. Слишком большая его инерция и слишком далёкая связь с температурой в комнате.

Я свои клапана-регуляторы выкинул на первый-же год.

Что получалось, особенно весной- осенью: Днём ( часов в 11) солнце через окна согревает воздух в комнатах и Room Thermostat ( а именно так они и называются) закрывает клапан своего контура. И весь день солнце греет воздух(термостат), а в это время пол остывает, долго,  но конкретно остывает( и я бы остыл за 6 часов)...

К вечеру, часов в 6-7, воздух остывает до температуры включения термостата  и он наконец включает подачу воды. Тут появляюсь я - пол ледяной, а воздух уже остыл. Часам к 11-ти вечера пол наконец прогревается, но нафиг мне это нужно, я уже  иду спать. Зато  утром завтракаю на тёплом полу и уезжаю на работу. И так по циклу.

Я открыл ( снял ) все клапана на рейке. Дал в пол 35 градусов (при 10 мороза на улице) . Дал прогреться денёк. Побегал с инфракрасным термометром по комнатам, и там, где температура пола была выше ( туалет и короткие контурА ), закрутил регулировку потока ( там есть шестигранник). Заодно подрос проток через длинные-дальние контура.  И так в течении недели-двух  каждый день.  Вышла разница градус-два. Теперь на весь пол одно место регулировки - штурвал температуры подачи на трёхходовике ( некоторые стабилизируют по обратке , но я по  подаче).  И никахих колебаний. Иногда при сильных морозах-оттепелях вручную поднимаю-уменьшаю температуру.

Если совет что делать- я бы при выключении контура  с помощью реле (оптронов) включал-выключал клапана от простейшего таймера. Например полчаса греем- полчаса не греем независимо от всего, тогда хоть  пол совсем остывать не будет.

glory24
Offline
Зарегистрирован: 29.11.2013

А я спорить не стану. Как известно, на вкус и цвет все фломастеры. . .

Термостаты куплены, выбрасывать не стану - за них деньги уплачены. К  тому же у меня не во всех комнатах постоянно проживают, не набегаешься регулировать. К тому же у меня система периодического отопления с ТТ котлом, я вынужден где-то накапливать тепло, иначе придется жить в котельной. В позапрошлом году у меня на втором этаже еще были комнаты с радиаторным отоплением. Так вот в ТА температура воды еще 400 а я вынужден был идти топить котел из за комнат с радиаторами. За два года радиаторы везде поснимал и залил теплые полы. Теперь перерывы меду работой котла 2-3 дня, а это уже приемлемо.

glory24
Offline
Зарегистрирован: 29.11.2013

Создал тему еще и тут.

Конечно прошу прщения у сторожил здешнего форума, но там как-то общаться удобнее, и проверка правописания работает.

Приглашаю всех перебраться туда.

 cikacika -  Торжетвенно обещаю написать письмо владельцу  этого чудесного сайта и пригласить на форум для общения.

 

valeraba
Offline
Зарегистрирован: 08.09.2014

Посмотрите, есть ещё такой вариант реализации WEB интерфесов.

С помощью встроенного редактора можете накидать для себя нужный интерфейс  и сгенерировать программу для ардуинки под созданную конфигурацию. Естественно потом нужно будет встроить весь ваш код. К сожалению, пока сайт не имеет нормальной документации, но если один раз понять, будет не сложно (белый адрес для устройства не нужен).

Моя плата уже два месяца подключена к нему, и вы можете на неё посмотреть, светодиодами поморгать.

http://samde.ru

Ази
Offline
Зарегистрирован: 10.02.2015

Добрый день. Почитал о вашем проекте по ТТкотлу очень заинтересовался такой автоматизацией. На данный момент хочу реализовать только вывод информации температуры уходящих дымовых газов котла с термопары типа К. В электронике к сожелению полный 0 поэтому прошу вашей помощи. Подскажите правильно ли я понимаю что нужны такие компоненты:

Arduino uno\mega - как сервер
Arduino Ethernet Shield - для вывода информации в сеть
max31855 или max6675 - для преобразования сигнала термопары в цифру и передачи его по цифровому выходу к серверу на Arduino.
 
Понадобится что то еще? Если я захочу подцепить в дальнейшем еще ~8 датчиков температуры будет ли достаточно 1й Arduino uno? Если нет то какую платформу лучше взять или их придется ставить несколько?
glory24
Offline
Зарегистрирован: 29.11.2013

Сейчас в отъезде. Приеду - отвечу. Извините.

avgaz
Offline
Зарегистрирован: 23.09.2014

Ази пишет:

Добрый день. Почитал о вашем проекте по ТТкотлу очень заинтересовался такой автоматизацией. На данный момент хочу реализовать только вывод информации температуры уходящих дымовых газов котла с термопары типа К. В электронике к сожелению полный 0 поэтому прошу вашей помощи. Подскажите правильно ли я понимаю что нужны такие компоненты:

Arduino uno\mega - как сервер
Arduino Ethernet Shield - для вывода информации в сеть
max31855 или max6675 - для преобразования сигнала термопары в цифру и передачи его по цифровому выходу к серверу на Arduino.
 
Понадобится что то еще? Если я захочу подцепить в дальнейшем еще ~8 датчиков температуры будет ли достаточно 1й Arduino uno? Если нет то какую платформу лучше взять или их придется ставить несколько?

Нет хватит и этого, а вот uno и 8 датчиков через преобразователи max6675 боюсь не хватит портов просто да и зачем вам все 8 термопар?  лично у меня тормопары поставлены только где высокая температура то есть дымовые газы все остальные ds18b20 они до 125г в системе отопления все равно больше 100 не будет.

Ази
Offline
Зарегистрирован: 10.02.2015

А я вроде и не писал что 8 термопар :-) по факту можно хоть 10 термопар подключить через 1 порт просто нужно еще докупать компоненты 

Приобрел Arduino mega, Arduino Ethernet Shield, max31855 все собрал брешит на 1 градус что терпимо. Сейчас пишу простенькое приложение для андроида чтоб все это можно было глянуть с телефона 

avgaz
Offline
Зарегистрирован: 23.09.2014

Ази пишет:

А я вроде и не писал что 8 термопар :-) по факту можно хоть 10 термопар подключить через 1 порт просто нужно еще докупать компоненты 

Приобрел Arduino mega, Arduino Ethernet Shield, max31855 все собрал брешит на 1 градус что терпимо. Сейчас пишу простенькое приложение для андроида чтоб все это можно было глянуть с телефона 

Не подскажите как повесить на один порт, просто у меня на max6675 и там подключение занимает 3 порта DO, CS, CLK без учота питания и вот две платы max6675 пришлось вешать на 6 портов.

и в чём существенная разница max6675 и max31855 разница в цене ощутима

Ази
Offline
Зарегистрирован: 10.02.2015

Как повесить не подскажу особо не разбирался. Когда заказывал на Adfruit плату max31855 было озвучено такое предложение. 

По поводу разницы как понял только в охватате температур max6675(0°C to +700°C) , а у max31855(-200 ° С до + 1350 ° С)

glory24
Offline
Зарегистрирован: 29.11.2013

avgaz пишет:

Ази пишет:

Добрый день. Почитал о вашем проекте по ТТкотлу очень заинтересовался такой автоматизацией. На данный момент хочу реализовать только вывод информации температуры уходящих дымовых газов котла с термопары типа К. В электронике к сожелению полный 0 поэтому прошу вашей помощи. Подскажите правильно ли я понимаю что нужны такие компоненты:

Arduino uno\mega - как сервер
Arduino Ethernet Shield - для вывода информации в сеть
max31855 или max6675 - для преобразования сигнала термопары в цифру и передачи его по цифровому выходу к серверу на Arduino.
 
Понадобится что то еще? Если я захочу подцепить в дальнейшем еще ~8 датчиков температуры будет ли достаточно 1й Arduino uno? Если нет то какую платформу лучше взять или их придется ставить несколько?

Нет хватит и этого, а вот uno и 8 датчиков через преобразователи max6675 боюсь не хватит портов просто да и зачем вам все 8 термопар?  лично у меня тормопары поставлены только где высокая температура то есть дымовые газы все остальные ds18b20 они до 125г в системе отопления все равно больше 100 не будет.

У меня то же только одна термопара, остальные ds18b20

Ази
Offline
Зарегистрирован: 10.02.2015

Здравствуйте. Столкнулся с проблемой отображения температуры термопары. На маленьких температурах показывает все нормально но как только температура повышается больше 40 начинаются расхождения на 40 врет на 5 градусов а на 200 врет больше чем на 250 градусов. Подскажите в какую сторону копать? Калибровка? Или же не совместимость?

Нужно ли подключать разъем VIN?

Использую:

adafruit Max31855К

термопара 2ДТПК045





Пробовал калибровать как тут не помогает.

Использую с стандартную библиотеку adafruit


#include <SPI.h>
#include <Ethernet.h>
#include "Adafruit_MAX31855.h"

byte mac[] = { 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF };
// IP адрес, назначаемый Ethernet shield:
EthernetClient client;
//byte ip[] = { 192, 168, 10, 111 };    
// адрес шлюза:
//byte gateway[] = { 192, 168, 10, 1 };
// маска:
//byte subnet[] = { 255, 255, 255, 0 };

EthernetServer server(10001);



byte my_addr[3][8]={{0x28,0x81,0xC4,0xBA,2,0,0,0x3B},
                    {0x28,0x67,0xE5,0xC7,2,0,0,0xA0},
                    {0x28,0xF6,0x98,0xBA,2,0,0,0x92}};

// Default connection is using software SPI, but comment and uncomment one of
// the two examples below to switch between software SPI and hardware SPI:

// Example creating a thermocouple instance with software SPI on any three
// digital IO pins.
#define DO   3
#define CS   4
#define CLK  5
Adafruit_MAX31855 thermocouple(CLK, CS, DO);

// Example creating a thermocouple instance with hardware SPI (Uno/Mega only)
// on a given CS pin.
//#define CS   10
//Adafruit_MAX31855 thermocouple(CS);

void setup() {
  Serial.begin(9600);
  Serial.println("start");
  // start the Ethernet connection and the server:
 // инициализация Ethernet shield
  //Ethernet.begin(mac, ip, gateway, subnet);
  Ethernet.begin(mac);
  // запуск сервера
  server.begin();
  Serial.print("server is at ");
  Serial.println(Ethernet.localIP());
}


void loop () 
 {
   
  /**/
  EthernetClient client = server.available();
  if (client) {
    // an http request ends with a blank line
    boolean currentLineIsBlank = true;
    while (client.connected()) {
      if (client.available()) {
        char c = client.read();
        // if you've gotten to the end of the line (received a newline
        // character) and the line is blank, the http request has ended,
        // so you can send a reply
        if (c == '\n' && currentLineIsBlank) {
          // send a standard http response header
          client.println("HTTP/1.1 200 OK");
          client.println("Content-Type: text/html");
          client.println();
          client.print('{');
          client.print('"');client.print("meteo");client.print('"');client.println(":");
          client.print('{');
          /* boiler - temp1
           *  roomboiler - temp2
           */
           client.print('"');client.print("temp1");client.print('"');client.print(":"); 
           client.print('"');client.print(thermocouple.readCelsius(),1);client.print('"');client.print(',');
           client.print('"');client.print("temp2");client.print('"');client.print(":");
           client.print('"');client.print(thermocouple.readInternal(),1);client.print('"');

           client.println("}");
           client.print("}");
        break;
        }
        if (c == '\n') {
          // you're starting a new line
          currentLineIsBlank = true;
        } 
        else if (c != '\r') {
          // you've gotten a character on the current line
          currentLineIsBlank = false;
        }
      }
    }
    // give the web browser time to receive the data
    delay(1);
    // close the connection:
    client.stop();
  }/**/
 }

 

glory24
Offline
Зарегистрирован: 29.11.2013
#include "Adafruit_MAX31855.h"
#define thermoDO  34
#define thermoCS  38
#define thermoCLK 36
Adafruit_MAX31855 thermocouple(thermoCLK, thermoCS, thermoDO);
 
У меня модуль подключения  MAX31855.h выглядит так. 
Тут еще только поправку ввел и все 
void loop()
{
txaTemp= thermocouple.readCelsius()+0.5;  // 0.5 поправочное значение
 
 
Термопару проверил, вроде правильно - ХА. На что пенять не знаю.
Ази
Offline
Зарегистрирован: 10.02.2015

Решение так и не нашел.... Может кто сталкивался с такой проблемой... Подскажите в какую сторону копать 

alex1608
Offline
Зарегистрирован: 01.09.2015

Доброго времени суток . управление подачей воздуха в котел по принципу открыл-закрыл  ИМХО не совсем хорошо особено если отутствует теплоакумулятор  или он небольшой емкости из-за тепловой инерции топлива и лишней мощности котла  ИМХО пойдет раскачка температуры в болшую сторону в помещении особенно  при теплой погоде от +15до 0 Гр С  ,В реалии нужно более плавное регулирование приточки воздуха типа PID регулирования

 

glory24
Offline
Зарегистрирован: 29.11.2013

На основе своих наблюдений сделал вывод, что у котла есть оптимальные режимы потребления воздуха и если его зажимать, то будет не эффективно использоваться топливо и теплообменник быстрее пачкаться. Поэтому на мой взгляд правильнее перекрыть подачу воздуха совсем, а когда температура опустится до приемлемой, возобновить в режиме оптимальной подачи.

uragan
Offline
Зарегистрирован: 23.02.2015

Оптимальная подача та еще штука. Но точно не одно положение заслонки.

glory24
Offline
Зарегистрирован: 29.11.2013

Согласен, только для поддержания "оптимальной" подачи воздуха в котел должен быть какой то критерий оценки качественного сгорания топлива, при отклонении которого должен сменятся и объем подаваемого воздуха. Но уж никак объем воздуха не должен зависеть от температуры воды в котле.

 

alex1608
Offline
Зарегистрирован: 01.09.2015

 ИМХО приточка  воздуха должна регулироватся

1температурой воды

2разряжением в топке котла 

2,1 лишний воздух в топке тоже никчему  лишне тепло вылетит

2,2 иначе при плохой естестевеной тяге (дождь  и снег и т,п,,,) УГАРНЫЕ ГАЗЫ ПОЙДУТ В КОТЕЛЬНУЮ

glory24
Offline
Зарегистрирован: 29.11.2013

alex1608 пишет:

 ИМХО приточка  воздуха должна регулироватся

1температурой воды

2разряжением в топке котла 

2,1 лишний воздух в топке тоже никчему  лишне тепло вылетит

2,2 иначе при плохой естестевеной тяге (дождь  и снег и т,п,,,) УГАРНЫЕ ГАЗЫ ПОЙДУТ В КОТЕЛЬНУЮ

Интересная тема, достойная отдельного обсуждения. Только я бы перенес обсуждение ее на другой тематический форум. Предлагаю на выбор:

Країна майстрів

forumhouse

или предложите привычный для Вас.

Baks
Baks аватар
Offline
Зарегистрирован: 11.01.2016

уважаемый автор темы, не могли бы Вы скинуть схемку относящюуся к операционному усилителю для  термопары, если есть отличия от схемы по вашей ссылки в первом посте, и да как замеры проводятся на низких и высоких темпиратурах? большая ли погрешность?

П.С. интересны и другие мнения кто как проводит замер темпиратуры с термопары и с помощю каких ОУ! Заранее благодарен

 

glory24
Offline
Зарегистрирован: 29.11.2013

Ответил тут

Наблюдать за работой СО можно тут

 

alex1608
Offline
Зарегистрирован: 01.09.2015

glory24 пишет:

Ответил тут

Наблюдать за работой СО можно тут

 

 

 сколь велик расход интернет трафика в месяц

glory24
Offline
Зарегистрирован: 29.11.2013

Понятия не имею, у меня "безлимит".

alex1608
Offline
Зарегистрирован: 01.09.2015

glory24 пишет:

Понятия не имею, у меня "безлимит".

хочу часть трафика с смартфона  расшарить по этому  и интересует обьем