【湿度計算】:このページの簡単な説明

ネット上に、相対湿度や絶対湿度などの各種湿度関連数値を計算する適当なツール(所謂湿度計算アプリ)が見当たらなかったので、いくつか自分で作成し公開しました。特に、ネットで検索するようなライトユーザー(※私(おうる)もそのひとりです)の求める、家庭用の非通風型乾湿計から湿度を求めるものは少ないようです。
※ 現在ではいろいろリリースされているようですが、とりあえずそのまま公開続行。
このページ全体(湿度に関する他の記事)を表示するには、ここをクリック

湿度計算シート(オンラインソフトなど各種)

やっていることは下に掲載している VBE モジュールを含めてどれも(ほぼ)同じなので、使用条件に応じて選択し御使用下さい。知的好奇心と良心に基づく御利用の場合、特に制限等ございません。
(計算できる内容:相対湿度・容積絶対湿度(比湿)・重量絶対湿度・不快指数・露点)
Javascript 版:http://www010.upp.so-net.ne.jp/catwalk/humid/
  (圧縮 URL :http://bit.ly/HUMIDITY
   

  • 使用している計算式等の簡易解説つき
  • 相対湿度・露点温度から逆算する機能あり
  • まんがいちアクセス不可になった場合には webarchive にクローニングされたページがそのまま使用可能です。→このへんとか

● MS Excel 版:http://www010.upp.so-net.ne.jp/catwalk/lib/humidity100.xls
   http://www010.upp.so-net.ne.jp/catwalk/img/img_humidity100_ooo_.jpg

  • マクロ不使用・Excel5.0 97 相当*1

PHP 版(携帯電話対応ウェブアプリ):http://hum.uah.jp/
     

  • β版リリース【2006/06/28】
  • 一応運用版【2006/06/30】 単純なページなのでキャリア依存等は特に無いはずです
  • ソースはここに貼っときました → http://d.hatena.ne.jp/owl/19760706

● 換算表出力ページ on PHPhttp://hum.uah.jp/table.php
   screenshot

  • v1.0 リリース【2008/01/01】
  • 乾湿計についている計算表に相当するものを、温度範囲・きざみ可変で表示できるように。
  • 多機能に見えて以外と単機能。v1.0 では csv 書き出しなどは無いので copy & paste 等で工夫して下さい。
  • ソースは → http://d.hatena.ne.jp/owl/19760708


念の為こちらにも付記しておくと、当エントリを含む上掲コンテンツは、その出力結果が「正しい」ことを公に証明されているわけではありませんので、必要に応じて検証しつつ御使用されることをおすすめします。もしなにかありましたらネット上の公益性に基づき改善改良することに吝かではありませんので、プロファイルページ記載のメールアドレス宛にメールを送る等、何らかの手段で御連絡頂けると幸甚です。

*1:2007/11/22 更新。旧版の HUMIDITY.XLS(Excel5.0 版)はこちら

VBE による相対湿度計算用関数(湿度function)

  • このページ全体(湿度に関する他の記事)を表示するには、ここをクリック
  • ここを右クリックで以下のモジュールを含む「VBE_humid_100.bas」テキストファイルのダウンロードができます。

注意:そのままでは使用できません。VB 等の使い方にある程度詳しいかた用です。エクセルで湿度の計算がしたいだけであれば↑↑上述のノーマクロ MS Excel 版を御利用ください。web 上で計算できる Javascript 版や PHP 版も用意してあります(上述↑))。

Attribute VB_Name = "湿度function"




Private Function 湿度(乾球示度, 湿球示度, 大気圧 As Single) As Single
    
'    家庭用乾湿計による湿度計算
'    通風式乾湿計使用の際はコメントアウトされている計算式を使用
'        Update : 20061107
'
'        http://d.hatena.ne.jp/owl/19760704
'        http://www010.upp.so-net.ne.jp/catwalk/humid/

  Dim 飽和乾, 飽和湿, 乾湿差, 蒸気圧, 気圧, 水蒸気量 As Single
  Dim 露点, 容積絶対湿度, 重量絶対湿度, 比湿, 不快指数1, 不快指数2 As Single
  
            If ((大気圧 > 2000) Or (大気圧 < 300)) Then
                気圧 = 1013.25
            Else
                気圧 = 大気圧
            End If
        
        乾湿差 = Abs(乾球示度 - 湿球示度)
        飽和乾 = 6.11 * 10 ^ (7.5 * 乾球示度 / (237.3 + 乾球示度))
        飽和湿 = 6.11 * 10 ^ (7.5 * 湿球示度 / (237.3 + 湿球示度))

        蒸気圧 = 飽和湿 - 0.0008 * 気圧 * 乾湿差        ' ※家庭用乾湿計
'       蒸気圧 = 飽和湿 - 0.5    * 気圧 * 乾湿差 / 755  ' ※通風乾湿計使用時(先頭の「'」を削除)

        湿度 = 蒸気圧 / 飽和乾 * 100

'  以下、計算のみ
        露点 = 237.3 / ((7.5 / (Log(蒸気圧 / 6.11) / Log(10))) - 1)       ' [℃]
        容積絶対湿度 = 216.7 * 蒸気圧 / (273.15 + 乾球示度)               ' [g/m^3]
        重量絶対湿度 = (18.015 * 蒸気圧) / (29.064 * (気圧 - 蒸気圧))     ' [kg/kgDA]
        比湿 = 622 * 蒸気圧 / (気圧 - 0.378 * 蒸気圧)                     ' [g/kg] 湿り空気

        不快指数1 = 0.81 * 乾球示度 + 0.01 * 湿度 * (0.99 * 乾球示度 - 14.3) + 46.3
        不快指数2 = (乾球示度 + 湿球示度) * 0.72 + 40.6
        
' MsgBox ("相対湿度=" & 湿度 & vbCrLf & _
        "露点=" & 露点 & vbCrLf & _
        "容積絶対湿度=" & 容積絶対湿度 & vbCrLf & _
        "重量絶対湿度=" & 重量絶対湿度 & vbCrLf & _
        "比湿=" & 比湿 & vbCrLf & _
        "不快指数1=" & 不快指数1 & vbCrLf & _
        "不快指数2=" & 不快指数2)
             
End Function

コピぺし拡張子「.bas」のテキスト形式で保存し、ExcelVB マクロエディタからインポートすれば完了。(勿論、VB エディタ上で新規モジュールを開いてコピぺでも可。)適宜改変して御使用ください。
基本、自分で使用するため、はるか昔に作ったものなので工夫とか何もありません。凍結条件のパラメータ、付随して導かれる各種数値(露点(温度)・重量絶対湿度・容積絶対湿度・比湿・不快指数…)の出力、および 標高←→大気圧換算 などはばっさり省略してあります。これらが必要な場合や上記の使用法がちんぷんかんぷんな方は、当項の冒頭にて案内しましたとおり、Excel版 や web版 など他のコンテンツの使用を検討してください。
【後日追記】途中、多少のバージョンパップをしています。

相対湿度←→絶対湿度の変換(換算)について

このページ全体(湿度に関する他の記事)を表示するには、ここをクリック


【2008/09/23 追記】:検索によりニーズが多いと判断し、参考までに掲載。ただし、本来、数式を変換するだけの作業であり、べき演算の部分はいじらずに済むので、内容的にはそう複雑なものではない。
数式などどうでもいいからとりあえず計算がしたい、という方は、Javascript 版か PHP 版(上述↑)の御使用をお薦めします。



いずれの場合も、測定した空気の気温と気圧の値が必要となる。気圧を 1気圧 = 1013.25hPa と置くにしても(気圧はほとんど結果に寄与しないので大概はそれで支障ない)、最低限 気温がわかっていないと、変換はできない。また、上掲のスクリプトによっても明らかなとおり、無理矢理ひとつの式に書き下すことはあまり合理的な試みとはいえない。(※ やりたいかたは、どうぞ御自由に。)
なお、以下に掲げる式の詳細に関しては、「湿度計算シート」の解説セクションを参照のこと。

■ 相対湿度から絶対湿度への換算

まず、気温 t から、飽和水蒸気圧 E を求める。

  • E = 6.11 * 10( 7.5 * t / ( 237.3 + t ))    ※ 気温の単位は [℃]

飽和水蒸気圧 E に相対湿度 RH を掛ければ、測定空気の(現在の)水蒸気圧(水蒸気分圧) Ep となる。

  • Ep = E * RH / 100

Ep より以下いずれかの値を得る。

  • 容積絶対湿度(水蒸気量あるいは比湿とも)[g/m3]:e = 217 * Ep / T    ※ T : 気温 [K]
  • 重量絶対湿度[kg/kgDA]: H = (Mwater * Ep) / (Mair * (P - Ep))    ※ DA=Dry Air(乾燥大気or乾き空気)
                      ≒ 18 / 29 * Ep / (P - Ep)    ※ P : 大気圧hPa
  • 比湿[g/kg]: s = 622 * Ep / ( P - 0.378 * Ep )

■ 絶対湿度(あるいは比湿)から相対湿度への換算

手順は同様にして、上の逆を行う。まず気温 t から飽和水蒸気圧 E を導く。

  • E = 6.11 * 10( 7.5 * t / ( 237.3 + t ))    ※ 気温の単位は [℃]

次に次式いずれかにより測定空気の水蒸気圧(水蒸気分圧) Ep を求める。

  • Ep = e * T / 217    ※ T : 気温 [K] , e : 容積絶対湿度(水蒸気量あるいは比湿とも)[g/m3]
  • Ep = P * ( 29 * H / ( 29 * H + 18 ))   ※ P : 大気圧hPa], H : 重量絶対湿度[kg/kgDA]
    • (ここで 29 とは乾燥大気の平均分子量、18 とは水蒸気(水)の分子量)
  • Ep = P * s / ( 622 + 0.378 * s )   ※ P : 大気圧hPa], s : 比湿[g/kg]
    • (ここで 622 , 0.378 とは水蒸気の分子量等から算出された定数)

求めた E , Ep , および次式により、相対湿度 RH を得る。

  • RH = Ep / E * 100


このページ全体(湿度に関する他の記事)を表示するには、ここをクリック

VAISALA 社の湿度計算ソフトを家庭用乾湿計で使用する場合

【2009/04/04 追記】
拙サイトのものよりはるかに高機能・多言語対応で、おそらく信頼性の高い(しかも、ウェブ版・ Windows アプリ版 ともに無償である)計算ソフトが芬蘭国 VAISALA 社より提供されており、論文・報告書用途等、演算の根拠を求められる可能性のある用途に限らず、どこの馬の骨が作ったか知れないようなウェブコンテンツなど、たとえお遊びにしても生理的に受け付けないぞ、というような向きにしても、これを利用させてもらわない手はない。

しかし残念なことに、この計算ソフトでは非通風型の家庭用乾湿計による湿球示度からの計算が(そのままでは)できない。そこで、係数を入力し、新たな乾湿計の項目を設定する必要がある。その際に入力する係数は、

  • 「乾湿係数 / 通風時:」:800
  • 「乾湿係数 / 凍結時:」:700

(ぐらい)でよいようだ。(実際は非通風型乾湿計だから通風はしないわけだが)



「アドバンスモード」にて、「乾湿計」の右「> 新規追加」をクリック
  *1
開いたポップアップに、上記のように入力し「追加」をクリック
「名称」欄はなんでもよいが、上のように日本語で入力すると、いちど閉じてから再度起動した際に文字化けすることがあるようなので*2注意。気になるようなら半角英数を使用したほうがよい。 ともかく、これにて準備完了。
ざっと比較してみたが、そもそも計算式が異なるため同じ計算結果にはならない。概ね、相対湿度で 0コンマ数%、露点温度で 0コンマ数度程度の差が出るようだが、これは測定誤差の範囲内に充分収まると思われる。
数値の根拠を求められた場合「家庭用乾湿計にて計測。VAISALA社の湿度計算ソフト(Ver.2.x)にて計算。乾湿係数は 0.0008(800×10-6)。乾湿係数の値は理科年表(国立天文台(1984))より。」とか答えればよい(のではないか(、と思う))。
もともと非通風型の乾湿計の測定値には、さほどの精度が期待されていないという点を無視することはできない(≒非通風乾湿計による観測値から換算する際の換算誤差もある程度は仕方のないものであるし、逆に、そこまでの精度が必要であるのならば非通風乾湿計は使用すべきではない)。

*1:「1e6 により分割」の意味するところは、「実際の乾湿係数は、入力した値を 1×106 で割った値になります」というようなことではないかと解釈可能。(というか、かような解釈のもと、「800」「700」という値を設定している。)

*2:Ver.2.2 において現象再現。

参考リンク

空調設計などの用途で「湿り空気」の計算をなさりたい方は、AirDesign, Inc.様の「Air Calc for Windows」を御検討なさるとよろしいかもしれません。相互演算可能、JIS 準拠、フリーソフトとのこと(Ver.1.06 現在)。

こちらで使用されている「湿球示度」は、通風条件のようです(当然非凍結)。【2006/07/17】



理論式(と最新の実験式?)による計算結果を得たい場合には、以下のページから「Download」ページに入り「湿度計算 Wet.lzh 」をダウンロードしてみるとよろしいかと思われます。(アプリケーションに附属している説明書(PDF)にはプログラムの解説も含まれており参考になります。)

理論式なので、湿球示度は当然通風条件。(使用している計算式が異なるため、当研究所のシートとは有効数字 3 桁目あたりから結果が異なります。)
(蛇足ながら、当研究所(跡)(≒ 当ページ)で使用している計算式(公式)はかなり古いものではありますが、一般用途における実用上の問題は全く無いはず。(計測誤差より遥かに小さい))【2006/11/28】

相対湿度から湿球示度を逆算する VBE コード

【2006/12/01】
Web 上に公開された記事をどう引用して何に使うかは、法律や利害関係に抵触しない限り、個人の自由である。正味な話、私(おうる)も勝手に公開している以上、何の文句も言えないのは当然の話である。言えないついでにお節介を企ててみた。
因みに Javascript 版では実装済み。(というか、今回のは Javascript 版の function を VBE にこつこつと書き換えただけのもの)

Private Function 湿度2湿球(気温 As Single, 相対湿度 As Single, 大気圧 As Single, 通風条件 As Boolean)

'        相対湿度から乾湿計の湿球示度を計算
'        Javascript 版より移植  20061201
'
'        http://d.hatena.ne.jp/owl/19760704
'        http://www010.upp.so-net.ne.jp/catwalk/humid/
'
'        ※「通風条件」とは、通風計を使用するか否か
'        家庭用乾湿計の場合、このパラメータは false もしくは未入力でよい
'

            If ((大気圧 > 2000) Or (大気圧 < 300)) Then
                気圧 = 1013.25
            Else
                気圧 = 大気圧
            End If
        

            If 通風条件 = True Then
                k = 0.5
                m = 755
            Else
                k = 0.0008
                m = 1
            End If
    
    a = 7.5
    b = 237.3
    
    飽和乾 = 6.11 * 10 ^ (7.5 * 気温 / (237.3 + 気温))


    蒸気圧 = 飽和乾 * 相対湿度 / 100
    露点 = b / ((a / (Log(蒸気圧 / 6.11) / Log(10#))) - 1)

    ' 気温と露点から計算する場合
    '   ※ この上 2行の数式をコメントアウトし、代わりに下の 2式を使用する。
    '   ※ 冒頭行の Function 湿度2湿球() 内のパラメータも書き換えること!
    '                      (「相対湿度」→「露点」)
    ' 蒸気圧 = 6.11 * 10 ^ (a * 露点 /(b + 露点))      ' 現在の水蒸気圧
    ' 相対湿度 = 蒸気圧 / 飽和乾 * 100                 ' 相対湿度
    
    
    eet = 0                                           ' 本当はやりたくなかったんだけどバイナリサーチ。
    tt1 = -273.15
    tt2 = 気温
    For cc = 1 To 1000                                ' 永久ループ → フリーズが恐いので for 文
        tt = (tt1 + tt2) / 2
        ee = 6.11 * 10 ^ (a * tt / (b + tt))
        eet = ee - k * 気圧 * (気温 - tt) / m
            If 蒸気圧 > eet Then
                tt1 = tt
            Else
                tt2 = tt
            End If
        If Abs(蒸気圧 - eet) < 0.0000001 Then
            'MsgBox ("Loop count = " & cc)            ' メンテ用
            cc = 1000
        End If
    Next
    
    飽和湿 = ee
    湿度2湿球 = tt

End Function

ここを右クリックで以上のモジュールを含む「VBE_humid_100.bas」テキストファイルのダウンロードが可能。)
例によって凍結条件はばっさり省略。こちらも動作内容に関する保証はとりかねるが、その点を御理解頂けるのであれば適宜改変して御使用いただきたいと思う。
「要するに何をやっているのか」は、コードを読めば概ね御理解頂けるものと思う。「やっていること」のほうがむしろ知りたい、というかたには、上掲リンク先(神大の先生が作成したプログラム)のドキュメントが参考になる。
「何をやっているのなんてどうでもいいから結果をさくっと知りたい」という方には、VBE 版よりも Javascript 版 および PHP 版 をお奨めする*1
このページ全体を表示するには、ここをクリック

*1:当初、逆算機能を搭載しているのは Javascript 版だけだったのだが 2008/03 に PHP 版(v2.0〜)でも他パラメータから湿球示度を逆算できるようになった(というか、できるようにした)。

余談

「露天温度」で検索してくる方がたまにいて「…温泉かよ!」などと思っていたのだが、私(おうる)も長いこと書き間違えたままだった。それはそうだ。こちらも間違っていなければ、検索にかかるわけがない。
人の振り見て…という言葉を改めて噛みしめた。【2006/07/12】
余談を重ねると、「露点」とは「空気中の水蒸気が飽和し凝結する境界の温度」であり、「温度」を含意している*1から「露点温度」という語は本来過度に説明的である。また、誤解を生じにくいよう「温度」と付けたことによって結果的に typo (誤変換)が生じやすくなっているのは皮肉な話でもある。
当研究所(跡)でも、原義主義的なナニカよりわかりやすさに重きを置いた。【2007/04/14】
このページ全体を表示するには、ここをクリック

■ 余談の追記

最近「露天温度」で訪問してくるお客様が少ないと思ったら、Google でも Yahoo でもダイレクトに「露点温度」の検索結果を返してくる。「露天温度」はミスタイプ(typo)であると認定し、処理しているようだ。ならば当然「露天温度」ではこのページに来ることはできない。
便利になったものだ、と思う反面、 typo に最後まで気付かぬ人も増えてゆくであろう。痛し痒し。(←と、自分のことを棚にあげて言ってみる。) 【2009/10/20】

*1:より正確には「温度を含む環境諸条件」(もっと言えば『温度を含む環境条件空間上の 1点』)であるが、実用上「露点」は温度の一元関数と近似して差し支えないし一般的には温度を意味すると解釈できる。