DS1307を備えたAVRマイクロコントローラーのクロック。 電子LED時計

こんにちはオタクタイム! 記事の最初の部分では、自家製の時計で正確な時刻を取得する原則が検討されました。 さらに進んで、今回はどのように、そして何を表示するのが良いかを考えてみましょう。

1.出力デバイス

したがって、特定のプラットフォーム(Arduino、Raspberry、PIC / AVR / STMコントローラーなど)があり、タスクはそれに何らかの表示を接続することです。 検討するオプションはたくさんあります。

セグメント表示

ここではすべてが簡単です。 セグメントインジケータは通常のLEDで構成されており、ダンピング抵抗を介してマイクロコントローラに接続されています。

交通に気をつけろ!

長所:デザインのシンプルさ、優れた視野角、低価格。
マイナス:表示される情報の量は限られています。
インジケータの設計には、共通のカソードと共通のアノードの2種類があり、内部は次のようになっています(製造元のWebサイトの図)。

LEDをマイクロコントローラーに接続する方法に関する1001の記事があります。グーグルが助けを求めています。 私たちがやりたいときに困難が始まります 大時計-小さなインジケーターを見るのはあまり便利ではありません。 次に、次のようなインジケーターが必要です(eBayからの写真):

これらは12Vで駆動され、マイクロコントローラーから直接動作することはありません。 ここでマイクロサーキットが助けになります CD4511、この目的のためだけに。 4ビットラインからのデータを目的の桁に変換するだけでなく、インジケータに電圧​​を供給するためのトランジスタスイッチが組み込まれています。 したがって、回路では、9-12Vの「電源」電圧と、回路の「ロジック」に電力を供給するための別個の降圧コンバータ(たとえば、L7805)が必要になります。

マトリックスインジケーター

実際、これらは同じLEDですが、8x8マトリックスの形式のみです。 eBayからの写真:

eBayで、単一のモジュールまたは既製のブロック、たとえば4個として販売されています。 それらの制御は非常に簡単です-マイクロ回路はすでにモジュールにはんだ付けされています MAX7219、わずか5本のワイヤで動作とマイクロコントローラへの接続を保証します。 Arduinoには多くのライブラリがあり、コードを見ることができます。
長所:低価格、優れた視野角と明るさ。
マイナス:低解像度。 しかし、時間を出力するタスクには十分です。

LCDインジケーター

LCDインジケータはグラフィカルおよびテキストです。

グラフィックはより高価ですが、より多様な情報(たとえば、大気圧のグラフ)を表示できます。 テキストメッセージは安価で扱いやすく、疑似グラフィックを表示することもできます。カスタムシンボルをディスプレイに読み込むことができます。

コードからLCDインジケーターを操作することは難しくありませんが、特定の欠点があります。インジケーターはマイクロコントローラーからの多くの制御ライン(7から12)を必要とし、不便です。 したがって、中国人はLCDインジケーターをi2cコントローラーと組み合わせるというアイデアを思いつきました、それは結局それが非常に便利であることがわかりました-接続するのに4本のワイヤーだけで十分です(eBayからの写真)。


LCDインジケーターは非常に安価で(eBeeで使用する場合)、大きく、接続が簡単で、さまざまな情報を表示できます。 唯一の欠点は、視野角がそれほど大きくないことです。

OLEDインジケーター

これらは、以前のバージョンの改良された継続です。 それらは小さくて安い1.1 "から大きくて高価なものまであります。eBayからの写真。

実は値段以外はみんなにいいです。 サイズが0.9〜1.1インチの小さなインジケータについては、実用的なアプリケーションを見つけるのは困難です(i2cでの作業の研究を除く)。

ガス放電インジケータ(IN-14、IN-18)

これらのインジケーターは、「暖かい管の光の音」とデザインの独創性のために、現在非常に人気があります。


(サイトnocrotec.comからの写真)

彼らの配線図はやや複雑です、tk。 これらのインジケーターは、点火に170Vを使用します。 12Vからのコンバーター=> 180Vはマイクロサーキットで作ることができます MAX771..。 インジケータに電圧​​を供給するために、ソビエトのマイクロ回路が使用されます K155ID1、このために特別に作成されました。 自己生産の場合の問題の価格:各インジケーターで約500ルーブル、K155ID1で100ルーブル、その他すべての詳細は、古い雑誌に書かれているように、「不足していません」。 ここでの主な問題は、IN-xxとK155ID1の両方が長い間生産されておらず、ラジオ市場またはいくつかの専門店でしか購入できないことです。

2.プラットフォームの選択

私たちは多かれ少なかれその兆候を理解しましたが、どのハードウェアプラットフォームを使用するのが良いかを決めるのはまだです。 ここにはいくつかのオプションがあります(ボードの配線方法とプロセッサのはんだ付け方法を知っている人はこの記事は必要ないので、自家製のものは考慮しません)。

Arduino

初心者のための最も簡単なオプション。 既製のボードは安価で(eBayで送料無料で約$ 10)、プログラミングに必要なすべてのコネクタがあります。 eBayからの写真:

Arduinoには膨大な数の異なるライブラリがあり(たとえば、同じLCD画面、リアルタイムモジュール用)、Arduinoはさまざまな追加モジュールとハードウェア互換性があります。
主な欠点:デバッグの複雑さ(シリアルポートコンソールを介した場合のみ)と、最新の標準(2KBのRAMと16MHz)によるかなり弱いプロセッサ。
主な利点:実際にははんだ付け、プログラマーの購入、配線ボードを気にすることなく、多くのことができます。モジュールを相互に接続するだけで十分です。

32ビットSTMプロセッサ

より強力なものが必要な場合は、STMプロセッサを搭載した既製のボードがあります。たとえば、STM32F103RBT6とTFTスクリーンを搭載したボードです。 eBayからの写真:

ここでは、本格的なIDEですでに完全なデバッグが行われています(Coocox IDEが好きだったさまざまなものの中で)が、JTAGコネクタを備えた別のST-LINKデバッガーデバッガーが必要です(発行価格は$ 20- eBayでは40)。 または、このプログラマーがすでに組み込まれているSTM32F4Discoveryデバッグボードを購入して、個別に使用することもできます。

ラズベリーPI

そして最後に、現代の世界との完全な統合を望んでいる人のために、Linuxを搭載したシングルボードコンピューターがあります。おそらく誰もがすでにラズベリーPIを知っています。 eBayからの写真:

それ フルコンピューター Linux、ギガバイトのRAM、4コアプロセッサを搭載。 ボードの端には、さまざまな周辺機器を接続できる40ピンのパネルがあります(ピンは、C / C ++は言うまでもなく、Pythonなどのコードから入手できます)。 4つのコネクタの形の標準USB(WiFiを接続できます)。 標準のHDMIもあります。
ボードの能力は、たとえば、時間を表示するだけでなく、HTTPサーバーを実行して、Webインターフェースを介してパラメーターを構成したり、インターネットを介して天気予報をロードしたりするのに十分です。 一般的に、想像力を駆使するためのスペースはたくさんあります。

Raspberry(およびSTM32プロセッサ)の唯一の問題は、そのピンが3Vロジックを使用していることです。 外部デバイス(例:LCDスクリーン)5Vから「昔ながらの方法」で動作します。 もちろん、接続することもできるので、原則としては機能しますが、これは完全に正しい方法ではなく、50ドルの料金を台無しにするのは残念です。 正しい方法は、「ロジックレベルコンバーター」を使用することです。これは、eBayで1〜2ドルしかかかりません。
eBayからの写真:

これで、このようなモジュールを介してデバイスを接続するだけで十分であり、すべてのパラメーターが調整されます。

ESP8266

この方法はかなりエキゾチックですが、ソリューションのコンパクトさと低コストのために非常に有望です。 ごくわずかなお金(eBayで約4〜5ドル)で、プロセッサとWiFiを搭載したESP8266モジュールを購入できます。
eBayからの写真:

当初、このようなモジュールはシリアルポートを介して交換するためのWiFiブリッジとして意図されていましたが、多くの愛好家が書いています 代替ファームウェア、センサー、i2cデバイス、PWMなどを操作できます。仮に、NTPサーバーから時間を受信し、i2cを介してディスプレイに表示することはかなり可能です。 多くの異なる周辺機器を接続したい人のために、特別なNodeMCUボードがあります 多数結論として、発行価格は約500ルーブルです(もちろんeBayで):

唯一の欠点は、ESP8266の機能が非常に少ないことです。 RAMメモリ(ファームウェアに応じて、1〜32KB)が、これにより、タスクがさらに面白くなります。 ESP8266モジュールは3ボルトのロジックを使用しているため、上記のレベルコンバーターはここでも役立ちます。

これで、自家製の電子機器への入門的な遠足を完了することができます、著者は皆が成功した実験を望みます。

結論の代わりに

結局、私は疑似グラフィックスで動作するように構成されたテキストインジケーターを備えたRaspberry PIを使用することに決めました(同じ対角線のグラフィックス画面よりも安価であることが判明しました)。 画面の写真を撮りました 置時計この記事の執筆時点で。

時計には、インターネットから取得した正確な時刻と、Yandexから更新された天気が表示されます。これらはすべて、Pythonで記述されており、数か月間非常にうまく機能しています。 同時に、FTPサーバーが時計上で実行されています。これにより、(ルーターのポート転送とともに)自宅からだけでなく、インターネットがある場所からでもファームウェアを更新できます。 ボーナスとして、ラズベリーのリソースは、原則として、カメラやマイクを接続してアパートをリモートで監視したり、さまざまなモジュール/リレー/センサーを制御したりするのに十分です。 次のようなあらゆる種類の「グッズ」を追加できます。 LED表示受信メールなどについて。

PS:なぜeBayなのですか?
あなたが見ることができるように、ebayからの価格または写真はすべての装置のために与えられました。 何故ですか? 残念ながら、私たちの店は「私は1ドルで購入し、3ドルで販売し、この2パーセントで生活している」という原則に基づいて生活していることがよくあります。 NS 簡単な例 Arduino Uno R3の価格は(この記事の執筆時点で)サンクトペテルブルクで3600r、eBayで350rで、中国からの送料が無料です。 違いは、文字通りの誇張なしに、実際には桁違いです。 はい、郵便局で荷物を受け取るまでに1か月待たなければなりませんが、このような価格の違いはそれだけの価値があると思います。 しかし、誰かが今すぐそして緊急にそれを必要とするならば、おそらく地元の店で選択肢があります、ここで誰もが自分で決めます。

マイクロコントローラに少なくとも少し精通していて、単純で複雑でないものを作成したい人のために 便利なデバイス家庭では、LEDインジケータを備えたアセンブリに勝るものはありません。 そのようなものはあなたの部屋を飾ることができます、あるいはそれはそれが付加価値を得るであろうユニークな手作りの贈り物のために行くことができます。 回路は時計のように、そして温度計のように機能します-モードはボタンによって、または自動的に切り替えられます。

温度計付き自家製時計の電気回路図

マイクロコントローラー PIC18F25K22すべてのデータ処理とタイミングを処理します。 ULN2803Aその出力とLEDインジケータの調整は維持されます。 小さなマイクロサーキット DS1302正確な秒信号のタイマーとして機能し、その周波数は標準の水晶発振器32768Hzによって安定化されます。 これは設計をいくらか複雑にしますが、時間を絶えず調整したり調整したりする必要はありません。数MHzの調整されていない水晶振動子をときどき使用すると、必然的に遅延や急ぎが発生します。 このような時計は、高品質で正確なクロノメーターというよりは、単純なおもちゃです。

必要に応じて、温度センサーを本体から遠くに配置することができます。これらは3線ケーブルで本体に接続されています。 私たちの場合、一方の温度センサーはブロックに取り付けられ、もう一方は長さ約50cmのケーブルの外側に配置されています。5mのケーブルを試したところ、それも完全に機能しました。

時計の表示は、4つの大きなLEDデジタルインジケーターで構成されています。 それらは元々共通のカソードでしたが、最終バージョンでは共通のアノードに変更されました。 他のものを入れて、必要な明るさに基づいて電流制限抵抗R1〜R7を選択するだけです。 時計の電子部品と共通のボードに配置することは可能でしたが、これははるかに用途が広く、突然、非常に大きなLEDインジケーターを配置して、遠くからでも見えるようにしたい場合があります。 街頭時計のそのようなデザインの例はここにあります。

電子機器自体は5Vから始まりますが、LEDを明るく輝かせるには、12 Vを使用する必要があります。ネットワークから、電力は降圧変圧器アダプターを介してスタビライザーに供給されます。 7805 、厳密に5Vの電圧を生成します。小さな緑色の円筒形バッテリーに注意してください-それはソースとして機能します バックアップ電源、220Vの停電の場合。5Vで使用する必要はありません。3.6ボルトのリチウムイオンまたはNi-MHバッテリーで十分です。

この場合、木、プラスチック、金属などのさまざまな材料を使用するか、構造全体に組み込むことができます 自家製時計たとえば、マルチメータ、チューナー、ラジオなどから、完成した工業用のものになります。 プレキシガラスを使用しているので、加工が簡単で、中身が見えるので誰でも見ることができます。この時計は私たちの手で組み立てられています。 そして、最も重要なことに、それは在庫がありました:)

ここでは、自家製の提案されたデザインのすべての必要な詳細を見つけることができます デジタル時計、回路図、トポロジーを含む プリント回路基板、PICファームウェアおよび

導いた シンプルな時計安価なPIC16F628Aコントローラーで実行できます。 もちろん、店内にはさまざまな電子時計がたくさんありますが、その機能によっては、温度計や目覚まし時計がないか、暗闇で光らないことがあります。 そして一般的に、プロトは既製のものを購入するのではなく、自分で何かをはんだ付けしたい場合があります。 図の図を拡大するには、をクリックします。

提供される時計にはカレンダーがあります。 日付を表示するための2つのオプションがあります-数字または音節の月、これらはすべて、ボタンでさらに切り替えることによって日付を入力した後に構成されます S1希望のパラメータが表示されている間、温度計。 さまざまなセンサー用のファームウェアがあります。 ケース内のデバイスを参照してください。


水晶振動子は精度の点で完璧ではなく、数週間以内にエラーが蓄積することは誰もが知っています。 この場合に対抗するために、時計はパラメータによって設定されるストローク補正を提供します NSSL..。 詳細:

SH = 42およびSL = 40-これは1日5分転送されます。
SH = 46およびSL = 40-これは1日3分前です。
SH = 40およびSL = 40-これは1日2分進みます。
SH = 45およびSL = 40-これは1日1分戻っています。
SH = 44およびSL =С0-これは1日1分ずつ進みます。
SH = 45およびSL = 00-この修正は無効になっています。

このようにして、完全な精度を達成することができます。 完全に設定するまで、修正を数回実行する必要がありますが。 そして今、電子時計の働きがはっきりと示されています:

気温29℃

インジケーターとして、図自体に示されているLEDデジタルアセンブリを配置するか、通常の丸い超高輝度LEDに置き換えることができます。そうすれば、この時計は遠くから見えるようになり、路上でも吊るすことができます。

写真には、この経済全体を管理するプログラムをデバッグするために組み立てたプロトタイプがあります。 ブレッドボードの右上隅にある2番目のarduinonanoはプロジェクトに属しておらず、そのように突き出ています。無視してかまいません。

動作原理について少し説明します。arduinoはDS323タイマーからデータを取得して処理し、フォトレジスターを使用して照明レベルを決定し、すべてをMAX7219に送信します。次に、必要なセグメントを必要な明るさで照らします。 また、3つのボタンを使用して、年、月、日、時刻を自由に設定できます。 写真では、インジケーターはデジタル温度センサーから取得した時間と温度を表示します。

私の場合の主な難しさは、共通のアノードを備えた2.7インチのインジケーターであり、最初に共通のカソードを備えたインジケーター用に鋭利にされたmax7219と何らかの形で友達になり、次に電源の問題を解決する必要がありました、グローには7.2ボルトが必要なので、max7219だけでは提供できません。 あるフォーラムで助けを求めた後、私は同じ答えを得ました。

スクリーンショットソリューション:


マイクロ回路は、信号を反転するmax7219からのセグメントの出力に固執し、3つのトランジスタの回路は、信号を反転して電圧を上げるディスプレイの共通カソードに接続する必要がある各出力に固執します。 したがって、ディスプレイを共通のアノードと5ボルトを超える供給電圧でmax7219に接続する機会が得られます。

テストのために、私は1つのインジケーターを接続しました、すべてが機能し、何も煙が出ません

集め始めます。

曲がった足で離婚したバージョンにはジャンパーがたくさんあり、すべてが1つのボードにあるため、回路を2つの部分に分割することにしました。 時計は、ディスプレイユニットと電源および制御ユニットで構成されます。 後者を最初に組み立てることが決定されました。 麻酔やアマチュア無線家の方、部品の乱用で失神しないようお願いします。 LUTのためにプリンターを購入する必要はないので、昔ながらの方法で購入します。紙にトレーニングを行い、テンプレートに従って穴を開け、マーカーでトラックを描き、餌を付けます。

インジケーターの固定原理はと同じです。

便宜上作成されたプレキシガラステンプレートを使用して、インジケーターとコンポーネントの位置をマークします。

マークアッププロセス







次に、テンプレートを使用して、適切な場所に穴を開け、すべてのコンポーネントを試してみます。 すべてが完璧に落ちました。

私たちは道を描き、毒を飲みます。




塩化第二鉄の入浴

準備!
操作盤:


表示板:


コントロールボードは優れていることが判明しました。ディスプレイボード上のトラックがトラックを批判的に食いつぶすことはありませんでした。これは修正可能です。はんだ付けする時が来ました。 今回はSMDの処女を失い、回路に0805コンポーネントを含めました。 少なくとも、最初の抵抗とコンデンサは所定の位置にはんだ付けされていました。 私はさらに手を埋めると思います、それはより簡単になるでしょう。
はんだ付けには、購入したフラックスを使用しました。 はんだ付けするのは楽しいですが、今は錫メッキにのみアルコールロジンを使用しています。

これが完成したボードです。 制御盤には、arduino nano用のシート、時計、ディスプレイボードとセンサーに接続するための出力(自動輝度用フォトレジスターとデジタル温度計ds18s20)、および調整可能な出力電圧を備えた電源(大型7セグメント用)があります。セグメントデバイス)およびクロックとarduinoに電力を供給するために、ディスプレイボードには、ディスプレイ用のスロット、max2719およびuln2003a用のソケット、4つの大きな7セグメントデバイスおよび多数のジャンパーに電力を供給するためのソリューションがあります。




リアコントロールボード

リアディスプレイボード:

恐ろしいインストールsmd:


発売

すべてのケーブル、ボタン、センサーをはんだ付けしたら、電源を入れます。 最初の起動でいくつかの問題が明らかになりました。 最後の大きなインジケーターはオフで、残りは薄暗かった。 最初の問題はSMDトランジスタのレッグをはんだ付けすることで対処し、2番目の問題はlm317によって発行される電圧を調整することで対処しました。
生きてる!

これらのクロックは、よく知られている一連のマイクロ回路(K176IE18(リング信号発生器を備えた数時間のバイナリカウンター))で収集されます。

K176IE13(アラーム付きの時間のカウンター)およびK176ID2(バイナリから7セグメントへのコンバーター)

電源を入れると、U2マイクロサーキットの時、分カウンタ、アラームメモリレジスタに自動的にゼロが書き込まれます。 インストール用

時間、S4(時間設定)ボタンを押し、それを押したまま、S3(時間)ボタンを押して時間を設定するか、S2(最小)を押して設定します

分。 この場合、対応するインジケータの読み取り値は、2 Hzの周波数で00から59に変化し始め、次に再び00に変化し始めます。移行時

59から00に、時間カウンターが1つ増えます。 目覚まし時間の設定は同じです、あなただけがそれを保持する必要があります

S5(アラームセット)ボタン。 アラーム時刻を設定した後、S1ボタンを押してアラームをオンにする必要があります(連絡先

閉まっている)。 S6(リセット)ボタンは、セットアップ中に分インジケーターを00に強制的にリセットするために使用されます。 D3およびD4LEDが役割を果たす

1Hzの周波数で点滅する分割ドット。 図のデジタルインジケータは正しい順序になっています。 最初に行く

時間インジケーター、2つの分割点(LED D3およびD4)、および分インジケーター。

この時計は、ワット数0.25Wの抵抗R6-R12とR14-R16を使用し、残りは-0.125Wでした。 32768Hzの周波数の水晶振動子XTAL1--

通常のクロック、トランジスタKT315Aは、対応する構造の低電力シリコンKT815Aに置き換えることができます-トランジスタ付き

ベースの静電流伝達係数が少なくとも40のダイオード(低電力シリコン)の平均電力。 きしむBZ1

ダイナミック、発電機内蔵なし、巻線抵抗45Om。 S1ボタンは自然にラッチします。

使用されるインジケーターはTOS-5163AGグリーンで、他のインジケーターを共通のカソードで使用できます。

抵抗R6-R12の抵抗。 図では、このインジケーターのピン配置を見ることができます。結論は条件付きで示されています。 提示

上からの眺め。

時計を組み立てた後、水晶発振器の周波数を調整する必要があるかもしれません。 最も正確には、これはデジタルを制御することによって行うことができます

マイクロ回路U1のピン4での周波数計の発振周期1秒。 クロックの過程でジェネレーターを調整するには、かなり多くのコストが必要になります。

時間。 また、抵抗R5の抵抗を選択して、LED D3とD4の輝度を調整し、すべてが

均等に明るく輝いていました。 時計が消費する電流は180mAを超えません。

クロックは、+ 9Vの出力電圧と1.5Aの電流で正のマイクロサーキットスタビライザー7809に組み立てられた従来の電源から電力を供給されます。

トピックの続き:
コンピュータ

有線ネットワークを操作し、KineticファミリーでWi-Fiネットワークを配布するための、ユニバーサルで最も経済的なバージョンのルーターは、Zyxel Keenetic Liteiiiです。 それ...