Make Technology

ヴィンテージの水晶発振子で時計を作る(4/9)

Make
スポンサーリンク

どうも、ヴィンテージ水晶発振子を使った時計の続きです。
今回は、いよいよメインの時刻計測回路に突入します。

目次

  1. 概要と機能・動作
  2. 材料
  3. クロック回路
  4. 時計(時刻のカウント) ← 今回はココ!!
  5. 時刻合わせ
  6. VFD点灯制御
  7. 電源、リセット
  8. 実装(はんだ付け、筐体)
  9. 完成までのストーリー

この回路の役割

計時用のカウンタ回路、つまり1秒のクロック信号をカウントして現在時刻に変換するための回路です。
同期式カウンタなどの汎用ロジックICで 60進数(秒・分) および 24進数(時) を再現します。

時計回路(計時カウンタ)

時計の回路図は以下の通り。

基本的な設計は以下を参考にしました。

ロジックICだけで時計を作る[設計編]
マイコンを一切使わず、全部ディスクリートのロジックICだけで作った時計の設計記事です。時計コア部分は74シリーズのCMOSロジックICだけで作られています。表示デバイスはニキシー管、電源同期式、フルロジックシーケンス動作、とレトロマニアには大変萌える構成となっております(笑)。こちらは設計記事なので、実際に作ってみたい...

時・分・秒の各桁について、同期式4ビットカウンタICの74HC161をメインに、NOT/OR/ANDによる条件分岐(繰り上がりの確認)を組み込んでいます。74HC160といった10進カウンタなら部品数を減らせますが、生産終了品が多くメンテナンス性が悪くなると判断して74HC161にしました。

上の参照元の通り、(同期回路の動作に忠実となるよう)CLKピンに入れる信号は全て同じクロック信号(1Hz)を使い、EnPとLoadピンで桁上がりを制御することで、60進数あるいは24進数を実現しています。なお、/CLRピンには後述のリセット回路を接続します(クロック信号が安定してから動作させるため)。

時計と時刻のセット用回路、はんだ付け開始!長い戦いが始まった…

桁上がりの仕組み

具体的には、各桁の数値が上限に達したか、NANDに各桁の出力(ex. 9 → 1と8がH)を入れて、上限に達したらLoadピンをLにしてクロックを受けることで0に戻します(L→Hで0を読込む)。ただ、このままでは任意の時刻を設定できないため、NAND出力と時刻セット有効化の反転とのANDを取ることで、時刻セット中はCLKを受ける度に入力ピンの値を読み込むようにします。

また、各桁のEnP信号にその下の桁が上限に達しているかを入れることで、意図しないカウントを防ぎます(秒の一の位は常に有効:H)。
クロックを受け付ける(LoadピンをLにする)条件は以下の通り。

    • 一の位→9の時にカウント+1
    • 十の位→(一の位が9)かつ(十の位が5)の時にカウント+1
  • 分 (秒の条件を満たし)
    • 一の位→9の時にカウント+1
    • 十の位→(一の位が9)かつ(十の位が5)の時にカウント+1
  • 時 (秒・分の条件を満たし)
    • 一の位→9または23(十の位と同条件)の時にカウント+1
    • 十の位→(一の位が3)かつ(十の位が2)の時にカウント+1

時・分の更新イネーブル

ですが、時・分については下位の値(分・秒)も考慮しないと上限に達した瞬間、つまり59:00や23:00:00になった次の1秒ですぐ0に戻ってしまいます。
そこで、前段のLoadに入る信号(の反転)もNANDの入力とすることで59秒、あるいは59分59秒になった次の1秒で分や時が適切なタイミングで更新されるようにします。そのため、3入力、あるいは4入力NAND(3入力と2入力の組み合わせ)をLoadに入れています。

入力ピンとモード切替(時刻セット)

時刻セット回路の出力を、分と時の各桁のカウンタIC(入力ピン)に接続することで、セットした時刻を本回路で読み込めるにしています。ただし、桁の繰り上げにもLoadピンを使って0を読み込むため、現在時刻の表示中は時刻セット回路の値をクリアしています(詳細は 5.時刻合わせ にて)。

一方、時刻計測とセットの切替はEnTピンが担っており、時刻セット有効化の反転入力を受けることで計測機能の有効/無効を切り替えます(H:計測、L:セット)。

12時間表記(未実装)

このままでは24時間表記のみですが、時の桁上がり条件を変えることで12時間表記にも対応できると思います。

  • 時 (秒・分の条件を満たし)
    • 一の位→9または11(十の位と同条件)の時にカウント+1
    • 十の位→(一の位が1)かつ(十の位が1)の時にカウント+1

午前と午後の表示も必要になってきますが、そこは12時を見逃さないよう凝視十の位が桁上がりでリセットされるタイミングを入力として状態を切り替えて対応できそうです。

例えば、1回路のDフリップフロップを使い、クロックに桁上がりのタイミング、入力に反転出力(~Q)を入れることで、出力が午前か午後かを表すことができます(出力のH/Lで表現しても、2出力それぞれをどちらかに割り振っても良い)。

原理的には電源投入後は出力の状態が不定(HかLか不確定)なのですが、CLRピンで出力をクリアすることで確定させられます。幸いにも、後で開設するリセット回路が電源ONからしばらくLを維持してHになるので、ちょうどCLRピンへの入力に使えそうです。

24時間表記と併用したい場合、12時間と24時間それぞれの条件分岐回路を前述のクロック信号回路と同じ仕組みでつなげれば表記を選択できる…はず。その際、12時間機能を有効にする信号をどこかで作ってください(トグルスイッチなど)。

メイキング

ヴィンテージの水晶発振子で時計を作る】2/5:「時計と時刻のセット用回路(分割1/2)」

時計と時刻のセット用回路は3倍速にしてもあまりに長すぎたので、前半と後半の2つに分割しました。画角にはんだ付けを必死でしている者の髪が突然映り込みびっくりするので、細切れにカットしているため、動画が見づらいかと思います。申し訳ないです。

タイトルとURLをコピーしました