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

0.96インチ 128x64ドット OLEDディスプレイ

 Arduinoで使うキャラクタ表示の液晶のストックが無くなりそうなので、0.96インチで128x64ドットのOLEDディスプレイをAlEexpressから購入しました。

 注文したのが12月の初め頃だったのですが、なんと正月の年賀状と一緒に届きました。注文から受け取りまで24日掛かりましたが、送料最安コースなのでこんなもんでしょう。

▼0.96インチOLED  (左のユニットは画面保護用のシールを剥がしています)
0.96インチOLED
 1個 $1.99を2個買い、送料込みで$4.14でした。安いのでもっと多く買いたかったのですが、3個目から送料が急に上がったので2個にしておきました。ちなみに、少し送料を増やせばデリバリーが早くなるようです。なお買ったのは白色表示の物で、インターフェイスはI2Cです。
 
 AliExpress のページはこちら→new original 4pin 0.96" White/Blue/Yellow blue 0.96 inch OLED 128X64 OLED Display Module for arduino 0.96" IIC I2C Communicate

 このモジュールで気になったのは電源電圧です。調べると3.3Vから5Vまで使えることになっていました。秋月のサイトに同じような物がありますが、そちらも電源電圧は3.3-5.0Vになっています。こういう場合、以下のようなケースが考えられます。

 1) 電源電圧は3.3Vから5VまでOK。(例えば、ATmega328)
 2) 電源電圧は3.3から5VまでOK。入力は5Vトレラントなので、電源電圧3.3Vで使っていても 5V入力が可能。
 3) 仕様上の電源電圧は3.3Vだけど、5Vでも動く。但し保証外。

 1)なら安心なのですが、コントローラーチップのSSD1306のデーターシートを読むと電源電圧は3.3Vとなっています。5Vは絶対最大定格すら超えているので、そんなに高い電圧かけてはいけません。

 まさか3)のように危ない物では無いと思いますが、中華マーケットにはこういう危ない部品を見かけることがあります。

 ともかく、このあたりの疑問をすっきりさせるために、インターフェイス基板の中身がどうなっているか調べてみました。

▼インターフェイス基板 (表示面の裏側です)
OLEDのインターフェイス基板(I2C)
 上の4ピンのピンヘッダがインターフェイスコネクタで、下側の30ピンのフレキを経由してSSD1306のチップに接続されています。

▼回路図 (図をクリックで別窓に拡大図)
0.96インチOLED基板回路図
 フレキ側のピンの信号名は、Webで調べた情報を元に記入しているので、多少間違っているところがあるかも知れません。

 この回路図で疑問点は全て解決しました。電源はU2の三端子レギュレーターを通して供給されていました。つまり、OLEDモジュールに供給される電圧は3.3Vで、入力に3.3V以上が供給された場合は3端子レギュレーターで降圧される仕掛けになっていました。事前に三つのケースを想定していたのですが、結果はそのどれでもなく、部品コストを掛けた真面目な対応が行われていたことになります。

 I2Cのプルアップ抵抗はこの基板で作った3.3Vに接続されています。つまりI2Cバスの電圧は3.3Vになります。そんなことで、外部に5V電源から垂らしたプルアップ抵抗を入れてはいけません。なお、Arduino側が5V電源だったとしても、I2Cのピンはオープンドレイン出力なので、そのままで(アマチュアが使うなら)大丈夫です。

 自分用のメモを兼ねてこの回路の説明をしておきます。

 BS0-1などの制御ピンに加える電圧の組み合わせで、SPIやパラレルなどのインタフェイス方式の選択を行っています。C4, C3 はチャージポンプのバケツ。C2, C1 は3.3V電源のデカップリング。R10, D1, C9 はパワーオンリセット回路。R6, R7 は I2Cバスのプルアップ、R5 はセル電流設定、C6, C5 は表示セル駆動電圧のデカップリング用だと思います。

▼動作テスト
0.96インチOLEDデモ画面
 Adafruit のデモプログラムを動かしている様子です。

▼特性測定中
OLEDの特性測定
 せっかくなので波形や消費電流を見てみました。

 電源の消費電流は最大で約15mAで、表示するセル(画素)が減るとその分少なくなって、最小では1mA以下になるようです。なお、デモプログラムを走らせたままで測定したので、最低がどれくらいまで減るかは今回は調べていません。

▼I2Cの波形
SSD1306 I2C波形
 上がデーター(SDA)で、下がクロック(SCL)です。

 振幅は3.3Vになっていて、クロックのポジエッジでデーターを読んでいる感じの波形です。クロックレートは約400kHzです。なお、以前測定したハードウエアSPIインターフェイスの液晶は4MHzでした。

◆まとめ
 0.96インチは小さいと思ったのですが、OLEDなのでコントラストが非常に高くて見易いです。今後何か作る時にぜひ組み込んでみたいです。あと、同程度の解像度で横長の 128x32の物も売られているのでこっちも欲しくなりました。

 今回、このOLEDを表示させるためのライブラリはAdafluit のものを使いました。他に U8g のライブラリが使える、というかこっちの方が有名のようです。ただ、U8g ライブラリを使う場合、firstPageで開始し、whileを使ってnextPageで終了待ちという構造が要求されるようです。これでは使い難いので使いたくないです。(私が良さに気付いていないだけかも知れません)

 あと、このドライバチップの名前はSSD1306ですが、この1306という数字を見ると2SC1306を思い出します。同じ気持ちになる人が日本中探すと僅かにいるはずなので、そのあたりの話はまた記事にしたいと思います。
カレンダー
12 | 2019/01 | 02
- - 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コード