![](https://habrastorage.org/storage2/d9a/675/43e/d9a67543ee2572e63d7fdf219567342a.jpg)
![](https://habrastorage.org/storage2/aa1/171/bd6/aa1171bd649b1cfc5ca9947577cc2cfa.jpg)
スキーム
![](https://habrastorage.org/storage2/1bd/974/9d2/1bd9749d26479a91bba32ddf08b2119f.png)
![](https://habrastorage.org/storage2/fc7/669/fbc/fc7669fbc0bdf1f15cf66255c5322a47.png)
RTC
リアルタイムクロック (RTC)は、現在の設定を保存する問題を完全に解決します。 私の選択はDS1307チップにかかっていました 。
![](https://habrastorage.org/storage2/f72/20a/65e/f7220a65ed642ae0c08c47a73d2d1ed7.gif)
製造元によると、電源を切ると10年分の日付と時間を節約でき、CR2032タイプのリチウム電池だけでエネルギーを消費します。 つまり、許容できる精度を維持しながら、時計は刻々と進み続けます。 時間は迷わず、時計を再びオンにします。オフのときではなく、ダイヤルでリアルタイムを取得します。 マイクロ回路は、「スクエアバス」I 2 Cを介してマイクロコントローラと通信し、正確な時間を報告し、新しい値を取得します。
デバイスハート
Mega32aマイクロコントローラーの選択は、次の要因によって決定されました。
•動的ディスプレイを使用しないように十分な数のポート。これは、主に視力を刺激するために好まれません(高周波数での点滅はいずれの場合も不自然です)。 プロトンPICBasic言語のPICマイクロコントローラーで遊んでいる彼女に会いましたが、動的表示を使用しない可能性がある場合は、そうすることを好みます。
•130ルーブルという比較的低いコスト(たとえば、Mega16aは同じコスト)で、割引価格であるため、通常104ルーブルです。
•便利なピン配列のクリアQPF-44ハウジング
![](https://habrastorage.org/storage2/edd/940/533/edd9405339374ca54bbf536b2ddaa587.png)
ポート「A」は秒、ポート「B」は分、ポート「C」は時間を表示します。 DS1307から受信した時間値を変更せずにポートに割り当てることができると非常に便利です。 ボタン(ピン3〜7)はポート「D」に接続され、ピン0と1はそれぞれクロックライン(SCL)とシリアルデータライン(SDA)として機能します。 RTCチップは、7番目のレグで1ヘルツの周波数のパルスを放出するように構成されています。 この脚は、ポート「D」の3番目のピンに接続されています。 このポート自体は入力用に構成されており、念のため、内部ブレースがパワープラスに含まれており、外部からSMD抵抗器によって複製されています。 このようなアクションは、あらゆる種類の驚きから完全に保護します。
LED
![](https://habrastorage.org/storage2/ca9/c8e/3f7/ca9c8e3f763f9849bf2d65c7fda03264.jpg)
私は低輝度のマットケースのLEDを選びました。 最初に、透明ケース内の明るいダイオードがテストされましたが、3 mAの電流でさえ、過度に明るく不均一に輝いていたため、再び不快感を引き起こしました。 ダイオードの電圧降下が2ボルト、供給電圧が5ボルト、抵抗が1kΩの場合、ダイオードを流れる電流は(5-2)/ 1000 = 3 mAになります。 この値は経験的に選択されたものであり、グローの明るさは暗い部屋に最適です。 直射日光に時計を設置する場合は、抵抗器の値を最大200オームまで下げて、グローを明るくします(キャップのおかげ)。
ボタン
ボタンのある別のボードには、別のBt6ボタンの形で「ヒューズ」があります(これは頭の中での偶発的なショットから私たちを救います)。 時間は、事前にクランプすることで編集できます。
![](https://habrastorage.org/storage2/d5e/77d/0b2/d5e77d0b2f4332eadc5fdec40e75e52f.jpg)
ソフトウェア
コードはCodeVisionAvrで記述されています。
プログラムは、マイクロコントローラーの周辺機器を構成するという事実から始まります。
•ポートの構成(A、B、C-出力、D-入力)
•念のため、DS1307が「回復」する時間があるように、300ミリ秒の一時停止が提供されます。
•「スクエアバス」を初期化する
•RTCチップを構成して、SQW / OUTピンで1秒ごとに矩形パルスを生成します。
•CLRボタンが押されているかどうかを確認します。 はいの場合、すべての値を0にリセットします
•グローバル割り込みを有効にする
はい、それらについてのいくつかの言葉。 低下時にPD2で外部割り込みINT0を使用します。 1秒ごとに、プログラムは割り込みハンドラーに移動し、DS1307から時間値を読み取り、LEDインジケーターに表示します。
•ボタンに問い合わせをする無限ループに入ります
•ボタンが押された場合、時間(分)を追加(減算)し、I2Cを介して新しい値を送信します。
•途中で、新しい時間値が24時間と60分の範囲に収まるかどうかを確認します。
回路基板
このボードは、片面テキソライト上にある
![](https://habrastorage.org/storage2/2e1/a54/e2a/2e1a54e2abe30a3dc1b6b5f585454ff5.jpg)
この技術には多くのバリエーションがあります。 私の意見では、これが最高です。
1.適切なサイズのPCBをカットします。
2.有害なバリを取り除き、両端に皮をむきます。
3.将来のボードをクリーニングパウダーまたは歯磨き粉とスポンジの硬い面で滑らかにし、磨き上げます。
4.温かい塩化第二鉄の弱い溶液に数十秒間浸し、均一でマットなバーガンディブラウンの表面が現れるまで。 溶液から引き出されると、液体は表面を完全に濡らします。
5.カクを洗い流し、指などで脂っこい表面に触れずに、やさしく乾かします。 ほこりや髪の毛を避けるために、すぐに銅できれいな紙の上に置きます。
6.ミラー画像を薄い(!)光沢紙に印刷します。たとえば、雑誌から切り取ることができます。 図面に手で触れないでください。 慎重にカットし、パターンを下に置きます。
7.準備したPCBピースに、鉄を1〜2層のきれいな紙に塗り、鉄を最高温度に設定します。 露出オーバーになると、トラックが平らになって互いに流れ込むため、10秒で十分です。 トナーは銅に完全に付着するはずです。
8.温水の流れに浸し、水に10分間放置します。 そっとはがし、紙をこすり落とします。 古い歯ブラシはこれを助けてくれます。 残りの紙片を針で取り除きます。 トナーはPCBに残ります。
9.塩化第二鉄の強い溶液を水浴で加熱し、そこにボードを投げて数分間絶賛します(温度が10度上昇すると、反応速度は2倍になります。銅は目の前で消えます。温めないで、もっと長く待ってください。
10.不要な銅がすべてなくなったら、すぐにガスを止め、ボードを引き出し(ピンセットなどで)、塩化第二鉄からストーブと指を洗い流してください。 回路基板から流水で洗い流します。
11.アセトン(マニキュア液)を取り、トナーを拭き取ります。 サンドペーパーまたはスポンジでこすってみてください。
12.ドリル穴。
13.ルディム。 LTIをフラックスとして使用しますが、錫メッキとはんだ付けの後、このフラックスを洗い流さなければなりません(同じアセトンで、できれば1:1のアルコールとガソリンの混合物で)。 LTIにはある程度の伝導性があります。
すべての作業は、換気された部屋で、その過程で行われなければなりません
多くの有害な煙が放出されます。
![](https://habrastorage.org/storage2/a85/18a/b70/a8518ab70d066e4593ce2ae82d04bb64.jpg)
ボードは、PBSおよびPLDコネクタで相互接続されています。 最初のものは細い取り付けワイヤを使用して天板に接続され、たとえば古いLPTケーブルまたはアダプタから取り出すことができます。
![](https://habrastorage.org/storage2/298/077/f4b/298077f4b297725c4f73043ceb63bf6d.jpg)
2つ目は底板にはんだ付けされ、キーボードにつながるピンは曲がっています(写真を参照)。
![](https://habrastorage.org/storage2/b68/2f8/534/b682f85349c904fa97383f112678aae0.jpg)
SprintLayout5.0形式のプリント基板が含まれています。 写真には在庫がいくつかありますが、添付ファイルですでに修正されています。
マイクロコントローラーファームウェア
このために、 USBaspプログラマーが組み立てられました。これは上の写真で見ることができます。 とても使いやすいもので、いつでもポケットに入れて持ち運ぶことができます(誰もそれをしないことを願っています)。 mega32ファームウェアの場合、Slow SCKジャンパーをインストールする必要があります。
ファジー:
•低ヒューズ= 0xC4
•高ヒューズ= 0xD9
弊社のマイクロコントローラーは、周波数8 MHzの内部RCオシレーターからクロックされます。 PortCでJTAGインターフェイスを無効にする必要がありました。無効にしないと、一部のLEDが点灯しません。
ボードには、迅速なファームウェア/デバッグ用のISP10コネクタがあります。
フロントパネル
幅40 mm、厚さ1.5 mmのアルミニウム板でできています。 直径5 mmの18個の穴と、ラックを取り付けるための直径3 mmの4個の穴を開けました。
![](https://habrastorage.org/storage2/5e0/af4/4d3/5e0af44d3a7be97c605f554b8508bedf.jpg)
まず、テンプレートが印刷され、プレートに接着されました。 さらに、1.5 mmのドリルでパイロット穴を開けた後、必要な直径でメインの穴を開けました。
![](https://habrastorage.org/storage2/d0e/21e/1a5/d0e21e1a525720ca44cd2d9183d91a2b.jpg)
最後に、プレートを曲げ、細かいサンドペーパーで研磨し、GOIペーストで研磨しました。
テンプレートは、layout5.0ファイルとして添付ファイルに添付されます
左上の赤いLED
7番目のレッグでDS1307によって生成されたパルスを繰り返します。 毎秒点滅します。 小さなpチャネルMOSFETトランジスタはキーモードで動作し、パルスのビートに合わせて開閉します。 最初は、相補的なトランジスタペアのCMOSインバーターが成形された(確かに)バックライト(Ambilightなど)を作りたかったのです。 しかし、私はそれが好きではありませんでした。 1つのLEDには1つのトランジスタで十分であり、pnpタイプbc857を使用することもできます。 解凍したmosmlet irlml6402またはirlml6302を使用しました。
ファイル
ソース、16進ファイル、プリント基板、回路、プロテウスおよびヒューズの回路は、アーカイブの形式でこの図に含まれています。 私はファイルストレージを信頼していません。私はまだ自分のサーバーを持っていません。したがって、私の素人の意見では、Habrは最も信頼できる保存場所になります。 Windowsユーザーは、WinRarを使用して保存されたイメージを開くことにより、ファイルにアクセスできます。
はい、ここに写真があります。
![](https://habrastorage.org/storage2/213/0cb/319/2130cb31926d37e4a90377635d3c48d0.gif)
映像
おわりに
電源は、70 mAの電流で5ボルトを生成できる人なら誰でも使用できます。 これにはUSBポートで十分です。 主なことは、電源が「クリーン」であり、5ボルトを超えないことです。 〜50 mVの干渉レベルでmc34063チップのDC-DCコンバーターからクロックに電力を供給していると、時間を設定するときにグリッチに気づきました。 これで、デバイスは近くにぶら下がっているスイッチから給電されます。 厳密に5ボルトを出力します。 良いことには、まだダイオードの形で愚か者から保護する必要があり、3.3-5ボルトのある種の線形安定器です。
時計にアラームと日付の機能がないことは十分に正当化されています:両方とも電話機に存在します。つまり、バイナリ時計で高い確率でこれらを使用することはありません(この結論についてはオックルおじさんに感謝します)。
使用材料
Lebedev M. B. CodeVisionAVR:初心者向けガイド
avrdevices.ru/chasi-realynogo-vremeni-ds1307