電子工作の定番
エレキットの真空管アンプとCDプレーヤーを目覚ましに使いたいと思い、昔作ったエレキットのアラーム時計をインターネットで検索していたのですが、あいにくディスコンになっていたのでPICを使って一から作ることにしました。
欲しい機能は以下の通りです。
100VをONにした後の再生ボタン操作は結構見落としがちで、電源が入っても再生が始まらないという悲しい状態にならないように、外部信号を出力するトリガを付けないといけません。
欲しい機能は以下の通りです。
- 設定した時刻に100V出力をON/OFFする。
- 100V出力をONにした後、しばらくしてからCDの再生ボタンを押す。
- 手動で出力をON/OFFできるようにする。
- アラーム動作を抑制するスイッチを付ける。
100VをONにした後の再生ボタン操作は結構見落としがちで、電源が入っても再生が始まらないという悲しい状態にならないように、外部信号を出力するトリガを付けないといけません。
回路の概要
表示部は7セグメントLEDとプッシュスイッチに内蔵されたLEDをダイナミック点灯させています。
スイッチのLEDにつながっているダイオードは、スイッチ内蔵LEDの耐逆電圧が0.5Vと非常に低くLEDが焼き切れることがあったため保護用として挿入しています。
100Vの出力は秋月で売っていた15Aまで流せるSSRを使っています。小さなアルミケースの内側に固定するので発熱するほどの電流を流すことはできませんが、製作後のテストでは700Wの電気ポットをつないでもほとんど発熱しませんでした。
トリガー出力はフォトカプラでアイソレートしたオープンコレクタ型の構成です。これは、受け側になるCDプレーヤーの再生ボタンがプッシュスイッチなので、スイッチと同じようにハイインピーダンスをシミュレートするためです。
100Vの出力は秋月で売っていた15Aまで流せるSSRを使っています。小さなアルミケースの内側に固定するので発熱するほどの電流を流すことはできませんが、製作後のテストでは700Wの電気ポットをつないでもほとんど発熱しませんでした。
トリガー出力はフォトカプラでアイソレートしたオープンコレクタ型の構成です。これは、受け側になるCDプレーヤーの再生ボタンがプッシュスイッチなので、スイッチと同じようにハイインピーダンスをシミュレートするためです。
ソフトウエア
ソースリスト Ver.1.01
LEDをダイナミック点灯させるために表示ループをぐるぐる回さないといけないわけですが、その間にも計時処理、アラーム時刻チェック、スイッチの状態チェックなどを挟まないといけないため、遅いクロックでは結構大変です。 表示のリフレッシュレートはおおよそ24fpsなので、流し目で見たり歯磨きをしながら見ると数字がプルプルしますね。
時刻の計測はTMR0を0.5秒間隔でオーバーフローさせてポーリングしています。これを作った時はまだ割り込みを使ったことが無かったのでポーリングするしかなかったのですが、今ならもう少し効率の良いプログラムが書けるかもしれません。
LEDをダイナミック点灯させるために表示ループをぐるぐる回さないといけないわけですが、その間にも計時処理、アラーム時刻チェック、スイッチの状態チェックなどを挟まないといけないため、遅いクロックでは結構大変です。 表示のリフレッシュレートはおおよそ24fpsなので、流し目で見たり歯磨きをしながら見ると数字がプルプルしますね。
時刻の計測はTMR0を0.5秒間隔でオーバーフローさせてポーリングしています。これを作った時はまだ割り込みを使ったことが無かったのでポーリングするしかなかったのですが、今ならもう少し効率の良いプログラムが書けるかもしれません。
ケースへの組み込み
基板はタカチのYM-130にちょうど収まるサイズに作っています。表示部の基板は本体の基板と分離していて青いケーブルでつながっています。
右上に見える4センチ角のベーク基板はDocomoのガラケーの充電器をバラしたもので、小型ながら5Vに安定化されているうえにそこそこの電流が取れるのでとても便利です。
製作過程で苦労した点
- プッシュスイッチのLEDが逆電圧に弱かったこと。ソフトを作る前に基板を作ってしまったため、ソフトの動作テストをしているときにスイッチがどんどん壊れていった。 回路修正のために3枚ほど基板を焼き直しているはず。この頃はブレッドボードを持っていなかったんで、基板を先に作らないとソフトの開発ができなかったんだな。
- 7セグLEDが思いのほか暗い。電流制限の抵抗100Ωを外しても暗いのでトランジスタが飽和してるっぽい。 2SC5485のような大電流型に変えてみてもいいかもしれないが、表示が明るすぎると夜中に目障りなのであえて交換はしていない。
- 動作クロックが遅すぎてリフレッシュレートがあげられなかった。
- 使っている水晶の問題だと思うが精度が悪く、1か月で10秒ぐらい遅れる。
- 2020/10/17 追記 --- トランジスタを2SC1383、7セグ用抵抗を39オームに変更。
消灯セグメントを隠すためにスモークのプラ板を貼っているので暗くなっていることを思い出した。