目次PIC回路集デジタル時計


デジタル時計 回路説明


クロック入力回路


時計のクロックは超高精度の10MHzを使います。
CPLDのXC9536で1/200000の50Hzに変換しています。
1Hzに変換しなかったのは時刻設定の精度を上げるためです。
1Hzを入力にすると時刻の設定が秒単位になるので、秒の設定が正確にできません。50Hzの場合、20ミリ秒の精度で合わせられるので実用上の問題はありません。
50HzのクロックはPICのRB0ポートに接続しています。RB0ポートは入力信号の変化で割り込み動作をさせることができます。今回は入力信号の立ち上がりの変化を検出して割り込みを発生するようにしています。この割り込みを50回カウントして1秒とします。
この周波数変換には「周波数分割器」で紹介しているように74HC390を3個使用して作ることもできます。



デジタル表示回路



右の図は午後10時32分54秒を表示している状態を500ミリ秒ごとに切り替えて表示しています。実際の回路では1ミリ秒ごとに切り替えて表示するので全桁を同時に表示しているように見えます。
LEDの明るさは連続点灯に比べると1/6になります。

表示桁の指定はPICのRA0、RA1、RA2ポートに出力するバイナリ信号で行います。この信号をCPLD内の3-8デコーダで分解しています。
デコーダの出力は8種類ありますが、そのうちの6種類を使っています。
デコーダの出力がLレベルのトランジスタだけがON状態になり、そのトランジスタに接続されているLEDが点灯可能な状態になります。
10時間の表示は"1"の表示しか行いません。ですから、10時間の桁ではAM/PMの表示も行っています。3-8デコーダは74HC138を使用してもOKです。

PICのRC0からRC6の7ポートを使用して各桁の点灯セグメントの制御を行っています。これらのポートの出力は全LEDに共通ですが、RA0−2で指定された桁のLEDのみが点灯制御されます。RCポートがLレベルの時にLEDが点灯します。
LEDの種類のより明るさが多少違います。極端に違う場合にはRCポートに接続している抵抗器を分ける必要があります。今回の場合にはほぼ同じ明るさになったので共通にしています。

表示LEDの電源を5Vにしているのは、PICのピンにかけられる最大電圧が5Vのためです。



PIC発振回路


PICの動作クロック発振には4MHzのレゾネータを使っています。
このクロックの精度は時計の精度には影響しません。時計の精度はRB0に入力されるクロックにより決まります。
PIC自体は高速で動作する必要はないので、4MHzを使いました。



時刻設定回路
    0秒設定

スイッチをONにすると接点がバウンドしてON/OFFを繰り返すチャッタリングという現象が生じます。非常に短い間の現象なのですが、電子回路は高速で動作するので無視できない現象です。
この現象を防止するためにSRフリップ・フロップ回路を使いました。

SR-FFはNAND回路で作ってもOKです。


    時刻設定

時刻設定モードにするためのスイッチには0秒設定と同様にSR-FFを使ってチャッタリングを防止しています。このスイッチを2秒間押し続けることで時刻設定モードに移行します。さらに時刻設定モードになった後、このスイッチを押すごとに設定する桁の切り替えを行います。そのためにもチャッタリング防止は必要です。ONを検出してから一定時間検出を止めるように工夫すればソフトウェアで防止することもできますが、処理が面倒です。

時刻の数字設定にはロータリーエンコーダを使用しました。ロータリーエンコーダはしゅう動式のものです。
出力用の2端子はエンコーダの軸を回転させた時に共通端子と接触するタイミングが異なっています。

A端子とB端子のどちらが先にONするかにより右回転、左回転を判断します。この判断はソフトウェアで行います。このスイッチもチャッタリングが発生しますが、どちらがONしたかをソフトウェアで検出すればよいので防止はしていません。右回転で数字を上げ、左回転で数字を下げるようにソフトウェアで制御します。
デジタル・ダイアル」でもロータリーエンコーダを使用した回路を紹介しています。





時報回路

毎正時に時報としてメロディICによるオルゴールを鳴らします。今回使用したメロディIC(SVM7975)には8曲のメロディが入っているので、7:00/8:00/9:00/10:00/18:00/19:00/20:00/21:00に別の曲を鳴らすことにしました。これ以外の時間はうるさいので鳴らしません。

SVM7975の電源電圧は約3VまでなのでLEDを使用して電圧を下げています。LEDが点灯しているとき、LEDの両端の電圧はほぼ2Vです。

メロディーの速度は2番ピンと3番ピンの接続する抵抗(R)で変えることができます。メロディーICの出力はLM386で増幅してスピーカーを鳴らします。この増幅器は通常はメロディーを鳴らすために使いますが、テレビのチャンネルをチューニングするときにテレビ音声のモニタにも使います。テレビの信号を使うのは時計をテレビ局のカラーバースト信号に同期させ、高精度にするためです。切り替えはショートピンで行います。
実際の回路では6番ピンに選曲用のスイッチを付けています。各正時の曲がずれてしまった場合に使用します。
メロディーICの電源はバッテリーバックアップされている電源を使用しています。メロディーICは演奏する曲の順番を記憶していますが、電源が切れると順番が初期化されてしまい、時報と曲目がずれてしまいます。





TVチューニング回路

今回使用したTVチューナーは電圧により放送局を選択する方式です。
仕様では選局電圧は0Vから28Vですが、今回はどこかの局が選択できれば良いので12Vの電圧を使っています。
もし、この電圧で選択できる局が無い場合には電圧を上げる必要があります。
チューナーの電源に電圧変動があると選局がずれてしまうので、安定した電源を使う必要があります。




電源回路


電源回路は4種類あります。
TVチューナ用の+12V、スピーカーを鳴らすための+9V、LEDを点灯するための+5V、それとPIC、CPLD、メロディーIC用の+5Vです。このうちPIC、CPLD、メロディーIC用の電源はバッテリーでバックアップしています。これにより、停電になっても時計機能は動作し続けます。電池の消耗を抑えるため、時計の基本機能だけを動作させるようにしました。外部回路のPLL発振器もバッテリーバックアップしている電源を使います。TVチューナーはバックアップしないので停電になると止まります。その場合、PLL発振器はテレビ信号のカラーバーストとは同期しなくなり、精度は多少落ちますが、長時間の停電でなければ精度にはあまり影響はしません。

バッテリーには充電可能なニッケルカドミニューム電池を使用しています。1本の電圧が1.2Vで6本直列に接続して使用しています。ですから、停電時にバッテリーから供給される電圧は7.2Vです。バッテリーバックアップしている電源の3端子レギュレータには電圧降下の少ないレギュレータを使っています。このレギュレータでの電圧降下は0.2V位です。78L05の場合は1.7V位の電圧降下があるため、5Vの安定した出力を得るためには6.7V以上の入力電圧が必要です。このレギュレータの場合は5.2V以上の入力があれば、安定した5Vを出力することができます。ただし、最大入力電圧が15Vなので、安全のために9Vのレギュレータ出力を入力として使っています。12Vのレギュレータ出力でも良いのですが、プリント基板でのパターンの関係で9Vを使っています。
バッテリーは電源が供給されている場合には20mA以下の電流でトリクル充電しています。(赤線)
今回の回路の場合、だいたい次のようになります。 ( 9V-7.2V )/220Ω=8.2mA
トリクル充電については「バックアップ電池」を参照して下さい。