SharedTareas / Tarea 4.1 | Psicrometría, humidificación.sagewsOpen in CoCalc
Soluciones a Tareas Masa 2

Problema N° 1

Referencia: Problema 19.1 McCabe (2002)

Un método de separar acetona de acetato de celulosa consiste en pasar una corriente de aire sobre las fibras de acetato de celulosa. Para conocer las propiedades de las mezclas aire-acetona, el departamento de control de proceso necesita una gráfica de humedad para el sistema aire-acetona. Después de una investigación, se encontró que sería satisfactorio un intervalo de humedad de 0 a 6.0 kg/kg y de temperatura de 5 °C a 55 °C. Trace las siguientes regiones de una gráfica de humedad para el sistema aire-acetona a la presión total de 101,325 kPa.

  1. [2 pto] Líneas de humedad porcentual para 50 % y 100 %
  2. [2 pto] Volumen saturado contra temperatura
  3. [1 pto] Calor latente de la acetona contra temperatura
  4. [1 pto] Calor húmedo contra humedad
  5. [3 pto] Líneas de enfriamiento adiabático para temperaturas de saturación adiabática de 20 °C y 40 °C
  6. [3 pto] Líneas de temperatura de bulbo húmedo de 20 °C y 40 °C.

Los datos necesarios son:

Para el vapor de acetona, Cp = 1.47 kJ/(kg K) y h/(MBky) = 1.7 kJ/(kg K)

html('<h2>Solución</h2>')

########## Datos de equilibrio
datos_t1     =  [ 10 ,   20  ,  30  ,  40  ,  50  ,  56.1,  60  ,   70  ,   80  ]   # °C
datos_pvap   =  [115.6, 179.6, 281.0, 420.1, 620.9, 760.0, 860.5, 1189.4, 1611.0]   # mmHg
datos_t2     =  [  0,  20,  40, 56.1,  60,  80]        # °C
datos_lambda =  [564, 552, 536, 521 , 517, 495]        # kJ/kg

########## Datos del enunciado
Yp_min       =    0         # kg/kg
Yp_max       =    6         # kg/kg
t_min        =    5         # °C
t_max        =   55         # °C
p_t          =  101.325     # kPa

C_pAG        =    1.47      # kJ/(kg K)
h_div_MBky   =    1.7       # kJ/(kg K)

########## Datos adicionales
M_A          =   58.08      # acetona
M_B          =   28.97      # aire
R            =    8.314     # [kJ/(kmol K)]
t_0          =    0.01      # [°C]

C_pBG(t)      =  R/M_B * (3.355 + 0.575*10^-3*(t+273.15) - 0.016*10^ 5/(t+273.15)^2) # [kJ/(kmol K)]


########## Ajuste de datos
# Conversión de unidades
datos_pvap   =  [p_mmHg * 101.325/760 for p_mmHg in datos_pvap]   # kPa

# Unir los valores en pares
datos_tpv    =  zip(datos_t1, datos_pvap)
datos_tlam   =  zip(datos_t2, datos_lambda)

# Ajuste a un modelo
%var  a0, a1, a2, a3, a4
modelo(t)    =  a0 + a1*t + a2*t^a3
ajuste       =  find_fit (datos_tpv, modelo, solution_dict = True)
p_A_sat(t)   =  modelo(a0 = ajuste[a0], a1 = ajuste[a1], a2 = ajuste[a2], a3 = ajuste[a3])

# Los spline son útiles para interpolar pero no permiten extrapolar
p_vap        =  spline(datos_tpv)
lambda_      =  spline(datos_tlam)
lambda_0     =  lambda_(t_0)

########## Funciones
%var   t, Yp
Y_p  (t, pt)     =  p_A_sat(t)/(p_t-p_A_sat(t))*M_A/M_B                # [kg/kg]
Y_s  (t, pt)     =  M_A*p_A_sat(t)/(M_B*(pt-p_A_sat(t)))               # [kg/kg]
C_s  (t, Yp)     =  C_pBG(t) + C_pAG*Yp                                # [kJ/(kg K)]
H    (t, Yp)     =  C_s(t, Yp) * (t-t_0) + lambda_0 * Yp               # [kJ/kg]
H_s  (t, pt)     =  C_s(t, Y_s(t,pt)) * (t-t_0) + lambda_0 * Y_s(t,pt) # [kJ/kg]
v_H  (t, Yp, pt) =  R*(t+273.15)/pt * (1/M_B+Yp/M_A)                   # [m³/kg]


# ************************** SOLUCIÓN **************************
COLOR=sorted(colors)

########## a) Líneas de humedad porcentual para 50 % y 100 %
Y_P1      = 0.50
Y_P2      = 1.00
gr_YP50   =  plot(Y_P1 * Y_s(t, p_t), t_min, t_max, legend_label="50 %" , color='blue')
gr_YP100  =  plot(Y_P2 * Y_s(t, p_t), t_min, t_max, legend_label="100 %", color='green')
gr_YP     =  gr_YP50 + gr_YP100
gr_YP.show(title='Humedad porcentual', ymin=Yp_min, ymax=Yp_max, axes_labels=['$t$/($\degree$C)', '$Y\'$/(kg/kg)'], figsize=(6,4))

########## b) Volumen saturado
v_sat(t, pt)  =  v_H (t, Y_s(t, pt), pt)
gr_vsat   =  plot(v_sat(t, p_t), xmin=t_min, xmax=t_max, axes_labels = ['$t$/($\degree$C)', '$v_s$/(m^3/kg)'], figsize=(6,4))

gr_vsat.show(title = 'Volumen saturado')

########## c) Calor latende de la acetona
gr_lambda =  plot(lambda_, t_min, t_max, axes_labels = ['$t$/($\degree$C)', '$\lambda$/(kJ/kg)'])
gr_lambda.show(title = 'Calor latende de la acetona', figsize=(6,4))

########## d) Calor húmedo
gr_calhum = plot(C_pBG(t_0) + C_pAG*Yp, xmin=Yp_min, xmax=Yp_max, axes_labels = ['$Y\'$/(kg/kg)', '$C_s$/(kJ/kg K)'], figsize=(6,4))
gr_calhum.show(title = 'Calor h\'umedo')

########## e) Líneas de enfriamiento adiabático de 20 °C y 40 °C
#N         =  11       # Número de puntos de cálculo
#lista_tsa =  [t_min + (t_max-t_min)/(N-1) * i for i in range(N)]
#lista_Ysa =  [Y_s(tsa, p_t) for tsa in lista_tsa]
t_sa1     =  20    # °C
t_sa2     =  40    # °C

Yp_1(t)    =  (lambda_(t_sa1)*Y_s(t_sa1,p_t) - C_pBG*(t-t_sa1))/(C_pAG*(t-t_sa1) + lambda_(t_sa1))
Yp_2(t)    =  (lambda_(t_sa2)*Y_s(t_sa2,p_t) - C_pBG*(t-t_sa2))/(C_pAG*(t-t_sa2) + lambda_(t_sa2))

gr_tsa20   =  plot(Yp_1, t_sa1, t_max, legend_label="$t_{sa} = $"+str(t_sa1)+" $\degree$C" , color='blue')
gr_tsa40   =  plot(Yp_2, t_sa2, t_max, legend_label="$t_{sa} = $"+str(t_sa2)+" $\degree$C" , color='red')
gr_tsa     =  gr_YP100 + gr_tsa20 + gr_tsa40
gr_tsa.show(title = 'L\'ineas de enfriamiento adiab\'atico', xmin= t_min, ymin=Yp_min, ymax=3, axes_labels=['$t$/($\degree$C)', '$Y\'$/(kg/kg)'], figsize=(6,4))

########## f) Líneas de temperatura de bulbo húmedo de 20 °C y 40 °C
t_w1       =  20    # °C
t_w2       =  40    # °C

Yw_1(t)    =  (Y_s(t_w1,p_t) - h_div_MBky/lambda_(t_w1) *(t-t_w1))
Yw_2(t)    =  (Y_s(t_w2,p_t) - h_div_MBky/lambda_(t_w2) *(t-t_w2))

gr_tw20    =  plot(Yw_1, t_w1, t_max, legend_label="$t_{w} = $"+str(t_w1)+" $\degree$C" , color='purple')
gr_tw40    =  plot(Yw_2, t_w2, t_max, legend_label="$t_{w} = $"+str(t_w2)+" $\degree$C" , color='orange')
gr_tw      =  gr_YP100 + gr_tw20 + gr_tw40
#gr_tw.show(title = 'L\'ineas de temperatura de bulbo h\'umedo', xmin= t_min, ymin=Yp_min, ymax=3, axes_labels=['$t$/($\degree$C)', '$Y\'$/(kg/kg)'], figsize=(6,4))

gr_twsa = gr_tw + gr_tsa
gr_twsa.show(title = 'L\'ineas de temperatura de bulbo h\'umedo y sat adiab', xmin= t_min, ymin=Yp_min, ymax=3, axes_labels=['$t$/($\degree$C)', '$Y\'$/(kg/kg)'], figsize=(6,4))

Solución

Problema N° 2

Referencia: Problema 19.3 McCabe (2002)

Una torre de enfriamiento a contracorriente con relleno celular de 76 cm fue diseñada para una temperatura de aproximación de 6 °C y un intervalo de enfriamiento de 9 °C cuando la temperatura de bulbo húmedo es de 24 °C. La sección transversal de la torre es de 11 m * 11 m, y las velocidades de los flujos de aire y agua son 14 810 m³/min a 32 °C y 22.7 m³/min.

  1. [8 pto] ¿Cuál es la entalpía del aire a la entrada y la variación de entalpía a través de la torre?
  2. [4 pto] Calcule NTU y HTU para estas condiciones.
  3. [8 pto] ¿Cuánto relleno más sería necesario si la temperatura del bulbo húmedo fuera de 26 °C y la temperatura de aproximación fuera de 4 °C?

html('<h2>Solución</h2>')

########## Datos del enunciado
H_c             =   76     # cm
D_t_aprox       =    6     # °C
Delta_tL        =    9     # °C
t_w             =   24     # °C
A_c             =  11*11   # m²
q_G_entra       =  14810   # m³/min
t_G_entra       =   32     # °C
q_L_entra       =   22.7   # m³/min

########## Datos adicionales
p_t             =  101.325     # kPa
R               =    8.314     # kJ/(kmol K)
t_0             =    0.01      # °C
N_Le            =    0.855
M_A             =   18.01   # agua
M_B             =   28.84   # aire

lambda_A(t)     = 2501.6 + 2.2908456564*t-0.0015914753*t^2    # [kJ/kg]

C_pAL(t)        = R/M_A * (8.712 + 1.25 *10^-3*(t+273.15) - 0.18 *10^-6*(t+273.15)^2) # [kJ/(kg K)]
C_pAG(t)        = R/M_A * (3.470 + 1.450*10^-3*(t+273.15) + 0.121*10^ 5/(t+273.15)^2) # [kJ/(kg K)]
C_pBG(t)        = R/M_B * (3.355 + 0.575*10^-3*(t+273.15) - 0.016*10^ 5/(t+273.15)^2) # [kJ/(kg K)]

# Constantes de Antoine para el agua, [0.01 °C a 100 °C], log10 P_sat/kPa = A - B / (t/°C + C)
A               =    7.110969267248
B               = 1681.106698364
C               =  229.2939885035
p_A_sat(t)      =   10^(A-B/(t+C)) # [kPa]

########### Funciones
C_s(t, Y)       =  C_pBG(t) + C_pAG(t)*Y
Y_s(t, p)       =  M_A*p_A_sat(t)/(M_B*(p-p_A_sat(t)))
H(t,Y)          =  C_s(t, Y) * (t-t_0) + lambda_A(t_0) * Y
H_s(t,p)        =  C_s(t, Y_s(t,p)) * (t-t_0) + lambda_A(t_0) * Y_s(t, p)
v_H(t,Y,p)      =  R*(t+273.15)/p * (1/M_B+Y/M_A)

########## Condiciones del líquido
rho_L           =  997    # kg/m³
t_L_sale        =  t_w + D_t_aprox       # °C
t_L_entra       =  t_L_sale + Delta_tL   # °C
L_entra         =  q_L_entra*rho_L/A_c         # kg/(m² min)

########## Condiciones del aire
Y_w             =  Y_s(t_w, p_t)
Y_entra         =  Y_w - (t_G_entra - t_w)*N_Le^(2/3)*C_pBG(t_G_entra)/lambda_A(t_w)
C_s_entra       =  C_s(t_G_entra, Y_entra)
H_entra         =  H(t_G_entra,Y_entra)
v_H_entra       =  v_H(t_G_entra, Y_entra, p_t)
G_s             =  q_G_entra/(v_H_entra * A_c)

# Línea de operación
H_G(tL)         =  L_entra*C_pAL(tL)/G_s * (tL-t_L_sale) + H_entra
H_sale          =  H_G(t_L_entra)


print "***** Parte a *****"
print "tL_sale  = %8.3f" %t_L_sale, "°C"
print "tL_entra = %8.3f" %t_L_entra, "°C"
print "L'_entra = %8.3f" %L_entra, "kg/(m² min)"
print "Y'_w     = %8.3f" %Y_w, "kg/kg"
print "Y'_entra = %8.3f" %Y_entra, "kg/kg"
print "Cs_entra = %8.3f" %C_s_entra, "kJ/(kg K)"
print "H'_entra = %8.3f" %H_entra, "kJ/kg"
print "vH_entra = %8.3f" %v_H_entra, "m³/kg"
print "G's      = %8.3f" %G_s, "kg/(m² min)"
print "H'_sale  = %8.3f" %H_sale, "kJ/kg"
print "Delta H  = %8.3f" %(H_sale-H_entra), "kJ/kg"

print ""
print "***** Parte b *****"
########## NTU y HTU
%var t

plot(H_s(t,p_t), xmin = min(t_L_sale,t_G_entra)-5 , xmax = t_L_entra+2, legend_label = "$H\'_s(t)$", axes_labels=['$t$/($\degree$C)','$H\'_G$/(kJ/kg)']) \
    + line([(t_L_sale, H_entra),(t_L_entra, H_G(t_L_entra,L_entra, G_s))], color = 'purple', legend_label = "$H\'_G (t_L)$", figsize=(6,4))

# Paso f(H) --> g(t)
g(t)            =  derivative(H_G(t,L_entra, G_s)) / (H_s(t,p_t)-H_G(t,L_entra, G_s))
integral_g      =  numerical_integral(g, t_L_sale, t_L_entra)

# *********** Resultados, parte b) ********************************************************
plot(g, xmin = t_L_sale, xmax = t_L_entra, axes_labels = ['$t$/($\degree$C)', r'$\frac{d H\'(t)}{H^{*}-H}$'], fill = 'axis', color = 'red', figsize=(6,4))
print "Se hace cambio de variable para integrar más fácilmente en función de t en vez de H\'"

N_tOG           =  integral_g[0]
H_tOG           =  H_c/N_tOG           # cm

print ""
print "NTU = N_tOG = %8.3f" %N_tOG
print "HTU = H_tOG = %8.3f cm = %5.2f m" %(H_tOG, H_tOG/100)

print ""
print "***** Parte c *****"

t_w             =   26     # °C
D_t_aprox       =    4     # °C

########## Nuevas condiciones del líquido
t_L_sale        =  t_w + D_t_aprox       # °C
t_L_entra       =  t_L_sale + Delta_tL   # °C
L_entra         =  q_L_entra*rho_L/A_c         # kg/(m² min)

########## Nuevas condiciones del aire
Y_w             =  Y_s(t_w, p_t)
Y_entra         =  Y_w - (t_G_entra - t_w)*N_Le^(2/3)*C_pBG(t_G_entra)/lambda_A(t_w)
C_s_entra       =  C_s(t_G_entra, Y_entra)
H_entra         =  H(t_G_entra,Y_entra)
v_H_entra       =  v_H(t_G_entra, Y_entra, p_t)
G_s             =  q_G_entra/(v_H_entra * A_c)

########## Nueva línea de operación
H_G(tL)         =  L_entra*C_pAL(tL)/G_s * (tL-t_L_sale) + H_entra
H_sale          =  H_G(t_L_entra)

print "tL_sale  = %8.3f °C" %t_L_sale
print "tL_entra = %8.3f °C" %t_L_entra
print "Y'_w     = %8.3f kg/kg" %Y_w
print "Y'_entra = %8.3f kg/kg" %Y_entra
print "Cs_entra = %8.3f kJ/(kg K)" %C_s_entra
print "H'_entra = %8.3f kJ/kg" %H_entra
print "vH_entra = %8.3f m³/kg" %v_H_entra
print "G's      = %8.3f kg/(m² min)" %G_s

########## Nuevo NTU
plot(H_s(t,p_t), xmin = min(t_L_sale,t_G_entra)-5 , xmax = t_L_entra+2, legend_label = "$H\'_s(t)$", axes_labels=['$t$/($\degree$C)','$H\'_G$/(kJ/kg)']) \
    + line([(t_L_sale, H_entra),(t_L_entra, H_G(t_L_entra,L_entra, G_s))], color = 'purple', legend_label = "$H\'_G (t_L)$", figsize=(6,4))

# Paso f(H) --> g(t)
g(t)            =  derivative(H_G(t,L_entra, G_s)) / (H_s(t,p_t)-H_G(t,L_entra, G_s))
integral_g      =  numerical_integral(g, t_L_sale, t_L_entra)

plot(g, xmin = t_L_sale, xmax = t_L_entra, axes_labels = ['$t$/($\degree$C)', r'$\frac{d H\'(t)}{H^{*}-H}$'], fill = 'axis', color = 'red', figsize=(6,4))

N_tOG           =  integral_g[0]
H_c_nueva       =  N_tOG * H_tOG
Delta_Z         =  H_c_nueva - H_c

print ""
print "NTU = N_tOG = %7.4g" %N_tOG
print "Nueva H_c   = %7.4g cm" %H_c_nueva
print "Diferencia  = %7.4g cm" %Delta_Z


Solución

***** Parte a ***** tL_sale = 30.000 °C tL_entra = 39.000 °C L'_entra = 187.040 kg/(m² min) Y'_w = 0.019 kg/kg Y'_entra = 0.016 kg/kg Cs_entra = 1.043 kJ/(kg K) H'_entra = 73.526 kJ/kg vH_entra = 0.891 m³/kg G's = 137.446 kg/(m² min) H'_sale = 124.889 kJ/kg Delta H = 51.363 kJ/kg ***** Parte b *****
Se hace cambio de variable para integrar más fácilmente en función de t en vez de H' NTU = N_tOG = 1.829 HTU = H_tOG = 41.560 cm = 0.42 m ***** Parte c ***** tL_sale = 30.000 °C tL_entra = 39.000 °C Y'_w = 0.021 kg/kg Y'_entra = 0.019 kg/kg Cs_entra = 1.049 kJ/(kg K) H'_entra = 81.736 kJ/kg vH_entra = 0.895 m³/kg G's = 136.762 kg/(m² min)
NTU = N_tOG = 2.621 Nueva H_c = 108.9 cm Diferencia = 32.91 cm