LED表示器ドライバIC

Arduinoで実験 (LED表示器ドライバIC

2015/11/29


◆ LED表示器ドライバ

以前、LED制御IC CDT7350-0 の実験を行ったが7セグを制御するICを購入したので学習してみる。

Arduino で 7セグを制御する場合に制御に必要な配線は8本+桁数となるため4桁だと12本の配線が必要となる。

ドライバICを使用すれば、Arduino はドライバに表示を指示するだけで良いのでスケッチの記述が大変楽になる筈である。

今回 aitendo さんより購入したのは、LED表示器ドライバ [CH452L] なのですがデータシートが中文で全く意味がわかりません。

いろいろと実験してみて解読していきたいと思います。

 


◆ 出来ること & 通信方法

まずは出来ることを確認します。

8桁までの7セグの制御もしくは64ドットのLEDの制御が出来るようです。 ということは、8-Output ×8-Input と理解しても良さそうです。

また、キースキャンが出来る用なので8×8のマトリックスで組まれた64キーに対応するはずです。

ということは双方向のデータのやりとりを行う様です。

商品説明では、 4-Wire SPI/I2C とあります。

◆ ピンの確認

DIP-24 のピンを確認しておきます。

Pin Symbol 内容
1 SEG7 DP
2 VCC  
3 DOUT  
4 LOAD  
5 DIN SDA
6 DCLK SCL
7 DIG7  
8 DIG6  
9 DIG5  
10 DIG4  
11 DIG3  
12 DIG2  
13 DIG1  
14 DIG0  
15 GND  
16 RST  
17 H3L2  
18 SEG0 A
19 SEG1 B
20 SEG2 C
21 SEG3 D
22 SEG4 E
23 SEG5 F
24 SEG6 G

 

中文のPDFを眺めていてもさっぱり意味がわかりません。

◆ 命令の確認

製造元のサイトに CH452L のプログラムサンプルがあったのでプログラムを解析した方が早いような気がします。

 

 

 

だと思います。

レベルメーター等、LEDが複数個並んでいる物をバーLEDアレイ(以下「バーLED」とする。) といいます。 LED の点灯パターンで量を表示したり、表示パターンの動きで方向や速度を表現できます。 LED は視認性が良いので液晶等で文字を表示するよりも直観的であったりします。

今回の実験は、LEDが 10 個並んでいるバーLEDと、出力制御 IC CDT7350-0 を使用します。

このバーLEDは単純に LED 10 個が並んでいるだけなので、普通の LED を並べて実験しても良い。

 

種別 定格・品番 個数 備考
マイコン Arduino UNO 1  
バー LED アレイ OSX10201-R 1 VF:2.1V (max25mA)
出力制御 IC CDT7350-0 1 電源電圧 2V~15V
電解コンデンサ 47uF 1  
積層セラミックコンデンサ 1nF
0.1uF
1
1
 

以下は CDT7350-0 のデータシート

Pin Symbol 内容
1 RS (RESET) カウンタのリセット端子
2 Vdd 2.0 ~ 15V DC
3 GO LOW = 片道、HIGH = 往復
4 ALLON LOW = 消灯、HIGH = 全点灯
5 RT 単純に一定周期で点灯させる場合は、RT への電圧を半固定抵抗で制御し RC へのラッチを自動化出来るが、本実験ではマイコンでラッチを行う。
6 CT
7 RC
8 MODE LOW = 順次点灯、HIGH = 増加点灯
9 Vss GND
10 FLASH LOW = 消灯、HIGH = 全点灯
11 L1 出力 L1 ~ L10
12 L2
13 L3
14 L4
15 L5
16 L6
17 L7
18 L8
19 L9
20 L10

ALLON と FLASH は同じ動作。 何か違う動作をさせることがきるのかもしれないが調査不足の為、不明です。

実際の実験では、同じシリーズで 6ch 出力の CDT7350-2 を使用しています。

逆方向に順次点灯は出来ない。 正直複雑な動作をさせたい場合はマイコンで直接ドライブさせた方が便利かもしれない。 マイコンを使用しない場合などでは有効な IC だと思う。

以下は、実験に使用した回路とスケッチです。

//
// 10-01 バーLED点灯実験スケッチ
//

#define pin_GO 8
#define pin_RC 9
#define pin_MODE 10
#define Ltime 100

void setup() {
  pinMode(pin_GO, OUTPUT);
  pinMode(pin_RC, OUTPUT);
  pinMode(pin_MODE, OUTPUT);
}

void loop() {

// 順次点灯
  digitalWrite(pin_GO, LOW);
  digitalWrite(pin_MODE, LOW);
  for (int i=0; i<50; i++) {
    LedInc();
    delay(Ltime);
  }

// 往復点灯
  digitalWrite(pin_GO, HIGH);
  digitalWrite(pin_MODE, LOW);
  for (int i=0; i<50; i++) {
    LedInc();
    delay(Ltime);
  }

// 増加点灯
  digitalWrite(pin_GO, LOW);
  digitalWrite(pin_MODE, HIGH);
  for (int i=0; i<50; i++) {
    LedInc();
    delay(Ltime);
  }
}

void LedInc(void) {
  digitalWrite(pin_RC,HIGH);
  digitalWrite(pin_RC,LOW);
}

バーLEDを 4 つだけ使用したい場合などは RESET ピンと終端のピンを接続します。

正直マイコンで制御してまで使用したい IC ではない様な気がします。