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

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
事例などを見ればおよその使い方は判ります。でも例えば今回のように引数の数が少なかった場合の挙動などは、なかなか判らないです。ひょっとしたら皆さんは、ライブラリのソースをその都度読んでるのでしょうか?そんなことは無いですよね。

水槽用化学反応式CO2発生装置の運転ノウハウなどー続編

このところあれこれ忙しくて、電子工作をやっている余裕が無くなっています。そんなことで書くネタが無いので、水草水槽用のCO2発生装置の話で繋いでおきます。なお、以前にこの装置の運転ノウハウなど、という記事を書いているので、今回のはその続編ということになります。

この CO2 発生装置の運転を始めて半年以上経ちました。CO2ガスの発生部の構造はこの記事のあたりで解説。その間に色々な改良を加えて、内容は逐次記事で紹介してきました。今回は運転ノウハウなど、電子工作以外の話を紹介したいと思います。大きくは、重曹のチャージ方法と、気泡発生用のストーンに関する話の二つです。

◆重曹のチャージ方法
化学反応式では重曹にクエン酸を加えて CO2 (二酸化炭素) を発生させます。そのあたりの話はあちこちの Web に書いてあるので説明は省略します。これを実際に長期間動かしてみると、途中で反応の応答速度がだんだんと落ちてきて、CO2 の発生量が低下する現象が発生します。クエン酸の供給量は一定なので同じペースで CO2 が発生して欲しいのですが、時間が経つと反応が起きにくくなる現象が起こります。

以下重曹ボトルの状態で説明していきます。

▼クエン酸を滴下
20190602StopReaction.png
これは最初にやった状態で、クエン酸を上から滴下しています。この構造だと、クエン酸のボトルに重曹が逆流する恐れが無くなるので安心です。但し、この構造では10日くらいで反応が起き難くなりました。原因は原料や反応生成物の比重差で、材料がうまく混ざらないためだと思われます。機械的に攪拌すれば解決出来ますが、それでは大掛かりになってしまします。

そこで次のように改良しました。

▼J字管を重曹に埋める
20190602StopReaction2.png
重曹のスラリー中にクエン酸の供給パイプを埋め、発生する CO2 の泡で攪拌されるようにしました。

これでかなり良くなったのですが、それでも20日くらい経つと反応速度が低下してきて、クエン酸が注入されているのにもかかわらず、CO2 の泡がほとんど発生しなくなりました。

その状態が右の図です。運転に伴い重曹のスラリー表面には漏斗状の窪みが出来ます。ちなみにその傾斜角は安息角になっているのだと思います。ともかく、その窪みの底が J字管の先端に達すると、気泡による重曹粉末の攪拌現象が起きなくなってしまうようです。

▼J時間の先が露出した様子
20190602IMG_8791-001.jpg
これは実際の容器の様子で、見づらいですが、すり鉢状になった重曹スラリー底にJ字管の先が見えています(黒く見えている部分)。こうなると反応の応答速度が落ちてしまいます。

これでは制御の応答速度が悪くて、朝になって CO2 の発生を開始してもなかなか圧力が上がらない、などの問題が発生します。

ということで、改良したのが次の図です。

▼重曹の量を思いっきり増やす
20190602StopReactSolution.png
重曹の量を思いっきり増やして、長時間運転しても J字管の先が露出しないようにしました。この状態にしたのは、1週間くらい前でまだ効果の確認まで出来ていないのですが、たぶんうまくいくと思います。

反応に必要な重曹とクエン酸の量は、反応式から正確に求めることが出来ます。でも現実には、上記のような現象が発生するので、重曹はかなり多めにチャージしておくことが必要ということです。余分に入れた重曹は、いわゆゆる「死に容量」になってしまいますが、まあ安いから問題無いと思います。重曹ボトルを再チャージする時は上澄み液だけ捨て、そこに適当に重曹を補充するだけで済みます。

要は、重曹をいっぱい入れておいて CO2 の発生量はクエン酸の注入量で決まる状態にしておく。更に重曹はJ字管の先が露出しないようにたっぷり入れておくということです。

▼重曹の入替え(補充)作業
20190602IMG_8795-001.jpg
量は適当で良いといっても、一応 「はかり」 で計量しながら補充しています。ちなみに重曹はダイソーで 500グラム入りが 108円で手に入ります。

▼補充後のボトル
20190602IMG_8796-001.jpg
左が重曹のボトルで、ご覧のように重曹がたっぷり入っています。一方で水は重曹の上、約10mmくらいの深さになる量しか入れていません。ちなみに、その右がクエン酸のボトル。右に少しだけ見えているのは、900cc のペットボトルです。ここにクエン酸溶液をまとめて作っておいて、すぐに使えるようにしています。

化学反応式では圧力が低いのでストーンは重要です。いろいろ試行錯誤した結果、良さそうな物が出来たので紹介します。構造としてはメラニンスポンジ(激落ち君)をシリコンチューブに詰め込んだ物です。但し先端を下図のような形にカットします。

▼自作CO2ストーン
20190602StoneMeranin.png
要は、先端角が約120度になるように四角錘(ピラミッド状)にカットします。この図では先端が平らになっていますが、実際にはててっぺんをカットしなくても、自然に鈍角になります。

ストーン中の気体は少しでも圧力の低い所、つまり水深の浅い場所からから出て行こうとします。この図のような形にしておくと、気泡はストーンの先端から出るようになって、細かい気泡が安定して出るようです。ちなみに、ここをスパッと輪切りにすると、チューブとメラミンスポンジの境界から泡が出ることが多くなり、大きな泡になり易かったです。

ちなみに、スパッと切ったストーンの製作記事はこちら

▼気泡の発生状態
20190602IMG_8804.jpg
いい感じです。1ケ月以上経ってますが、細かい泡が出続けています。

◆まとめ
ということで、水草水槽用の化学反応式 CO2 添加装置の運転ノウハウでした。ちなみに、この CO2 添加装置は一回チャージすると40日くらいは動き続続けるので手がかからなくて具合が良いです。

製作した CO2 発生装置には下の写真のような圧力のグラフ表示機能があります。
圧力変化グラフ
運転しているといろいろな要因で圧力が変動します。ということで、グラフ表示があると状態が把握し易くなります。

CMOS シリーズレギュレーターの特性測定(主に無負荷電流)

まえがき
CMOS シリーズレギュレーターの特性について以前の記事で触れましたが、デバイスの耐圧や許容電流で無負荷時の消費電流が変わるので要注意。つまり大は小を兼ねない場合がある、というのが重要な結論でした。

こういうことはデーターシートからほとんどのことが読み取れますが、細かいところで、実際の特性がどうなっているのかが判らないことがあります。例えば無負荷時の消費電流は max.10μA となっていても、実力的には半分以下であることが多いです。事情は判りますが、これは電池寿命を決定するための重要な値なのでちょっと困ります。

特性の実測
そのあたりを確認するには実測して確認するしか無いので、やってみました。
調べたCMOSレギュレーター
測定したのは全部 3.3V 出力の物で、XC6202P332TB、S812C33A、HT7333、 ME6202 の4種類です。測定は、入力/出力電圧特性と、入力電圧/入力電流特性で、後者の測定は無負荷状態と負荷に 330kΩを接続した状態で行いました。電源電圧 3.3V に 330kΩを接続すると消費電流は 10μAとなりますが、これは電池でバックアップしているような状態を想定したものです。

配線はマスキングテープで固定
マイクロアンペアオーダーの測定なので周囲の影響を受け易いため、配線が動かないようにテープで固定しました。また、この MDF の板の下にはアースに接続したアルミ箔を入れています(いつものままです)。負荷抵抗 (330kΩ) の切り替えをスイッチで行っているのは、配線の状態が出来るだけ変わらないようにするためです。なお、タクトスイッチを 10μA で使うのはちょっと問題がありますが、電流を実測して確認しているのでまあいいかと。

【追記】
あれこれもっともらしいことを書いていますが、大きな見逃しがありました。詳しくはこの記事の末尾をご覧ください。

XC6202 (XC6202P332TB)、20V/150mA、TO-92 (クリックで別窓の少し大きな図を表示、以下同様)
XC6202VV XC62602VI
[メーカー:トレックス、100円/2個@秋月] 現在在庫無し?
左が入力電圧に対する出力電圧特性、右が入力電圧に対する入力電流特性で、黒い線が無負荷、赤い線が 330kΩ負荷(負荷電流 10μA)の状態です。(以下同様)

電圧特性は CMOSのシリーズレギュレーター(更に無負荷状態)なのでドロップアウトもほとんどなく、綺麗な定電圧特性になっています。右側の電流特性では、設定電圧 (3.3V) 以下になると消費電流が急増しているのがちょっといやな感じです。あと、電源電圧が高くなると、無負荷電流が僅かに上昇しています。
なお、負荷に 330kΩを接続した場合はきっちり 10μAだけ電流が増えていて、変なおまけなどは付いていないようです。

S812C33A 16V/50mA TO-92
S812C33VV S812C33VI
[メーカー:エイブリック(旧SII)、100円/8個、@秋月 I-03289 ]
耐圧16Vなのでもっと高い電圧まで測定すべきでしたが、忘れていました。

右側の電流特性を見ると制御モードの切り替え付近 (3.3V) で少し電流の変化がありますが、その量は僅かです。また、電圧が上がっても消費電流の増加が全く無いのは素晴らしいです。消費電流は今回測定した物の中で一番小さくて 1.4μA(@5V) と優秀な値で、流石はSII です。
【追記】
1.4μAには測定器に流れていた電流の0.34μAが含まれていたので、正しくは1.06μAです。詳しくは記事末尾の追記をご覧ください。

ME6206 6.5V/300mA SOT-23
ME6206VV ME6206VI
[メーカー:MicroOne、100円/2個 @aitendo]
ME6206
これは SOT-23 パッケージなので、写真のようにピンヘッダにはんだ付けして測定しました。なお 662K というマーキングが付いていますが、XC6206 も同じマーキングなので要注意です。

特性としては耐圧 6.5V にもかかわらず消費電流が多くて、5Vの時の無負荷電流が 7μA です。TO-23 なので使い難く、特性もいまいちなので、あまり積極的に使う気はしません。

HT7333 12V/250mA TO-92
HT7333VV HT7333VI
[メーカー:HOLTEK、90円/3個 @aitendo]
無負荷時の消費電流は 4μA (@5V) で今回測定した物の中では二番目に小さな値です。XC6202 より耐圧が低いので消費電流的には有利なのかも知れません。また XC6202 のように設定電圧以下で消費電流が急増する現象が無いので安心です。

まとめ
自己消費電流は S812C33A が一番小さいので、消費電流を小さくしたい場合はお勧めです。それに値段も安いです。但し電流容量が 50mA と小さいく、また負荷電流が増えるとドロップアウトも急増するので要注意です。あと過電流保護回路が入っていないので、ブレッドボードでごちゃごちゃやる時に使うと、飛ばしてしまうかも知れません (S812C33E なら過電流保護付きだが秋月には無い)。そんなことでクセはありますが、常備薬みたいに持っていると良いと思います。

XC6202 は電源電圧が下がった場合の自己消費電流が急増する現象があります。実は私、この現象は CMOS レギュレーター共通の問題かと思っていたのですが、どうもこの部品 (データーシートを見るとXC6206も) 特有の現象だったようです。

0.96インチ OLED に使われている 662K というマーキングの 3端子レギュレーターは、XC6206 (トレックス) のようなので、今回これも調べてみたかったのですが、残念ながら手に入りませんでした。aliexpress で662K をキーワードに探すといっぱいヒットするので買ってみても良いのですが、偽物あるいはME6206が来る可能性もあるので、そこまでしなくてもいいかな、という気がしています。

n = 1 の測定でごちゃごちゃ書くなとお叱りが来そうですが、測らないよりずっとまし、と言うことでご容赦を。

【追記】
2番目の写真を見ていて、えらい見逃しというか測定誤差があることに気付きました。測定中は出力電圧をテスターで測定すると同時に、発振などしてないか確認するためにオシロを接続していました。問題はこれらの測定器の入力抵抗です。調べて(実測して)みると、

テスターの入力抵抗は 9.5MΩ だったので、その抵抗値に相当する負荷が接続されていたことになります。つまり、無負荷と思っていたのに実際には 3.3V/9.5MΩ = 0.34μAの電流が流れていたことになります。S812C33Aは無負荷消費電流が小さいので、相対的に大きな測定誤差が発生していました。

オシロは 10:1 プローブを使ったので入力抵抗は10MΩです。ただ幸いなことに、リップルを観察するためにACカップルで使っていたので直流的には∞Ωでした。ということで、幸いこちらの影響はありませんでした。でも、もしDCカップルで使っていたら上と同じ量の誤差が追加されたはずです。

テスターの入力抵抗なんて普段は無限大と思って気にしないで使っています。でも、マイクロアンペアオーダーの測定では無視出来ない誤差になることがあるので注意が必要です。
カレンダー
05 | 2019/06 | 07
- - - - - - 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コード