Make Technology

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

Make
スポンサーリンク

どうも、ヴィンテージ水晶発振子を使った時計の続きです。
今回は、もう一つのメインにして設計の最難関、時刻セット用の回路について解説します。

目次

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

この回路の役割

前回が1秒を数え続けて現在時刻を計上する回路に対して、こちらはその初期値を入力するための回路。
任意の時刻に合わせられるようにして、時計の実用性を図ります(でないと、0時ピッタリに起動しないといけなくなる…)。

最終的にこうなりました
ICは31個です

時刻セット回路

回路図はこちら。

24時間のみなら、(十の位)BOとLOAD直結、および時のCLRを(十の位)QBと(一の位)QCのみに

以下の記事を参考に、BCD10進アップダウンカウンタICの74HC192を使いました。

アップダウンカウンタの制作 基礎編 | マルツセレクト
アップダウンカウンタの制作 実験編 | マルツセレクト
アップダウンカウンタの製作 設計編 | マルツセレクト

こちらも4ビットバイナリ版(74HC193)がありますが、アップ/ダウンカウントと24/60進数の条件分岐(桁上がり)を同時に実現する回路が思いつかなかったので、今回は10進カウンタを採用しました。また、部品点数を減らすため、時刻セットは時と分のみ対応です。

値の増減

時と分それぞれ、一の位と十の位の数を保持するため74HC192を2個ずつ、計4個使いました。
十の位の入力に一の位の出力をつなぐ(-1→BO、+1→CA)ことで、桁の繰り上りと繰り下がりを実現しています。

ボタン入力について

値の増減にはタクトスイッチ2個を使います。ローパスフィルタの遅延回路とシュミットトリガインバータによる反転回路を2段使い、反転回路1段目と2段目のNANDを取ることで入力のパルス信号を生成します。

また時と分で共通のボタンを使うため、2回路のトグルスイッチでタクトスイッチの接続先を切り替えるようにしています。加えて、接続しない方のピンが不安定にならないよう、それぞれの入力ピンは47kΩ抵抗でプルアップします。

上限から1加えた時の処理

時刻計測と同様に桁の上限まで達したかをチェックします。時刻計測では(上限-1)の値でクロックを受けることで0に戻しますが、ここではボタン入力で上限に達したらCLRピンをHにして値を0にします(+1入力と上限チェックのAND)。

  • 分:十の位のQBとQCがH
    • 24時間制:一の位のQC、十の位のQBがH
    • 12時間制:一の位のQB、十の位のQAがH(未実装)

0から1引いた時の処理

逆に、0から(上限-1)の値にする際は、十の位のBOを/LDピンに入れることで74HC192の入力を読み込む形でセットします。/LDがLになった瞬間に入力が読み込まれるが、一の位のBOが働くので入力値から1引かれて上限値となります。入力ピンの状態は以下の通り。

    • 一の位:全てL
    • 十の位:AはL、B・CはH (Dは不問)
  • 時 (24時間制。12時間制の場合は12を作ればOK)
    • 一の位:CはH、残りはL
    • 十の位:AはL、BはH (C・Dは不問)

なお、0から1を引いた時の処理は以下の様な流れになります。

  1. -1のボタン押下(H→L)で00→99
  2. 十の位のBOを、二桁双方の/LDに入力
  3. 入力ピンの状態(60/24)を読込
  4. -1の状態がL→Hに戻ると、(3.で)保持した値が1減少
  5. 一の位が0→9に変化すると、BOが十の位の-1入力に伝搬してその桁も1減少

時計本体への反映

各桁、74HC192の出力(QA~QD)を74HC161の入力ピン(A~D)につなぐことで時計本体に反映します。しかし、このままでは時計本体側での読み込み(60→0:秒・分、24→0:時)に不具合が生じるため、時計本体が動いている(時刻の計測)時は常にCLRピンがH(出力クリア:0)になるよう、上限チェック(満たしてたらH)では時刻セットの反転(無効時H)とのORを取ります。ICの数を減らすため、ここでもド・モルガンの法則を使い、各出力の反転をNANDに入れて代用しました(上限に達しない or 時刻セット有効化 でクリア)。

12時間表記(未実装)

時計本体も12時間表記にするのであれば、時刻セットも12進数に対応しないと不具合が出てしまいます。

要は上限値(12 or 24)の判定と0への更新が問題なのですが、時刻セットではアップダウンカウンタを使うため、前述の通り (1)上限に1加える そして (2)0から1引く のどちらも考慮する必要があります。幸い、条件分岐や入力値を変えることで対応できそうです。

  1. CLRピンにHを入れる条件(一の位:QB & 十の位:QA = H)
  2. 入力ピンの状態(一の位:B & 十の位:A = H)

なお、午前か午後かについては、前の記事で状態保持(の構想)を紹介しましたが、現在時刻の表示中は(時刻セットの)出力ピンがすべてLなので、午前・午後の表示を確認すれば大した問題ではないかと思います。

現在時刻の読み込み(未実装)

このままでは時刻セットに入るたびに表示が0になってしまうので、現在時刻を時刻セットにも反映したいところです。

0から1引いた時の処理では単に24時間制に合うよう入力ピンと/LDピンへの入力を設計しましたが、いろいろ模索した結果、「時刻セットを有効化した瞬間のみ、時計本体の出力を入力につなぐ」ことで対応できそうだと考えました。大まかな構想は以下@の通りです。

  1. /LDピンへの入力に、時刻セット有効化(の瞬間)も反映
  2. 時刻セット開始時か否かで入力を切り替え
    • クロック選択と同じ回路で、時刻セットのパルス信号をフラグに選択
    • 24時間制と12時間制で入力値の切替も必要

特に、2.の時刻セットの入力切替が厄介で、時(十の位:A~B、一の位:A~D)と分(十の位:A~C、一の位:A~D)で計13個に加え、12/24時間制で入力値の選択も必要になってきます。ただし、HかLの二値 かつ 入力値はほぼ共通 なので、4入力(時の十の位:A~B、一の位:B~C)について、B(十の位)とC(一の位)は12/24時間制の切替信号、A(十の位)とB(一の位)はその反転を入れれば解決できると思います。

メイキング

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

時計と時刻のセット用回路は3倍速にしてもあまりに長すぎたので、前半と後半の2つに分割しました。終わらないはんだ付けで必死にはんだ付けしていたので、制作過程を撮影していたにも関わらず、画角に髪や後頭部が入り込みまくったため、動画を不自然にカットすることとなり、動画がこま切れ状態になっています…。見てくださる方がいらっしゃるかわかりません見づらくて申し訳ないです。

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