PH4502CのpHの計算方法を調べるまでの記事でpHメーターを動かすまでに必要な知識の概要が得られたので、pHメーターのPH4502CとRaspberry Piを繋いでみた。
※回路図をクリックで拡大表示
※各ピンの意味は過去記事に記載してある
BBC Micro:bitでpHメーターから得られるアナログ値を読み込んでみた
※MCP3208のVREFの箇所は3.3Vから5Vにした方が良いかも VDDとVREFの意味は調べる必要がある
Raspberry Pi 4B 8G
ブレットボード
MCP3208
PH4502C
5Vの供給源(AA Batteryの箇所)
コードはGPIO ZeroのMCP3208ライブラリを利用した。
15. API - SPI Devices — GPIO Zero 1.6.2 Documentation#MCP3208
コードを載せる前に試した事を挙げておく。
PH4502CのV+にRaspberry Piの5Vピンを用いたが、期待した数値にならなかったため、別途で電気の供給源を設けた。
GPIO ZeroのMCP3208で水道水に浸してデータを取得したが、結構な頻度で0Vがあった為、0.1V以下のデータは取得せず、8回データを取得した後、最高値と最低値を除いた6個の値の平均を算出するようにした。
これらの内容を踏まえて、作成したコードは下記の通り。
from gpiozero import MCP3208 import time Vref = 5 # PH4502Cの基準電圧 # max_voltageの値が必要か?は不明 pot = MCP3208(channel=0, max_voltage=5) v = [] while True: if len(v) > 7: break if pot.value >= 0.02: # 0.1V未満の数値は切り捨て v.append(pot.value) time.sleep(0.2) v.sort() total = 0 for i in range(2,8): total += v[i] print("average") print(str(total/6 * Vref) + "V")
下記のコードを実行してみたところ、2.8V付近の数字が出力された。
※実行前にRaspberry Pi側でSPI通信を有効にしておくこと
→Raspberry PiでLCDに文字列を出力するの記事中のI2Cの設定の代わりにSPIを有効にすれば良い
ただし、値はかなりブレるので、何らかの調整を見落としているのかもしれない。
キャリブレーションしたら何かわかるかもしれないが、目標がpHメーターのアナログ値をADCを介してデジタル値に変換してRaspberry Piで受け取るまでだったので、pHの測定の話はここで終了することにする。
ラズパイ4対応 カラー図解 最新 Raspberry Piで学ぶ電子工作 作る、動かす、しくみがわかる! - ブルーバックスシリーズの特設ページの本には、GPIO Zeroを用いないでMCP3208を使用するコードが記載されているが、現時点での知識レベルではコードの理解が出来なかった。
これからも様々な経験をして、わかる事が増えてくるだろうから、その時に改めてコードを読むことにしよう。
関連記事
Raspberry Piと赤色LEDでホタルのような点滅を試す