飽和溶存酸素量について

よく分からなかったので調べたんだけどわかったよーなわからんよーな。

用語の意味

  • 飽和溶存酸素量: 標準的な地球の空気組成(酸素が20.949%含まれる)、標準気圧(1気圧=101,325Pa)の下で、純水(たぶんだいたい蒸留水)と空気(乾燥空気か湿潤空気かは場合による?)との間で酸素が平衡状態に達した時の水中の酸素濃度。ppmやmg/Lのような単位がよく使われる。
  • 酸素溶解度: 酸素分圧が1気圧のとき、水1cm^3に対し溶解することが出来る気体酸素の体積をcm^3で表したもの。

定義から分かるようにほっといたら水は酸素飽和状態になる(生物とか居なければ)。
また、ヘンリーの法則によれば酸素の溶液中の濃度と空気中の分圧は比例するので、例えば純酸素をブクブクとやれば5倍くらいの酸素が溶けた水が作れる。身体にいいかどうかは知らん。
まずこの辺を何か勘違いしていた。水道から出てきた水や暫く置いてあった蒸留水の溶存酸素量をDOメーターで測ってみたら飽和溶存酸素量とほぼ一緒だったんでびっくりしたんだけど、生きものが居ない水なら飽和してるのが普通なのね。

Bunsen吸収係数から飽和溶存酸素量を求める

1気圧の条件下でθ℃の水1cm^3に溶ける気体の体積をcm^3で表したものが酸素溶解度だと上に書いたけど、このときの気体の体積を昔の*1標準状態(101,325Pa, 0℃)で計算したのがBunsen吸収係数で、101,325Pa、θ℃の状態で計算したのがOstwald溶解係数。
Bunsen吸収係数をα、Ostwald溶解度係数をβとおくと、両者の間には次の関係がある。

よって、温度θのときの1モルの気体の体積をV(θ)として、θ℃の水1Lに溶解する気体の量は

または

で表せる(単位はg/L)。空気に対する飽和量を知りたかったら分圧を乗ずる。例えば酸素なら0.209を掛ける(分圧はモル分率に比例するので、空気中に20.9%含まれている酸素の分圧は0.209atmになる)。
孫引きになるけどαの値をhttp://cse.naro.affrc.go.jp/suzuki/methods/solubility.htmlから引っ張ってきて、Rで近似式を求めてみる。
だいたいこういうのは指数関数とかなので(多分)、nls()を使って非線形回帰をしてみる。

Bunsen <- data.frame(Temp =  c(
                        0,  5, 10, 15,
                       20, 25, 30, 35,
                       40, 45, 50, 60),
                     O2  = c(
                       0.04889, 0.04287, 0.03802, 0.03415,
                       0.03102, 0.02831, 0.02608, 0.02440,
                       0.02306, 0.02187, 0.02090, 0.01946))
Bunsen.nls <- nls(O2~a + b * exp(c * Temp),
                  start = list(a = 0, b = 0.05, c = -0.1),
                  data = Bunsen)

係数の初期値はデータをプロットした感じから勘で決める。
結果はこんな感じ。

> summary(Bunsen.nls)

Formula: O2 ~ a + b * exp(c * Temp)

Parameters:
    Estimate Std. Error t value Pr(>|t|)    
a  1.672e-02  8.362e-05   200.0   <2e-16 ***
b  3.212e-02  7.754e-05   414.3   <2e-16 ***
c -4.082e-02  2.694e-04  -151.5   <2e-16 ***
---
Signif. codes:  0***0.001**0.01*0.05 ‘.’ 0.1 ‘ ’ 1 

Residual standard error: 5.843e-05 on 9 degrees of freedom

Number of iterations to convergence: 5 
Achieved convergence tolerance: 3.092e-07 


上手くいってそうなので次の式でαを計算することにする。

これで飽和溶存酸素量が計算できるようになった。

実測値から推定

IUPACのSolubility Data Seriesには、実測値に次の式をフィッティングしたときの係数が収録されていて、CRC Handbook of Chemistry and Physicsにまとめられている。

ここでは溶液中のモル分率で、A、B、Cは係数を表す。
また、で、Tは絶対温度を表す。
CRC 86版には酸素に対する係数として、

  • A = -66.7354
  • B = 87.4755
  • C = 24.4526

が収録されている。温度範囲は0℃から75℃。
モル分率から[mg/L]に換算するには、まず水1Lのモル数を求め、得られた値にモル分率を乗じて酸素のモル数を得る。それに酸素のモル質量32を乗ずれば酸素溶解度が得られるので、さらに酸素分圧を乗ずれば飽和溶存酸素量が得られる。

dsO2.2<- function(t){
  A <- -66.7354
  B <- 87.4755
  C <- 24.4526
  Ts <- (t+273.15)/100
  lnO2 <- A + B/Ts + C*log(Ts)
  O2mol <- exp(lnO2)
  O2mol * 1000/18.02 *32 * 0.209 * 1000
}

Wikipediaで調べる

ググればすぐ出るんだけど…。
溶存酸素量 - Wikipedia

比べると…?

この3つを比べると、Wikipediaだけ値が低いのが目立つ。

Wikipediaのは値をどうやって求めたのか明記されていないので分からないのだけれど、大気中の酸素分圧を0.2atmとして計算すると他の方法の値にかなり近づくので、その辺のパラメータが違うのかも知れない。
パパっと検索した感じだとWikipediaのより高い値を採用している場所が多いように思える(DOTABLESとかOxygen Saturation - Aeration Educationとか)。
ただ、飽和溶存酸素量は気圧によって変わるし、湿度の影響も受けるはずなのでどっちが良いとかは言い難いと思う。もし湿度が100%だったら水蒸気分圧は0.02atmくらいになるし、Wikipediaの値のが妥当にも思える。

*1:てか今変わってるなんて知らなかった。cf.標準状態 - Wikipedia