AVRで時計を作った


注意!このページはAVR初心者が書いたものです。
このページを読んだことによる如何なる損害に対しても筆者は責任を取りません。
参考にされる場合は全て自己責任で行ってください。



日本橋でtiny2313と7セグメントLED、水晶発振子(12MHz)なんかを買ってきたから時計でも作ってみようと思い立って作ってみた。
先人のサイトを見てるとポリウレタン銅線(UEW)を配線に使うと楽に配線できるようなので今回はそのUEWを使って配線してみることにした。


回路図を引くほど複雑でもないしめんどくさいのでそのまま決行しようかと思ったが 7セグLEDのピンの配置をいちいち考えながら配線するのはもっとめんどくさいと思い 慣れないpcbeで7セグ周辺をメインに中途半端に描いてみた。
基本すらも知らないからシルクレイヤーだろうがレジストレイヤーだろうがお構い無しに配線を描いた。
逆に回路図を描いたほうが楽で見やすかった・・・。
※pcbeはすごくいいソフトですよ。私の使い方と使う場所が悪いだけです。

画像が無いのは仕様です。けっして保存のし忘れなんかではありません。


さて、夢中になりすぎて写真が全然ない。

とりあえず2時間ほど格闘してなんとか配線は終了。
全部配線し終わって思ったことは、配線がへたくそすぎだ\(^o^)/

半田面はこんな感じになった(叩くと拡大)


まぁ動けばいいのだよ。

適当に数字を表示するプログラムを書いて書き込んでみると無事数字が表示された。
周囲の光が強いと表示が見辛いから黒いアクリル板でも貼り付けると綺麗だろう。




配線も無事に終わってあとはソフトの調整である。

時計を作るからなるべく正確に1秒を測りたい。
接続したのは12MHzのクリスタル。


12MHz/256=46875とうまく割り切れるので65536-46875=18661でオーバーフローを使えば 丁度1秒ごとに割り込みが入る。たぶん。
この辺はまだ勉強中だから完全に理解していない。
もし間違い等あれば連絡ください。

ミリ秒単位よりも秒単位のほうがカウンタもひとつ減るしスマートだ。結果オーライ。

ということで、256分周、TCNT1=18661;でオーバーフローさせることにした。
(公開できるようなプログラムではないので公開はしませんが、欲しい方がいれば気軽に連絡ください)


プログラムも無事に出来てしっかり動作もするようだ。
一日動作させてみたが一日では誤差があるか分からないのでひとまず割り込みのタイミングは合っているだろう。
自分の部屋に置いておくものだし、たぶんすぐに使わなくなるからケースにも入れずに完成とした。


作った後に気が付いたことは、時計はLEDで作るもんじゃないってことである。
LEDにはひとつのセグメントに電流を10mA程度流しているため、電池で駆動させると数日で電池切れを起こしてしまう。
こんな時計ひとつのためにACアダプタを使うのもアホらしい。
次はLCD表示の時計でも作ろうか・・・。

しかしマイコンの勉強としては、デジタル時計はとっつきやすく勉強にもなるのでおすすめだ。


2009/09/26  一部修正
2009/02/10  文書作成


HOME /AVR_TOP inserted by FC2 system