ArduinopHメーター
コンポーネントと消耗品
> |
| × | 1 | |||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 4 | ||||
| × | 1 | ||||
| × | 1 |
必要なツールとマシン
|
アプリとオンラインサービス
> |
|
このプロジェクトについて
このプロジェクトでは、重力アナログpH回路とAtlasScientificおよびArduinoUnoのプローブを使用してベンチトップpHメーターを作成します。読み取り値は液晶ディスプレイ(LCD)に表示されます。
注:
-このメーターはWindowsコンピューターで開発されました。 Macではテストされていません。
-エンクロージャーは防水ではありません。
ステップ1:住宅を準備する
安全性 :工具/機械の取り扱いには注意し、ゴーグル、手袋、呼吸器などの適切な安全装備を着用することを忘れないでください。
使用されるハウジングはABSプラスチック筐体です。 pHメーター用に変更する必要があります。
LCDの開口部をカット
a) LCDはエンクロージャーの上部(カバー)に配置されます。カバーの中央に98x40mmの長方形を配置します。
b) ピースを万力に入れ、マークされた長方形に3.2mm(1/8 ")のパイロット穴を開けます。
c) この下穴を3.2mm(1/8 ")乾式壁切断ビットの開始点として使用します。これは小さな作業なので、乾式壁切断機ではなくハンドドリルのビットを使用します。ドリルのこのビットでまっすぐに切るのは少し難しいかもしれないので、線の代わりに長方形。
d) 次に、ハンドファイルを使用して余分な材料を取り除き、長方形を必要なサイズに成形します。
<図>BNCコネクタとArduinoポートの開口部をカット
BNCコネクタとArduinoポートの開口部は、エンクロージャの下部の側面にあります。
a) 以下に示す寸法を使用して、円の中心点と2つの長方形の輪郭をマークします。
b) ピースをバイスに入れ、開口部をカットします。円形の開口部はドリルビットを使用して作られています。長方形のものは、LCDの開口部を作るために使用されるのと同様のプロセスに従って作られています。
<図>コンポーネントを取り付けるためにベースプレートを取り付けます
ベースプレートは、Arduino、pHセンサー、ミニブレッドボードを取り付けるために使用されます。厚さ3.2mmのアクリルシートを使用しています。
a) 帯鋸を使用して、アクリルシートを135x62.5mmにカットします。
b) 以下に示すように、4つの穴の位置をマークします。直径2.38mm(3/32 ")の穴を開けます。プレートの片側の穴を深さ3mm、直径4.4mm(11/64")に皿穴をあけます。これは、スタンドオフを保持するためにネジを挿入するときに、平らな下面を維持するために必要です。
c) 付属のネジを使用して11mmスタンドオフを取り付けます。 pHセンサーには4つのスタンドオフとネジが付属しています。 Arduinoにはそのうちの2つを使用してください。
<図>
ステップ2:電子機器を住宅に設置する
a) ベースプレートをハウジングの下部に挿入します。ネジまたはホットグルーで所定の位置に保ちます。
<図>b) pHセンサーをベースプレートに取り付けます。ネジでスタンドオフに固定します。
<図>c) ArduinoUnoをベースプレートに取り付けます。ネジでスタンドオフに固定します。
<図>d) ミニブレッドボードをベースプレートに追加します。
<図>e) ヘッダーピンをLCDにはんだ付けします(ピンは付属)。 LCDをハウジングの上部に挿入し、ホットグルーを使用して画面を所定の位置に保ちます。
<図>
ステップ3:電子機器を一緒に配線する <図>
コンポーネントの配線は上の図に示されています。
1kΩと220Ω、およびArduinoの5Vとアースピンの分配にはミニブレッドボードを使用してください。
2つの抵抗は、画面のコントラストを設定するために使用されます。
<図>データシート
重力pHセンサー、pHプローブ
ステップ4:アセンブリを完成させる
配線が完了した後:
a) 付属のネジを使用して、ハウジングの上部と下部を合わせます。
b) プローブをBNCコネクタに接続します。
<図>
ステップ5:ArduinoUnoにコードをアップロードする
このプロジェクトのコードは、カスタマイズされたライブラリとヘッダーファイルを利用します。コードを使用するには、それらをArduinoIDEに追加する必要があります。以下の手順には、IDEにこの追加を行うプロセスが含まれています。
a) Arduinoをコンピューターに接続し、IDEを開きます。 IDEをお持ちでない場合は、このLINKからダウンロードできます。 T ools-> Board-> Select Arduino / Genuino Uno に移動します 。 [ツール]-> [ポート]->ポートを選択に移動します Arduinoが接続されている場所。
b) 液晶ディスプレイライブラリの追加:IDEで、スケッチ->ライブラリを含める->ライブラリの管理に移動します。 。ライブラリマネージャーの検索バーに「liquidcrystal」と入力します。 「LiquidCrystalBuilt-inby Arduino、Adafruit」というタイトルのパッケージを探してください。インストールされている場合とされていない場合があります。そうでない場合は、パッケージを選択してインストールをクリックします 。
c) Atlas Gravityセンサーライブラリを追加します。次のリンクからzipファイルをダウンロードします。ファイルは「Atlas_gravity.zip」として保存されます。 IDEで、スケッチ->ライブラリを含める-> Add.ZIPライブラリに移動します 。 「Atlas_gravity.zip」ファイルを見つけて、追加することを選択します。
d) 次に、pHメーターのコードを追加する必要があります。このリンクからIDEワークパネルにコードをコピーします。
e) コードをコンパイルしてArduinoにアップロードします。
f) その後、pHの読み取り値がLCDに表示されます。シリアルモニターで測定値を表示することもできます。シリアルモニターを開くには、ツール->シリアルモニターに移動します または、 Ctrl + Shift + M を押します キーボードで。ボーレートを9600に設定し、[キャリッジリターン]を選択します。
ステップ6:pHセンサーを校正する
注:Arduinoに外部電源を使用する場合は、キャリブレーションを行う前にArduinoに接続してください。これにより、基準レベルが適切に設定され、正しいキャリブレーションに役立ちます。
このpHメーターは、1点、2点、または3点の校正に校正できます。標準の緩衝液(pH 4、7、10)が必要です
シリアルモニターは、キャリブレーションプロセスに使用されます。ユーザーは、安定化に至るまでの読み取り値の段階的な変化を観察し、適切なコマンドを送信できるようになります。
キャリブレーションデータはArduinoのEEPROMに保存されます。
キャリブレーションコマンド
ローポイント: cal、4
中点: cal、7
ハイポイント: cal、10
明確なキャリブレーション: cal、clear
手順
a) ソーカーボトルを取り外し、pHプローブを洗い流します。
b) pH4の溶液の一部をカップに注ぎます。プローブの検出領域をカバーするのに十分であることを確認してください。
c) プローブをカップに入れてかき混ぜ、閉じ込められた空気を取り除きます。シリアルモニターの読み取り値を観察します。読み取り値が安定するまでプローブを溶液中に置いておきます(ある読み取り値から次の読み取り値への小さな動きは正常です)
d) 読み取り値が安定したら、コマンド cal、4 を入力します シリアルモニターに。これで、pH4へのキャリブレーションが完了しました。
pH7とpH10について手順a〜dを繰り返します。別の緩衝液に進むときは、プローブをすすぐことを忘れないでください。
温度補正はどうですか?
このプロジェクトで使用されるセンサーの精度は+/- 0.2%です。 pHメーターは、7〜46°Cの温度範囲でこの精度の範囲内で動作します。この範囲外では、温度補正のためにメーターを変更する必要があります。注:pHプローブは、1〜60°Cの範囲にさらされる可能性があります。
コード
- arduinopHメーターコード
arduinopHメーターコード C / C ++
/ *アップロードしたら、シリアルモニターを開き、ボーレートを9600に設定し、「Carriagereturn」を追加します。このコードを使用すると、ユーザーはリアルタイムのpH読み取り値を観察し、センサーをキャリブレーションできます。1、2、または3ポイントキャリブレーションコマンドを実行できます。キャリブレーションコマンド:低点: "cal、4"中点: "cal、7"高点: "cal、10"クリアキャリブレーション: "cal、clear" * /#include "ph_grav。 h "// Atlas Scientific重力pHセンサーのヘッダーファイル#include" LiquidCrystal.h "//液晶ディスプレイのヘッダーファイル(lcd)String inputstring =" "; // PCbooleanからの着信データを保持する文字列input_string_complete =false; // PCcharからすべてのデータを受信したことを示すフラグinputstring_array [10]; //文字列の解析に必要なchar配列Gravity_pHpH =A0; // ArduinoのアナログピンA0をクラスGravity_pHに割り当てます。 pHセンサーの出力をピンA0LiquidCrystalpH_lcd(2、3、4、5、6、7);に接続します。 //変数pH_lcdを作成し、arduinoデジタルピンをlcdピンに割り当てます(2-> RS、3-> E、4〜7-> D4〜D7)void setup(){Serial.begin(9600); //シリアルポートを有効にするpH_lcd.begin(20、4); // lcdインターフェイスを開始し、lcdサイズ(20列と4行)を定義しますpH_lcd.setCursor(0,0); //画面の列1、行1にカーソルを置きますpH_lcd.print( "--------------------"); //文字を表示しますpH_lcd.setCursor(0,3); //画面の列1、行4にカーソルを置きますpH_lcd.print( "--------------------"); //文字を表示しますpH_lcd.setCursor(5、1); //画面の列6、行2にカーソルを置きますpH_lcd.print( "pH Reading"); //「pH読み取り値」を表示if(pH.begin()){Serial.println( "Loaded EEPROM");} Serial.println(F( "コマンドを使用\" CAL、4 \ "、\" CAL、7 \ "、および\" CAL、10 \ "を使用して、回路をそれぞれの値に校正します")); Serial.println(F( "コマンド\" CAL、CLEAR \ "を使用してキャリブレーションをクリアします")); } void serialEvent(){//ハードウェアシリアルポート_0がchar inputstring =Serial.readStringUntil(13);を受信した場合//input_string_complete =true;が表示されるまで文字列を読み取ります// PCから完了した文字列を受信したかどうかを通知するために使用されるフラグを設定します} void loop(){if(input_string_complete ==true){//データが受信されたかどうかを確認しますinputstring.toCharArray(inputstring_array、30); //文字列をchar配列に変換しますparse_cmd(inputstring_array); //データをpars_cmd関数に送信しますinput_string_complete =false; // PCから完成した文字列を受け取ったかどうかを通知するために使用されるフラグをリセットしますinputstring =""; //文字列をクリアします} Serial.println(pH.read_ph()); // pH測定値をシリアルモニターに出力しますpH_lcd.setCursor(8、2); //画面の列9、行3にカーソルを置きますpH_lcd.print(pH.read_ph()); // pHをlcdに出力delay(1000);} void parse_cmd(char * string){//キャリブレーション関数を呼び出すためstrupr(string); //入力文字列を大文字に変換if(strcmp(string、 "CAL、4")==0){//ユーザー入力文字列をCAL、4と比較し、一致する場合はpH.cal_low();に進みます。 //ローポイントキャリブレーションの関数を呼び出しますSerial.println( "LOW CALIBRATED"); } else if(strcmp(string、 "CAL、7")==0){//ユーザー入力文字列をCAL、7と比較し、一致する場合はpH.cal_mid();に進みます。 //中点キャリブレーションの関数を呼び出しますSerial.println( "MID CALIBRATED"); } else if(strcmp(string、 "CAL、10")==0){//ユーザー入力文字列をCAL、10と比較し、一致する場合はpH.cal_high();に進みます。 //ハイポイントキャリブレーションの関数を呼び出しますSerial.println( "HIGH CALIBRATED"); } else if(strcmp(string、 "CAL、CLEAR")==0){//ユーザー入力文字列をCAL、CLEARと比較し、一致する場合はpH.cal_clear();に進みます。 //キャリブレーションをクリアするための関数を呼び出しますSerial.println( "CALIBRATION CLEARED"); }}
回路図
製造プロセス