google-site-verification: google3bd66dd162ef54c7.html
FC2ブログ

圧力センサーMPS20N0040Dを使う、回路とソフトのテスト

 前の記事で圧力センサーの感度が判ったので、いよいよ回路とソフトを作って実際に圧力測定を行ってみます。今回の記事の結論を先に出すと、

▼炭酸ガス発生装置の圧力を測定
反応式CO2m圧力計テスト中
 圧力センサーを使って、CO2発生装置の反応槽(重曹タンク)の圧力を液晶画面に表示させるところまで行います。

▼回路図(クリックで別窓に拡大)
Arduinoを使った圧力計の回路図
 圧力センサーの出力を5倍の差動(差電圧)アンプで受け、更に12倍のアンプを通してArduinoに接続しています。

 1段目はオペアンプを3個使った計装アンプ構成にした方が良いのですが、作るのが面倒なので簡単な回路にしました。なお、差動アンプのゲインを欲張ると増幅率の精度が悪くなるので、ほどほどの倍率に留めています。また、オフセット調整のVR1には100Ωを使いたかったのですが手持ちが無かったので100Ω(R50)をパラにして誤魔化しています(副作用があります)。

 R6を可変抵抗にしてゲインを調整可能にしたくなります。でもそうすると、ゲインと同時にオフセットも変わってしまうので調整が面倒になります。そんなことで、ゲインは60倍の決め打ちで行くことにしました。なおゲインの最終調整はソフトで行うことにします。

 後段の12倍アンプと合わせ、全体の増幅率は60倍で、この倍率でセンサーのフルスケールである0.4気圧が、Arduinoのアナログポートのフルスケールの5Vにほぼ相当するようになります。なお、センサーのブリッジの供給電圧は電源電圧のままで安定化していませんが、Arduino側のADCのVrefも電源電圧のままで変化するので、電圧の変動の影響はキャンセルされるはずです。

 話が戻りますが、この回路のように整数の増幅率を持つアンプを作る時は、正確な抵抗比が必要な時に便利な、E24の数値の相対比率表を使うと便利です。まあこの記事の用途では、半端な増幅率になってもあまり困らないのですが、、

▼センサーとブレッドボード
圧力センサー MPS20N0040D
 半透明のチューブの先のDIPのICが圧力センサーです。

▼プログラム
/*  圧力センサー MPS20N0040D の動作テストプログラム
* 表示はmmAq 2018/11/11 ラジオペンチ http://radiopench.blog96.fc2.com/
*/

#include <LiquidCrystal.h> // LCDを使用

LiquidCrystal lcd(12, 11, 5, 4, 3, 2); // 液晶シールドを使用
float k1 = 931.1; // 1V当たりの圧力(mmAqの値)、要調整
float zeroPressV = 0.5; // 気圧ゼロの時の電圧

int mmAq; // mmAq単位の気圧(表現出来る範囲は±3.2kg/cm2)
char buff[10]; // 文字列操作バッファ sprintfで使用

void setup() {
pinMode(13, OUTPUT);
Serial.begin(115200);
lcd.begin(16, 2);
lcd.print("MPS20N0040D test"); // 1行目表示
lcd.setCursor(0, 1);
lcd.print("P= mm"); // 2行目固定表示
}

void loop() {
mmAq = readPress();
lcd.setCursor(2, 1); // 2行目3文字目から、
sprintf(buff, "%4d", mmAq); // 右詰め4文字で (マイナスは-nnn)
lcd.print(buff); // 圧力を表示
Serial.print(buff);Serial.println("mmAq");
delay(500);
}

int readPress() { // 圧力を測定してmmAq単位の値で返す
float p; // 圧力計算結果
long d; // ADC結果バッファ
long sumd = 0; // ADC累積値
digitalWrite(13, HIGH);
for (int n = 0; n < 100; n++) { // 100回
d = analogRead(0); // A0の値を読む
Serial.println(d);
sumd = sumd + d; // 平均処理のために累積
}
digitalWrite(13, LOW);
// 圧力計算式
p = k1 * ((sumd * 5.0) / (100.0 * 1024.0) - zeroPressV ) + 0.5;
return (int)p; // 結果をintで返す
}
 0.5秒間隔で圧力を測定し、キャラクタ液晶に表示するプログラムです。なお表示の単位はmmAqです。
 電圧から圧力に変換する係数(8行目のk1)の値は、前の記事の感度測定結果から持ってきた値です。
 約5000mmAqのスパンを10ビットのADCで刻むと、ステップは5mmAqになりこれでは分解能が不足します。そこで多数回測定して平均値を求めることで1mmAq単位の値を出しています。

▼ブレッドボードと液晶
圧力計のテスト
 右は液晶シールドで、この下にArduino UNO があります。

◆調整方法
 まずはゼロ調整を行います。センサーに何も接続していない状態で、VR1を廻して表示がゼロになるように調整すれば調整は完了です。なお、ゼロ調整した状態では、アナログポートへの出力(U3のピン7)の電圧は0.5Vになっているはずです(9行目の値で電圧は変更可能)。つまり、気圧ゼロは0.5Vで、それより電圧が低ければ負圧ということになります。

 なお、気圧ゼロを0ボルトに設定する手もあります。でも今回のようにオペアンプを片電源で使うと、0ボルト付近の挙動が怪しいので、アナログ回路ではオフセットを付けておいた方が安心です。ちなみに、オフセットは後でソフトで差っ引けば良いし、そもそも0ボルトを基準にすると負の圧力が表現出来なくなります。

▼スパン確認
調整と動作確認
 測定範囲確認のためにシリンジで圧力を加えているところです。確認の結果は、測定範囲 -465 ~ 4181mmAq で、狙い通りでした。

 動作は大丈夫そうなことが確認出来たので、実際の水槽に接続したのが最初の写真です。

◆まとめ
 念のためにU字管を使ったマノメーターで圧力の測定精度を確認しましたが、圧力の値はほとんど一致していました。ということで、k1の値は事前調査の値のまま変更しないで済みました。センサーの感度測定やアンプの倍率設定がうまくいっていた、ということで良かったです。

 最初の写真のように、実際の水槽に接続してみると、タンク圧力とCO2の泡の発生状態との関係が良く判って面白いです。現在の水槽の状態では、タンク圧力は750mmAq程度で、水深による圧力変化はもちろんありますが、圧力のほとんどはストーンの圧損によるものでした。

 ということで、圧力センサーを使ってArduinoで圧力を測定することが出来るようになりました。これをベースにすれば、いろいろな応用方法があると思います。世の中にはもっと高級な圧力センサーがありますが、基本はこの回路のようなブリッジアンプになっていることが多いはずです。ブリッジアンプを一度自分で作ってみるのは、良い経験になると思います。

 次回の記事では、これを化学反応式のCO2発生装置に組み込む予定です。

圧力センサーMPS20N0040Dを使う、特性確認編

 このあいだ作った、化学反応方式でCO2を発生させる装置は順調に動いています。これまで2か月くらい運転して欲しくなったのが、CO2発生タンクの圧力計です。圧力計があれば次のようなことが判るようになるはずです。

1) ガスの発生状況と、現在のガスの貯蔵量。
2) ストーンなどの圧損の値。
3) ガスの発生を止めて圧力の変化を見ることで、リークの有無。

 どれも大切な話なので、液晶画面にタンク圧力も表示させることにしました。

 まずは圧力センサーをどうするかですが、これいろんな物が売られています。安かったので、AliExpressからこんな物を買ってみました。

▼圧力センサー
圧力センサ MPS20N0040D
 AliExpress で買ったMPS20N0040Dと言う型格の、フルスケール40kPa(約0.4気圧)のピエゾ圧力センサーです。これ、送料込みで1個1ドルです。なお、背景は無関係です(手近にあったマウスパッド)。また、中央のセンサーに付いている水色のキャップは配管のチューブ接続用に取り付けた、熱収縮チューブです。

 データーシートはネットからダウンロードできますが、、大雑把な仕様は以下の通りです。MPS20N0040Dターシート
 圧力レンジ:40kPa、電源:5VDCまたは1mA(定電流)、入出力インピーダンス:4-6kΩ
 フルスケール:50-100mV、バイアス電圧(オフセット電圧?):プラスマイナス25mV

 一番重要な出力は50-100mVとなっていて、値にえらく幅があります。(この記事の後で実測して確認します)

▼ピンアサイン(データーシートより抜粋)
MPS20N0040Dのピン接続図
 このセンサーには変換アンプやインターフェイス回路は入っていないので、ブリッジの端子が直接引き出されています。ここで注意が必要なのは、この図はデバイスを下から見た図であるということです。(データーシートの外形図まで見ると判ります)
 DIPのパッケージでオリエンテーションマークまであるのに、裏側から見た図になっているとはふざけた仕様です。そういえば、データーシートも、だらだらとした箇条書きになっていて、普通のデバイスメーカーの書き方とフォーマットが違っていたので違和感を感じていたのですが、たぶん別の文化の影響下にある部品ではないかと思いましたが、どうなんでしょう。

 ともかく、真空管じゃあるまいに、いまどき裏から見た部品図が混ざっていたら絶対に間違えるので、上から見たBSch用の部品図を作りました。

▼MPS20N0040D (TopView)
MPS20N0040D(上から見た図)
 上から見た図に書き換えました、また、ピン番号の付け方もDIPのパッケージのルールに合わせています。ということで、この図はメーカーの図とはピン番号が違っています。

▼特性測定
感度測定方法
 データーシートがあまりにも大雑把なので、簡単な回路で特性を測定してみました。ブリッジの出力電圧をDMMで読む回路になっています。VR1には100Ωを使いたかったのですが、手持ちが無かったので1kΩを使い、パラに100Ωの抵抗(R1)を接続しています。

 圧力は、水を入れた細いシリコンチューブを図のようにU字管にして発生させました。水面の高さの差を巻き尺で測れば圧力が判る仕掛けです。

 このようにして測定した結果は以下の通りでした。なお、部品は3つあるので測定結果も3つあります。

▼ブリッジ出力電圧
測定結果
 まずはセンサーに圧力を加えない場合の出力で、ゼロ調用のVR1をいっぱいに廻した場合のブリッジの出力電圧です。

 VRをCCWにいっぱいに回した時は27mV、CWに回した時は-18mV程度の電圧になっています。このVR1が中央の時はCCWとCWの平均の電圧になるはずなのでゼロ点電圧として計算結果を示しています。

 どうもブリッジのゼロ点(センター)では少しプラスの電圧が出るように作られているようです。値が揃っているので、たぶんこれ狙ってやっているのだと思います。

▼圧力感度特性
感度計算結果
 いよいよ圧力を加えた場合のデーターです。測定前に出力がゼロになるように調整しておき、その後700mmAq程度の空気圧を加えた場合の出力です。

 平均としては、0.0179mV/mmAq となり、フルスケールの40kPaの時の出力は72.64mVということになりました。

 ちなみにデーターシートでは、フルスケールの出力電圧は50-100mVと広い範囲が示されているのですが、実際にはほぼその真ん中付近だったということになります。まあ n=3 でそういうことを言うのはあまり良くないのですが、3つ持ってきて3つともほぼど真ん中だったので、たぶん大丈夫でしょう。

◆まとめ
 えらく安いので心配だったのですが、ちゃんと圧力が測定出来ました。感度係数も判ったので、次回の記事では検出回路を作って、いよいよCO2発生タンクの圧力を測定してみたいと思います。

MFT2018の秋月のブースで買った「Makerお楽しみ袋」を開封

 MFT2018へ行った時に秋月電子のブースで買った、「Makerお楽しみ袋」を開封して何が入っているか確認して、使えそうな物をパーツボックスへ入れました。

 なお、このお楽しみ袋は1000円で、正月に秋月の店頭で売っている物と同じ感じような物だと思います。でもお正月に秋葉原まで行く余裕は無いので、MFTの会場で買えたのは嬉しいです。

▼Makerお楽しみ袋
秋月のMFT2018お楽しみ袋
 先に重さを測れば良かったのです、測り忘れました。中身を取り出した後で袋の寸法を測ると、20x30cmあって、かなり大きなサイズです。ともかくこの袋がパンパンになるまで部品が詰め込まれています。袋によって中身は違うようですが、大きなACアダプタが入っている物は、お買い得感が下がる気がしたのでやめときました。とは言っても、この袋は大きな蛍光表示管が見えていますが、これ私は使わないのでちょっと失敗したかも、という感じです。

▼中身を出す
中身を机にぶちまけた
 作業机の上に中身をぶちまけたところです。えらい量の部品が入っています。

▼部分拡大
拡大
 これを整理するのは大変ですが、何が入っているか判らないので、この作業嫌いじゃありません。それに電子パーツの目利きのトレーニングになります。
 やってて厄介なのはマウンターのテープに入った部品で、短縮マーキングされていたり、チップコンなどはマーキング自体が無かったりします。ということで、LCRメーターやテスターなど使って中身の確認を行って行きます。

▼整理完了
分類・整理
 同じ部品をまとめ、袋に入れて整理した状態です。なお、ピンヘッダーやコネクタなどは、整理中に部品箱へ放り込んで行ったので、これが全部ではありません。

 どんなものが入っていたか、美味しそうな物を書き出すと、
1) 2SK656(TO-92、入力抵抗付き)  400個
2) 0.01μFチップセラコン (テープ入り) 20個入り x 8本 = 160個
3) 2.8μFチップセラコン (テープ入り) 30個入り x 7本 = 210個
4) FMMVA06(SMD、NPNトランジスタ、テープ入り) 20個入り×5本=100個
5) SBD(SMD、テープ入り) 25個入り×8本=200個
6) SBD(ラジアル型、60V/2A) 24個
7) 高輝度赤色LED(OS5RAA511P、60mA) 10個袋入り
8) SMD型電解コンデンサ(16V、100μF) 20個

 まだまだあるのですが、数の多いのはこんなところです。ここにあげただけで1000個以上あり、単価はそれぞれ1円以上するので、充分元は取れています。

 1)項はデジトラのFET版と言う感じでしょうか、400個も絶対に使いきれません。2) 3) 項のチップコンについては、他に0.1μFが入っていれば完璧だったのですが、贅沢は言えません。7) 項の赤色LEDは秋月の店頭売りの袋に入っていたので、たぶん型番が古くなったので引っ込めた物でしょう。ちなみにこれの最新版を持っていますが、明るさの違いは感じませんでした。

◆まとめ
 これは良い買い物でした。こういう出し物でイベントを盛り上げてくれる秋月さん、大好きです。ちなみに、売り場の人は私が首からぶら下げていたLEDバッチにすぐ喰い付いてきました。流石は秋月の店員さんです。あと、「これはC基板で作ってます」と伝えると、近くにいた店員さん含めて大うけでした。

 最後に電子パーツの目利きの話ですが、どうにも判らない部品がいくつか残りました。主にマウンターのテープに入ったSMD部品です。まだまだ修行が足らないということでしょう。
カレンダー
10 | 2018/11 | 12
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -
プロフィール

ラジオペンチ

Author:ラジオペンチ
電子工作を中心としたブログです。たまに近所(東京都稲城市)の話題など。60過ぎて視力や器用さの衰えを感じつつ日々挑戦!
コメントを入れる時にメールアドレスの記入は不要です。なお、非公開コメントは受け付けていません。

記事が気に入ったらクリックを!
最新記事
カテゴリ
最新コメント
リンク
FC2カウンター
検索フォーム
月別アーカイブ
RSSリンクの表示
QRコード
QRコード