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

水草水槽のCO2圧力変化をOLEDにグラフ表示

 ペン型オシロが完成したので、0.96インチOLEDを使った遊びは山場を越えました。ところで、最初にやってみたかったのは、水草水槽用の化学反応式CO2発生装置の圧力計のモニタです。そんなことで遅まきながら、CO2発生タンクの圧力変化を記録してみました。

▼水草水槽に取り付け
水草水槽とCO2発生装置
 左が水草水槽で、右側がCO2供給装置。右手前が今回作った圧力モニタ回路です。

▼圧力モニタ回路
OLEDとArduino
 仮設置しただけなので、既存の回路にミノムシクリップで接続しています。

▼圧力変化グラフ
CO2圧力変化グラフ
 縦軸は圧力で、mmAq単位。横軸の1目盛りは6時間なので、過去30時間分の圧力の変化を表示するようになっています。なお、右端が現在時刻で、この写真は午前10時頃のものです。

 昼間の圧力は710mmAq付近で、この圧力で水槽のストーンにCO2を供給しています。夜間はCO2の発生を止めて(少なくして)いるので圧力が下がっています。朝になるとCO2の発生を再開しますが、ストーンに水が入っているためだと思いますが、圧力が一旦1100mmAq以上まで上がった後、で定常状態になっています。

 この一連の圧力変化で一番気になっているのは、夜間に圧力がマイナスになってしまうことです。負圧になると重曹タンクに水槽の水が吸い込まれてしまう恐れがあります。

 この問題の対策として、水が逆流しないように逆止弁を入れています。また、夜間も少しずつCO2を発生させることでタンク圧力の低下を防いでいます。ただ、実際にどういう値になっているのかを見るために、一晩中見張っている訳にもいかないので、こんなふうに圧力変化を連続でモニターする仕掛けが欲しかった訳です。

 なお、夜間にCO2の圧力が低下する原因は、気温の変化(低下)と水へのCO2の溶解量の変化(増加)が原因だろうと推定しています。また、重曹を新たにチャージした後は負圧になる傾向が強くなるので、反応生成物の量の影響もあるようです。

▼回路図
ArduinoとOLEDによるロガー
 Arduino UNO にちょっと配線しただけの簡単な回路です。

 ソフトは以前の記事で公開したものとあまり変わりませんが、以下の通りです。

◆プログラム
/* 圧力トレンドロガー(_20190311DataTrendLogger.ino)
0.96インチOLEDにアナログ入力の変化グラフを書く
(表示フォーマットや換算式をある程度汎用化したバージョン)
2019/03/11 ラジオペンチ http://radiopench.blog96.fc2.com/
*/

#include <Wire.h>
#include <Adafruit_GFX.h> // adafruitのライブラリを使用
#include <Adafruit_SSD1306.h>
#include <MsTimer2.h> // 定周期割込みに使用

#define SCREEN_WIDTH 128 // OLED display width, in pixels
#define SCREEN_HEIGHT 64 // OLED display height, in pixels
#define STRING_L 4 // 合計表示文字数
#define AFTER_DECIMAL_L 0 // 小数点以下の表示桁数

//#define LOG_INTERVAL 110 // ログ記録周期 110ms(最速)
//#define LOG_INTERVAL 2000 // ログ記録周期 2秒(200秒記録)
//#define LOG_INTERVAL 10000 // ログ記録周期 10秒(16.7分記録)
//#define LOG_INTERVAL 30000 // ログ記録周期 30秒(50分記録)
//#define LOG_INTERVAL 60000 // ログ記録周期 1分(100分記録)
//#define LOG_INTERVAL 864000 // ログ記録周期 864秒(24時間記録)
#define LOG_INTERVAL 1080000 // ログ記録周期 1080秒(30時間記録)

// Declaration for an SSD1306 display connected to I2C (SDA, SCL pins)
#define OLED_RESET -1 // Reset pin # (or -1 if sharing Arduino reset pin)
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);

int latestData;
int dataBuff[110]; // データーバッファ
char chrBuff[10]; // 表示フォーマットバッファ
int dataMin;
int dataMax;
volatile boolean timeFlag = LOW;
float aaa = 4.5332; // 圧力換算係数 aaa y =aaa * x + bbb
float bbb = -448.0; //        bbb

void setup() {
pinMode(13, OUTPUT);
Serial.begin(115200);
// analogReference(INTERNAL); // フルスケール=1.1V

if (!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) { // Address 0x3C for 128x64
Serial.println(F("SSD1306 allocation failed"));
for (;;); // Don't proceed, loop forever
}
// pinMode(SCL,INPUT); // CPU側のプルアップを外す(場合による)
// pinMode(SDA,INPUT); // (OLED側で3.3Vにプルアップされているため)

for (int i = 0; i <= 99; i++) {
dataBuff[i] = -1; // バッファを未定義フラグ(-1)で埋める
}
latestData = pressMes(); // 読み捨て
latestData = pressMes();

display.clearDisplay(); // 画面全消去(0.4ms)
writeCommonImage(); // 共通部分を描画
dispNewData(); // 最新値を表示(1.42ms)
display.display();

MsTimer2::set(LOG_INTERVAL, timeUp); // 指定インターバルで割り込み
MsTimer2::start(); // タイマー割り込み開始
}

void loop() {
digitalWrite(13, HIGH);
latestData = pressMes(); // 圧力測定(26ms)
saveBuff(); // 表示バッファに書き込み(180us)
writeCommonImage(); // 共通イメージ作画(5.9ms)
dispNewData(); // 最新の値を表示(1.42ms)
plotData(); // グラフプロット(約20ms波形によって変わる)
dispVscale(); // 縦軸目盛り表示(6.6ms)
display.display(); // バッファの値を転送して表示(37ms)
digitalWrite(13, LOW); // 処理時間合計=約95ms

while (timeFlag == LOW) { // MsTimer2割込みが入るまで待つ
}
timeFlag = LOW; // フラグをクリアして次の割込みに備える
}

int pressMes() { // 圧力測定ルーチン
int pD;
long x = 0;
int count = 200; // 平均回数
for (int i = 0; i < count; i++) { // 指定回数積分
x = x + analogRead(0); // 圧力センサーを読む
}
pD = x / (count / 20); // 平均値計算(但し20倍)
// Serial.println(mmAq(pD));
return pD; // 圧力センサーの値を返す
}

void dispVscale() { // 縦軸目盛りの値を表示
float p1, p2, delta;
p1 = mmAq(dataMin); // 圧力値に変換
p2 = mmAq(dataMax); //
delta = p2 - p1;

dtostrf(p2, STRING_L, AFTER_DECIMAL_L, chrBuff); // 書式設定
display.setCursor(0, 9); display.print(chrBuff); // Max値表示
dtostrf(p1 + 2.0 * delta / 3.0, STRING_L, AFTER_DECIMAL_L, chrBuff); // 書式設定
display.setCursor(0, 24); display.print(chrBuff); // 2/3値表示
dtostrf(p1 + delta / 3.0, STRING_L, AFTER_DECIMAL_L, chrBuff); // 書式設定
display.setCursor(0, 41); display.print(chrBuff); // 1/3値表示
dtostrf(p1, STRING_L, AFTER_DECIMAL_L, chrBuff); // 書式設定
display.setCursor(0, 57); display.print(chrBuff); // Min値表示
}

void saveBuff() { // データバッファの更新と最大・最小値の修正
int d;
dataMin = 30000; // 最小値
dataMax = 0; // 最大値

for (int i = 98; i >= 0; i--) { // 配列に値を保存しながら最大と最小値を求める
d = dataBuff[i];
dataBuff[i + 1] = d; // 配列のデーターを一つ後ろにずらし
if (d != -1) { // ずらしたデータが有効値だったら、
if (d < dataMin) { // 最小と
dataMin = d;
}
if (d > dataMax) { // 最大値を記録
dataMax = d;
}
}
}
dataBuff[0] = latestData; // 配列の先頭には最新データーを記録し、
if (latestData < dataMin) { // 最小と
dataMin = latestData;
}
if (latestData > dataMax) { // 最大値を再確認
dataMax = latestData;
}
}

void dispNewData() { // 最新データーの値を画面の右上に表示
float p;
p = mmAq(latestData);
dtostrf(p, STRING_L, AFTER_DECIMAL_L, chrBuff); // 指定フォーマットで
display.setCursor(80, 0);
display.print(chrBuff); // 最新測定値を表示
}

void plotData() { // 配列の値に基づきデーターをプロット
long y1, y2;
for (int i = 1; i <= 99; i++) { // 線で接続するために、先頭の次データから開始
if (dataBuff[i] == -1) { // データーが未定(-1)なら
break; // プロット中止
}
y1 = map(dataBuff[i - 1], dataMin, dataMax, 63, 9); // y1をプロット座標へ変換(i番目のデーターが有効なのでその前は必ず有効)
y2 = map(dataBuff[i], dataMin, dataMax, 63, 9); // y2もプロット座標へ変換
display.drawLine(127 - i, y1, 126 - i, y2, WHITE); // 点間を線で結ぶ
}
}

float mmAq(int x) { // データーをmmAq単位の気圧に換算
float y;
y = x * aaa / 20.0 + bbb; // 圧力計算式(xは20倍で保存されているので、ここで補正)
return y;
}

void writeCommonImage() { // 共通画面の作画
display.clearDisplay(); // 画面全消去(0.4ms)
display.setTextColor(WHITE); // 白文字で描く
display.setCursor(0, 0); // 画面左上から、
display.println(F("Press 30Hr")); // グラフタイトル表示
display.setCursor(104, 0); // 右上に、
display.println(F("mmAq")); // 単位記号

display.drawFastVLine(26, 9, 55, WHITE); // 左縦線
display.drawFastVLine(127, 9, 55, WHITE); // 右縦線

display.drawFastHLine(25, 9, 3, WHITE); // 左端、Max値の補助マーク
display.drawFastHLine(25, 63, 3, WHITE);

display.drawFastHLine(46, 9, 3, WHITE); // 中間、Max値の補助マーク
display.drawFastHLine(46, 63, 3, WHITE);
display.drawFastHLine(66, 9, 3, WHITE); // 中間、Max値の補助マーク
display.drawFastHLine(66, 63, 3, WHITE);
display.drawFastHLine(86, 9, 3, WHITE); // 中間、Max値の補助マーク
display.drawFastHLine(86, 63, 3, WHITE);
display.drawFastHLine(106, 9, 3, WHITE); // 中間、Max値の補助マーク
display.drawFastHLine(106, 63, 3, WHITE);

display.drawFastHLine(126, 9, 2, WHITE); // 右端、Max値の補助マーク
display.drawFastHLine(126, 63, 2, WHITE);

for (int y = 26; y < 60; y += 19) { // 水平目盛り線を点線で2本書く
for (int x = 25; x <= 128; x += 4) {
display.drawFastHLine(x, y, 2, WHITE);
}
}

for (int x = (127 - 20); x > 30; x -= 20) { // 縦目盛り線を点線で4本描く
for (int y = 10; y < 63; y += 5) {
display.drawFastVLine(x, y, 2, WHITE);
}
}
}

void timeUp() { // MsTimer2割込み処理
timeFlag = HIGH;
}

 データー数は100固定で、記録したデーターの最小/最大の範囲に追従してグラフを作図するようになっています。ある程度汎用的に使えるように作ったので、カストマイズの方法について以下に説明します。

1.ログ収集間隔
 17-23行目で選択(必要な項目のコメントアウトを外す)。なお、タイマー割り込み周期をms単位で指定しています。

2.換算係数
 表示する値を y, ADコンバーターの値を x とした時、y = a*x + b の式で計算しています。a と b の値は35, 36行目で指定します。なお、x には0-1023までのADコンバーターの値が入ります。また、分解能改善のため、x の値は内部的には20倍した値で扱っています。
 換算式は一次方程式の一般式になっているので、Arduinoのアナログポートで読める電圧を、任意のスケールの値に線形に変換出来ます。つまり、温度や気圧などの値への変換が簡単に出来るので、このプログラムの応用範囲は広いはずです。

3.表示フォーマット
 表示文字数と、小数点以下の桁数を、14,15行目の STRING_L と AFTER_DECIMAL_L で指定しています。表示桁数などを変えたい時は、ここのパラメーターを変更します。但し表示スペースは4文字分しかありません。

 画面に表示している文字やグラフの目盛りなどは、コードを見れば判るでしょうから、適当に修正してください。

▼表示例
OLED表示例
 もう一つ表示例です。開始後約18時間後なので、グラフの左側がまだ空白になっています。

◆まとめ
 これを使うとCO2の供給圧の変化が判り易くなりました。いっそのこと、CO2供給装置を改造して、このOLEDを組み込んでしまえばいいのですが、それはちょっと面倒なのでどうしようかと、悩ましいところです。

 ちなみに、圧力変化のログをシリアルに出して、タブレットに保存し、後でエクセルでグラフにしたことがあります。でも、それより今回作った仕掛けの方が圧倒的に便利です。ログを出力する時に欲しいのはトレンドが判るグラフであって、細かいデーターではないということですね。

 あと、これまでいろいろいじった経験から、このOLEDの使い方のノウハウみたいなことがいくつか判ってきました。ということで、次の記事ではそういう話をまとめたいと思います。

化学反応式CO2発生装置、運転ノウハウなど

 マイコン制御の水槽用CO2ガス添加装置は順調に動いています。自分へのメモを兼ねて、ここまでの運転を通じて判ったことなどをまとめておきます。

1.配管の注意点
1) 水槽の水の逆流防止
逆流防止トラップ
 夜間の停止時などに、水槽からガス発生装置への水の逆流を防止するために逆止弁を設置しているのですが、少しリークがあるようで水槽の水が吸い上げられる現象が発生しています。リークはガスだけで、水は逆止弁のところで止まっていて重曹タンクまで入ることはありませんが、ちょっと気持ち悪い状態です。なお使っている逆止弁は、比較的高級品です(たぶんスドー製)

 対策としてこの写真のようなアンテナ状のステーを立て、途中の配管を持ち上げるようにしました。たとえ負圧で水が吸い上げられたとしても、この高さを超える(約100mmAq)圧力がなければ逆流しないはずです。ただ残念なことに、実際にはこの高さを上回る負圧が発生することがあるようで、対策としては不十分でした。でもやらないよりはましでしょう。もちろん、配管をもっと高く持ち上げればいいのですが、あまり目立つことは出来ません。

2) 重曹タンクからの飛沫混入防止
 重曹タンク内で、CO2ガスと共に発生する溶液の飛沫が配管に飛び込んで、チューブの中に薬品が析出する現象が発生しました。液面を下げて使えばいいのですが、小さなタンクで出来るだけ長時間運転したいという事情もあるのでそういう対策は難しいです。
 ということで、ボトルのキャップの内側、ガスの取り出し口に小さなプラ板で作ったバッフルを取り付けました。これで配管への薬液の混入はほぼ無くなりました。
▼飛沫飛込防止バッフル
CO2取り出し口の液ハネ除け
 ボトルのキャップの内側を見た写真です。黄色のプラ板の裏にガスの取り出し配管があります。

2.ガスの発生量
 重曹とクエン酸を反応させてCO2ガスを発生させますが、その量の関係について再度整理します。

◆反応式
 クエン酸 + 炭酸水素ナトリウム → クエン酸3ナトリウム + 水 +炭酸ガス
 C6H8O7 + 3NaHCO3      → Na3C6H5O7     + 3H2O +3CO3

 1モル当たりの質量(グラム)で表すと
 192   + 252          → 258         + 54 + 132

 この装置では重曹は充分な量を用意しておき、クエン酸で反応量を決めています。つまり上の式で言うと、クエン酸192gから炭酸ガスが132g得られることだけに着目し、他は無視しても良いことになります。

 クエン酸は溶解量36g/100ccの水溶液の状態で供給し、120秒間隔で、1ショット15msに相当する量を供給します。1ショットの液量は0.0135ccで、この中のクエン酸の量は0.00405gなので、0.00278gのCO2が発生することになります。
 炭酸ガスの比重は 0.001977g/ccなので、0.00278gはガスの容積に換算すると1.4ccになります。つまりこの条件である1ショット15msで1.4ccのCO2ガスが発生することになります。

 クエン酸のタンクの容積は200ccなので、ショット可能な回数は13333回(200/0.00278)で、ガス量は18.6ℓ(13333*1.4cc)ということになります。これは重量に換算すると37gです。ところで、液化炭酸ガスカートリッジには74gのCO2が入っているので、この約半分の量が発生出来るということになります。これが多いと思うかどうかは、人によって違うと思うので、ここでは議論しません。

3.薬液のチャージ量
 前項の計算でガスの発生量が判りました。実際の薬液のセットアップは以下のようにしています
▼薬液タンク (緑矢印が液面、赤矢印が重曹スラリー表面)
CO2発生装置の薬液タンク
・クエン酸
 右側がクエン酸のタンクで容積は200ccです。こちらにはクエン酸を60g入れ、その後水を容器いっぱいになるまで入れることで、溶解量36g/100ccの水溶液にしています。(クエン酸(比重1.67)60gの容積は36cc、水は164cc(200-34))
 なお別の大きなボトルを使って、所定の濃度のクエン酸の水溶液をまとめて作っておくと便利です。

・重曹
 左が重曹のタンクで容積は450ccです。このタンクには重曹を底から約4cmの深さになるまで入れています。(重曹の溶解度は小さく、ほとんど水に溶けません)水は底から5.5cmくらいまで入れます。

 この状態で運転すると、重曹のスラリーの底まで突っ込んだJ字型のパイプから出るクエン酸でCO2の泡が発生し、その結果として重曹スラリーの表面がお椀型に凹みます。この時、J字型のパイプ先端がスラリーの底から露出しない量の重曹を入れておくと、反応が安定しましたす。つまり、パイプの先が重曹に埋まるようにしておくと具合が良いみたいです。もしパイプの先が露出させると、未反応のクエン酸が残り、これが後でじわじわと反応するため制御性が悪くなるのだと思います。但し、この仮説にはあまり自信がありません。

 このように重曹は過剰にチャージしているため、いわゆる死に容量になっています。でも反応を安定化させるためには仕方がありません。

 なお、重曹は入れ替える必要は無く、減った分を補充するだけで大丈夫です。その場合、上澄み液にはクエン酸3ナトリウムが大量に含まれているので、これを流して捨ててしまいます。念のために、水を入れてちょっと待って沈殿させ、その後上澄み液を捨てるという操作を2-3回繰り返すといいでしょう。この時重曹が少し流れてしまいますが、安いので気にしないことにします。

4.CO2の圧力変化
 タンクの圧力計を付けたので運転状態の把握が楽になりました。圧力の値は液晶以外にシリアルにも流しているので、これを記録して一日の変化をグラフにしてみました。

▼タブレットにデーターを記録
圧力変化記録中
 シリアルデーターをタブレットに取り込んでファイルに記録しているところです。記録したデーターをPCに移すには色々な方法がありますが、今回はDropbox を使いました。ファイルをPCに移した後は、そのままではデーター量が多すぎるので適当に1/10に間引いて(windows のコマンドで findstr ,1 )エクセルでグラフにしたのが次の図です。

▼圧力の変化グラフ
圧力変化
 14時から翌日の14時あたりまでの、24時間の圧力変化グラフです。

 昼間は約800mmAqで安定しています。17時過ぎに夜間信号が入ったのでCO2の添加を夜間モードに変更したため、圧力が急降下しています。水槽内へのCO2のバブリングはこの時点で止まったはずです。

 圧力は22時頃にはゼロになり、その後負圧になっても圧力の低下は続き、明け方には -300mmAq まで下がっています。この原因は気温の低下による圧力低下とCO2の水への溶解量の増加だと思います。ひょっとしたら、CO2が吸収される化学反応が起こっているのかも知れません。なお、負圧になるまで変化しているので、単なるリークではなさそうです。

 朝の6時頃に急に圧力が上がっているのはモーニングショットの効果だと思いますが、もっと入れておいた方が良かったようです。ちなみにこの時のショット数は6でした。

 その後2時間以上かかって圧力は上昇し、8時半頃の圧力の急減のタイミングでバブリングが始まったようです。ストーンに染み込んだ水を追い出すのに少しい高い圧力が必要だったということでしょう。(その後のグラフで平坦部があるのはデーターの欠測です)

◆まとめ
 運用のノウハウめいたことを記録するために記事にまとめてみました。たぶん後で見て、自分にも参考になる情報だと思います。

 圧力の変化グラフは今回初めて作ったのですが、こんなに高い負圧になっているとは思いませんでした。夜間の冷え込み具合で結果が変わるのでしょうが、圧力維持のための夜間の反応量をもっと増やさないといけないようです。

 この記事のような圧力の変化グラフを作るのは大変なので、最大と最低圧力だけでもプログラムで記録しておいて、液晶画面から参照できるようにすると便利かも知れません。

化学反応式CO2発生装置、圧力計を追加

 圧力センサー(MPS20N0040D)の使い方が確認出来たので、いよいよCO2ガス発生装置(添加装置)に組み込んで、タンクのガス圧力を表示出来るようにします。

 ちなみに、全体はこんな物です。

▼水槽とCO2ガス発生装置
水槽と反応式CO2ガス供給装置
 左の小さな水槽に右の箱からCO2ガスを添加しています。(水槽の色が赤いのは、照明が夕日モードになっていたためです。)

 実はこの写真は圧力計を組み込んだ後に撮影しています。圧力の値は液晶画面に表示するので、外観的にはこれまでとほとんど変わっていません。

▼配管系統図
系統図
 重曹タンクの出口の配管を分岐して圧力センサーに接続しました。配管を一旦下げた後で上に上げているのは、圧力センサーに薬品が入ってしまうことを防止するためです。例え閉管の先でも、微妙な温度差で物質の移動・堆積が起こることがあるので、出来ることはやっておいた方が良いと思います。

▼回路図(図をクリックで別窓に拡大)
CO2供給装置回路図
 ちょっとずつ機能を追加していたら、こんなに大きな回路になってしまいました。今回追加したのは、下の方の圧力センサーの回路で、圧力のアナログ値をArduinoのアナログポート(A0)に入力しています。

▼圧力センサー基板
圧力センサー基板
 センサーとアンプを同じ基板に実装しました。ノイズの影響を受け易いので、後ろのプラケースで作ったシールドケースに入れて使います。なお、シールドは銅箔テープを貼って、はんだ付けで作りました。またこの銅箔は基板のグラウンドと接続しています(緑色の線です)。センサーへのコンタミ防止のため、この基板はケースの中の出来るだけ高い位置に置くようにします。

▼基板裏面
圧力センサー基板
 いきあたりばったりで配線していったのですが、うまく入りました。

 圧力の表示はソフト改造で行いましたが、その結果は以下の通りです。なお、元の表示の内容は、化学反応式CO2発生装置、ソフト解説編をご覧ください。

▼圧力の表示
通常表示(2行目に圧力表示)
 1行目はこれまでと同じで、次のショットまでの残り時間。2行目にはmmAq単位の圧力を表示させています。これはリークチェックをやっている時の写真なので高い圧力になっていますが、通常の使用状態では800~700mmAq程度です。

▼ポンプ時間と運転間隔
decボタンで2行目にポンプの動作時間と間隔
 dec (-) ボタンを押すと、ポンプの運転時間(ショット時間)と運転間隔を表示するようにしました。

 これまでは2行目にポンプの運転間隔を表示させていたのを、圧力表示に変えたので、ポンプ運転間隔が見れなくなってしまいました。この値は、Selectボタンを押してプログラムの内容を見れば判るのですが、ちょっと面倒です。そんなことで、ワンタッチで確認出来るようにするために、この機能を付けました。
 ちなみに、通常運転状態では(ー)ボタンには何の機能も割り当てていなくて、寂しかったのですが、これでメニューのバランスが良くなりました。

◆プログラムはこちら→CO2供給装置のプログラムV2.0 (Shift-JISでエンコードしています)

 これまでの記事のプログラムを合体しただけなので細かい説明は省略しますが、

 圧力計のテストの時点ではパラレルインタフェイスの液晶だったのを、I2Cインターフェイスに変更しました。このためのプログラムの変更は宣言部を修正しただけで、本体部分はそのまま使えたのは助かりました。

 readPress() の関数でADコンバーターの値を何度も読んで平均化していますが、ここの読み取り回数が892回と半端な値になっています。これは、この回数で実行時間が100msになり、電源波形の整数倍の時間になるので電源ノイズの影響を減らすことが出来る(はず)という狙いです(50Hzなら5サイクル、60Hzなら6サイクルに相当)。なお、コンパイラのバージョンによっては処理時間が変わるかも知れません。ちなみに、Arduino IDE 1.8.1 でコンパイルしました。

◆まとめ
 圧力計があると、運転状態を定量的に把握出来て便利です。特にストーンの違いやリークの有無が簡単に判ります。また、マイナスの圧力も測定出来るので、夜間にタンクが負圧になる様子も確認出来ました。

 圧力の表示の分解能を1mmAqとかなり細かくました。こんなに分解能を上げると、最小桁の値がふらつくのですが、それでも微妙な圧力の変化がすぐに判るので、これで正解でした。

 今回作った装置は、ガスの圧力をそのままストーンに供給しているので、圧力計の測定範囲の上限は約0.4kg/cm2にしています。もっと高い圧力、例えば1kg/cm2までタンクの圧力を上げ、そこからスピコンで絞ってガスを供給するのも面白そうです。でもそうすると、ホースを耐圧の物に変えないといけないし、安全弁も必要になるのでいろいろと厄介です。

 今回作った反応式CO2ガス発生装置(添加装置)の運転やメンテナンス方法については、ノウハウのような話がいろいろあるので、時期を見てまた記事にしたいと思います。
カレンダー
02 | 2019/03 | 04
- - - - - 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
31 - - - - - -
プロフィール

ラジオペンチ

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

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