さて、前回の記事に引き続いて、「エバポ用真空制御装置の自作」に挑戦しています。前回は、、部品の大まかな説明、マイコンについて、また必要なパーツを集めました。今回は、実際に圧力センサの信号をパソコンに転送してみます。ハードウェア編とソフトウェア編に分けて紹介したいと思います。
圧力センサの信号をパソコンに転送してみる ハードウェア編
- 圧力センサとつなぐためにACアダプターのプラグを切断し、中の導線を露出させる
- ACアダプターのプラグ
- プラグを切断したところ
- ニッパーを用いて切断したコードの先端に切れ込みを入れ、そこから外側の皮をむいていきます。
- ニッパーあるいはワイヤーストリッパーを用いて赤と黒の導線の皮を剥いて、出てきた芯線をよじります。
- ミノムシクリップをACアダプターの赤と黒の導線につなぎます。ミノムシクリップの色は自由ですがここでは分かりやすいように導線の色と合わせて赤と黒色のものを用いています。黒がマイナスで赤がプラスです。
- 重要:この部分が接触すると危険なのでミノムシクリップのカバーを動かして銀色の導体部分を完全に覆い隠します。
2. 次に圧力センサを組み立てる
- 圧力センサ(PSE573-02)と付属のケーブル、ホースニップル(HF-1208)を接続します。
- センサからは黒、白、茶、青色の導線が出ています。すでに皮の一部が剥かれた状態で梱包されていました。青色導線だけイモムシクリップを二個つなぐのでコード先端についた皮を完全に抜いておきます。他の色の導線はイモムシクリップを一つしかつながないのでそのまま皮が先に被っていても大丈夫です。
- ACアダプターの赤の導線と接続したミノムシクリップ(今回は赤色のミノムシクリップ)をセンサの茶色の導線とつなぎます。ACアダプターの黒の導線と接続したミノムシクリップ(今回は黒色のミノムシクリップ)をセンサの青色の導線とつなぎます。また、センサの黒色の導線に新しいミノムシクリップ(今回は緑色)をつなぎ、センサの青色の導線にもう一つ別のミノムシクリップ(今回は黄色)をつなぎます。センサの青色の導線には黒色と黄色の二つのミノムシムクリップを接続した状態になります。
- ショートしないようにミノムシクリップのゴムカバーを下して導体部分を隠しておきます。センサの白の導線は使いません。
これで、センサ周辺の配線は完了です。
3. Arduino本体とセンサを繋げるためのジャンパーワイヤーを接続
- USBケーブルをArduino UnoのUSBポートに奥まで差し込みます。また、二本のジャンパーワイヤーをArduinoのGNDとA5ピンに差し込みます。
- USBポートを左側に配置すると、GNDピンは下側真ん中あたり、A5ピンは下側一番右に位置しています。今回はGNDピンには黄色のジャンパーワイヤーをA5ピンには緑色のジャンパーワイヤーを接続しました。色はわかれば何色でもかまいません。
※GNDピンは二個ならんでいますが、どちらに接続してもかまいません。
C. Arduinoの下側から撮影した写真です。GNDとA5ピンにそれぞれ別のジャンパーワイヤーを接続しています。
D. 次に、圧力センサとArduino本体を接続します。センサの黒色の導線とつなげたミノムシクリップのもう片方のクリップでArduinoのA5ピンにつなげたジャンパーワイヤーの先端を挟みます。今回は緑色のミノムシクリップと緑色のジャンパーワイヤーを繋げることになります。
E. 次に、センサの青色の導線につなげた二本のミノムシクリップのうちACアダプターにつなげていない方のクリップでArduinoのGNDピンにつなげたジャンパーワイヤーの先端を挟みます。今回は黄色のクリップと黄色のジャンパーワイヤーをつなげることになります。
F. ショートしないようにミノムシクリップのカバーを動かして導体部分を覆い隠しておきます。
以上で配線は終了です。
もう一度、接続方法をまとめます。
- ACアダプターの黒色の導線⇔圧力センサの青色の導線
- ACアダプターの赤色の導線⇔圧力センサの茶色の導線
- ArduinoのGNDピン⇔圧力センサの青色の導線
- ArduinoのA5ピン⇔圧力センサの黒色の導線
正しく接続されていること、ショートしないように銀色の導体部分がミノムシクリップのゴムカバーで覆い隠されていることを確認してください。
4. 圧力センサ、真空計、バルブ、ダイアフラムポンプをホース、二個のチューブコネクターを用いて接続
真空計が身近になくても記事と同じセンサを用いるならば電圧-圧力直線はほぼ同じになると考えられるので心配はいりません。真空計を繋がない場合、チューブコネクターは一つで足ります。バルブは二方コックなどでも代用できます。流路を調節できるものであればなんでも使えます。
以上で圧力センサの信号をパソコンに転送するために必要なハードウェア部分は完成しました。
圧力センサの信号をパソコンに転送してみる ソフトウェア編
次に、Arduinoとパソコンを接続するための設定を行います。今回は、Windows 7を搭載したパソコンを用いて解説しますが、他のOSでも同様の方法で設定できると思われます。エラーなどが生じた場合、インターネットで検索すれば解決策が見つかる場合が多いです。
Arduinoにプログラムを書き込むためのソフトウェアArduino IDEをインストールします。
ウェブサイトに直接アクセスします。あるいはGoogleなどで「Arduino IDE」で検索した場合、上位にでると思われます。
※ページの細かい部分は今後変更される可能性があります。
A. 「Download the Arduino IDE」という項目の右側から自分のパソコンのOSを選択します。今回はWindows 7を用いるので「Windows Installer, for Windows XP and up」をクリックします。
B. 次のページで「JUST DOWNLOAD」をクリックするとダウンロードが始まります。
C. WebブラウザにGoogle Chromeを用いている場合、ダウンロードが完了したファイルが下部に表示されるのでこれをダブルクリックしてインストールを開始します。
あとは、指示に従い、インストールを進めていきます。基本的に「はい」、「Next」、「Install」、「インストール」などをクリックするだけで完了します。
次にArduinoとパソコンをUSBケーブルでつなげてください。ドライバがインストールされるまでしばらく待ちます。
A. Windows 7の場合、ドライバのインストールが完了すると以下のようなメッセージが出ます。この「COM6」といったポート番号は後で必要になるのでメモしておいてください。パソコンによってこのポート番号は変わります。以下、Arduinoはパソコンにつなげたまま作業をします。
B. デスクトップの「Arduino」アイコンをダブルクリックして「Arduino IDE」を起動します。
C. Arduino IDEが起動したら、上部メニューバー「ツール」をクリックし、ボードとして“Arduino/Genuino Uno”が選択されていることを確認します。他のボードが選択されている場合は、一覧から探してこれを選択します。
D. 次に、シリアルポートの設定を行います。Arduino IDEの、上部メニューバー「ツール」をクリックし、「シリアルポート」から先ほどドライバのインストールが完了したときに表示されたポートを選択します。今回は「COM6」だったので「COM6」を選択します。
E. 再度正しいポートが選択されているか確認してください。
これで、準備は終わりです。次にプログラムを転送してみます。
A. 以下の赤い四角で囲んだ部分にArduinoのプログラム、すなわちスケッチを書きます。既に部分的に書いてあるプログラムはこの部分をクリックしたのち「Ctrl」+「A」キーで全選択したのちに「Del」キーで削除してください。
空白となった部分に以下のコードを書いてください。コピー&ペーストで大丈夫です。最後の波括弧}まで、確実に入力されていることを確認してください。括弧一つでも抜けているとボードに書き込むときにエラーがでます(加筆:「float y = 2.43 * x – 480;」 の部分の-は「エンダッシュ」でなく「ハイフンマイナス」です。記事の仕様の関係で、「エンダッシュ」に変換されてしまうので、コピー&ペーストした後に、この部分を「ハイフンマイナス」に変更してください)。
const int Pressure_sensor = 5;
void setup() {
Serial.begin( 9600 );
}void loop() {
int x = analogRead( Pressure_sensor );
float y = 2.43 * x – 480;
Serial.println( y );
delay( 1000 );}
B. 以下のようになるはずです。プログラムの基礎は、「Arduinoをはじめよう」などの書籍に丁寧に書かれているので参考にしてみてください。
[amazonjs asin=”487311733X” locale=”JP” title=”Arduinoをはじめよう 第3版 (Make:PROJECTS)”]
また、インターネット上で多くの情報が公開されています。参考:基礎からのIoT入門
今回使っているセンサは大気圧を基準としたゲージ圧で信号を出力するため、それを絶対圧に換算する必要があります。その式がプログラム中段にあるy = 2.43 * x – 480 です。この辺りのプログラムについては後ほど説明します。
C. 次にこのプログラムをArduinoボードに書き込みます。上部の「→」”マイコンボードに書き込む”ボタンをクリックします。保存場所を指定したのちにコンパイル、書き込みが始まります。
D. ボードへの書き込みが完了すると、「ボードへの書き込みが完了しました。」というメッセージが下部に表示されます。エラーが出た場合は、プログラムにミスがないか、ポート番号が正しいかなどを確認してください。
これで圧力センサの値をパソコンに表示する準備が整いました。再度、配線を確認し、回路がショートしていないか確認したのちに圧力センサとつながっているACアダプターをコンセントにさし、ダイアフラムポンプを起動しましょう。
E. 次に、上部メニューバー「ツール」をクリックし、「シリアルモニタ」をクリックします。シリアルモニタウィンドウ右下のシリアル通信のデータ転送レートがプログラムのSerial.begin ()で指定した9600 bpsになっていることを確認してください。おそらく、真空計が示す値と近い数値が連続的にでてくるはずです。このプログラムはmbar単位で出力するように組んであるので、用いている真空計が他の単位の場合、換算が必要になる場合もあります。
F. 次に、シリアルモニタウィンドウを閉じ、上部メニューバー「ツール」をクリックし、「シリアルプロッタ」をクリックします。
G. 今度は、圧力が数値ではなくグラフとして出力されます。シリアルモニタの場合と同様に右下の転送レートが9600 bpsになっていることを確認してください。ダイアフラムポンプを動かしたまま、バルブを調節して圧力をかえ、変化する数値が逐一パソコンに転送されている様子を確認してください。
H. 一度シリアルモニタを閉じて、スケッチ(Arduinoプログラム)のdelay ( 1000 )の1000を100に変更してください。そして再度、上部の「→」”マイコンボードに書き込む”ボタンをクリックし、新たなスケッチをボードに書き込んでください。再び、シリアルモニタやシリアルプロットを開くと数値の取り込み間隔が大幅に短くなったことを実感できるはずです。カッコ内に入れた数値(単位はミリ秒)だけプログラムを一時停止させることができるのです。
このようにプログラムをパソコンで少しいじるだけで簡単に挙動を変えることが出来るのがArduinoのメリットでもあります。
再び、delay (100)をdelay (1000) に戻し、マイコンボードに書き込んでおきます。変更したスケッチを保存したいときは適宜、上部メニューバー「ファイル」をクリックし、「保存」あるいは「名前を付けて保存」をクリックします。
電圧–圧力直線を求める
これまで用いてきたプログラムは中古で安く入手した汎用流体用高精度デジタル圧力スイッチZSE50F-02-22L-MEを用いたときに作成したものです。今回用いている圧力センサPSE573-02も同じSMC製で、-100 kPaのとき1 V、100 kPaのとき5 Vをアナログ出力するタイプなので同じ電圧-圧力特性を示すはずです。実際に、今回もパソコンに出力された値とデジタル真空計の示す値はほぼ一致していました。しかし、mbar以外の単位での出力をしたいときなどのために、電圧-圧力直線の求め方を説明します。
※製品の説明書によると定格圧力範囲(-100~100 kPa)においては、ゲージ圧とアナログ出力値は直線関係にあります。
今回は、説明の簡略化のために二点のみをとり、直線を求めます。精度を高めたい場合はプロットの数を増やし、Excelなどを用いて近似直線の式を求めてください。最初は、ダイアフラムポンプは停止させ、バルブを全開にし、系を大気圧にしておきます。
A. まず、先ほどまでのスケッチをArduino IDEで開いてください。スケッチ中のSerial.println( y )のカッコ内のyをxに書き換えます。その後、上部の「→」ボタンをクリックしてマイコンボードに変更後のスケッチを書き込みます。Serial.println()はカッコ内で指定したデータをシリアルポートに出力します。これまでは以前に求めた直線y = 2.43 * x – 480によって得られた圧力y (単位: mbar)を出力するようになっていました。この式のxはanalogRead( Pressure_sensor )、つまりスケッチの一行目で定義した5番ピンから読み取ったアナログ信号そのものです。そのため、シリアルモニタを開くと、センサからの生データが表示されることになります。このとき、デジタル真空計は1013 mbarを示しており、シリアルモニタでは624付近の数値が出力されていました。つまり、センサからの値624は1013 mbarに対応するということです。
B. 次に、二点目のプロットをとります。ダイアフラムポンプを起動し、今回はバルブの締め具合を調節し、20 mbar付近に調節しました。このとき、どの値に調節するかは用いるポンプの性能にも依存するため自由です。しかし、センサの測定範囲(13 mbar ~)に注意する必要があります。しばらく放置し、値が安定するのを待ちます。安定したとき、デジタル真空計は25 mbar示し、シリアルモニタでは212付近の数値が出力されていました。つまり、センサからの値212は25 mbarに対応するということです。これらのことから求める直線は(x, y) = (212, 25), (624, 1013)の二点を通る直線、すなわちy = 2.40 * x – 483 となります。
C. 最後に、新たに得られた直線の式を反映させ、Serial.println( x )をSerial.println( y ) に戻し、ボードに書き込めば、センサからのアナログ値がmbar単位でシリアルモニタに表示されます。直線を求める際に用いた真空計の単位がmmHgであれば、出力される数値は同じmmHg単位となります。
最後に、バルブの開き加減をいろいろ調節し、デジタル真空計とシリアルモニタに表示される値がほぼ一致することを確認してください。delay ()のカッコ内の数値は自分がやりやすい値に変更してください。値が一致することが分かれば、新しい真空計がもう一台誕生したことになります。デジタル真空計、バルブなどを取り外して、いろいろなポンプなどの圧力を測定してみてください。ただし、センサの測定範囲が-100 kPa~100 kPa(大気圧を基準としたゲージ圧)、すなわち13 mbar ~ 2013 mbar (絶対圧)となるため、油回転真空ポンプで到達するような高真空を測定することはできません。センサが壊れる可能性も考えられるので注意してください。
長くなりましたが以上で今回の記事は終わります。次回、液晶ディスプレイをArduinoに接続してパソコンなしでセンサからの圧力を表示する方法を説明します。
エバポ真空制御装置を作ろうシリーズ
- 部品の大まかな説明、マイコンについて、また必要なパーツを集め
- 圧力センサの信号をパソコンに転送。ハードウェア編とソフトウェア編 (本記事)
- 液晶ディスプレイを接続し、それに表示する方法
- 全部接続してみよう
- 組み立てて動かしてみよう
本記事は、大阪大学鳶巣研究室の櫻井駿さん(博士課程2年)による寄稿記事です。