Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void setup() {
- Serial.begin(9600);
- //Serial.println("CLEARDATA"); //Limpa a pasta do excel
- Serial.println("VAZAO,COEF GLOBAL 1,COEF GLOBAL 2, TEMP DE SAIDA 1, TEMP DE SAIDA 2, CALOR");
- double Temp_Ambiente = 23; //Temp_Ambiente = temperatura ambiente (°C) - Sensor DHT 22
- double UR = 60; //UR = umidade relativa do ar (%) - Sensor DHT 22
- double Patm = 101325; //Patm = pressão atmosferica (Pa) - Sensor BMP 280
- double Te1 = 23; //Te1 = temperatura de entrada na placa 1 (°C) - SENSOR DSB1820
- double Ts1 = 24; //Ts1 = temperatura de saída da placa 1 e entrada na placa 2 (°C) - SENSOR DSB1820
- double Tw1 = 58; //Tw1 = temperatura superficie aquecedor 1 (°C) - SENSOR DSB1820
- double Tw2 = 70; //Tw2 = temperatura superficie aquecedor 2 (°C) - SENSOR DSB1820
- double Ts2 = 25; //Ts2 = temperatura de saída da placa 2 (°C) - SENSOR DSB1820
- double Vel_Vento = 2; //Vel_Vento = Vel_Ventoocidade do vento (m/s) - Anemometro Caseiro
- double Ti1 = 40; //Ti1 = temperatura inferior aquecedor (°C) - SENSOR DSB1820
- double Ti2 = 45; //Ti2 = temperatura inferior aquecedor 2 (°C) - SENSOR DSB1820
- double Va = 0.0000167; //Va = vazão de agúa no aquecedor (m³/s) - Sensor Hall Medidor Fluxo Água 3/4 2-45l - Freq = 8.1 Q-3
- double Rad = 880; //Rad = Radiação Solar (W/m²) - LDR 5mm -
- //Capacidades físicas da Ar:
- const double Kar = 0.03; //Condutiblidade Termica do ar (W/m°C)
- const double Prar = 0.707; //N° de Prandl do ar (-)
- const double Uar = 17.4 * pow(10.0, -6.0); //Viscosidade Dinamica do ar (Pa.s)
- const double Cpar = 1004.831565; //Capacidade Calorifica do ar (J/kg°C)
- //Caracteristicas Físicas do Aquecedor Solar
- const double De = 1.71; //Diametro externo aquecedor (m)
- const double Di = 0.46; //Diametro interno aquecedor (m)
- const double Pi = 3.14159265359; //Número pi
- const double Per = (De * Pi); //Perimetro aquecedor (m)
- const double Aes = ((De * De - Di * Di) * Pi * 0.25); //Área de exposição solar (m²)
- const double Lc = Aes / Per; //Comprimento caracteristico (m)
- const double di0 = 0.0195; //Diametro interno do tubo (m)
- const double de0 = 0.0225; //Diametro externo do tubo (m)
- const double L = 100; //Comprimento Tubo (m)
- const double At = de0 * Pi * L; //Aréa total de Troca de calor (m²)
- const double Ed = 0.001 / di0;
- const double Ai = Pi * L * di0;
- const double Ae = Pi * L * de0;
- const double Kp = 0.17;
- //Massa Especifica do Ar Úmido (kg/m³):
- double Psat, Pv, Pd, par, termo1, termo2;
- termo1 = (7.5 * Temp_Ambiente) / (Temp_Ambiente + 237.3);
- termo2 = pow(10.0, termo1);
- Psat = (6.1078 * termo2); //Pressão de saturação do ar
- Pv = Psat * UR; //Pressão de vapor do ar
- Pd = Patm - Pv; //Pressão dinamica
- par = (Pd / (287.058 * (Temp_Ambiente + 273.15))) + (Pv / (461.495 * (273.15 + Temp_Ambiente))); //Massa Especifica do Ar
- //**************************************************Calculo do Coeficiente Convectivo com o ar placa 1 e 2:****************************************
- //N° de Reynolds para Escoamento do Vento na Superficie do Aquecedor:
- double Re, Gr1, Gr2, Ri1, Ri2, Ra1, Ra2, Nuf1, Nuf2, Nu1, Nu2, Nun1, Nun2;
- Re = (Vel_Vento * par * Lc) / Uar; //N° de Reynolds
- Gr1 = (9.81 * (1 / (Temp_Ambiente + 273.15) * (Tw1 - Temp_Ambiente) * pow(Lc, 2.0)) / (Uar / par)); //N° de Grashft placa 1
- Gr2 = (9.81 * (1 / (Temp_Ambiente + 273.15) * (Tw2 - Temp_Ambiente) * pow(Lc, 2.0)) / (Uar / par)); //N° de Grashft placa 2
- Ri1 = Gr1 / pow(Re, 2.0); //N° de Richardson placa 1
- Ri2 = Gr2 / pow(Re, 2.0); //N° de Richardson placa 2
- Ra1 = Gr1 * Prar; //N° de Rayleigh placa 1
- Ra2 = Gr2 * Prar; //N° de Rayleigh placa 2
- Nuf1 = 1.72 * pow(Re, 0.5) * pow(Prar, (1.0 / 3.0)); //Nussfelt forçado placa 1
- Nuf2 = 1.72 * pow(Re, 0.5) * pow(Prar, (1.0 / 3.0)); //Nussfelt forçado placa 2
- //********************************Condicional para escolha do tipo de escoamento exterior:************************************************
- //Nussfelt natural para placa 1 :
- if (Ra1 >= 104 && Ra1 <= 109) {
- Nun1 = 0.59 * pow(Ra1, (1.0 / 4.0));
- }
- else if (Ra1 > 109 && Ra1 <= 1012) {
- Nun1 = 0.13 * pow(Ra1, (1.0 / 3.0));
- }
- else {
- Nun1 = 0;
- }
- //Nussfelt natural para placa 2 :
- if (Ra2 >= 104 && Ra2 <= 109) {
- Nun2 = 0.59 * pow(Ra2, (1.0 / 4.0));
- }
- else if (Ra2 > 109 && Ra2 <= 1012) {
- Nun2 = 0.13 * pow(Ra2, (1.0 / 3.0));
- }
- else {
- Nun2 = 0;
- }
- //Nussfelt forçada para placa 1
- if (Ri1 <= 0.1) {
- Nu1 = Nuf1;
- }
- else if (Ri1 > 0.1 && Ri1 <= 10) {
- Nu1 = Nun1 + Nuf1;
- }
- else {
- Nu1 = Nun1;
- }
- //Nussfelt forçada para placa 2
- if (Ri2 <= 0.1) {
- Nu2 = Nuf2;
- }
- else if (Ri2 > 0.1 && Ri2 <= 10) {
- Nu2 = Nun2 + Nuf2;
- }
- else {
- Nu2 = Nun2;
- }
- //Coeficiente Convectivo com o ar:
- double hconv1 = Nu1 * Kar / Lc; //Coeficiente convectivo externo placa 1 (W/m²°C)
- double hconv2 = Nu2 * Kar / Lc; //Coeficiente convectivo externo placa 2 (W/m²°C)
- //Quantidade de calor perdida por convecção com o ar:
- double Qconv1 = hconv1 * Aes * (Tw1 - Temp_Ambiente); //Calor perdido na placa 1 p/ ar (W)
- double Qconv2 = hconv1 * Aes * (Tw2 - Temp_Ambiente); //Calor perdido na placa 2 p/ ar (W)
- //**********************************************Fim Do calculo do coef. convectivo com o ar************************************************************
- //Fluxo de Calor por Radiação solar:
- double Qsolar = Rad * Aes * 0.9; //Calor que entra no sistema (W)
- //Perda de calor por irradiação:
- double TaK = Temp_Ambiente + 273.15;
- double Tw1K = Tw1 + 273.15;
- double Tw2K = Tw2 + 273.15;
- double Qrad1 = 5.6697 * pow(10, (-8.0)) * Aes * 0.95 * ((pow(Tw1K, 4.0)) - (pow((0.0552 * pow(TaK, 1.5)), 4.0)));
- double Qrad2 = 5.6697 * pow(10, (-8.0)) * Aes * 0.95 * ((pow(Tw2K, 4.0)) - (pow((0.0552 * pow(TaK, 1.5)), 4.0)));
- //Vel_Ventoocidade agua no interior do tubo:
- double Vagua = Va / (pow(0.0195, 2.0) * Pi * 0.25); //Vel_Ventoocidade de escoamento água nos tubos //(m/s)
- //Temeperaturas acessorias para os calculos:
- double Twi1 = Tw1 - (((Qsolar * 0.35 * log(0.0225 / 0.0195)) / (2 * Pi * 100 * 0.17))); //Temperatura interna da parede tubo 1
- double Twi2 = Tw2 - (((Qsolar * 0.35 * log(0.0225 / 0.0195)) / (2 * Pi * 100 * 0.17))); //Temperatura interna da parede tubo 2
- double Tm1 = (Te1 + Ts1) * 0.5; //Temperatura média da água placa 1
- double Tm2 = (Ts1 + Ts2) * 0.5; //Temperatura média da água placa 2
- //*****************Curvas para cálculo dos elementos das caracteristicas físico-quimicas da água:*********************************************
- //Massa Especifica da água (kg/m³) :
- double Rou1 = ((0.0035) * Tm1 * Tm1) - 0.0722 * Tm1 + 1000.7;
- double Rou2 = ((0.0035) * Tm2 * Tm2) - 0.0722 * Tm2 + 1000.7;
- //Viscosidade dianamica da água ud1 (Pa.s):
- double ud1 = (-2.0 * pow(10, - 9.0) * pow(Tm1, 3.0)) + (6 * pow(10.0, - 7.0) * pow(Tm1, 2.0)) - (5 * pow(10, - 5.0) * Tm1) + 0.0017;
- double ud2 = (-2.0 * pow(10, - 9.0) * pow(Tm2, 3.0)) + (6 * pow(10.0, - 7.0) * pow(Tm2, 2.0)) - (5 * pow(10, - 5.0) * Tm2) + 0.0017;
- //Condutibilidade termica da água(W/m°C) :
- double Ka1, Ka2;
- Ka1 = 1 * pow(10, -8.0) * pow(Tm1, 3.0) - 9 * pow(10, -6.0) * pow(Tm1, 2.0) + 0.002 * (Tm1) + 0.5604;
- Ka2 = 1 * pow(10, -8.0) * pow(Tm2, 3.0) - 9 * pow(10, -6.0) * pow(Tm2, 2.0) + 0.002 * (Tm2) + 0.5604;
- //Capacidade termica da água(J/kg°C):
- double Cp1 = ((9 * pow(10, -5.0)) * pow(Tm1, 3.0)) + (0.0291 * pow(Tm1, 2.0)) - (1.9549 * Tm1) + 4210.2;
- double Cp2 = ((9 * pow(10, -5.0)) * pow(Tm2, 3.0)) + (0.0291 * pow(Tm2, 2.0)) - (1.9549 * Tm2) + 4210.2;
- //Numero de Prandl da água:
- double Prh1 = Cp1 * ud1 / Ka1;
- double Prh2 = Cp2 * ud2 / Ka2;
- //Viscosidade dianamica da água a temperatura da parede do tubo:
- double ut1 = ((-2 * pow(10, - 9.0)) * pow(Twi1, 3.0) + ((6 * pow(10, -7.0)) * pow(Twi1, 2.0)) - (5 * pow(10, - 5.0) * Twi1)) + 0.0017;
- double ut2 = ((-2 * pow(10, - 9.0)) * pow(Twi2, 3.0) + ((6 * pow(10, -7.0)) * pow(Twi2, 2.0)) - (5 * pow(10, - 5.0) * Twi2)) + 0.0017;
- //Número de Reynolds no interior do tubo:
- double rey2, rey1;
- rey1 = (Vagua * 0.0195 * Rou1) / (ud1); //Tubo 1
- rey2 = (Vagua * 0.0195 * Rou2) / (ud2); //Tubo 2
- //Definição do coeficiente de atrito por Colebrook placa 1 - equação implicita
- double F01 = 0.3164 * pow(rey1, -0.25);
- double erro1 = 1;
- do {
- double func1, dfunc1, f1;
- func1 = 1 / pow(F01, 0.5) + 2 * log(Ed / 3.72 + 2.51 / (rey1 * pow(F01, 0.5))) / log(10);
- dfunc1 = -2.51 / (log(10) * pow(F01, (3 / 2)) * rey1 * (Ed / 3.72 + 2.51 / (rey1 * pow(F01, 0.5)))) - 1 / (2 * pow(F01, (3.0 / 2.0)));
- f1 = F01 - func1 / dfunc1;
- erro1 = abs(F01 - f1);
- F01 = f1;
- } while (erro1 <= 0.00000000000000000000000001);
- // Definição do coeficiente de atrito por Colebrook placa 2 - equação implicita/////////////////////////////
- double F02 = 0.3164 * pow(rey2, -0.25);
- double erro2 = 1;
- do {
- double func2, dfunc2, f2;
- func2 = 1 / pow(F02, 0.5) + 2 * log(Ed / 3.72 + 2.51 / (rey2 * pow(F02, 0.5))) / log(10);
- dfunc2 = -2.51 / (log(10) * pow(F02, (3 / 2)) * rey2 * (Ed / 3.72 + 2.51 / (rey2 * pow(F02, 0.5)))) - 1 / (2 * pow(F02, (3.0 / 2.0)));
- f2 = F02 - func2 / dfunc2;
- erro2 = abs(F02 - f2);
- F02 = f2;
- } while (erro2 <= 0.00000000000000000000000001);
- //Calculo do Nussfelt no interior do tubo 1:
- double a1, a2, b1, b2, c1, c2, d1, d2, Nus1, Nus2, Nus1c, Nus2c;
- a1 = (F01 / 8.0);
- b1 = (rey1 - 1000) * Prh1;
- c1 = 12.7 * ((pow((F01 / 8.0), 0.5)) * ((pow(Prh1, (2.0 / 3.0))) - 1));
- d1 = (ud1 / ut1);
- a2 = (F02 / 8);
- b2 = (rey2 - 1000.0) * Prh2;
- c2 = 12.7 * ((pow((F02 / 8.0), 0.5)) * ((pow(Prh2, (2.0 / 3.0))) - 1));
- d2 = (ud2 / ut2);
- if (rey1 <= 2200) {
- Nus1 = 3.657;
- }
- else(rey1 > 2200); {
- Nus1 = ((a1 * b1) / (c1)) * d1;
- }
- if (rey2 <= 2200) {
- Nus2 = 3.657;
- }
- else(rey2 > 2200); {
- Nus2 = ((a2 * b2) / (c2)) * d2;
- }
- //Nusfelt corrigido para serpentina:
- Nus1c = 1.0 + 3.4 * (2 * 0.0195 / 1.71) * Nus1;
- Nus2c = 1.0 + 3.4 * (2 * 0.0195 / 1.71) * Nus2;
- //Coeficiente de troca de calor no interior dos tubos:
- double h1, h2;
- h1 = Nus1c * Ka1 / 0.0195;
- h2 = Nus2c * Ka2 / 0.0195;
- //Fluxo de calor no interior dos tubos:
- double Q1, Q2;
- Q1 = h1 * Aes * (Twi1 - Tm1);
- Q2 = h2 * Aes * (Twi2 - Tm2);
- //Fluxo de calor por condução:
- const double lt = 0.006; //expessura telha
- const double kT = 0.35; //coef de cond. telha
- double Q1cond = kT * Aes * (Ti1 - Temp_Ambiente) / lt;
- double Q2cond = kT * Aes * (Ti2 - Temp_Ambiente) / lt;
- //Coeficiente de troca de calor por condução:
- double hcond = kT / lt;
- //Calculo do calor util pela Vazao_h2o massica:
- double Vmass1 = Va * Rou1; //Vazao_h2o massica 1
- double Vmass2 = Va * Rou2; //Vazao_h2o massica 2
- double Qvm1;
- double Qvm2;
- //Calculo do Coeficiente Global metodo 1:
- double U1 = 1 / ((1 / hconv1) + ((Ae * log(de0 / di0)) / (2 * Pi * L * Kp)) + ((Ae / h1 * Ai)));
- double U2 = 1 / ((1 / hconv2) + ((Ae * log(de0 / di0)) / (2 * Pi * L * Kp)) + ((Ae / h2 * Ai)));
- double QU1 = U1 * (Aes) * (((Tw1 - Te1) - (Tw1 - Ts1)) / log((Tw1 - Te1) / (Tw1 - Ts1)));
- double QU2 = U2 * (Aes) * (((Tw2 - Ts1) - (Tw2 - Ts2)) / log((Tw2 - Ts1) / (Tw2 - Ts2)));
- double T1 = Ts1;
- double T2 = Ts2;
- double TS2;
- double Vm1, Vm2, MLDT1, MLDT2, TS1, Vm1a, Vm2a, MLDT1a, MLDT2a, Te2, U1a, U2a, TS1a, TS2a;
- double diferenca = 1;
- double erroa = 1;
- double errob = 1;
- int i;
- int j;
- double Vazao_testeconv;
- double Qmaximo;
- for (double Vazao_teste = 0.0000167; Vazao_teste < 0.0010000000000000; Vazao_teste = Vazao_teste + 0.00000835) {
- double vaz = Vazao_teste;
- do {
- do {
- Tm1 = (T1 + Te1) / 2.0;
- Cp1 = (((-9 * pow(10, -5.0)) * pow(Tm1, 3.0)) + (0.0291 * pow(Tm1, 2.0)) - 1.9549 * Tm1) + 4210.3;
- Rou1 = ((0.0035) * pow(Tm1, 2.0) - 0.0722 * Tm1 + 1000.7);
- Vm1 = vaz * Rou1;
- MLDT1 = ((Tw1 - Te1) - (Tw1 - T1)) / log((Tw1 - Te1) / (Tw1 - T1));
- TS1 = (((U1 * At * MLDT1)) / (Vm1 * Cp1)) + Te1;
- erroa = abs(T1 - TS1);
- T1 = TS1;
- Te2 = T1;
- Tm2 = (Te2 + T2) / 2.0;
- Cp2 = (((-9 * pow(10, -5.0)) * pow(Tm2, 3.0)) + (0.0291 * pow(Tm2, 2.0)) - 1.9549 * Tm2) + 4210.3;
- Rou2 = ((0.0035) * pow(Tm2, 2.0) - 0.0722 * Tm2 + 1000.7);
- Vm2 = vaz * Rou2;
- MLDT2 = ((Tw2 - Te2) - (Tw2 - T2)) / log((Tw2 - Te2) / (Tw2 - T2));
- TS2 = (((U2 * (At) * MLDT2)) / (Vm2 * Cp2)) + Te2;
- erroa = abs(T2 - TS2);
- T2 = TS2;
- } while (erroa >= 0.01 && errob >= 0.01);
- double Vaguaa = vaz / (pow(0.0195, 2.0) * Pi * 0.25);
- Tm1 = (Te1 + T1) * 0.5;
- Tm2 = (T1 + T2) * 0.5;
- ud1 = (-2.0 * pow(10, - 9.0) * pow(Tm1, 3.0)) + (6 * pow(10.0, - 7.0) * pow(Tm1, 2.0)) - (5 * pow(10, - 5.0) * Tm1) + 0.0017;
- ud2 = (-2.0 * pow(10, - 9.0) * pow(Tm2, 3.0)) + (6 * pow(10.0, - 7.0) * pow(Tm2, 2.0)) - (5 * pow(10, - 5.0) * Tm2) + 0.0017;
- Ka1 = 1 * pow(10, -8.0) * pow(Tm1, 3.0) - 9 * pow(10, -6.0) * pow(Tm1, 2.0) + 0.002 * (Tm1) + 0.5604;
- Ka2 = 1 * pow(10, -8.0) * pow(Tm2, 3.0) - 9 * pow(10, -6.0) * pow(Tm2, 2.0) + 0.002 * (Tm2) + 0.5604;
- Prh1 = Cp1 * ud1 / Ka1;
- Prh2 = Cp2 * ud2 / Ka2;
- rey1 = (Vaguaa * 0.0195 * Rou1) / (ud1);
- rey2 = (Vaguaa * 0.0195 * Rou2) / (ud2);
- do {
- double func1, dfunc1, f1;
- func1 = 1 / pow(F01, 0.5) + 2 * log(Ed / 3.72 + 2.51 / (rey1 * pow(F01, 0.5))) / log(10);
- dfunc1 = -2.51 / (log(10) * pow(F01, (3 / 2)) * rey1 * (Ed / 3.72 + 2.51 / (rey1 * pow(F01, 0.5)))) - 1 / (2 * pow(F01, (3.0 / 2.0)));
- f1 = F01 - func1 / dfunc1;
- erro1 = abs(F01 - f1);
- F01 = f1;
- } while (erro1 <= 0.0000000000000000000001);
- double F02 = 0.3164 * pow(rey2, -0.25);
- double erro2 = 1;
- do {
- double func2, dfunc2, f2;
- func2 = 1 / pow(F02, 0.5) + 2 * log(Ed / 3.72 + 2.51 / (rey2 * pow(F02, 0.5))) / log(10);
- dfunc2 = -2.51 / (log(10) * pow(F02, (3 / 2)) * rey2 * (Ed / 3.72 + 2.51 / (rey2 * pow(F02, 0.5)))) - 1 / (2 * pow(F02, (3.0 / 2.0)));
- f2 = F02 - func2 / dfunc2;
- erro2 = abs(F02 - f2);
- F02 = f2;
- } while (erro2 <= 0.0000000000000000000000001);
- a1 = (F01 / 8.0);
- b1 = (rey1 - 1000) * Prh1;
- c1 = 12.7 * ((pow((F01 / 8.0), 0.5)) * ((pow(Prh1, (2.0 / 3.0))) - 1));
- d1 = (ud1 / ut1);
- a2 = (F02 / 8);
- b2 = (rey2 - 1000.0) * Prh2;
- c2 = 12.7 * ((pow((F02 / 8.0), 0.5)) * ((pow(Prh2, (2.0 / 3.0))) - 1));
- d2 = (ud2 / ut2);
- if (rey1 <= 2200) {
- Nus1 = 3.657;
- }
- else(rey1 > 2200); {
- Nus1 = ((a1 * b1) / (c1)) * d1;
- }
- if (rey2 <= 2200) {
- Nus2 = 3.657;
- }
- else(rey2 > 2200); {
- Nus2 = ((a2 * b2) / (c2)) * d2;
- }
- Nus1c = 1.0 + 3.4 * (2 * 0.0195 / 1.71) * Nus1;
- Nus2c = 1.0 + 3.4 * (2 * 0.0195 / 1.71) * Nus2;
- h1 = Nus1c * Ka1 / 0.0195;
- h2 = Nus2c * Ka2 / 0.0195;
- U1 = 1 / (((1 / hconv1) + ((Ae * log(de0 / di0)) / (2 * Pi * L * Kp)) + ((Ae / h1 * Ai))));
- U2 = 1 / (((1 / hconv2) + ((Ae * log(de0 / di0)) / (2 * Pi * L * Kp)) + ((Ae / h2 * Ai))));
- TS1a = ((U1 * Ae * MLDT1) / (Vm1 * Cp1)) + Te1;
- TS2a = ((U2 * Ae * MLDT2) / (Vm2 * Cp2)) + Te2;
- diferenca = abs(TS2a - T2);
- T1 = TS1a;
- T2 = TS2a;
- Qmaximo = ((Vm1 * Cp1 * pow((T1 - Te1), 3.0)) + (Vm2 * Cp2 * pow((T2 - T1), 3.0)));
- Vazao_testeconv = Vazao_teste * 59880.00;
- } while (diferenca >= 0.01);
- // Serial.print("DATA,TIME,");
- // delay(100);
- Serial.print((Vazao_testeconv), 2);
- // delay(100);
- Serial.print(" , ");
- // delay(100);
- Serial.print(U1, 4);
- // delay(100);
- Serial.print(" , ");
- // delay(100);
- Serial.print(U2, 4);
- // delay(100);
- Serial.print(" , ");
- // delay(100);
- Serial.print(T1, 4);
- // delay(100);
- Serial.print(" , ");
- // delay(100);
- Serial.print(T2, 4);
- // delay(100);
- Serial.print(" , ");
- // delay(100);
- Serial.print(Qmaximo, 4);
- Serial.println(" , ");
- }
- }
- void loop() {
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement