ドットマトリクスLEDをArduinoで動かす①物を見る

2021/06/12

Arduino ドットマトリクスLED

t f B! P L

ドットマトリクスLEDモジュールが手持ちにありました。まずは物を見ます。

 目次:

経緯

ドットマトリクスLED(モジュールではなく単体)を業務で扱った時、電圧波形を見ても制御を理解できませんでした。教えてもらってその場をしのぎましたが、設計物に残されている文章情報の少なさに不安を覚えました。

今後も出くわすだろうことを考えると、自前で動かしておきたいと思います。


MAX7219 LEDドットマトリクスモジュール

手持ちのArduino UNO付属品に含まれていたモジュールを使います。



図1 MAX7219ドットマトリクスLEDモジュール


図2 Arduino UNOスターターキット

単体のドットマトリクスLED(16pin)を基板のピンヘッダに挿入しております。


図3 基板(左)からLED(右)を外しました

基板にはICが実装されております。刻印から調べると、MAXIM製シリアルインターフェイス8桁LEDディスプレイドライバ MAX7219。

MAX7219データシート(日本語)

基板両端に端子(左右5pin。ですが左右で共通するものが多く、種類は6pin)がついております。ドライバIC経由であるため、単体で動かすより制御に使用するポート数が少なく済んでいるようです。


ドットマトリクスLEDとダイナミック点灯制御

ドットマトリクスLEDは格子状にLEDを並べ、個別のドット毎にLEDを点灯・消灯させる表示器です。セグメントタイプ(7セグや16セグなど)に比べてはるかに表現の幅が広がります。


これだけのドット(LED)を電流流しっ放しで個別点灯(「スタティック点灯制御」と呼びます)する場合、今回のLEDには64(=8×8。除く共通端子)もの端子と、これらへの個別入力が要ります(多すぎます)。


そこで「ダイナミック点灯制御」です。同時点灯を減らし、高速で点灯を切り替えて残像で文字・数字を表示します。

以下簡単に説明を。列のLEDはアノード(+)が共通端子、行のLEDはカソード(-)が共通端子として。。。


行1のカソード(-)だけGNDに繋ぎ、任意列(図では列2)のアノード(+)に対して高電位を与えます。これによって1行目で高電位を与えた列のLEDだけが点灯します。

図4 行1点灯(列2)
※赤丸のLEDだけ点灯


次は行2のカソード(-)だけGNDに繋ぎ、任意列(図では列1)のアノード(+)に対して高電位を与えます。これによって行2で高電位を与えた列のLEDだけが点灯します。

図5 行2点灯(列1)
※赤丸のLEDだけ点灯


以降、行3、行4、...と1行ずつ点灯していきます。ただし高速で表示行を繰り返し切り替えるため、人の目には全行の点灯している画として映ります。


なお図6のように行1-列2と行2-列1を同時点灯しようとすると、行1-列1と行2-列2も点灯してしまいます。よって複数行の同時点灯は考えません。

図6 全行同時点灯(列2)
※狙って点灯させた赤丸のLEDだけでなく、破線の赤丸も点灯してしまう


このダイナミック点灯制御は点灯させるLED(あるいは電流制限抵抗、ドライブ素子も)に電流を流す時間を節約できるという利点もあります。

例えば1分間点灯させる(人の目にはそう映る)場合でも、単一のLEDに注目すれば1分間×1行/8行の時間の点灯であるため省電力な他、温度上昇を抑えて素子の寿命に貢献することが期待できます。


ドットマトリクスだけ点灯させました

モジュールからドットマトリクスLED部分だけを外し、その端子に手持ちのマルチメータをつないで光らせました。LED×8個を並列に同時点灯させたので光が弱くなりましたが、点灯することは分かりました(当然これはスタティック点灯制御です)。

図7 ドットマトリクスLED単品点灯


このブログを検索

ブログ アーカイブ

自己紹介

にほんブログ村

QooQ