MC9S08JS8 でLEDマトリックスを駆動する ~ ハードウェア編 (1) ~ [HCS08]
秋月電子通商で購入した 16×16 LED マトリックス基板を MC9S08JS8 につなぎました。 つい最近まで、別の 32-bit プロセッサがつながっていたんですけどね。
回路図
ハードウェアは、コントローラ基板一枚と 16×16 LED マトリックス基板とそのベースボード三組で構成されています。 もちろん、USBから電源を供給するわけにはいかないので、外部からACアダプタで供給します。
コントローラ基板には、 MC9S08JS8 が搭載されています。 基本的な構成は、MC9S08JS8 デモボードの回路図で 紹介したデモボードとそっくりです。 16×16 LED マトリックス基板を制御するための信号線が4本出力されています。
ベースボード基板は、コントローラから来る信号を三つのベースボードに送るための配線が引かれています。 16×16 LED マトリックス基板のメーカは、こんな複雑なベースボードなど要らないと思ったことでしょうが、今回は、ある事情からベースボードで配線を引き回す構成としました。
BLMS端子にLEDをつなぎたい
コントローラ基板には、LEDが一つだけ装備されています。 接続先は、BLMS端子で、なにやら妙な抵抗ネットワークが構成されています。
BLMS端子は、 MC9S08JS8 に内蔵されているブートローダを起動するための端子です。 パワーオン・リセット時、BLMS端子はモード設定入力として使われます。 そして、LOW入力であればブートローダ・プログラムが起動し、HIGH入力であれば、BLMS端子は出力専用端子として再設定され、ユーザ・プログラムが実行されます。
ここで必要になるのは、
- LEDが接続されたままでも、ジャンパによってモード切り替えができる。
- 出力の値にしたがってLEDに十分な電流を流すことができる。
- ジャンパが接続された状態でBLMS端子が出力になっても安全である。
という条件を満たす回路です。 その解決案のひとつがこの抵抗ネットワークです。
まず、BLMS端子がモード設定入力として使用されるときを考えます。 ジャンパが接続されていなければ、BLMS端子をLOWレベルに落とす要因は一切ありません。 このため、BLMS端子はマイコン内部のプルアップ素子で確実にHIGHレベルになります。
一方、ジャンパが接続されると、LEDと二本の抵抗には電流が流れます。 LEDの電圧降下を1.6V、電源電圧を5.0Vと仮定すると、流れる電流は4.9mAです。 よって、BLMS端子の電圧は、1.1Vとなり、VIL (0.35×VDD=1.75V) を十分に下回ります。 ちなみに、マイコンに内蔵されている最小20kΩのプルアップ素子は無視しています。
次は、BLMS端子がLOWを出力をした場合を考えます。 データシートによると、 MC9S08JS8 がLOWを出力した時のインピーダンスは11Ωとなっています。 ジャンパが接続されていないときに流れる電流は、電源電圧を5.5V、LEDの電圧降下を1.6Vと仮定すると4.1mA、電源電圧を4.5V、LEDの電圧降下を2.1Vと仮定すると2.5mA、となります。 これだけの電流が流れていれば、LEDは点灯するでしょう。
また、ジャンパが接続されている時には、ジャンパに流れる電流が増加するため、LEDに流れる電流が増加し、マイコンに流れ込む電流は減少します。
最後に、BLMS端子がHIGHを出力をした場合を考えます。 このときに問題になるのは、ジャンパが接続されているときにマイコンから流れ出す電流です。 データシートによると、 MC9S08JS8 がHIGHを出力した時のインピーダンスは40Ωとなっています。 電源電圧を5.5V、LEDの電圧降下を2.1Vと仮定するとマイコンから流れ出す電流は6.6mAとなります。 これなら、マイコンが壊れる心配はないでしょう。
次回予告
次回は、 16×16 LED マトリックス基板にシリアルデータを送り込む方法について書きます。
コメント 0