要約:以下のアプリケーションノートでは、LEDドライバMAX6964が備える独自の機能、および輝度制御を必要とするアプリケーションでそれらの機能の適切な利用方法について解説します。また、このアプリケーションノートではMAX6964のマスタおよび個別ポートの選択の両方について、輝度制御の選択を示すプログラムルーチンの例も提示します。LED輝度制御の機能は、日中と夜間の条件下でLED輝度の調整が必要になる自動車アプリケーションにおいて特に有効です。
MAX6964は、8ビット、パルス幅変調(PWM)輝度制御を備えた、大出力電流、17ポートLEDドライバです。各個別ポートは、最大50mAのシンク電流に対応します。グランド端子を流れる総シンク電流は、全ポートの組合せで最大350mAに制限されます。8ビットのPWM輝度制御は、全ポートに適用されるマスタ制御の4ビットと、個別ポート制御の4ビットに分離されます。マスタ輝度制御を使用することによって、周囲の照明環境の変化(たとえば自動車の場合、日中と夜間の条件など)に応じて機器全般のLED輝度を調整することが可能です。その上で、個別ポート制御を使用してアプリケーションの必要に応じた希望の輝度を生成することができます。別の方法として、4ビットのグローバル制御ビットを代わりに使用して、すべての個別ポートの輝度を同時に制御することも可能です。レジスタ0x0EのビットD0~D3を、グローバルまたはポートO16の輝度制御に使用することができます。また、マスタと個別の輝度制御を組み合わせて、全ポートのフェード効果を作り出すことも可能です。
光源を十分な速度でオン/オフさせた場合、人間の目は対象物が連続的に照らされていると認識することが広く知られています。PWM輝度制御は、オン/オフの周波数を一定の速度に維持したままオンの時間を変化させることによって、認識される輝度を変化させます。ちらつき作用を防ぐために、通常はPWMのオン/オフ周波数を100Hzより高くする必要があります。MAX6964のPWM輝度制御は、公称周波数32kHzの内蔵発振器によって駆動されます。MAX6964のPWM周期は240クロックサイクルであるため、結果としてPWMオン/オフ周波数は32000/240 = 133.33Hzになります。
MAX6964の出力に接続されたLEDの輝度は、該当する極性ビットが0のとき、マスタおよび個別ポート両方の制御のオン時間(ロジックロー)を重ね合わせたもので決まります。
MAX6964のマスタ輝度制御は、レジスタ0x0FのビットD7~D4によって決定されます。これら4ビットのマスタ制御ビットでは、PWM周期を15個のタイムスロットに分割しています。マスタのオン時間スロットには1/15、2/15、...、13/15、および14/15があり、それぞれビットパターン0001、0010、...、1101、および1110によって選択されます。
各ポートにつき4ビットで1組になっている個別ポート制御ビットは、レジスタ0x10~0x17に配置されています。ポート16の制御ビットは、レジスタ0x0FのD3~D0に位置しています。レジスタ0x0Fのこれらのビット(D3~D0)は、そのオプションがイネーブルされている場合、グローバル制御にも使用されます。各マスタタイムスロットは、16の内部発振器クロックサイクルで構成されます。これらのクロックサイクルを、それぞれ0000、0001、...、1110、および1111というビットパターンによって、1/16、2/16、...、15/16、および16/16の間アクティベートすることができます。
図1 は、マスタのオン時間がビットパターン0010に相当する2/15、個別ポートのオン時間がビットパターン0001に相当する2/16の場合について、極性ビットが0のときのポートの出力波形を示しています。利用可能なマスタのオン時間スロットが2個存在して、その両方が個別ポートのオン時間で決められている2/16の間だけオンになっています。
図1. ポートの出力波形
フェーズ0のポート7~0とポート15~8の極性ビットは、それぞれレジスタ0x02と0x03に配置されています。同様に、フェーズ1のポート7~0とポート15~8の極性ビットは、レジスタ0x0Aと0x0Bに位置しています。ポート16の極性ビットは、レジスタ0x0Fのフェーズ1 (D5)およびフェーズ0 (D4)ビットで示されます。点滅機能がイネーブルされていない場合は、フェーズ0の極性ビットだけが関係します。
図2 は、マスタと個別ポートのビットパターンが先ほどと同じ0010と0001で、極性ビットが1のときのポートの出力波形を示しています。図1と図2を比較すると、オン時間とオフ時間が逆転しており、両者が相補的な波形になっていることが分かります。輝度レベルのプログラムは極性0で行うのが最善ですが、点滅を行うためには極性1が必要です。
図2. 1の補数の波形
MAX6964によって駆動されるLEDは、BLINK入力をトグルするか、またはブリンクフリップビット(レジスタ0x0FのD1)を反転することによって、点滅(オン/オフ)させることが可能です。BLINK入力とブリンクフリップビットを作動させるには、ブリンクイネーブルビット(レジスタ0x0FのD0)に1をセットする必要があります。ホストコントローラは点滅イベント1回ごとに、BLINK入力のロジックレベルを変えるか、またはMAX6964への書込みを行う必要があります。点滅がイネーブルされている場合(D0 = 1)、特定のポートのLEDの極性は、BLINK入力とブリンクフリップビットの排他的ORが0であるか1であるかに応じて、フェーズ0またはフェーズ1のいずれかに関連付けられます。
希望するポートの点滅を作動させるには、該当するフェーズ0と1の極性ビットが異なっている必要があります。点滅がイネーブルされている場合でもPWM輝度制御は機能しているため、LEDの点滅は単なるオン/オフだけではなく、通常の波形と相補的な波形に基づいて明るいモードと暗いモードの間で輝度を切り替える形で制御することが可能です。さらに、異なるポートのフェーズ0と1のロジックレベルを個別に選択することによって、それらを逆位相で点滅させたり、まったく点滅させないことも可能です。たとえば、ポート1のフェーズ0ビットに0を、フェーズ1ビットに1をセットし、ポート2のフェーズ0ビットに1を、フェーズ1ビットに0をセットすると、両者が逆位相で点滅するようになります。ポートのフェーズ0とフェーズ1の両方のビットに0または1をセットすると、そのポートは明るいモードまたは暗いモードのまま維持されます。
図3 に、フェーズ0とフェーズ1を使用した本来の波形と相補的な波形の間の点滅動作を示します。フェーズ0とフェーズ1の長さはホストコントローラの動作によって決まり、通常は点滅イベントを視認可能とするために単一のPWM期間よりも大幅に長い時間継続させます。
図3. フェーズ0とフェーズ1の間の点滅
以下に示すのは、特定のPWM輝度レベルでLEDを点灯させるためにMAX6964に送信するI²Cのコマンドシーケンスの例です。
次の3つのI²C書込みコマンドを使用することによって、O16のLEDを最小輝度レベルで点灯させることができます。MAX6964のI²Cデバイスアドレスは0x49です。
0x49 0x0F 0x30 // Turn off the global bit
0x49 0x0E 0x10 // Select 1/15th for master and 1/16th
// for O16
0x49 0x0F 0x00 // Set phase 0 and 1 polarity bits of
// O16 to 00
以下のI²C書込みコマンドを使用することによって、すべてのLEDを最小輝度レベルで点灯させることができます。
0x49 0x0F 0x30 // Turn off the global bit
0x49 0x0E 0x10 // Select 1/15th for master and 1/16th for O16
0x49 0x0F 0x00 // Set phase 0 and 1 polarity bits of O16 to 00
0x49 0x10 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 // Set 1/16th for all ports
0x49 0x02 0x00 0x00 // Set phase 0 polarity bits for all ports
最後の2つのコマンドでは、単一の書込みコマンドを使用して複数のレジスタへの書込みを行うことができる、レジスタアドレスの自動インクリメント機能を利用しています。
場合によっては、通電時にLEDを徐々に点灯させることが必要になります。マスタ制御をローからハイに向けて設定していき、それぞれのマスタ設定において、個別ポート制御をローからハイに向けて設定することによって、LEDの輝度をローからハイへと調整することが可能です。マスタと個別ポートの組合せの中には、同一または近似した輝度レベルになるものが含まれているため、輝度を増大させる場合にすべての設定が必要になるわけではありません。高い輝度レベルにおいて、低い個別ポート設定の一部をスキップする必要があります(表1 )。重複または近似する輝度レベルの一部がスキップされることから、輝度レベルの増大は二重ループに基づいて行います(第1のループでマスタの輝度を変化させ、第2のループで個別ポートを変化させます)。表1では、合計で240通りの利用可能な組合せの内、59ステップだけを使用しています。
表1. 二重ループによる増光動作
個別
マスタ
輝度
個別
マスタ
輝度
X
0
0
C
4
52
0
1
1
D
4
56
1
1
2
E
4
60
2
1
3
F
4
64
3
1
4
C
5
65
4
1
5
D
5
70
5
1
6
E
5
75
6
1
7
F
5
80
7
1
8
D
6
84
8
1
9
E
6
90
9
1
10
F
6
96
A
1
11
D
7
98
B
1
12
E
7
105
C
1
13
F
7
112
D
1
14
E
8
120
E
1
15
F
8
128
F
1
16
E
9
135
8
2
18
F
9
144
9
2
20
E
A
150
A
2
22
F
A
160
B
2
24
E
B
165
C
2
26
F
B
176
D
2
28
E
D
195
E
2
30
F
D
208
F
2
32
E
E
210
A
3
33
F
E
224
B
3
36
E
F
225
C
3
39
F
F
240
D
3
42
E
3
45
F
3
48
以下のテキストは、LoopLength × WaitTime秒間でLEDを徐々に点灯させる疑似プログラムコードです。I²Cというルーチンで、配列で定義されている特定の輝度を含んだ書込みコマンドをMAX6964のレジスタに対して発行しています。ここでも、レジスタアドレスの自動インクリメント機能によって複数の書込みを行うことができます。
LoopLength; // Total number of step in the increase in
// intensity
MasterPort(2, LoopLength); // Array for master/port setting pairs of every
// step
StepTime; // Lighting duration at each intensity step
For i = 1 to LoopLength // Start intensity increasing loop
I²C(Write, 0x0E, MasterPort(1, i)); // Set master intensity level
I²C(Write, 0x10, MasterPort(2, i), MasterPort(2, i), ...); // Set port
// intensity
// levels
Wait(StepTime); // Lighting up
End // End loop
LEDの輝度レベルは、マスタと個別ポートの両方のPWM制御ビットの選択によって決まります。特定の輝度レベルについては、異なる2組のマスタと個別ポートの組合せの間で重複する場合があります。その一方で、どの組合せによっても生成が不可能な輝度レベルも存在します。表2 に、マスタおよび個別ポートのPWM輝度制御ビットの値に沿って、利用可能な輝度レベルを示します。極性ビットが0の場合、輝度レベルは表の数値を240で除算したものになります。この表は、最上列の左から2番目と下から2列目の右端を結ぶ対角線を軸として、対称形になっています。
表2. マスタおよび個別ポートの選択に基づく輝度レベル
マスタポート輝度
0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
個別 ポート 輝度
0
off
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
1
off
2
4
6
8
10
12
14
16
18
20
22
24
26
28
30
2
off
3
6
9
12
15
18
21
24
27
30
33
36
39
42
45
3
off
4
8
12
16
20
24
28
32
36
40
44
48
52
56
60
4
off
5
10
15
20
25
30
35
40
45
50
55
60
65
70
75
5
off
6
12
18
24
30
36
42
48
54
60
66
72
78
84
90
6
off
7
14
21
28
35
42
49
56
63
70
77
84
91
98
105
7
off
8
16
24
32
40
48
56
64
72
80
88
96
104
112
120
8
off
9
18
27
36
45
54
63
72
81
90
99
108
117
126
135
9
off
10
20
30
40
50
60
70
80
90
100
110
120
130
140
150
A
off
11
22
33
44
55
66
77
88
99
110
121
132
143
154
165
B
off
12
24
36
48
60
72
84
96
108
120
132
144
156
168
180
C
off
13
26
39
52
65
78
91
104
117
130
143
156
169
182
195
D
off
14
28
42
56
70
84
98
112
126
140
154
168
182
196
210
E
off
15
30
45
60
75
90
105
120
135
150
165
180
195
210
225
F
off
16
32
48
64
80
96
112
128
144
160
176
192
208
224
240
表2において、16までは連続した整数値が存在していることに注意してください。16から上では、素数が欠落しています(すなわち、1~16の数と1~15の数の乗算によって再現不可能な数が含まれていません)。さらに、マスタおよび個別ポート設定の複数の選択肢によって生成可能な数値/イベントが多数存在しています。表3 は、直線的に増大する輝度レベルの動作、およびその短縮版を示しています。短縮版1のリストは輝度レベルを2/240の割合でスキップするもの、短縮版2のリストは4/240の割合でスキップするものです。また、表2の対角線上に位置するマスタおよび個別ポートの組合せを使用することによって、2乗で増大する動作を実現することができます。あるいは、表2から最も近い組合せを選択することによって、希望する増光動作に近似させることも可能です。
表3. 最もスムーズな増光動作
選択1
選択2
輝度レベル× 240
個別
マスタ
個別
マスタ
完全版
短縮版1
短縮版2
X
0
X
0
0
0
0
0
1
0
1
1
1
1
0
2
2
2
2
1
0
3
3
3
1
0
4
4
4
4
4
1
0
5
5
5
1
0
6
6
6
6
1
0
7
7
7
1
0
8
8
8
8
8
1
0
9
9
9
1
0
A
10
10
A
1
0
B
11
B
1
0
C
12
12
12
C
1
0
D
13
D
1
0
E
14
14
E
1
0
F
15
F
1
1
8
16
16
16
8
2
1
9
18
18
9
2
1
A
20
20
20
6
3
2
7
21
A
2
1
B
22
22
B
2
1
C
24
24
24
4
5
4
5
25
C
2
1
D
26
26
8
3
2
9
27
6
4
3
7
28
28
28
9
3
2
A
30
30
7
4
3
8
32
32
32
A
3
2
B
33
33
6
5
4
7
35
B
3
2
C
36
36
36
C
3
2
D
39
39
9
4
3
A
40
40
40
6
6
5
7
42
42
A
4
3
B
44
44
44
8
5
4
9
45
45
B
4
3
C
48
48
48
9
5
4
A
50
50
C
4
3
D
52
52
52
8
6
5
9
54
54
A
5
4
B
55
7
7
6
8
56
56
56
9
6
5
A
60
60
60
8
7
6
9
63
63
F
4
F
4
64
64
64
C
5
4
D
65
A
6
5
B
66
66
66
9
7
6
A
70
70
B
6
5
C
72
72
72
E
5
4
F
75
75
A
7
6
B
77
77
77
C
6
5
D
78
78
9
8
7
A
80
80
80
8
9
8
9
81
81
B
7
6
C
84
84
84
A
8
7
B
88
88
88
E
6
5
F
90
90
C
7
6
D
91
91
91
B
8
7
C
96
96
96
D
7
6
E
98
98
A
9
8
B
99
9
A
9
A
100
100
100
C
8
7
D
104
104
104
E
7
6
F
105
105
B
9
8
C
108
108
108
A
A
9
B
110
110
D
8
7
E
112
112
112
C
9
8
D
117
117
117
E
8
7
F
120
120
120
A
B
A
B
121
121
D
9
8
E
126
126
126
F
8
F
8
128
128
128
C
A
9
D
130
130
B
B
A
C
132
132
132
E
9
8
F
135
135
135
D
A
9
E
140
140
140
C
B
A
D
143
143
B
C
B
C
144
144
144
E
A
9
F
150
150
150
D
B
A
E
154
154
154
C
C
B
D
156
156
156
F
A
F
A
160
160
160
E
B
A
F
165
165
165
D
C
B
E
168
168
168
C
D
C
D
169
169
169
F
B
F
B
176
176
176
E
C
B
F
180
180
180
D
D
C
E
182
182
182
F
C
F
C
192
192
192
E
D
C
F
195
195
195
D
E
D
E
196
196
196
F
D
F
D
208
208
208
E
E
D
F
210
210
210
F
E
F
E
224
224
224
E
F
E
F
225
225
225
F
F
F
F
240
240
240
表3は、240通りのマスタおよび個別ポートの設定の組合せ中に、96種類の識別可能な輝度レベルが存在することを示しています。この増光動作に従ってすべての輝度レベルを使用するためには、途中で何度かマスタの輝度レベルを逆戻りさせて設定する必要が生じます。これは、先ほどの疑似プログラムコードで示したような、設定用の配列を使用することによって実現可能です。
次のI²C書込みコマンドを使用して、MAX6964によって駆動されるLEDを点滅させることができます。この例でも、MAX6964のI²Cデバイスアドレスは0x49です。
0x49 0x02 0x00 0x00 // Set phase 0 polarity to all zeros to
// turn LEDs on
0x49 0x0E 0xF0 // Set master intensity to full
0x49 0x0F 0x0D // Set the blinking enable bit to start
0x49 0x0F 0x0F // Switch blinking flip bit to blink
0x49 0x0F 0x0D // Switch back the blinking flip bit to
// blink
...
0x49 0x0F 0x0C // Reset the blinking enable bit to stop
// blinking
0x49 0x02 0xFF 0xFF // Set phase 0 polarity to all ones to
// turn LEDs off
上のコマンドでは、すべてのポートについてフェーズ1の極性ビットに1 (起動時のデフォルト)がセットされていることを前提としています。点滅の設定を行っていないポートについては、フェーズ0とフェーズ1のレジスタの極性ビットに同じ値をセットすることができます。PWM輝度レベルの設定は、点滅の間も有効です。フェーズ0またはフェーズ1の極性ビットが0の場合、PWM輝度レベルが設定されます。それ以外の場合、1の補数の波形によってLEDが駆動されることになります。
まとめると、LEDドライバMAX6964は相補的な波形で定義される1組の異なる輝度レベル間で点滅するようにプログラムすることができます。適切なプログラムを行うことで、フェードとも呼ばれる漸進的な輝度レベルの変化を実現することも可能です。
MAX7313/MAX7314は、MAX6964と類似のLED駆動能力を備えており、加えて全ポートを遷移検出付きのロジック入力として使用可能です。MAX6965、MAX7315、およびMAX7316もこれらと類似の製品ですが、ポート数が半分になります。このアプリケーションノートで示したMAX6964の全般的なプログラミング技法は、これら類似製品でPWM輝度の制御を行う場合にも利用することができます。
関連製品
APP 4253: Nov 07, 2008
自動アップデート
お客様が関心のある分野でアプリケーションノートが新規に掲載された際に自動通知Eメールの受信を希望する場合は、EE-Mail™にご登録ください。
フィードバックをお寄せください。 内容に満足されましたか、あるいは満足されていませんか?もっと良いページにできると思いますか?あるいは、単なるコメントでも結構です。フィードバックをお待ちしています。 —マキシムはお客様からいただく訂正、提案を元に改善していきます。
このページを評価し、フィードバックを送信する。