目次PIC回路集大型表示電波時計


大型表示電波時計 回路説明

このページの一部は別ページで紹介している電波時計と同じです。
受信回路


日本の標準時刻電波は福島県のおおたかどや山(40kHz)と長崎県のはがね山(60kHz)の送信所から長波電波として発信されています。今回の装置は40kHzの受信機です。
この電波を受信する機能はU4226Bに全て納められています。外部に取り付ける部品としては受信用コイル、40kHzの水晶発振子が2つ、それといくつかの抵抗器とコンデンサです。
U4226Bは40kHzから80kHzの電波時計専用の受信回路として設計されています。詳細仕様については説明資料を参照してください。

U4226B データシート


受信信号増幅回路


U4226Bの出力信号TCO(Time Code Output)は0V - 5Vのパルスですが、パルス波形の立ち上がり、立ち下がりをシャープにするためトランジスタ増幅回路で信号を増幅しています。
LED1はTCO信号のモニタ用です。電波に乗せられている時刻情報は60パルスで構成され、1秒間に1パルスの割合で送られてきます。各パルスの幅は乗せられる情報により異なりますが、LED1の点滅としては1秒毎に行われます。電波が正常に受けられているかどうかの目安になります。
受信機と表示処理装置をケーブルで接続し、離れた場所に設置できるようにしています。ケーブルを使うことにより途中で雑音が乗ることも考えられるため、フォトカプラ(PC0)を使用して受信機回路と表示処理回路を電気的に切り離しています。
Q3のベースに接続しているコンデンサC5はケーブルに乗った雑音を除去するためです。このコンデンサに大きい容量のものを使用すると立上/立下をシャープしたパルスの波形がなまってしまいます。
TCO信号はPIC16F877のRA4ポートに入力しますが、このポートは他のポートと異なり、オープンドレインタイプになっています。すなわち、PIC内部ではプルアップ(+5V側に引っ張り上げる)されていません。そのため、R4によりプルアップしています。



クロック発振回路
今回の電波時計は電波に乗せられている標準時刻により時刻を表示しますが、電波が途絶えた場合でも正しい時刻を表示させるために高精度の水晶発振子をPICのクロックに使用しています。発振周波数は12.8MHzですからPICの1ステップの実行時間は4/12.8=0.3124μ秒になります。電波が正常に受信されていればこの発振器の精度は問題になりません。
ちなみに標準電波に乗せられている時刻情報はセシウムビーム型原子周波数標準器などが使われ精度は10-13と言われています。1年間は31,536,000秒ですから317,098年で1秒の誤差が生じるという精度です。そんな先までこの時計を使うとは思えないので、全く狂わないと思って良いでしょう。

LCD制御およびキー入力回路
この時計では時刻をLEDで表示しますが、LCDによる表示回路も付けています。ケースの中に組み込んでいるので、通常は見えません。時計の動作確認の際に非常に便利です。ソフトウェアの不具合により、LEDが正常に動作しない場合、LCDの表示も参考になります。
使用しているSC1602BSLBはデータ転送モードとして8ビットモードと4ビットモードがあります。今回の回路では制御ポートの関係で4ビットモードを使用しています。PIC側の制御ポートにはRBポートを使用しています。8ビットモードで制御するためにはRBポート以外も必要になります。RSは Register Select でコマンドレジスタ(L)とデータレジスタ(H)の切り替え制御端子です。Eは Enable Signal でLCDに情報を読み込ませるための端子です。DB4-7は情報を伝える端子です。また、Vo は Contrast Adj 端子でLCDに表示する文字のコントラストを調整することができます。使用していない端子は全て接地に接続しています。SC1602BSLBにはバックライト機能がありますが、今回は使用していません。
RBポートはタイマー設定(時刻設定ではない)のキー入力ポートも兼ねています。RBポートの該当ポートを必要に応じ入力モード、出力モードを切り替えて使用しています。

LED制御および出力回路

RAポートおよびRCポートを使用して動作状態を表示するLEDの点灯制御と外部回路の制御回路を駆動しています。
RA5は受信状態を出力します。その出力で秒1位LEDのドットを点灯させています。秒表示用のLEDはカソードコモンを使用したので駆動にPNPトランジスタが必要になります。
RA0からRA3にはタイマーの信号が出力されます。今回は外部の回路を接続していませんが、必要に応じて外部回路を制御することができます。
受信状態以外はケースの中に隠れてしまうので、通常は見えません。


時報回路

メロディー制御
6:00、7:00、8:00、9:00、18:00、19:00、20:00、21:00に時報を鳴らします。時報はメロディーICを使用しています。8曲のメロディーが組み込まれているので、各時間で違うメロディーを鳴らします。曲目の選択は起動するごとに変わる方式で、曲目を直接指定することはできません。
MS3をONにするごとに順番にメロディーが鳴ります。
メロディーICの音はLM386のアンプICで増幅し、スピーカを鳴らしています。
回路図にあるM-SWによりMS3を強制的にON状態にして曲の選択をすることができます。

チャイム制御
SVM7975Cには8曲のメロディー以外に3種類のアラーム音があります。チャイム、ピンポン、ピッピッという音です。このうちのチャイムを年が変わる0:00に鳴らしています。
チャイム音を鳴らすのにはMS1およびMS2の両方をONにしてMS3をONにします。
ちなみに、ピンポンという音を鳴らすのにはMS1をON、MS2をOFFにしてMS3をONにします。ピッピッという音を鳴らすのにはMS1をOFF、MS2をONにしてMS3をONにします。

スキップ制御
チャイムを鳴らしたときにも曲目選択のカウンターは更新されます。そのため、チャイムを鳴らしたあとに7回スキップして時刻と曲目を合わせる必要があります。時刻と曲目が一致しなくてもよい場合には不要です。
曲目のカウンターを更新するためにはMS3をONにします。MS3をONにする都度、カウンターが1つ更新されます。そのままだとスピーカから曲がながれてしまうので、STPをONにしながらMS3をONにします。こうするとスピーカからは音は出ず、曲目カウンターだけが更新されます。

LEDラッチレジスタ回路

時計表示のLEDをPIC16F877で直接行わせると877の処理を圧迫します。そこで、877では1秒ごとに年月日時刻情報の収集と出力だけを行わせ、情報はCPLDに組んだラッチレジスタに記憶させています。
1つのCPLDに8個のラッチレジスタを作り、2つのCPLDで16個のラッチレジスタになります。今回の回路ではそのうちの13個を使用しています。ラッチレジスタの選択はRE0,RE1,RE2およびRD7で行っています。7セグメントの制御データはRD0-RD6から出力します。また、ラッチレジスタへの書き込みはRC5が"1"から"0"に立ち下がったときに行われます。
書き込み制御の順番はRD0-RD6に表示データを設定し、RE0-2およびRD7にレジスタ選択データを設定し、RC5を"1"にします。この時点では書き込みは行われません。次にRC5を"0"にした時点でラッチレジスタへの書き込みが行われます。今回の装置ではRC5を"1"にしてから"0"にするまで100マイクロ秒にしています。また、RC5を"0"にしてから次のデータを設定するまでも100マイクロ秒の時間にしています。この時間はラッチレジスタの動作時間を確保するためです。もう少し短い時間でも動作しますが、安全を見て100マイクロ秒にしています。この時間はソフトウェアで制御しています。
レジスタ選択の制御線がREポートとRDポートの組み合わせになっているのはポートが足りなかったからです。電波時計のソフトウェアをベースにしているので、そこで使用しているポートは極力変更しないようにしたため、制御線のポートが変則的になりました。


LED表示回路

左の図はLEDの駆動回路の動作を表したものです。上側はアノードコモンタイプのLED。年、月、日、時、分はこのタイプのLEDを使っています。下側はカソードコモンタイプのLED。秒にこのタイプを使っています。全てアノードコモンタイプにしたかったのですが、ちょうど良い大きさのアノードコモンタイプが入手できませんでした。というより、買ってきたらカソードコモンタイプだったのです。
ラッチレジスタには上記の説明のように表示情報が1秒ごとに記憶されます。その情報に基づいてLEDを点灯させるのですが、同時に点灯すると多くの電流が必要になります。時、分の大型LEDは直流駆動の場合、1セグメントあたり最大25mAです。7セグメント同時に点灯すると175mAになります。時、分で4つのLEDを同時に点灯すると700mAになります。他のLEDもあるのでもっと多くの電流が流れます。電源容量は問題はありませんが、なるべく省電力ということでLEDを順番に高速で点灯させて、LEDが同時に点灯しないようにしています。回路ではスキャングループを2つ作り、時、分、秒の6つのLEDのスキャン(RAポート)と、年、月、日の8つのLEDのスキャン(RBポート)をさせています。ですから、同時には2つのLEDが点灯することになります。
アノードコモンタイプの場合、アノードに接続されている駆動回路をスキャン用のPICでHレベルにするとアノードに電流が流れ、ラッチレジスタによりONとなっているセグメントが点灯し、数字を表示します。
アノード側のトランジスタが2段構成になっているのはLED駆動電圧が12Vの場合で、時、分の大型LEDはこのような回路になっています。同じアノードコモンでも駆動電圧が5Vの年、月、日はPNPトランジスタ1つで構成されています。
カソードコモンタイプも同様で、スキャン回路でカソード側の駆動回路がONになると、ラッチレジスタの出力内容に対応したセグメントが点灯し、数字が表示されます。このタイプは秒表示に使用しています。

曜日表示回路

曜日の表示にはLEDマトリクスを使用しています。ラッチレジスタには曜日情報がバイナリ情報として記録され、PIC16F628に伝えられます。0:消灯、1:日曜日、2:月曜日、3:火曜日、4:水曜日、5:木曜日、6:金曜日、7:土曜日です。
その情報を基にPICで漢字表示制御を行います。74HC138の3-8デコーダをバイナリコードで制御して表示行の指定をします。それと同時にRBポートにその行で点灯させるLED情報を出します。左の図は金曜日を表示している状態です。行を100ミリ秒で制御しています。この速度だと文字が見づらいですが、実際のPICでは1ミリ秒で行を制御しているので、ちらつきもなく見ることができます。



電源回路

電源装置ではAC100Vの入力電圧から+12Vおよび+5Vの安定した電圧を出力します。
その電圧を定電圧レギュレータを使用して各ユニットが必要な電圧に変換して供給します。
また、+12Vの電源から抵抗器を通してバッテリーの充電を行っています。充電方式については「充電電流の調整」をご覧ください。
CPUの+5Vには通常約20mAの電流が流れます。それだけを考えれば100mAタイプの78L05などで十分なのですが、AC電源が停止した際に瞬間的に100mAを超える電流が流れます。そのため、レギュレータとしては1Aタイプの7805を使用しています。この原因は今回使用しているCPLDの回路特性によるものです。この件についてはトラブルシューティングの「バッテリー駆動のとき、曜日のLEDが薄く点灯する」をご覧ください。


電源装置へのAC100Vが停止した場合、バッテリーから電源を供給します。バッテリーで駆動する対象は受信回路と時計の処理をするCPU回路のみで、LED表示回路および時報回路はバックアップしていません。


電源監視回路

AC電源が停止したときにはバッテリーによりCPUおよび受信回路を継続的に動作させています。しかし、試験により以下のことが分かりました。表示制御回路で使用しているCPLDへの電源が停止すると、CPLDの内部回路の関係で入力電圧が電源回路に回り込みます。そこで、AC電源が停止したことを検出し、CPLDへの入力を停止することにしました。この回路は+12Vの電圧を抵抗器により約5Vの電圧に変換し、PICに入力する回路です。PICではこのポートが0Vの場合、電源停止と認識し、CPLDへの出力を0Vにします。
電源には+5Vの出力もありますが、CPUユニットにはその配線が無いため+12Vを監視しています。