7セグメントLED×4桁をArduinoで制御します。
目次:
今回の目的
ELEGOOのチュートリアル「4 つのデジタル 7 セグメント表示」をチュートリアル通りに動かします。
※チュートリアルの文章(PDF日本語版含む)もスケッチもELEGOOのサイトから無料でダウンロードできました。
7セグメントLED×4桁
7セグメントLEDは以前に1桁のものを扱いました。今回はそれが4桁並ぶモジュールなのですが。。。
↓↓↓以前の記事↓↓↓
「7セグメントLEDをArduinoで動かす①品物を確認した」
「7セグメントLEDをArduinoで動かす②スケッチを読み解く」
先に言ってしまうと、今回4桁ばらばらに表示制御にするのかと思いきや、4桁同じ表示で連動させます。各セグメントへの入力をモジュール内部で4つに枝分かれさせているので、1桁表示と意識的にはほぼ変わりません。
各桁のGNDは分かれているので、タイミングをずらせば桁毎に異なる表示にできるのでしょうが、そのようなスケッチではありませんでした。
カソード(-)コモン(桁毎)の7セグメントLEDです。リード端子が裏面に12本。
側面に「5641AS」の印字あり。この型式でネット検索すればそれらしきデータシートが見つかりました。定格や電気的特性を見られますが、本当にこれだという確証はありません。
器材接続
1桁版に同じく8ビットシフトレジスタ 74HC595と並べ、ブレッドボード上に組みました。
動かす原理も1桁版と同じですが、電流制限抵抗220Ωはカソード(-)側につけたので4本で済みます。1桁版(同じくカソード(-)コモン)ではアノード(+)側につけていたので、それに倣えば抵抗も32本(=8本×4桁)要るはずなので助かります。
。。。それならなぜ、1桁版ではカソード(-)側に電流制限抵抗をつけなかったのでしょうか。
1桁版でLEDの電流IFを11mA( ≒ (4.2V - 1.8V) ÷ 220Ω = (74HC595のVIH - LEDのVF) ÷ R)と仮定しました。今回は220Ωをコモン側につけたことで、この11mAが最大7セグメント(表示「8」)分の電流になります。この場合、1セグメントあたりの電流IFは1.6mA(≒11mA ÷ 7セグメント)。LEDの光度が電流IFに比例するとすれば、1セグメントあたりの光度が最小1/7になるわけですね。
スケッチ
オリジナルを少し変更。
unsigned char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; // 配列「table」にLED表示を定義
void setup() {
pinMode(9,OUTPUT); // D9(ST_CPに接続)を出力設定
pinMode(10,OUTPUT); // D10(SH_CPに接続)を出力設定
pinMode(8,OUTPUT); // D8(DSに接続)を出力設定
}
void DISP(unsigned char num) { // 関数「DISP」を以下定義
digitalWrite(9,LOW); // ST_CPにLOWを入力
shiftOut(8,10,LSBFIRST,table[num]); // DS,SH_CP指定。LSB側から配列「table」num番目をシフトアウト
digitalWrite(11,HIGH); // ST_CPにHIGHを入力
}
void loop() {
for(int i=0;i<17;i++) { //
DISP(i); // 関数「DISP」を引数0~16で実行
delay(2000); // 2秒間待つ
}
}
動作
動かしました。
LED表示が4桁同時に「0」→「1」→「2」→「F」→「表示無」→「0」→・・・と順繰りに切り替わります。
表示が切り替わるのを眺めていても、LEDの明るさが変わる印象は受けません。電流の考え方が誤っているのでしょうか。気になったので、4桁分のIFをまとめて電流計で測定しました。
表示無しでの0mAは当然として、表示「1」はセグメント2個点灯で41.2mA、表示「8」はセグメント7個点灯で49.6mA、明らかに点灯セグメント数が増えると電流値が増えました。
点灯セグメント数に関わらず(0個点灯は除く)、44mA(=11mA×4桁=IF×桁数)と計算しておりましたがズレました。いえ、仮定を重ねた計算なので絶対値がズレるのは良いのですが、点灯セグメント数で増減するというのが問題です。
アノード(+)側の配線抵抗の影響、にしては大きすぎますし。。。LEDの直列抵抗成分?でしょうか。
少々すっきりしませんが、「49.6mA」を最大として定格確認します。
SN74HC595の定格Io = 70mA > 49.6mA ・・・OK
(±35mAの方を定格として満たすべきと考えると超過ですが TI製 SN74HC595 )
5641ASの定格Iaf = 30mA > 8mA(≒49.6mA ÷ 7セグメント) ・・・OK
5641ASの定格Pad = 100mW > 13mW(≒49.6mA ÷ 7セグメント × 1.8V(VF))・・・OK
(Iaf、Pad:某同型式データシートより、セグメント毎の電流、消費電力。と解釈)
所感
起きた現象を分析しきれない自分に技量の無さを実感しましたが、それはともかくせっかく4桁あるので、それぞれの桁をばらばらに表示してみたくなりました。いずれ再挑戦する時の課題にしたいと思います。
0 件のコメント:
コメントを投稿