どうも、この間からようやく重い腰を上げた、Reveです。
今回から、久しぶりに電子工作の記事を書いていきます。
目次(全9回 デジタル時計の作り方)
- 概要と機能・動作 ← 今回はココ!!
- 材料
- クロック回路
- 時計(時刻のカウント)
- 時刻合わせ
- VFD点灯制御
- 電源、リセット
- 実装(はんだ付け、筐体)
- 完成までのストーリー
概要
昔の水晶発振子(ガラス管)で1秒を刻み、その信号をディスクリートロジック回路(マイコン無し)で数えて、VFD管で時刻を表示するデジタル時計です。
文字だけでは想像しづらいかもしれないので、動画もご覧ください。
そんなわけで、このデジタル時計の作り方を全8(+1)回に分けて解説する予定です。
主な機能
この時計の主な機能(仕様)をリストにまとめてみました。
今回は、一連の機能をマイコン無しで実装していきます。
- 時刻表示
- VFD管で今の時・分・秒を表示
- 水晶発振子で1秒をカウント
- 時刻(時・分)を任意の数値にセット可能 (秒は0にリセット)
- 注意事項
- 時刻のバックアップ不可 (電源オフで保持した時刻が消えます)
- 24時間表記のみ (12時間には非対応)
- 時刻セットの切り替え時、00:00:00にリセットされる (現在時刻の読込×)
一連の動作
では、上記を実現するためにはどんな処理が必要でしょうか?
ここでは現在時刻とセットそれぞれについて、大まかな処理の流れをまとめました。
時刻計測・表示
- 10kHzの水晶発振子を発振させて1/10000分周し、1秒のクロック信号を生成
- 時刻(時、分、秒)の各桁を記憶するため、同期式4ビットカウンタICを6個用意
- 各桁の数値をリセットするため、カウンタICのピンとロジックIC(NOT, AND, NAND)で条件分岐回路を設計
- カウンタICのCLKピンに、生成したクロック信号を流して時間を計測
- カウンタICの出力を7セグデコーダに入れ、各桁のVFD管アノードへの入力を取得
- 8chトランジスタアレイ(ソース)に前述の入力を与え、VFD管の出力を設定
- VFD用のフィラメント(ヒーター)は、各ピンをデイジーチェーン(数珠繋ぎ)で接続し、6V電源とモータードライバを使い100Hzの交流(10kHzを1/100分周)で動作(各フィラメントには約1Vずつかかる)
- 現在の時・分・秒を6個のVFD管で表示
時刻セット (時・分)
- 時と分の各桁を任意のものに設定するため、アップダウンカウンタICを4個用意
- 時刻セット用カウンタICに、数値増減用のスイッチ2個を接続
- スイッチはトグルで接続先を切り替えることで、時と分のどちらを設定するか選択
- 時刻計測用のカウンタICが、クロック信号で更新しないよう一時的に無効化
- 無効化と同時に、パルス信号を読込ピンに与えて時刻セット用カウンタICの入力を読み込む(今は0に固定)
- 設定した時刻は、時刻表示用の回路を通じてVFD管で表示
- 各桁の数値リセットも、(時刻計測と同様)ICのピンとロジックIC(NOT, AND, NAND)で条件分岐回路を設計
- 設定が終わったら、時刻計測の再開と同時にセット側出力を0(リセット)
やはり、時刻計測・セットそれぞれの条件分岐が重要かつ難点でした。特に、時刻セットの入力に伴う 最大値→0 および 0→最大値 への更新は大いに悩みました。ただ、苦心の末に完成したこともあって、セット中は値の増加(インクリメント)だけでなく減少(デクリメント)も可能となったため使い勝手はよくなったと思います(何気に、あまり他のロジックIC回路では見ない実装…の気がする)。
上記写真の「ヴィンテージ水晶発振子で作るデジタル時計」完成に向けて発狂しながら制作していく記事と、ただひたすら制作していく動画になります。