今まで何個ものデジタル時計を作った。回路図、スケッチ(arduinoのプログラム)も公開する。これに従って作れば、デジタル時計が作れる!
いろいろなバージョン、細かい仕様の変更も何度も行った。そのうち、ここではいろいろな変遷を経た後の小型のデジタル時計について書く。
材料
ATmega328P-PU(マイコン、Arduinoの中心部分)
tinyRCT DS1307 (リアルタイムクロック)
DS18B20 (tinyRTCにつける温度計)(温度表示しないならばいらない。なくても時計として動く)
LIR2032 (tinyRCT用の充電可能の電池)
OSL40391-lW (白 アノードコモン 7セグメント表示機)
1KΩ 抵抗 8個 (7セグメント表示機用)(抵抗の大きさは実験しながら決定した)
LED(赤と青、好みで変更してよい)(アラームと準備完了の表示用)
1KΩ と 470Ω 抵抗 (LED用抵抗、実験し明るさを見ながら決定)
トグルスイッチ 5個
22KΩ(20K Ωでもいい) 抵抗 5個 (トグルスイッチのチャタリング防止回路用)
0.1μF コンデンサ 5個 (トグルスイッチのチャタリング防止回路用)
圧電サウンダ (音出力のため)
39mH(10~47mHでもよい) マイクロインダクター (音出力のため)
1815 トランジスタ (音出力のため)
1KΩ 抵抗 (音出力のため)
ダイオード 1N4007 (音出力のため、トランジスタ保護のため)
microUSB typeB コネクタ (電源用)
ユニバーサル基盤
ケース(透明ケース、100均で適当なものを探した)
電線 はんだ
ねじ
道具
はんだごて ケース加工のためのドリル ニッパ ワイヤストリッパー ドライバ やすりなど
全体概念図
RTC: リアルタイムクロック tinyRTC(DS1307) ここに温度計(DS18B20)もつけてある。
マイコン: ATmega328p Arduinoのマイコン部分をスケッチを書いたのち、取り出して使う。この辺のことは Arduinoについて の後半に書いてある。書き込みのことについてはネット上にいろいろある。また、書き込み装置を自作するとかなり便利だが、それについては Arduinoブートローダライタシールドの製作について で多少書いてある。参考にしたサイトも書いてある。
7セグメント表示機:OSL40391-lW (白 アノードコモン)を使った。青とか黄色とか赤とかもある。その辺はお好みで。以下の回路図はアノードコモンの場合なので、カソードコモンの場合は回路図が変化してくる。
タクトスイッチ:チャタリング防止回路については回路図で示す。
圧電サウンダ:音を大きくする回路については回路図で示す。
各部分の回路図
TinyRTC:5V、GNDをつなぐ。マイコンと、SCL、SDA、DSをつなぐ
ここでの回路図は、いろいろ変更可能。特にマイコンのピン配置はマイコンに書き込むプログラム次第。プログラムを変更すればピン配置も変わる。ここで示しているのは、あくまでも、私がやった具体例である。
LEDにつなぐ抵抗は試してみながら変更する。LEDにつなぐ抵抗は大きいほうから試す。抵抗が小さいものをつなぐと電流が流れすぎLEDが壊れることがある。もちろん、LEDと抵抗のつなぎ方はLEDに流してよい最大電流と、かかる電圧から考えて、余裕のある値をあらかじめ計算するのが大前提。7セグメント表示機の回路図で、簡単に計算過程も示してある。
サウンダはいろいろな回路を試してみたが、試した中では、ここで記載したものが一番よさそうだった。でもほかにもいろいろな方法がある。マイクロインダクタは10mHでも、47mHでもよかった。
電源はUSBからの5Vのみ。以前12Vから5Vと3.3Vを3端子レギュレータを使ってデジタル時計を作ってもいた。大きなデジタル時計では、テープLEDをドライブするために12Vを使った。マイコンは3.3V、8MHzで、RTCは5Vで、と3種のプラス電源を使っていたが、回路的に面倒だった。いろいろ検討し情報を得るうちに、マイコンは5V,8MHzが可能なことを知り、マイコンもRTCもサウンダもすべて5Vでやると3端子レギュレータもいらないだろうということで、今回の形になっている。
マイコン(ATmega328p)はArduinoの標準では5V,16MHzである。3.3Vにすると内蔵クロックを使い8MHzになる。外部クロックのために使っていた2つのピンを入出力のピンとして使えるようになる。また消費電力も少なくなる。クロックが遅くなるので、処理は遅くなるが、今回の時計の処理では十分な速さである。さらに、5V,8MHzでも使用できることがわかり、この場合もやはり外部クロックは不要なので、入出力ピンをArduinoの標準よりも2つ増やすことができる。回路図を見てもわかるとおり、時計のために入出力ピンは全く余裕がない。入出力ピンは多いほうがありがたい。またRTCと電圧が同じほうがありがたい。なので、マイコンは5Vで、8MHzの仕様にした。5V,8MHzで使うために方法はネット上にいろいろある。また、 Arduinoブートローダライタシールドの製作について の最後の部分に参照の情報を載せている。
マイコンへ書くプログラム(arduinoでは「スケッチ」という)について
デジタル時計 スケッチ(1 2 3) 。ライブラリが必要である。必要なライブラリはスケッチの始めのほうにまとめて書いてある。Arduino IDE で作業する。書き込み方法については、 Arduinoブートローダライタシールドの製作について を見てください。ブートローダライタシールドは作らなくてもブレッドボードで回路を組めば書き込むことはできる。ただ、時計を自作したいと思うくらいの人ならば、練習がてらにでもブートローダライタシールドの製作をお勧めする。かなり使い勝手がよく、便利ですよ。
実際の作業
材料の準備。すべての材料を準備します。
スケッチを書きこんだマイコンがないと何もできないので、まず、スケッチを書き込む。パソコン、Arduino、自作のブートロードライタシールドを使ってのマイコンへのスケッチの書き込み。
ブレッドボードに回路を組んでみる。そしてしっかりと動くかどうかの確認する。電源につなげる前に丁寧に丁寧にチェックすること。電源につないだ瞬間に回路が間違っていると部品が壊れてしまうことがある。(ブレッドボードの注意。私はいくつかのブレッドボードを持っているが、とても差し込みにくいものやマイコンの足の長さでは差し込めないものもある。今回も回路を組んでうまく動かず、なぜだろうと思ったら、マイコンやタクトスイッチの足がうまく差し込めなかったため、接触不良で回路が動かなかったということがある。見た目は変わらないブレッドボードだが、品質の差がかなりある。見た目が違うなら区別のしようもあるが、ぱっと見た目ではわからないのが嫌ですね。あまり安すぎないブレッドボードを買うしかないのかなあ。でも、高くても品質がいいかどうか、買う時点ではわからないし。困ったものだ。)
きちんと動くのを確認したら、ケースと基盤を用意し、そこにどのように収めるかを考え実行してみる。
ユニバーサル基板上に配置してみる。この時点では部品をただ差し込んだだけで、まったく固定していない。また配置に従って、ケースの加工もできる部分はする。ケースの加工は、最終的にはんだ付けなどをしてから加工する部分もある。ふたと基盤との接合の穴あけ、タップを使ってのねじ切りもこの時点でした。トグルスイッチの穴の加工は、開ける穴の中心を決めるのに、基板がものさし替わりとして使うのに便利なので、スイッチの穴あけ加工はこの時点でした。電源などの穴あけは後でした。部品の配置は、電源やGND、サウンダやタクトスイッチの回路などを考えながら、接続が容易なように考えながら行う。かなり慎重に行う。うまくやると後が楽だが、うまくいかないと裏側が大変なことになってしまう。
部品を固定しながら、慎重にはんだ付けをしていきます。
回路を何度も確認した後に電源につないでみて動くかどうか確認する。
最終的にケースに収まるようにケースの加工。そしてケースに収めてみる。
いろいろなバリエーションについて
*アラームを音だけでなく、外部のテープLEDで光って知らせるようにした。ドライブするためにトランジスタとかリレーとか使った。外部LEDでの表現の関係で、スケッチも変えたりした。
*温度用のスイッチを独立に作って、入出力ピンが足りなくなったとき、4511という7セグメントドライバーを使ったことがある。
*テープLEDを使ったとても大きいデジタル時計:テープLEDを使うために12Vが必要。また、表示のLEDの電流量はマイコン(ATmega328P)ではドライブできない。そのため、62083や62783などのトランジスタアレイを使って、表示をコントロールする。また、コントロールに際し、信号が逆転する部分があるため、インバーターを使うとか、スケッチを書き変えるとかが必要。
*DFplayerで目覚まし機能で、SDカードからの音楽を流すようにした。これには、苦労した。DFplayerが信号の入力に対しての待ち時間反応時間がとても遅く、タイミングが合わず、思うように動かなかった。また、外部への光の出力も行った。よって、入出力ピンが足りなくなった。そこで、シフトレジスタを使いマイコンの入出力ピンの節約をはかった。74HC595を使った。
*いろいろな変更に伴い、スケッチの変更を行う。また、入出力ピンの変更も行う。
0コメント