Atmega48の目覚まし時計付きバイナリクロック(EvILeg-1124)

私の意見では、バイナリ時計などの組み立てにはいくつかの方法があります。 または、単に一般的な開発のため、または選択した分野での専門家の成長に必要なトレーニングのために、そのような珍しいおもちゃを所有したいという願望。 ネットワークに多くの有用な資料があることを考慮して、ビジネスと喜びを組み合わせてみませんか。



バイナリクロックを組み立てるというアイデアの開発の基礎は、2012年3月9日のハブで「自分の手でのバイナリクロック(Mega32、DS1307)」というタイトルで公開された記事でした。 記事の著者に感謝の意を表明します。これは、バイナリ時計のテーマに関する私のバリエーションの出発点として役立ったからです。



基本的な違いは、クロックは純粋なバイナリシステムではなく、バイナリ10進表現で時刻を表示することでした。 つまり、上位バイトのテトラッドは、それぞれ数十時間/分/単位を担当し、最も若い単位は単位を担当します。 したがって、時計の外観は、無料のKDEデスクトップ環境での同じ名前のウィジェットの外観と同じになります 。 時計の機能は目覚まし時計によっても拡張されるため、時計は時間をカウントする直接的な機能を果たすだけでなく、所有者を目覚めさせるほど有用な機能を果たすことができます(図1)。



この時計モデルには、EvILeg-1124という名前が付けられました。



バイナリクロックEvILeg-1124の外観

図1-時間の外観EvILeg-1124



時計



タイミング機能を実装するために、CR2032バッテリーで駆動されるDS1307マイクロ回路(図2)を使用しましたが、このマイクロ回路は、クロックアセンブリなどの同様の問題を解決するためにマイクロコントローラーを操作するスキルを開発するのに最適であるため、これは驚くことではありません。 このワールドボックスの利点は、I2Cバスを介してこのチップをAVRマイクロコントローラに接続するためのインターネット上に大量の資料があることです。これに基づいて、最大128個のデバイスを配置できるこのシリアルバスプロトコルに精通しています大規模プロジェクトを開発するとき。



チップDS1307

図2-DS1307チップのハウジングのピン配列



回路図ソリューション



Atmega48PUは、十分な数のレッグ(つまり、DIPパッケージのオプションとして選択された28)とフラッシュメモリを備えた制御マイクロコントローラーとして採用されましたが、このプロジェクトではまだ冗長であるように見えます。この時計モデルの名前に反映されているように、1124バイトのみが使用されました。 Atmega48のピン配列を図3に示します。





図3-DIPパッケージのAtmega48ピン配列



以下の機能がマイクロコントローラーのレッグに割り当てられました。

  1. レッグ番号1-デフォルトでは、RESETコントローラーリセット(ハングした場合にコントローラーを再起動)の実装を担当します。
  2. レッグ番号2-アラームの「ツイーター」の接続を担当します。
  3. レッグ番号3-アラームをアクティブにします。
  4. レッグ番号4-DS1307マイクロ回路の出力に接続され、その上で1 Hzの周波数の信号が生成され、立ち下がりエッジでこのマイクロコントローラレッグにあるINT0割り込みを処理します。 この割り込みは、DS1307から時間を読み取ります。
  5. レッグ番号5-マイクロコントローラーのこのレッグにあるINT1割り込みの実行を担当します。 この割り込みは、レッグNo. 11、12、および13に接続された6つのボタンを処理します。ボタンは、このレッグで低レベルでポーリングされます。
  6. 脚番号11、12、13-上記のように、時計ボタンを担当します。 各ボタンは独自の識別コードを生成し、それに応じて割り込みハンドラINT1が実行するアクションを決定します。
  7. 脚番号9、14-19、23-26-動的LEDディスプレイ、つまり時間/分/秒と時計の動作モードの表示を担当します。
  8. レッグ番号27、28-I2Cバスを介してDS1307チップとデータを交換します。これは、これらのレッグのTWIインターフェイスのハードウェア実装のためです。
    (TWI(Two Wire Interface)またはTWSI(Two Wire Serial Interface)は基本的に同じI2Cバスですが、ライセンス上の理由から異なる名前を使用しています)


回路図とボードは、DipTrace開発パッケージで準備されました。



説明した機能を実装するための概略ソリューションを示す概略図を図4に示します。





図4-時間の概略図



ソフトウェアソリューション



マイクロコントローラーのファームウェアは、Atmel Studio 6.1統合開発環境のAssemblerプログラミング言語で完全に記述されています。 マイクロコントローラーのファームウェアは、 ATAVRISP2プログラマーによって実行されました。



ファームウェアのロジックは次のとおりです。

オンにすると、マイクロコントローラーはクロックをポーリングし、すぐにディスプレイに時刻を表示し始めます。 DS1307チップのSQW / OUTピンからのパルスによって起動されるINT0割り込みにより、時間は1秒に1回読み取られます。 表示はタイマー0による割り込みによって交換されます。また、時計のディスプレイにはモードLED(緑、黄、赤。これらのLEDは図5で強調表示されています)があります。 これは、ボタンを押したときの時計の反応で表されます。





図5-フロントパネルの外観



時計の動作は次のとおりです。

  1. モード番号1-緑のLEDが点灯します。このモードでは、外部の影響に反応するのは2つのボタン、つまりアラームボタンとモードボタンのみです。
  2. モード番号2-黄色のLEDが点灯します。このモードでは、すべてのボタンが外部の影響に反応し、リアルタイムクロック自体の時間(RTCチップ)が設定されます。もちろん、クロックは停止せずにリアルタイムで設定されます。
  3. モード番号3-上部の赤色LEDが点灯し、このモードではすべてのボタンが外部の影響に反応し、時計のアラーム時間が設定されますが、設定された時間は不揮発性EEPROMメモリに記録されます;
  4. モード番号4-緑と下の赤のLEDが点灯します。このモードでは、Bipボタンによってアラームが作動しますが、Bipボタン自体以外のボタンは外部の影響に反応しません。




ボタンを処理するために、タイマー1が使用されます。これにより、遅延が約1秒に設定されます。この間、マイクロコントローラーはINT1割り込みで出力に送信される信号に応答しません。



時計の組み立て



ネットワークにはこのトピックに関するより価値のある記事があるため、ボードの製造と要素のはんだ付けはこの記事では説明しません。



時計は3つのボードから組み立てられています。

  1. 1つ目は、マイクロコントローラー、DS1307クロック、およびメインマイクロコントローラーハーネス全体が配置されているメインボードです。
  2. 2つ目は、LED付きのボードです。
  3. 3番目は、クロック制御ボタンを備えたボードです。


時計はREA用の従来のケースに組み立てられており、電子機器専門店で購入できます。



時計の組み立てとデバッグの過程で、電源にも問題がありました。つまり、完全に成功していない不安定な電源の購入です.4.5Vの宣言された定格で実際に8.32Vを生成し、その結果、テストマイクロコントローラーが燃え尽きました。 それから、電圧安定器7805に簡単な電源回路を組み立てることにしました(死んだ勇敢なマイクロコントローラの犯人は最後の写真に示されています)。 ただし、現在は5〜30ボルトの定電圧で時計に電力を供給することができます。































プロジェクトファイル



Atmel StudioおよびDipTraceからのプロジェクトソースのアーカイブ、16進ファイル、プリント基板、および回路図はjpeg / rarに変換され、LEDを示す写真としてレイアウトされます。

Windowsユーザーは、アーカイブの内容を受け取るためにWinrarで画像を開く必要があります







結論/あとがき



デバイスの動作のデモは、次のビデオに示されています。



このプロジェクトでは、さまざまなソースから資料を使用しましたが、リソース「Electronics for All」から有用な資料を最大限に入手しました。その存在に対して、所有者に感謝します。



このプロジェクトは、プログラムコードがこのプログラミング言語で完全に記述され、プログラムコードに対するコメントが最も拡張された形式で与えられるため、プロセスを理解することに問題がないように、アセンブラーでマイクロコントローラーのプログラミングを勉強する人々に最も役立ちます。






All Articles