本家16セグメントパネルをいじる 構想編
某オクで入手した16セグメント(本家)をそろそろいじりたい
ので、マイコン選定の構想を練っていた。メモ。
結論(2024/9/22 追記)
使用する素子について。
Pro Microと12bitシフトレジスタの74HC4040を使えば成立する見通しあり。
※この記事を書いた当初は、Pro MicroとATMEGA328PBを併用するとしていたけど、たぶん実装不可能。9桁の16セグメントの各桁カソード側が共通になっているため。
2024/8/18追記:
シフトレジスタも使用不可な気がしてきた。論理が逆かも。手持ちのATTiny2313でシフトレジスタ(負論理)もどきを作って試す予定。
2024/9/22追記:
パルス入力によるシフトレジスタもどきを使用する場合パルスの読み違いが原因で桁がおかしくなる可能性があるなぁと思ったので、親機側と子機側でI2C通信するのがいい気がしてきた。
カソード制御に16ピン、I2Cで2ピン。
アノード制御に9ピン、I2Cで2ピン。
ProMicro(16ピン使用可能)とATTiny2313(14ピン使用可能)の組み合わせではピン数が不足するので、ATMEGA328P(22ピン使用可能)を使用する必要がありそう。
それと、トランジスタの駆動電圧とマイコンの駆動電圧が合ってないからそこも確認が必要。配線がメンドいけど、ブレッドボードでの試験が必要そうだね…。
それと、シフトレジスタというモノへの理解も間違ってた気がする。
注意書き
手元の16セグメントパネルの仕様です。あしからず。たぶん手元のものは初期型っぽい。
仮に、初期、中期、後期としましょうか。
搭載部品
16セグメントLED(ADA9230WB S9812の刻印あり)…9個
言わずもがな今回の主役。20 ピンのLED。アノードコモン。
手元のUSB電源(5V)を印加したらいい感じに光ったけど、たぶん黒いパネルで隠して9桁ダイナミック点灯させるとなるとあんまり見えなくなるから、12V駆動で合ってると思う。4素子入N-ch Power MOSFET(4AK16)…4個
10ピンのFET。1個のディスクリート部品に、4回路のN-ch FETが入ってる。ソースは2素子ずつで共通。FETの個数でいうと、基板上に16個入ってることになる。
ドレインは、16セグメントのそれぞれのカソードと47Ω抵抗経由で接続。
ソースは、GNDと直結している。
ゲートは、32pinコネクタへ接続。ゲート駆動用抵抗は16セグメント基板上にはない。
中期型も同じ仕様?後期型は子亀基板に換装されてる。P-ch MOSFET(2SJ134)…9個
3ピンのFET。
ドレインが、16セグメントLEDのアノードピンと直結している。
ソースが、+12Vと直結している。
ゲートは、32pinコネクタへ接続。ゲート駆動用抵抗は16セグメント基板上にはない。
中期型では2SJ464に変わってるっぽい。後期型は不明。電源フィルタ(ZBF253D00)…4個
+12VとGNDの間に入ってる。多分フィルタ。47Ω抵抗 …16個
LEDのカソードと4AK16のドレインの間に入ってる。電流制限抵抗。32ピンソケット(XC5F-3222)…1個
コンパネIOから伸びてきたコネクタを接続するところ。2.54mmピッチの2x16pinコネクタであり、市販の2列ピンヘッダをそのまま刺せる。
回路構成
上述の部品一覧のところで軽く触れた内容を図にするとこんな感じ
4AK16(16素子)は、16セグメントLEDのカソードを制御する。
※図は4AK16のデータシートより引用
2SJ134(9素子)は、16セグメントLEDのアノードを制御する。
32ピンコネクタのピンアサイン
XC5F-3222のデータシートに倣い、下記のように長手方向を1, 2, 3, … ,16と定義し、短手方向をA, B と定義する。
とりあえず目視でパターンを追った限りでは、以下の通り。
2SJ134については、おそらく左の桁(9番目)から右の桁(1番目)まで順番につながってる。素直に配線して、クロスしないようにしてる。4AK16はメンドイから調べてないけど、こっちも配線がクロスしないよう最短のピンにつなぐようになってるっぽい。
純正16セグメントパネル 制御回路の自作
構想1-導入
自作の16セグメントパネルでは、3個のLED制御用マイコン(ATMEGA328P / ATMEGA328PB)と、1個の通信用マイコン(Pro Micro)の合計4マイコン構成としていた。その構成を流用するのがラクなんだろうけど、今回は、通信用マイコンのピンが無駄になってて勿体ないので、2個のマイコンで実装することを検討する。ピン数削減にもなるし、部品代も浮く。(半導体高騰、いつまで続くんですかね…)
構想2-マイコンのピン数
2024/8/14 23:00頃追記:
下記Pro Micro + 328PBの検討案は各LEDのカソード(全16pin)が独立している前提での記述であるが、32pinのピン配置を見ると、各桁の同じカソードは導通しているため、適用できない。Pro Microと12bitシフトレジスタを併用する方法がよいと考えている。
Pro Microをプライマー側、328Pをセカンダリー側(今どきの表現)とする。
プライマー側: ProMicro/ATMEGA32u4
ProMicroでは、自由に使えるのが18ピンしかない。2ピンはセカンダリー側との通信に使用するので、16セグメントの制御には使用できない。ATMEGA32u4を直接使うしかない。(32u4はPro Micro状態で買ったほうがなぜか安いから勿体ないけど…)
ATMEGA32u4は44ピンあって、電源系9pin(VOC*2/AVCC*2/AREF/GND*4)、USB系6pin(UVcc/D-/D+/UGND/UVap/VBus)、クロック2pin(XTAL1/2)、リセット1pin(RESET)を除くと26pinが使用可能。セカンダリー側との通信で2pin必要なのを除けば、24pin使えて、16セグメントのカソード制御で16pin使うとしたら、残り8pinがアノード側制御などに使用可能。
セカンダリー側: ATMEGA328P/328PB
ATMEGA328Pおよび328PBは、電源関連で5pin(AVCC/VCC/VREF/GND*2)とリセットピンが1pin(PC6)、通信用に2pin使われる。
ATMEGA328Pは全部で28pinあるので、使用できるのは20pin。16セグメントのアノード側制御に16pin使う(ピリオドは無視)とすると、残りは4pin。カソード制御で4pin使えるけど、それでも4桁16セグメントまで。きびしい。DIP部品のほうが試作しやすいんだけどなぁ…。
ATMEGA328PBは全部で32pinあり、26pin使用可能、2pinをプライマー側との通信に使用するとしたら、8桁制御までいける。
というわけで
やるとしたら(ここがミソ) ATMEGA32u4とATMEGA328PBの2マイコン構成であれば、例えば4桁-5桁制御で何とかできそう。
ATMEGA32u4のクロックとかUSBコネクタとか、どういう部品を調達すればいいか全然分かってないけど…。
2024/8/14 23:00頃追記:
12bitシフトレジスタを使ってアノードを制御する案を検討中。
クロックを入力するごとに、12個のピンが順繰りオンになる。
16セグメントLEDは全部で9個のピンがあるから、10回目のクロックが入力されたときにカウンタリセットして初期状態に戻るようにしてやればよい…はず。
で、各ピンの出力を2SJ134のゲートに繋げてやれば、所望の桁だけONにすることが可能。ゲート駆動のHi/Lo論理が合ってるかだけが心配である…
※当初8bitシフトレジスタを使うことも考えたけど、Pro Microが18ピンしか使えないことを考えると、(1)シフトレジスタのクロックピン、(2)9桁目の制御のピン、(3)シフトレジスタのリセットで3pin必要なため、ピンが不足する。
あとがき
回路を試作して、なんか動いたら追記します。