AD変換器から出力されたデジタル値を読み込むまでの記事でAD変換器の概要に触れてきたので、pHメーターの事に戻ってみる。
BBC Micro:bitでpHメーターから得られるアナログ値を読み込んでみたの記事でBBC Micro:bitに内蔵されている10ビット分解能のAD変換器を介してPH4502CのpHメーターから得られた値を読み取った。
Liquid PH Value Detection Detect Sensor Module – diymore
キャリブレーションという較正の作業を行っていないので、得られた値に信憑性はないけれども、水道水と重曹を溶かした溶液で異なる数値を示した。
ただ、確かpHメーターはpHが低い程、起電力が高くなる仕様であったはずで、重曹水の数値がなんかおかしい。
なんて事は置いといて、PH4502Cがどのような挙動になるのか?を調べてみることにした。
How to use a PH probe and senserを読んでみると、pHの計算は下記のようになる。
pH = a * 起電力の値(V) + キャリブレーション値
起電力はpHが低い程大きくなるので、係数 a は a < 0 になる。
Cheap pH Meter for Raspberry Pi with ADS1115 and PH4502C – andrewgrabbs.comのページで実際にキャリブレーションを行った内容が記載されているので、その値を使わせてもらうことにする。
最初に係数 a だけれども、pH4.01とpH7の起電力(25℃の水温)を用いれば算出できる。
※ちなみにPH4502CのV+には5Vを電圧(基準電圧)を繋いでいるので、最大は5Vになる。
pH4.01 → 3.11V
pH7.00 → 2.58V
ここから a を求めるには、a = (7.00 - 4.01) / (2.58 - 3.11) ≒ -5.64 となる。
※分子の4はpH4.01を四捨五入している
続いて、キャリブレーション値を求める。
pH = -5.64 * V + キャリブレーション値 の式にpH7の値を代入すると、7 = -5.64 * 2.58 + c(キャリブレーション値)となる。
c ≒ 21.55という数値が得られた。
これまでの値を合わせると、pH = -5.64 * V + 21.55の式が得られた。
Tjwikcom - 投稿者自身による作品, パブリック・ドメイン, リンクによる
次にAD変換器(ADC)を介した時の計算式を考える。
BBC Micro:bitに内蔵されているADCは10ビット分解能であった。
10ビット能のADCは0〜1023までの値の範囲となる。
PH4502Cに供給する電圧は5Vとなる。
pH7の時の起電力が2.58Vであるので、pH7の溶液を測定した時、ADCから出力される値は 2.58 / 5 * 1023 ≒ 527の値になる。
ADCから出力される値は単なる数値で単位はなしらしいので、デジタル値をDと表すことにして、pHの計算方法を更新する。
pH = -5.64 * 5 * D / 1023 + 21.55 となった。
他の分解能のADCでも計算できるようにすると、ビット数を n にして、1023の箇所は 2n - 1にできるので、
pH = -5.64 * 5 * D / (2n - 1) + 21.55 となる。
電圧計を用いてpHメーターをキャリブレーションして、実際にはどのような値になるかを試してみないとな。