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

真空保存容器 (フォーサ) で高度計の動作確認

台所に面白そうなものがあったので遊んでみました。それは、フォーサ (FOSA) という名前で売られている食品用真空保存容器です。

▼フォーサと自作高度計
電動真空保存容器
いろいろなサイズの容器がセットになっているのですが、これは中間のサイズの容器です。左側の釣鐘型の物が乾電池で動く電動ポンプで、これで減圧して食品の貯蔵期間を延ばすというものです。

写真の手前に置いてある物は自作の高度計です。この組み合わせを見ると、これからやろうとしていることが想像出来るかと思いますが、高度計を使って容器内の真空度がどれくらいになっているのか確かめてみます。

▼容器内に高度計をセット
高度計を容器の中に入れる

▼減圧中
減圧中
フタを閉めてポンプを上に置き、ボタンを押すと自動的に設定圧力(真空度)まで減圧されてポンプが停止します。容器の蓋には逆止弁が付いているので、ポンプを取り外しても真空が維持出来るようになっています。

▼減圧完了
高度4500m
高度は 4553.4m、気圧は 562.29hPa でした。大雑把に言うと絶対圧で 0.56 気圧まで減圧されていました。ちなみにこの高度計は、マウナケアの山頂に持って行って、それっぽい標高が表示されるのを確認しています。

もっと減圧している(真空度が高い)と思っていたのですが、それほどでも無かったです。この程度の圧力でどれくらいの効果があるんでしょうね。まあ酸素分圧はおよそ半分になるので、酸化速度が半分にはなるのでしょう。

◆まとめ
これまで、気圧計や気圧高度計はいろいろ作ったのですが、その動作確認となるとうまい方法がありませんでした。せいぜい、天候変化による気圧変化を待つ、あるいは標高の高い所へ持って行くくらいしか確認の方法がありませんでした。そんなことで、こういう容器があると、減圧側の動作確認が簡単に出来るようになって便利です。

あと、容器自体のリークやポンプの到達真空度の確認も出来るので、双方にメリットがありそうです。

◆おまけ
フォーサには大きなサイズの容器もあるので、これを使うともう少し大きな物のテストが出来ます。圧力センサでモーターを停止させているようで、容器のサイズが変わっても到達圧力は変わりませんでした。

▼アナログ表示の高度計のテスト
アナログ高度計
高度4450mと出て、およそ合っている感じです。実は、この気圧計の針をここまで振らせたことはこれまで一度も無かったです。ただ、針を延々と回さないといけないので、かなりの時間が掛かりました。
この高度計のセンサーはLPS331で関連記事はこちら

▼iPhone の高度計のテスト
iPhone
高度計のアプリを走らせておいて減圧しているところです。なお、減圧速度が速くて液晶にダメージを与えそうな気がするので、ほどほど(2秒くらい)の減圧でやめておきました。なおフルに減圧しても、気圧の絶対値としては問題無いと思うのですが、急減圧なので、液晶パネルに大きな応力がかかりそうで心配です。

▼フォーサ (FOSA) の電池など
真空ポンプの内部
ついでに、ポンプの内部写真です。逆止弁らしき物が見えます。

アナログ時計をArduinoを使って正転/逆転させる

youtube に Arduinoを使ってアナログ時計を正転・逆転させる話 の動画を登録しました。この記事はその動画のサポートページとして、回路図とプログラムを公開するために作成したものです。内容的には以前作成した記事とほぼ同じものです。
(I have registered a video of the story of using the Arduino on youtube to forward and reverse the analog clock. This article is created to publish schematics and programs as the video support page. it is almost the same as the previously created article)

Over view
デモ運転

Circuit schem
schem

program
20190716ClockDriveDemo.txt (Ascii file with english comment)

CW wave form parameters
CWの駆動波形
My example value : cwPulse = 25.5ms, cwPeriod = 12ms

CCW waveform parameters
CCW駆動波形
My example value : ccwPulse1 = 4ms, ccwWait = 2ms, ccwPulse2 = 15.5ms, ccwPeriod = 80ms

Optimum waveform parameters are greatly depend on your clock mechanism. so many many times of tuning work will be reqyired.

Actual waveform CW
CW駆動パルス

Actual waveform CCW
CCW駆動パルス

note
this is the test of collaboration between this web and youtube

Make bi-directionaly moving clock by Arduino (part-1)


Make bi-directionaly moving clock by Arduino (part-2)

2つの0.96インチOLEDをArduino UNO で同時に表示

今回の記事は、youtube に0.96インチのOLEDをArduino UNO から二つ同時に表示する、という動画を見つけました。面白そうなので、そこに書かれている方法をやってみたけど、あまりうまく行きませんでした。と言う締まりの無い話になっています。



▼2つ同時に表示している様子(上記動画からキャプチャ)
表示結果

128 x 64 画素のOLEDは1024バイトのバッファを使いますが、これを二つ同時に使うと倍の2048バイトが必要になるはずです。一方でArduino UNO のRAMは2kバイト、つまり2048バイトで同じです。プログラムを動かすために、画像バッファ以外に変数用などにもRAMが必要なので、普通にやったらうまく動かないと思います。

ということで、何か特殊なテクニックが使われているのでは?と思ってやってみました。幸いFREE CODE と唄っていてソースは公開されています。それにOLEDも二つ余っています。

▼I2Cアドレスの設定
I2Cアドレスの設定
OLEDの基板上にあるアドレス設定用の抵抗の位置を変えて、アドレスが0x78と0x7Aの物を作ります。なお、左側のOLEDの3.3Vラインにはセラコンが追加されていますが、これは今回の話には関係ありません。

配線してプログラムをyoutubeの記事に書かれているリンク先から落としてきて動かしてみると、ちょっと動作が変です。

▼プログラムが間違っている
プログラムが間違っている
ソースを見ると、Display1 を表示した後で Display2 の表示を行っていますが、Display2 を表示するプログラムの途中でDisplay1 を触っている行があって、明らかに間違っています。動画の中にもプログラムを映している部分があるので、ひょっとしてと思って見たらこっちも間違っていました。上の画像はその部分の動画のキャプチャーです。

プログラムを修正して動かした結果が次の写真です。

▼実行結果
表示結果
横方向はいいのですが、縦方向が 2倍に引き伸ばされています。よく見ると水平に1ライン毎に黒い線が入っています。つまり、横は128画素有りますが、縦は32画素相当の表示になっています。RAMのアロケーションを調べるプログラムを追加してメモリーの使用状態を見てみると、ヒープ領域に約1030バイトが確保されているだけだったので、表示結果と矛盾しない量になっていました。(128 x 32 画素 x 2 画面 = 8192 ビット = 1024 バイト)
つまり、期待していた特殊なテクニックは使われていないようです。

プログラムの初期化をやっている部分は下記です。
#include 

#define OLED_RESET 4
Adafruit_SSD1306 Display1(OLED_RESET);
Adafruit_SSD1306 Display2(OLED_RESET);

int i, j;

void setup() {

//Serial.begin(9600);

Display1.begin(SSD1306_SWITCHCAPVCC, 0x3D);
Display1.clearDisplay();
Display1.display();

Display2.begin(SSD1306_SWITCHCAPVCC, 0x3C);
Display2.clearDisplay();
Display2.display();

}
SSD1306の画素数の設定がされていません。たぶんこういう書き方をすると、デフォルトの設定が選択されて、それが128x32画素になる、ということなんでしょうか。

ともかく繰り返しになりますが、実際にやってみたらたら謎は深まりました。

◆まとめ
この画素数のOLEDを2つ同時に使うと、arduino UNOではRAMが不足するはず。ということは、バッファメモリーの共用などのテクニックが使われているのではないだろうかと思って調べてみました。しかし特にそういうことをやっている感じではありませんでした。というか、それ以前に2つのOLEDを本来の解像度で動かすことが出来ませんでした。

デモの画面を見ると128x64画素で2画面表示しているのは間違い無い気がします。ひょっとしたら、この動画が投稿された頃と現在ではadafluit のライブラリの造りが変わっているのかも知れません。

ついでに書きますが、adafluit のグラフィックのライブラリの使い方の解説ページが見つからないのでいつも不便な思いをしています。公式ページはたぶんここ⇒https://github.com/adafruit/Adafruit-GFX-Library
事例などを見ればおよその使い方は判ります。でも例えば今回のように引数の数が少なかった場合の挙動などは、なかなか判らないです。ひょっとしたら皆さんは、ライブラリのソースをその都度読んでるのでしょうか?そんなことは無いですよね。
カレンダー
09 | 2019/10 | 11
- - 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コード