はじめに
秋月電子通商から発売されているDIP化モジュールを使ったデジタル時計+温湿度計です。これらモジュールは、小型基板にICの他、必要な抵抗やコンデンサなどが実装済なので、外付け部品は不要です。また、DIP化されているので、ブレッドボードに刺してジャンプワイヤーで配線すれば使えます。
概要
時刻と温度/湿度の表示は、7セグメントLEDシリアルドライバモジュール(以下7セグLEDモジュール)、時刻設定はロータリーエンコーダで行います。また、温度湿度測定は、SHT31温湿度センサーモジュールを使用しています。これらデバイスの使い方は、「ロータリーエンコーダと7セグメントLEDの実験」、「温湿度計(+メッセージ表示)の作製」の過去記事を参照して下さい。
精度が求められる時計のクロック源は、リアルタイムクロックモジュール(次項)を使用しています。
内容
RTC-8564NB(エプソン・トヨコム)は、32.768kHzの水晶振動子を内蔵したI2Cバスインターフェースのリアルタイムクロックモジュールです。周波数精度は、5±23ppm(@Vdd=3.0V,Ta=+25℃) 月差1分相当です。また、このモジュールは、基本発振周波数(32.768kHz)の他に、1024Hz,32Hz,1Hzの選択出力が可能です(本作品は1Hz)。下は、モジュール外観と、CLKOUT出力信号(1Hz 矩形波)です。
使い方は、PICマイコンの外部割り込み(INT)ピンに、モジュールからのCLKOUT信号を入力して外部割り込みを許可すると、1秒毎に割り込みが発生します。プログラムでは、MCCが生成した外部割り込み関数 INT_ISRの中で時刻に変換します。割り込みが発生する毎に変数Secがインクリメントします。
次に、7セグLEDに表示するため、各変数の値を10で除すと商が10の位、余りが1の位になるので、各位の値より0~9の表示パターンを配列Segから読み込み、シリアルデータ化して7セグLEDモジュールに送ります。
下は、作品のブレッドボード上の部品配置/配線図です。
8個の7セグLEDモジュールは、下のようにSDOピンから次のモジュールのSDIピンにカスケードにつながっており、SCKのLo/Hi毎に温度→湿度→時→分の順で表示パターンのシリアルデータがSDIからモジュールのシフトレジスタに送られ、全てのデータが揃ったところでLATCHをLo/Hiすると7セグLEDに表示がラッチされます。
作品の全景です。
7セグLEDの上に弱遮光板を取り付けると、LEDの散乱光が抑えられるので見やすくなります。また、時刻,温度,湿度を見分けやすくするため、発光色を変えています。
時刻設定のロータリーエンコーダは、2色LED&スイッチ付ロータリーエンコーダDIP化を使用しています。このロータリーエンコーダの軸は、回す以外にプッシュスイッチも兼ねており、また、2色LEDで光らせることもできます。(作品に使用したのは赤/緑タイプ。他に赤/青などもあります)
時間設定は、これらの機能を使って次のようにしました。(動画はここ)
このように、時刻設定を軸操作だけで行うことができ、また、各ステップで軸の発光色を変えることで状態が分かりやすくなります。
まとめ
作品では、リアルタイムクロックモジュールのCLKOUT信号しか利用していませんが、RTC-8564NBはリアルタイムクロック機能として、年/月/日/曜日/時/分/秒のカレンダー・時間カウンタをはじめ、時刻アラーム割り込みのほか、定周期タイマ割り込みなどを備えています。これら機能を活用すれば、市販品に劣らないカレンダー時計を組み立てることが可能です。
また、秋月電子通商は、他にも取り扱いが面倒なデバイスをDIP化した様々なキットを販売しているので、上手に活用すれば電子工作の幅も広がると思います。
– 以上 –