自作のEC計を作ろうと思ったら避けては通れないプログラムの作製(×_×;)

ただどのサイトを見ても具体的な作り方は書いていませんね。。何をどのようにすれば良いかお困りではありませんか( ಠωಠ)?

私もそんなひとりで、調べても見つからないので作ってみることにしました。プログラムも共有しますのでお困りでしたらご参考にしてください‎٩( ‘ω’ )و

プログラムを使うにはEC測定回路が必要!交流回路を使いましょう。

プログラムにさっそく取り掛かりたいですが、測定回路がないとプログラムを動かすことができません。これから使う予定の交流回路について簡単にご紹介しますね(๑•̀ㅂ•́)و✧

水耕栽培用に作った自作のEC計を作るために実験している様子。オシロスコープで交流波形を取得している様子。

測定用の波形は交流!ウィーンブリッジ回路を使います。

前回の記事で作製した、交流波波形を作ることができるウィーンブリッジ回路でEC計測用の波形を作ります。

交流波形はこんな感じですね(〃’ω’)

自作のEC回路を使って交流波を取得した様子。ADCコンバーターへのインプットするためにプラスにオフセットした画像。

交流波形を使うのは電気分解対策でした。

直流で作製される場合には確かにぶくぶく電気分解しちゃうのでお気をつけください(×_×;)

EC値の取得は2点のデータがとれればOKです。元の入力波形とEC抵抗の部分を計測します。

EC計は測りたい対象の抵抗を測るという単純なもののようです。ということは電流測定をしてその時の電圧を測ればよさそうですね(◍•ᴗ•◍)♡ ✧*。

自作のEC計で試材の抵抗値を求める方法を図解した様子。

まずは入力波形の電圧を測定します。交流波形なので変化するので常に測定する必要があるんです。
測定したい抵抗値の前で電圧を測れば流れる電流とそこから抵抗値を求めることができます。

実際の回路構成は?交流波形とADコンバーターを使うので少し複雑です。

回路は結構部品点数が多いです。詳細については前回の記事を参照してください。

水耕栽培に使える自作のEC回路の回路図。LTSpiceで作った回路図

ラベル OriginalWave / EcWaveがあるのがわかりますでしょうか?こちらのデータを取得すればEC抵抗値を測定できるはずです。

ただ、交流波形なので電圧がマイナスにスイングしてしまいます。ADコンバーターはマイナス電圧の処理ができないため、オフセットさせて測定する必要があります。
プラス側へシフトさせたのがラベルADC-Org / ADC-ECです。この値を処理しちゃいましょう。

ちなみにR8が電流測定用の抵抗。R9がEC測定する対象の抵抗です。本当に使うときにはここに電極を作ってその導通率を測ることになります。

ADCコンバーターは何を使う?2CHあるMCP3002を使います。

電流測定用に1ch、抵抗測定用にもう1ch使うので計2ch必要になります。

前回サーミスターの温度を取得するためにマイクロチップ社のMCP3002を使いました。

【サンプルあり】wiringPiSPIを使ってMCP3002を制御しよう。C++を使用します。

こちらは前回プログラムを作ってベースがあるのでこのICを使いたいと思います。

MCP3002を使う時の注意点!2ch同時に取得できません!

覚えておかなきゃいけないのは、MCP3002って2chのデータを一度に取れないんですよね。。
IC内部でCH1 / CH2取得モードと切り替えるので若干のタイムラグがあります。
交流波形を作るときには周波数を遅くしないと位相がずれたデータを取得することになる可能性があります。

2CHのアナログ波形を取得してEC値を求めるプログラムをご紹介します。

今回作製するプログラムは測定したい抵抗値を交流を用いて測ることができるようになっています。

交流を測ることになるのでなかなか再現性が悪いことがわかりました。

ですので、なるべく回数を多くとって平均化するとか、なるべく振幅が大きいところを使うように工夫しています。

メイン関数

メイン関数からEcMeasureのインスタンスを作ってMCP3002のSPIを設定したり、電流測定用の抵抗を設定して測定の準備をします。最後にEC値を取得して表示させています。

実際の測定を行うプログラムはこちら。

実際のEcMeasureクラスはこちらです。MCP3002のクラスを継承しています。

FindPeakメソッドで波形がどれくらいの振幅があるのかを確認しています。これを目安になるべく大きい振幅のデータを取得するようにしています。

MCP3002のクラスはこちらです。

WriteReadメソッドで取得したいチャネルを切り替えることができるようになっています。

最後にmakefileですね。

トライアル結果

何回か測定をしてみました。4.4kくらいの抵抗をつないだはずなのですが、10%程度誤差がある感じになりました。
自作のEC計の繰り返し実験をした様子

再現性はある程度あるようなので、EC計としては使えそうです。

まとめと今後の予定

今回は交流波形を使って測定したい抵抗の抵抗値を取得することができました。自作のEC計の完成まであと少しといった感じです。

溶液の場合には電気伝導率が温度によって大きく変わるそうです。
ですので次回はサーミスターを組み入れて温度と抵抗値を取得できるようにしたいと思います。

そうするとMCP3002だとチャネルが足りないな。。MCP3004/3008とかもう少しチャネル数が多いものを準備する必要がありそうです。。

記事を読んでいただいてありがとうございます。この記事がいいなと思ったら下記のSNSボタンのクリックをお願いします。励みになります😁