DIYバイナリクロック(Mega32、DS1307)

バイナリクロックを収集したいのですが、ネットワーク上で許容できる完成したデザインが見つかりませんでした。 ほとんどの時計には重大な欠点がありました-電源がオフになると、時間設定が失われました。 幸運なことに、その少し前に、私はC言語とAVRマイクロコントローラーを習得し始めました。 そのため、実際の経験で得られた知識を強化すると同時に、自転車を発明することが決定されました。 そして、私は緑の点滅するLEDが大好きです。









スキーム











RTC





リアルタイムクロック (RTC)は、現在の設定を保存する問題を完全に解決します。 私の選択はDS1307チップにかかっていました



製造元によると、電源を切ると10年分の日付と時間を節約でき、CR2032タイプのリチウム電池だけでエネルギーを消費します。 つまり、許容できる精度を維持しながら、時計は刻々と進み続けます。 時間は迷わず、時計を再びオンにします。オフのときではなく、ダイヤルでリアルタイムを取得します。 マイクロ回路は、「スクエアバス」I 2 Cを介してマイクロコントローラと通信し、正確な時間を報告し、新しい値を取得します。



デバイスハート





Mega32aマイクロコントローラーの選択は、次の要因によって決定されました。

•動的ディスプレイを使用しないように十分な数のポート。これは、主に視力を刺激するために好まれません(高周波数での点滅はいずれの場合も不自然です)。 プロトンPICBasic言語のPICマイクロコントローラーで遊んでいる彼女に会いましたが、動的表示を使用しない可能性がある場合は、そうすることを好みます。

•130ルーブルという比較的低いコスト(たとえば、Mega16aは同じコスト)で、割引価格であるため、通常104ルーブルです。

•便利なピン配列のクリアQPF-44ハウジング



ポート「A」は秒、ポート「B」は分、ポート「C」は時間を表示します。 DS1307から受信した時間値を変更せずにポートに割り当てることができると非常に便利です。 ボタン(ピン3〜7)はポート「D」に接続され、ピン0と1はそれぞれクロックライン(SCL)とシリアルデータライン(SDA)として機能します。 RTCチップは、7番目のレグで1ヘルツの周波数のパルスを放出するように構成されています。 この脚は、ポート「D」の3番目のピンに接続されています。 このポート自体は入力用に構成されており、念のため、内部ブレースがパワープラスに含まれており、外部からSMD抵抗器によって複製されています。 このようなアクションは、あらゆる種類の驚きから完全に保護します。



LED







私は低輝度のマットケースのLEDを選びました。 最初に、透明ケース内の明るいダイオードがテストされましたが、3 mAの電流でさえ、過度に明るく不均一に輝いていたため、再び不快感を引き起こしました。 ダイオードの電圧降下が2ボルト、供給電圧が5ボルト、抵抗が1kΩの場合、ダイオードを流れる電流は(5-2)/ 1000 = 3 mAになります。 この値は経験的に選択されたものであり、グローの明るさは暗い部屋に最適です。 直射日光に時計を設置する場合は、抵抗器の値を最大200オームまで下げて、グローを明るくします(キャップ​​のおかげ)。



ボタン





ボタンのある別のボードには、別のBt6ボタンの形で「ヒューズ」があります(これは頭の中での偶発的なショットから私たちを救います)。 時間は、事前にクランプすることで編集できます。





ソフトウェア



コードはCodeVisionAvrで記述されています。

プログラムは、マイクロコントローラーの周辺機器を構成するという事実から始まります。

•ポートの構成(A、B、C-出力、D-入力)

•念のため、DS1307が「回復」する時間があるように、300ミリ秒の一時停止が提供されます。

•「スクエアバス」を初期化する

•RTCチップを構成して、SQW / OUTピンで1秒ごとに矩形パルスを生成します。

•CLRボタンが押されているかどうかを確認します。 はいの場合、すべての値を0にリセットします

•グローバル割り込みを有効にする

はい、それらについてのいくつかの言葉。 低下時にPD2で外部割り込みINT0を使用します。 1秒ごとに、プログラムは割り込みハンドラーに移動し、DS1307から時間値を読み取り、LEDインジケーターに表示します。

•ボタンに問い合わせをする無限ループに入ります

•ボタンが押された場合、時間(分)を追加(減算)し、I2Cを介して新しい値を送信します。

•途中で、新しい時間値が24時間と60分の範囲に収まるかどうかを確認します。



回路基板





このボードは、片面テキソライト上にあるグレートコスミックレーザー-アイアンテクノロジーに従って製造されています。 天板の製造では、普通紙が使用されました(失敗した実験)。



この技術には多くのバリエーションがあります。 私の意見では、これが最高です。

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にはある程度の伝導性があります。

すべての作業は、換気された部屋で、その過程で行われなければなりません

多くの有害な煙が放出されます。



ボードは、PBSおよびPLDコネクタで相互接続されています。 最初のものは細い取り付けワイヤを使用して天板に接続され、たとえば古いLPTケーブルまたはアダプタから取り出すことができます。



2つ目は底板にはんだ付けされ、キーボードにつながるピンは曲がっています(写真を参照)。





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個の穴を開けました。



まず、テンプレートが印刷され、プレートに接着されました。 さらに、1.5 mmのドリルでパイロット穴を開けた後、必要な直径でメインの穴を開けました。



最後に、プレートを曲げ、細かいサンドペーパーで研磨し、GOIペーストで研磨しました。

テンプレートは、layout5.0ファイルとして添付ファイルに添付されます



左上の赤いLED





7番目のレッグでDS1307によって生成されたパルスを繰り返します。 毎秒点滅します。 小さなpチャネルMOSFETトランジスタはキーモードで動作し、パルスのビートに合わせて開閉します。 最初は、相補的なトランジスタペアのCMOSインバーターが成形された(確かに)バックライト(Ambilightなど)を作りたかったのです。 しかし、私はそれが好きではありませんでした。 1つのLEDには1つのトランジスタで十分であり、pnpタイプbc857を使用することもできます。 解凍したmosmlet irlml6402またはirlml6302を使用しました。



ファイル





ソース、16進ファイル、プリント基板、回路、プロテウスおよびヒューズの回路は、アーカイブの形式でこの図に含まれています。 私はファイルストレージを信頼していません。私はまだ自分のサーバーを持っていません。したがって、私の素人の意見では、Habrは最も信頼できる保存場所になります。 Windowsユーザーは、WinRarを使用して保存されたイメージを開くことにより、ファイルにアクセスできます。

はい、ここに写真があります。





映像









おわりに





電源は、70 mAの電流で5ボルトを生成できる人なら誰でも使用できます。 これにはUSBポートで十分です。 主なことは、電源が「クリーン」であり、5ボルトを超えないことです。 〜50 mVの干渉レベルでmc34063チップのDC-DCコンバーターからクロックに電力を供給していると、時間を設定するときにグリッチに気づきました。 これで、デバイスは近くにぶら下がっているスイッチから給電されます。 厳密に5ボルトを出力します。 良いことには、まだダイオードの形で愚か者から保護する必要があり、3.3-5ボルトのある種の線形安定器です。

時計にアラームと日付の機能がないことは十分に正当化されています:両方とも電話機に存在します。つまり、バイナリ時計で高い確率でこれらを使用することはありません(この結論についてはオックルおじさんに感謝します)。



使用材料





Lebedev M. B. CodeVisionAVR:初心者向けガイド

avrdevices.ru/chasi-realynogo-vremeni-ds1307



All Articles