WKNさんから教えてもらったCharlieplexingですが、ここを見ていたらちょっとアイデアを思い付いてしまいました、
これをどうしても確認してみたくなって作ってみました。
配線は従来とあまり変わらないのですが、気をつけないと間違ってしまいます。
7セグメントLEDを1桁ずつ点けるためには、このようにダイオードを入れれば出来ます。回路図は小さいので分かりにくいと思いますが、雰囲気で見て下さい。
ただ、AVRは1端子で20mAまでしか流せませんので、「8」と「1」では輝度が違ってくるはず。
上の写真では抵抗は180Ωなので、1セグメントに18mAくらい流れているはずなのですが、あまり分かりません。
「1」がわずかに明るく、「6」がわずかに暗い程度ですね。
このダイオードをトランジスタに替えるとこうなります。
確かにこちらの方が均一に光っている様に見えます。
予想では、ダイオードではドライブしきれずに、もっと輝度ムラが出ると思ったのですが、残念。
でもトランジスタにすると効果が有ることは確認できました。
Charlieplexingによって、確かに配線を減らすことができますね。
DPを表示しなければ、8桁まで8本でいけます。
しかし、これは回路屋の発想では絶対に出てこないですね。というのは、制御をハードでやるには複雑すぎるからです。
でも、通常IOポートは8ビットなので、7セグだと1ビット余りますが、この1本を使うだけで8桁まで出来るのはなかなか良いかもしれません。
今回は、とりあえず実験のために1~8を表示するだけのソフトを組んだだけなので、実際のソフトがどうなるか分かりませんが、ドライバをうまく作れれば、この方法はアリかもしれません。
これをどうしても確認してみたくなって作ってみました。
配線は従来とあまり変わらないのですが、気をつけないと間違ってしまいます。
7セグメントLEDを1桁ずつ点けるためには、このようにダイオードを入れれば出来ます。回路図は小さいので分かりにくいと思いますが、雰囲気で見て下さい。
ただ、AVRは1端子で20mAまでしか流せませんので、「8」と「1」では輝度が違ってくるはず。
上の写真では抵抗は180Ωなので、1セグメントに18mAくらい流れているはずなのですが、あまり分かりません。
「1」がわずかに明るく、「6」がわずかに暗い程度ですね。
このダイオードをトランジスタに替えるとこうなります。
確かにこちらの方が均一に光っている様に見えます。
予想では、ダイオードではドライブしきれずに、もっと輝度ムラが出ると思ったのですが、残念。
でもトランジスタにすると効果が有ることは確認できました。
Charlieplexingによって、確かに配線を減らすことができますね。
DPを表示しなければ、8桁まで8本でいけます。
しかし、これは回路屋の発想では絶対に出てこないですね。というのは、制御をハードでやるには複雑すぎるからです。
でも、通常IOポートは8ビットなので、7セグだと1ビット余りますが、この1本を使うだけで8桁まで出来るのはなかなか良いかもしれません。
今回は、とりあえず実験のために1~8を表示するだけのソフトを組んだだけなので、実際のソフトがどうなるか分かりませんが、ドライバをうまく作れれば、この方法はアリかもしれません。
カソードコモンの7セグだとPNPになりますね。
PNPだとコレクタはGNDになりますが、NPNだと5V以上の電源につなげる事が出来るので、私はNPNの方が良いのではないかと思っています。
それを確かめるために作りましたが、この記事を見ていたら作らなかったかも。
また、chipiplexingの記事では、「Charlieplexingでは同時駆動は1個しかできず、2個のLEDを同時に点灯できるのはChipiplexing方式特有のもの」と言っていますが、それは間違いです。
Charlieplexingの7segの駆動の説明を見ると、ちゃんと7つのセグメントを同時に駆動する方法が書いてあります。
ただ、MAXIMのデバイスのドライブ能力が高く、しかも電流源を持っているので、外付けの抵抗やトランジスタが要らないため、回路図だけを見るとそれが分かりにくいかもしれません。
私もたくさん配線したので、ポリウレタン線のハンダ付けに慣れてしまいました。昔の勘が戻りました。
トランジスタはエミッタフォロアなので、ベース抵抗は無くても大丈夫です。
1桁1~2ms程度にしないとちらつきますよ。