はじめに
暮らしのお金を試算するサイト「いくらかかるの研究所」に、除湿機で1日にたまる水の量を計算するツールを作りました。
きっかけは、Yahoo!知恵袋の「5畳の高気密の部屋を湿度50%に保ちたい。タンクは何L、除湿能力は何Lがいい?」という質問でした。
カタログには「木造〇畳」という目安はありますが、自分の部屋で1日に何リットル取れるかはわかりません。そこで、住宅省エネ基準の公的な計算方法(建築研究所)の気象データと湿度の式を使って計算しました。
モデル:1日に取る水の量
部屋の湿度を目標に保つとき、除湿機が1日に取る水の量は次のとおりです。
取る水の量 [kg/日] = 空気の密度 × 換気量 × 24時間 ×(外気の日平均の絶対湿度 − 目標の絶対湿度)+ 人・部屋干しなどの湿気
| 項目 | 値 | 出典 |
|---|---|---|
| 空気の密度 | 1.2 kg/m³ | 算定方法 第四章第二節(pyhees get_rho_air) |
| 換気量 | 畳数 × 1.62m² × 天井 2.4m × 換気回数 | 天井高さは第五章の参照天井高さ、換気回数の初期値 0.5回/時は建築基準法のシックハウス対策 |
| 外気の絶対湿度 | 地域区分ごとの気象データ(1時間ごと・1年分)の日平均 | 第十一章第一節 |
| 人の湿気 | 1人 40W(潜熱) | 第四章第二節(pyhees get_q_p_CL) |
- 40Wを水の蒸発潜熱(2500.8 − 2.3668 × 27 kJ/kg、pyhees
get_L_wtr)で割ると、1人1時間あたり約59gです - 外の空気のほうが乾いている日はマイナスになります。その場合は、換気で湿気が出ていくので0にしています
「除湿しないと部屋が何%になるか」も同じ式から出せます。入ってくる外気の湿気と人の湿気が、換気で出ていく量とつり合うところです。
const xNone = clim.x[d] + gen / airKgPerDay; // 除湿しないときの絶対湿度
const rhNone = Math.min(100, rhFromX(xNone, tempC)); // 室温での相対湿度
湿度の式を TypeScript に移植する
気象データは相対湿度で持っているので、絶対湿度に直す式が必要です。算定方法 第十一章第五節(pyhees section11_5)の式をそのまま移しました。飽和水蒸気圧は、0℃より高いときは水、0℃以下は氷に対する式を使い分けます。
const F = 101325; // 大気圧 [Pa]
/** 飽和水蒸気圧 [Pa] */
export function pvs(theta: number): number {
const T = theta + 273.16;
const k =
theta > 0
? -6096.9385 / T + 21.2409642 - 0.02711193 * T + 0.00001673952 * T * T + 2.433502 * Math.log(T)
: -6024.5282 / T + 29.32707 + 0.010613863 * T - 0.000013198825 * T * T - 0.49382577 * Math.log(T);
return Math.exp(k);
}
/** 温度 [℃] と相対湿度 [%] から絶対湿度 [kg/kg(DA)] */
export function xFromRh(theta: number, rh: number): number {
const pv = (pvs(theta) * rh) / 100;
return (0.622 * pv) / (F - pv);
}
/** 絶対湿度 [kg/kg(DA)] と温度 [℃] から相対湿度 [%] */
export function rhFromX(x: number, theta: number): number {
const pv = (F * x) / (0.622 + x);
return (pv / pvs(theta)) * 100;
}
検証:pyhees と2段階で突き合わせる
1. 式そのものの一致
pyhees で計算した値を fixture に書き出し、Vitest で比べています。0℃ちょうど(氷の式)と0.1℃(水の式)の境目も入れました。
for theta, h in [(-5.0, 80.0), (0.0, 50.0), (0.1, 50.0), (20.0, 50.0), (25.0, 80.0), (27.0, 50.0), (27.0, 60.0), (32.0, 70.0)]:
pvs = float(calc_P_vs(np.full(8760, theta))[0])
pv = pvs * h / 100
cases.append({"theta": theta, "h": h, "pvs": pvs, "x": 0.622 * pv / (F - pv)})
for (const c of golden.cases) {
it(`${c.theta}℃ ${c.h}% が pyhees と一致`, () => {
expect(Math.abs(pvs(c.theta) / c.pvs - 1)).toBeLessThan(1e-12);
expect(Math.abs(xFromRh(c.theta, c.h) / c.x - 1)).toBeLessThan(1e-12);
});
}
2. 丸めた気象データからの計算が、元の絶対湿度に戻るか
サイトの気象データ(JSON)は、エアコンの計算のために外気温を0.1℃、相対湿度を0.001%に丸めて持っています。一方、pyhees の気象データの元は絶対湿度です。
「丸めた温度・相対湿度 → 絶対湿度」と計算し直した値が、元の絶対湿度とどれくらい違うかを、8地域×365日の日平均で確かめました。
for (let d = 0; d < 365; d++) {
let s = 0;
for (let h = 0; h < 24; h++) s += xFromRh(f.thetaEx[d * 24 + h], f.hEx[d * 24 + h]);
worst = Math.max(worst, Math.abs(s / 24 - ref[d]));
}
最大の差は 4.5×10⁻⁸ kg/kg でした。6畳・換気0.5回/時なら、1日の空気は約336kgなので、水の量にすると0.00002L未満です。相対湿度を0.001%まで持っていたので、丸めの影響はほとんど残りませんでした。
結果
東京(6地域)・室温27℃・湿度50%・24時間換気0.5回/時・1人が1日8時間いる場合です。
| 部屋 | 8月の平均 | 多い日 | 1日1回の水捨てで足りるタンク |
|---|---|---|---|
| 4.5畳 | 2.0L/日 | 2.8L/日 | 2.8L以上 |
| 5畳 | 2.2L/日 | 3.0L/日 | 3.1L以上 |
| 6畳 | 2.5L/日 | 3.6L/日 | 3.6L以上 |
| 8畳 | 3.2L/日 | 4.6L/日 | 4.6L以上 |
5畳で、タンク2.5Lなら1日に2回捨てる日が年20日、3Lなら年2日という計算です。
除湿しないと、8月のこの部屋は平均84%になります。質問者の「常に80%くらい」とも合います。
地域による違い(6畳、いちばん湿気の多い月)です。
| 地域区分 | 多い日 | 除湿しないと |
|---|---|---|
| 2地域(札幌など) | 2.1L/日 | 約65% |
| 6地域(東京など) | 3.6L/日 | 約83% |
| 8地域(沖縄) | 4.2L/日 | 約95% |
除湿能力(L/日)について
カタログの除湿能力は「室温27℃・湿度60%を保った部屋で24時間運転した値」で、温度・湿度が下がると除湿できる量は少なくなります(メーカーの取扱説明書)。
ただ、「湿度50%のときに定格の何割になるか」を出典つきで示す数値は見つからなかったので、ツールでは必要な量が定格の何割かだけを出しています。推測の係数は入れていません。
まとめ
- 除湿機が1日に取る水の量は「空気の密度 × 換気量 × 絶対湿度の差 + 人の湿気」で出せる
- 湿度の式は算定方法 第十一章第五節をそのまま移植し、pyhees と 1e-12 で一致
- 丸めた気象データから計算し直しても、元の絶対湿度との差は 4.5×10⁻⁸ kg/kg
部屋の広さ・都道府県・保ちたい湿度を変えて計算できます。
出典
- 建築研究所ほか「pyhees」(算定方法の Python 実装、MIT ライセンス) https://github.com/BRI-EES-House/pyhees
- 国土交通省「シックハウス対策について知っておこう」 https://www.mlit.go.jp/jutakukentiku/build/sickhouse.files/sickhouse_1.pdf
- 三菱電機「除湿機(家庭用)取扱説明書 MJ-P180VX」(除湿能力の測定条件、温度・湿度と除湿量) https://dl.mitsubishielectric.co.jp/dl/ldg/wink/ssl/wink_doc/m_contents/wink/MA_IB/zt936z253h01.pdf