P1079569


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の式が得られた。




ADC_Symbol

Tjwikcom - 投稿者自身による作品, パブリック・ドメイン, リンクによる


次にAD変換器(ADC)を介した時の計算式を考える。


P6248915


BBC Micro:bitに内蔵されているADCは10ビット分解能であった。

10ビット能のADCは0〜1023までの値の範囲となる。


P1079569


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メーターをキャリブレーションして、実際にはどのような値になるかを試してみないとな。