WS2813の使い方で示したような、パルス幅で'1'/'0'を表現する通信インタフェースを持っているマイコンは少ないと思います。RX220も持っていません。
そこで、シリアル通信インタフェース(SCI)による、クロック同期方式の通信でLEDを駆動することにしました。その方法を以下に説明します。
クロック同期方式のシリアル通信とは、下図のように文字通りクロックに同期して送受信する方式です(図では受信データは省いています)。同期のためのクロックが必要ですが、調歩同期方式と異なりスタートビットやストップビットなどがなく、正味のデータのみを高速で送受信できます。
それを利用して、4ビット使ったビットパターンでLEDのデータを表すことにします。具体的には、'0001'(16進で1)で'0'を、'0111'(16進で7)で'1'を表し、同期クロックは使用しません。
従って、8ビットのLEDデータを表すためには4倍の32ビット(4バイト)分の送信データを使用します。また通信速度も、800Kbpsを実現しようとすると、4倍の3.2Mbpsが必要です。
注意すべき点は、WS2813にはb7から送信する必要があるのに対し、クロック同期方式の通信ではb0から送信されるということです。実は、設定によりb7から送信させることも可能なのですが、送信していない時TXDがHになってしまうことがあり、使用できませんでした。
そのため、送信する1ビットを4ビットのパターンに変換しながら、b7からの送信となるように、プログラムで変換しています。
下図は、クロック同期通信を利用して送信する仕組みを表しています。使用したRX220マイコンボードには20MHzの水晶発振子が載っていて、20MHzのクロックで動作可能です。しかし、これでは3.2Mbpsに近い通信速度が作れません。でも、25MHzで動かすことができれば3.125Mbpsの通信速度が作れます。その1/4は約781Kbpsであり、800Kbpsに近い満足できる速度だと思います。
RX220は、水晶発振子を含め外部からクロックを与える場合、最大20MHzまでしか動作しません。でも幸いなことに、RX220には50MHzのオンチップオシレータが内蔵されていて、その1/2の周波数をクロックとして動作させることができます。つまり、25MHzのクロックで動作できます。それで3.125Mbpsを実現した場合、実際にLEDに送られる1ビット分の送信データのタイミングは下図に示すようになり、LEDの要求を満足できます。従って、この方法でLEDを駆動することにしました。
また、RX220にはDMA(Direct Memory Access)機能があり、それを使うことによってCPUにあまり負荷をかけず(プログラムによらず)高速にデータを送信することができます。
11.回路
下記に制御基板と表示基板の回路図を示します。
・制御基板の回路図
・表示基板の回路図
制御基板は、E1エミュレータ用のコネクタを備えていて、プログラムのデバッグやフラッシュROMへの書き込みができます。シリアルポートもコネクタに出していますので、ここからもプログラム書き込みができます。
電源は、DCジャックに接続した外部のACアダプタ(DC5V 2A)から供給するので、よりシンプルな回路になっています。
RTC(Real Time Clock)は、セイコーエプソンのRX-8025NBを使用しています。精度も月差約13秒(周囲温度25℃時)と、かなり高精度です。さらに、温度変化による周波数のずれを補正するため、調整用のレジスタも内蔵していますが、今回は温度センサーがないので使用していません。
RX-8025NBは、秋月電子通商でDIP変換基板に載ったものが販売されているので、それを使用しました(下写真)。なお、RTCは電源OFF中でも動作している必要があるので、1F(ファラド)の電気二重層コンデンサーでバックアップしています。
EEPROM(Electrically Erasable Programmable Read-Only Memory)は、設定の保存のために使用しています。RX220はデータ格納用のフラッシュメモリを内蔵しているのですが、容易に使えるEEPROMの方を使っています。AT24C256Bは256Kbit(32Kbyte)の容量がありますが、設定の保存にそれほど必要ありません。小容量のものより入手が容易だったので使用しました。
表示基板は、先に説明したように39個のカラーLEDを数珠繋ぎにしたものです。回路自体は、WS2813の資料にあった標準的回路そのままです。なお、回路図には100μFの電解コンデンサーが描かれていますが、基板固定の邪魔になるので実装していません。
表示基板には、周囲の明るさを測定するためのフォトトランジスタNJL7502Lも実装するようになっています。
12.基板の製作
次の写真と図が、2.54mmピッチのユニバーサル基板を使用して製作した制御基板です。部品点数が少ないのと、RTCとEEPROMをマイコンボードの下に入れたことで、このサイズにできました。
部品配置と寸法
写真で基板固定穴の一つに付いているラグ端子は、以降で説明する基板取り付け板をGNDに接続するためのものです。基板をラグ端子と共にビス固定すれば、スペーサーを通して取り付け板をGNDに接続できます。
注意:回路図では入っていませんが、制御基板から出力される表示基板への電源VCCに、数十μHのチョークコイルを入れるとノイズを低減できます。
表示基板は、このデジタル時計のために製作した、左の専用プリント基板を使用しています。もしユニバーサル基板を使った場合、表面実装用のLEDを7セグメントの形に実装するだけでも手間がかかる作業になります。この専用基板を使うことで、LEDの実装が容易になるだけでなく、以降で説明する7セグメントの表示型を基板に密着しやすくすることができます。
表示基板で使用する抵抗とコンデンサーはチップ部品(表面実装部品)です。大きさは共に2.0×1.2mmのもので、手はんだで付けることを考慮してこの大きさとしました。
下図は表示基板の寸法図です、ただし、位置関係を示すために各セグメントの輪郭線や、カラーLEDの図も含んでいます。LEDの向きは2種類あります。
表示基板で使用する抵抗とコンデンサーはチップ部品(表面実装部品)です。大きさは共に2.0×1.2mmのもので、手はんだで付けることを考慮してこの大きさとしました。
下図は表示基板の寸法図です、ただし、位置関係を示すために各セグメントの輪郭線や、カラーLEDの図も含んでいます。LEDの向きは2種類あります。
注意:この専用表示基板は、フルカラー・デジタル時計のために筆者が製作したもので、市販されているものではありません。
左の写真は、表示基板にLEDやフォトトランジスタなど全ての部品を取り付けたところです。抵抗・コンデンサーやコネクタは裏面のため見えません。
なお、この基板で作る7セグメント表示器は、製作を容易にするため文字を斜体にしていませんが、違和感はないと思います。
写真ではわかりにくいですが、フォトトランジスタは、先端が基板から9mmの位置になるよう、シリコンチューブなどをスペーサーにして取り付けます。できるだけ前面になるようにしないと、うまく明るさを測定できません。
※表示基板の組み立てについて こちら も参照してください。なお、この基板で作る7セグメント表示器は、製作を容易にするため文字を斜体にしていませんが、違和感はないと思います。
写真ではわかりにくいですが、フォトトランジスタは、先端が基板から9mmの位置になるよう、シリコンチューブなどをスペーサーにして取り付けます。できるだけ前面になるようにしないと、うまく明るさを測定できません。