こんにちは。今回は前回記事の続編、「7セグメントLEDの制御を考える」の第2回となります。
前回の第1回では
1. タクトスイッチを使った制御
2. Arduinoを使った制御
を行いました。
今回はグレードアップして、7セグメント専用IC 74LS49 を中心に制御していきます。
通し番号で紹介します。
3. トグルスイッチと74LS49を利用した制御
まずはじめにスイッチのつなぎ方とLEDのON OFFです。
通常? LEDを制御するにはVcc(電源)から抵抗を通してその回路をスイッチでON/OFF、スイッチが入ると抵抗側とGNDが接続されて電流が流れるということになります。つまり、それは
「スイッチをONにすると回路に電流が流れる」
※ここでのスイッチONとはスイッチ内部端子が「短絡(ショート)」されることを意味します。
...という方式です。ここにLEDを直列で(抵抗やスイッチの前でも後ろでも)に繋げばスイッチ操作に応じて点灯と消灯が切り替わります。
感覚的にわかりやすくてこの方法を使うことが多いかもしれませんが、マイコンや半導体としてはこのような作業には場合によっては電流に耐えられる高級な部品を利用しないと行けない場合があります。そこで対策案を考えます。
「スイッチをOFFにすると回路に電流が流れる」
↑の回路図を利用することにします。
ONにすると、スイッチは短絡→0Ω抵抗を接続した状態となりますのでスイッチ端子両端には電位差が0になり、LED側に電流が流れません。
OFFにすると、スイッチ端子は開放→∞Ω抵抗を接続した状態となりますのでスイッチ端子両端に電位差が生じ、LED側へすべて電流が流れていきます。
ここから言えるように、これを利用すると
「スイッチをOFFにすると回路に電流が流れる」
ということになりました。
この原理を利用して回路を組んでいきます。
このような回路ができました。
トグルスイッチを利用します。
回路図は以下のとおりです。
※追記 プルアップ忘れていました。スイッチと電源の接続必要です。
74LS49を利用します。
この回路は入力端子(4ピン)に2進4bitの信号を送ると、7つの端子がそれぞれHIGH出力かLOW出力かの切り替えを行なってくれます。
今回は0から9の数字を表示したいので以下の信号が必要になります。
///////////////////////////
10 / 2 (進数)
0 / 0000
1 / 0001
2 / 0010
3 / 0011
4 / 0100
5 / 0101
6 / 0110
7 / 0111
8 / 1000
9 / 1001
///////////////////////////
0をLOW、1をHIGHとして、74LS49の入力端子にそれぞれ対応する信号を送る(例えば4を表示させたい時は 0100 なので A端子からD端子までそれぞれ L / L / H / Lといった信号を送ることとなります。(Aが1のくらい、Bが10のくらいという順番です)
74LS49は仕様上、出力側としてLEDを駆動できるパワーを持っていません(確かスペック表には150μAだかなんだか←ようは漏れ電流) ということで出力をHIGHにするとIC側への電流入力を拒否(反発)させてLED側に電流を流し、逆にLOWにするとICが電流をすべてもらって(吸収)LED側には電流を流さないという方式を取ります。
IC側への電流は規定(ちょっとスペックシートみてもよくわからなかったのですが、最大入力(それがオープンコレクタだかなんだかのOFF状態がうんぬん??)が1mAなんだか、実験データには4mA時にときと8mA時の時の云々がかいてあったり(←同好会の先輩方と顧問のせんせと悩んでいましたが結局解決せず)
まあとりあえずよくわからない状態でしたが、抵抗が1kΩですのでIC側の使用電圧を除くと最大5mA流れることとなります。こんな程度なら大丈夫でしょという感覚で動かしています(あまり良い考えではありませんが)
また、BI端子はLED自体のON/OFFを切り替えます。フローティングでも問題はないですが、安全のために1kΩ抵抗を噛ませて電源と接続しました。なお、GNDに接続するとLED表示が切り替わります。マイコンなどでダイナミック点灯をやる場合に使いますね。なお、10kΩ抵抗をつないだ時は、GNDにつないでもGNDとの接地と判定されず、LED表示が消えませんでした。
トグルスイッチを利用した話に進みます。
回路図にあるとおり、GNDと接続するか、しないかをトグルスイッチで決めています。GNDに設置した状態がLOW、離れているフローティング状態でHIGHとなります。
これでスイッチを4つ→4bit分制御することによってLEDの表示が切り替わります。
結果は...問題なく0から9まで表示されました!
記事長くなっていまいました。次回はこれの方式をちょっといじって、トグルスイッチ制御ではなく、Arduinoを使ったマイコン制御としてやっていきます。
ではでは。