先週、先々週と台風で家に引きこもり。
ということで久々にPICマイコンを引っ張り出して、秋葉原の秋月で買ってストックしておいたパーツで電子工作。
今回は7セグLEDでタイマーを作りました。
7セグLEDとはエレベータとかで見るこれ。
4桁赤色7セグメントLED表示器(コロン付) カソードコモン(カソード共通)
[OSL40391-LRA]
1個200円
数字の部分が光る7本のバー(セグ)でできています。
写真のものは4ケタ。あるので合計で7×4=28本のセグがあるわけですが、16本しか端子がありません。
LEDの+側端子アノードと-側端子カソードがあるはずなので、各セグから2本ずつ脚が出ているわけではありません。
では、どうなっているかというと上にも書いたように「カソード共通」になっているのです。
しかし、それでもアノードが各セグから出ていれば28+1本は必要です。
となると…
アノードも共通化されています。
データシートを見てみましょう。
(電流が下から上へ流れる見づらい描き方、アノード共通の製品の図をコピーして作ったのでしょうか)
左端の3つのLEDは時計の分と秒の間のドットとかなのでとりあえずおいておいて、
それ以外は8個のLEDが4つの塊になっています。
(8個というのは7セグ+各桁の右下のドット)
上4つのCOMがカソード、下のA~GとDPがアノードです。
つまり使用する端子の数は4+8=12です。
各桁のアノードがつながっているので、これでは各桁に同じ数字しか表示できません。
桁ごとにカソードは分かれているので、どの桁を点灯するかは選べるようです。
ということは、【一の位に「5」を表示して他の桁は消灯】みたいなことはできるようです。
他の3つの桁も同じようにできるので、
【一の位に「5」を表示して他の桁は消灯】
【十の位に「6」を表示して他の桁は消灯】
【百の位に「7」を表示して他の桁は消灯】
【千の位に「8」を表示して他の桁は消灯】
という動作を順番にすることはできます。アノードがつながっているので同時にはできません。
じゃあ、順番に切り替えるしかありません。一の位から順番に
「えーと、一の位が5で次が6で…」
みたいな感じでひとつずつ読み取ることにしましょう。
そんな、のんびりしたことはやってられません。
じゃあ、桁を切り替える操作を高速(目にもとまらぬ速さ)でやってやりましょう。
人間の目は毎秒30フレームぐらいで感じ取っているらしいです。テレビや動画も毎秒30コマで静止画を切り替えているわけですから。
つまり1/30秒の間に
【一の位に「5」を表示して他の桁は消灯】
【十の位に「6」を表示して他の桁は消灯】
【百の位に「7」を表示して他の桁は消灯】
【千の位に「8」を表示して他の桁は消灯】
という動作をしてあげれば、同時に光って見えるはずです(まあ、綺麗に見せるにはもっと高速にする必要があります)。
これが【ダイナミック点灯】と呼ばれる手法です。
街中で目にする7セグLEDや電光掲示板で使われているものです。
注意点としては、各桁は点滅しているので連続点灯している場合より暗く見えます。
今回のマイコンには、お気に入り(?)の16F628Aを使います。
難しいことをしないのであれば十分な性能と安さだと思っています。
最近は16F1827というもっと高性能で安いものもありますが…。
PICマイコン PIC16F628A-I/P
[PIC16F628A-I/P]
1個180円
脚が18本。このうち2本は電源で残りの16本がI/Oポートです。(メモ②)
これなら何とか動かせそうです。
PICの7本足に抵抗を挟んでLEDのアノードへ。
LEDのカソード側はスイッチ(NPNトランジスタSC1815)を挟んでGNDへ。各桁とコロンの分で5つPICで制御します。
PIC動作の基本は
1.トランジスタを一つずつONに
2.表示する数字になるようにアノード側をONに
3.今のトランジスタをOFFにして次のトランジスタをONに
4.次の桁の数字になるようにアノード側をONに
5.くりかえし
そんなこんなで
出来ました。
250Hzで桁を切り替えています。
「2」がちょっと暗いのはシャッターを切ったタイミングの問題で目では同じ明るさに見えます。
いや~【ダイナミック点灯】をはじめに考えた人はすごい。賢い。私も賢くなりない~。
-----メモ①-------
アノード側の抵抗に10Ωを写真では使っています。電源は単3電池2直で3V。
秋月のサイトによればLEDの順方向電圧降下:2.1~2.5V、
LEDのデータシートは10ms以下であれば100mAまでOKとなっているので
(3-2.1)V/0.1A=9Ω
ちょっと攻めすぎだろ。というかPICのデータシートで
Maximum output current sourced by any I/O pin・・・25mA
ってなんているんだからそれ以上、マイコンから出しちゃダメでしょ。47Ωとかにしましょう。
-----メモ②-------
この16F628Aについて
「脚が18本。このうち2本は電源で残りの16本がI/Oポートです。」
と書きましたが、16本の内2本(RA4, RA5)はInput専用なのでOutputに使えるのは14本です。
今回は右下のドットを使っていないのでアノード7、カソード5で12本つかっています。カツカツです。
-----
※本文中の価格・仕様は変更になっていることがあります。ご確認ください。
ということで久々にPICマイコンを引っ張り出して、秋葉原の秋月で買ってストックしておいたパーツで電子工作。
今回は7セグLEDでタイマーを作りました。
7セグLEDとはエレベータとかで見るこれ。
4桁赤色7セグメントLED表示器(コロン付) カソードコモン(カソード共通)
[OSL40391-LRA]
1個200円
数字の部分が光る7本のバー(セグ)でできています。
写真のものは4ケタ。あるので合計で7×4=28本のセグがあるわけですが、16本しか端子がありません。
LEDの+側端子アノードと-側端子カソードがあるはずなので、各セグから2本ずつ脚が出ているわけではありません。
では、どうなっているかというと上にも書いたように「カソード共通」になっているのです。
しかし、それでもアノードが各セグから出ていれば28+1本は必要です。
となると…
アノードも共通化されています。
データシートを見てみましょう。
(電流が下から上へ流れる見づらい描き方、アノード共通の製品の図をコピーして作ったのでしょうか)
左端の3つのLEDは時計の分と秒の間のドットとかなのでとりあえずおいておいて、
それ以外は8個のLEDが4つの塊になっています。
(8個というのは7セグ+各桁の右下のドット)
上4つのCOMがカソード、下のA~GとDPがアノードです。
つまり使用する端子の数は4+8=12です。
各桁のアノードがつながっているので、これでは各桁に同じ数字しか表示できません。
桁ごとにカソードは分かれているので、どの桁を点灯するかは選べるようです。
ということは、【一の位に「5」を表示して他の桁は消灯】みたいなことはできるようです。
他の3つの桁も同じようにできるので、
【一の位に「5」を表示して他の桁は消灯】
【十の位に「6」を表示して他の桁は消灯】
【百の位に「7」を表示して他の桁は消灯】
【千の位に「8」を表示して他の桁は消灯】
という動作を順番にすることはできます。アノードがつながっているので同時にはできません。
じゃあ、順番に切り替えるしかありません。一の位から順番に
「えーと、一の位が5で次が6で…」
みたいな感じでひとつずつ読み取ることにしましょう。
そんな、のんびりしたことはやってられません。
じゃあ、桁を切り替える操作を高速(目にもとまらぬ速さ)でやってやりましょう。
人間の目は毎秒30フレームぐらいで感じ取っているらしいです。テレビや動画も毎秒30コマで静止画を切り替えているわけですから。
つまり1/30秒の間に
【一の位に「5」を表示して他の桁は消灯】
【十の位に「6」を表示して他の桁は消灯】
【百の位に「7」を表示して他の桁は消灯】
【千の位に「8」を表示して他の桁は消灯】
という動作をしてあげれば、同時に光って見えるはずです(まあ、綺麗に見せるにはもっと高速にする必要があります)。
これが【ダイナミック点灯】と呼ばれる手法です。
街中で目にする7セグLEDや電光掲示板で使われているものです。
注意点としては、各桁は点滅しているので連続点灯している場合より暗く見えます。
今回のマイコンには、お気に入り(?)の16F628Aを使います。
難しいことをしないのであれば十分な性能と安さだと思っています。
最近は16F1827というもっと高性能で安いものもありますが…。
PICマイコン PIC16F628A-I/P
[PIC16F628A-I/P]
1個180円
脚が18本。このうち2本は電源で残りの16本がI/Oポートです。(メモ②)
これなら何とか動かせそうです。
PICの7本足に抵抗を挟んでLEDのアノードへ。
LEDのカソード側はスイッチ(NPNトランジスタSC1815)を挟んでGNDへ。各桁とコロンの分で5つPICで制御します。
PIC動作の基本は
1.トランジスタを一つずつONに
2.表示する数字になるようにアノード側をONに
3.今のトランジスタをOFFにして次のトランジスタをONに
4.次の桁の数字になるようにアノード側をONに
5.くりかえし
そんなこんなで
出来ました。
250Hzで桁を切り替えています。
「2」がちょっと暗いのはシャッターを切ったタイミングの問題で目では同じ明るさに見えます。
いや~【ダイナミック点灯】をはじめに考えた人はすごい。賢い。私も賢くなりない~。
-----メモ①-------
アノード側の抵抗に10Ωを写真では使っています。電源は単3電池2直で3V。
秋月のサイトによればLEDの順方向電圧降下:2.1~2.5V、
LEDのデータシートは10ms以下であれば100mAまでOKとなっているので
(3-2.1)V/0.1A=9Ω
ちょっと攻めすぎだろ。というかPICのデータシートで
Maximum output current sourced by any I/O pin・・・25mA
ってなんているんだからそれ以上、マイコンから出しちゃダメでしょ。47Ωとかにしましょう。
-----メモ②-------
この16F628Aについて
「脚が18本。このうち2本は電源で残りの16本がI/Oポートです。」
と書きましたが、16本の内2本(RA4, RA5)はInput専用なのでOutputに使えるのは14本です。
今回は右下のドットを使っていないのでアノード7、カソード5で12本つかっています。カツカツです。
-----
※本文中の価格・仕様は変更になっていることがあります。ご確認ください。
※コメント投稿者のブログIDはブログ作成者のみに通知されます