Attiny13のRGBホタル

私はあなた、同僚、仲間、仲間、そしてただ興味を持っている人を歓迎します!

先日、オリジナルのギフト、お土産のベースとして使用できるデバイスを作成しました。または、現代のマイクロエレクトロニクスに夢中になっている人がいる場合は、単に自分の喜びのために作成しました。 デバイスのビデオデモをすぐに:

残念ながら、カメラはRGB LEDのグローの色合いとオーバーフローを伝えることができず、ライブでの見た目がはるかに良くなります。 ただし、それでも興味がある場合は、多くの文字や写真があります。



デバイスを作成するための前提条件は、マイクロコントローラーで満たされたすべてのものに対する魅力的な渇望、同志アリマンによる記事です( 物理学と電子工学の化学を使用してオリジナルの贈り物を作成します )-彼は再び別の尊敬と尊敬を持ち、自分の手で何か面白いことをしたいという願望を持っています。

まず、クイックアセンブリマニュアルに注目し、次に、奇妙なことに、内部構造とパフォーマンス特性の詳細を説明します。

必要なのは:

1. Atmel Attiny13マイクロコントローラー-1個

2. RGB LED-1個

3.開発ボードタイプCRS 044-1個。

4.抵抗1MΩ、smd-1個。

5.銅線(ツイストペアコア)-30 cm。

6. CR2032バッテリー-1個

7.ペーパークリップ-1個。

画像

また、はんだごて、電子機器およびストレートアームを操作するためのシンプルなツールが存在することを前提としています。

まず、ブレッドボードから約3x3 cmの部分を切り取りますサイズは、側面のワイヤセンサーのクリアランスを考慮して、指定された部分に収まるバッテリーの寸法によって決まります。

画像

ボードの一部を切り取った後、バッテリークリップのホルダーとして使用するペーパークリップを拡張します。 必要に応じてペーパークリップを曲げ、ボードの穴に固定します。 バッテリーを挿入して曲げて、しっかりと保持するようにします。 また、銅線から、バッテリーの負極の2番目の接点を作成します。

画像

両方のピンをブレッドボードにはんだ付けします。 もう一度バッテリーを挿入し、固定の信頼性を確認します。 クリップをしっかりと締めて、バッテリーがしっかりと保持されるまで試してください。

画像

そして今、私たちは縫います。 しかし、マイクロコントローラーではなく、糸と針で縫う技術を思い出してください。 ステッチの後ろの周囲のステッチは、銅線でショールをバイパスし、指定された場所に両端を置きます。 これがセンサーになります。 ある瞬間、メインの対角線の角で、ワイヤーを噛んで固定します。 したがって、後で判明したように(「...経験、困難なミスの息子...」)、このような大きなセンサーはキャリブレーションが不十分で、タッチ検出の質が低下します。 そのため、センサーの役割はボードの正方形の2辺にのみ残り、残りは装飾的です(写真では、これらのすべてが試用試験後に明らかになったため、センサーは噛まれません。しかし、カットセンサーは完成したデバイスの最後の写真に表示されます)。

画像

さて、私たちはマイクロコントローラーに到達しました。 これはなんて素晴らしいことでしょう! 足が8本しかない小さなサイトでは、ADC、タイマー、ハードウェアPWM、および発振器が内蔵されており、彼に電力を表示するだけで十分ですが、すでに機能しています。 特にこの喜びの価格はわずか75コペックなので、幸福のために他に必要なものは。 もちろん、いくつかの欠点がありますが、-世界は完璧ではありません。 さて、十分な歌詞、続けましょう。

だから、私たちのティンカを準備された場所にはんだ付けしてください。 STOP!..私はほとんど忘れていました。 今、私たちは縫います。

既製のコーシャファームウェアをダウンロードして、便利な方法で入力します。個人的には最も簡単なLPTプログラマーを使用しましたが、私は少し自分でそれをしましたが、それは重要ではありません。 ヒューズには触れません。

準備したサイトにTinkaをハンダ付けします:4番目の出力(グランド、マイナスソース)をバッテリーの中心からのワイヤコンタクトに、8番目の出力(パワー、ソース)をクリップに、2番目の出力をセンサーからのワイヤに接続します。 側面では、ピン2と3の間にsmd抵抗(1MΩ)をフックします。smd抵抗が手元にない場合、通常の抵抗を押し込むことができます。

画像

物事は小さいままです-RGB-LED。 4つのピンを持つRGB-LEDが必要です(ただし、奇妙なことに十分であり、2つのピンがあります-それらを使用しないでください)。 それらのうち3つは、赤、緑、青のダイオードのアノードであり、1つの結論が一般的です。 LEDレンズは、最初に透明なシリコンホットメルト接着剤で融合する必要があります。 これを行わないと、非常に美しく輝きません。 エミッターはほとんど混合せず、通常は氷に見えないビームを生成します。 そこで、サーモガンを温め、溶融シリコンをLEDヘッドに高密度に塗布します。ここでは、花や虫などを描写して、彫刻の能力を発揮できます。

画像

次に、LEDをmikruhaにはんだ付けします。これは、4番目の脚(接地)に共通、5番目に赤、6番目に青、7番目に緑(プログラムされた輝度補正が緑に使用されるため、色の配置が重要です) 。

画像

さて、それだけです! バッテリーを大胆かつ巧みに挿入します。3色が順番に点灯し、それぞれ1秒間点灯します。 この間、デバイスから手を離す必要があります。センサーのキャリブレーションがすぐに開始され、約4秒間熱烈な点滅が通知されます。 この期間中、センサーの状態はタッチされていないときに記録されます。 照明が終わったら、ホタルを手に取り、魅惑的な色のあふれ、光とハーフトーンの遊びを見ることができます。



詳細について最寄りの電気店にまだ行っていない場合は、フォーカスの手がかりを提供します。 すべての仕組み。 また、おそらく、何かが主題にいる人にとって興味深いように思われます。 すでに書いたように、デザインは上記の記事に基づいていました。 そのため、センサーの基本と動作の説明のために、私はあなたにそれを送ります、すべてが非常によく噛まれています。 私の改善点は、RGBティンクに接続し、コードをリファクタリングすることです。 さらに詳しく説明します。13番目のティンカはもちろん美しいですが、PWMハードウェアチャンネルは2つしかなく、RGB LEDを制御するには、Capが言うように少なくとも3つのチャンネルが必要です。 これは、別のPWMチャネルをどこで入手できるのかという疑問を投げかけます。 質問に対する答えは簡単です。別のPWMは探しません。ハードウェアPWMはまったく使用しませんが、独自のPWM(正統派、チャンネル数)を入力します。 大きなスローガンから実際の練習に移ります。 このようなPWMのデューティサイクルを説明する必要はありませんか?(修辞的な質問)。

だから、与えられた:

1. PWMチャンネルの周波数は100 Hz以上であり、実際には目と50のちらつきから実際には気づきませんが、実際の少年は100未満を見ません。 T.O. デューティサイクルが100%のパルス持続時間は10 msである必要があります。 これらの10ミリ秒で、少なくとも100レベルの明るさコントロールをプッシュする必要があります。 次に、最小パルス幅が0.1 ms(デューティサイクル1%)であることがわかります。

2.マイクロコントローラーの内部タイマーの周波数-a)クロックジェネレーターの周波数に依存します。 内部、おそらく4.8または9.6 MHzを使用します。 b)クロックジェネレータの分周器。 c)タイマー自体の除数。 タイマーを使用すると、0.1ミリ秒間隔をカウントできるはずです。 少なくとも10 kHzの周波数でイベントを処理します。

要するに、理論的および経験的研究の結果として、そのような結果が得られました。 コントローラのクロック周波数は9.6 MHzで、タイマーは37.5 KHzの周波数で1/256 =の除算で動作します。 この頻度でイベントを処理できるようにするために、偶然のトリガーによってタイマー操作モードを設定します。 つまり タイマーカウンターがORCA0レジスタに設定された値と一致するとすぐに、割り込みが発生します。 同時に、ORCA0レジスタの設定値は、既に推測しているように0である必要があります。明るさは100ではなく256レベルで調整されます(コントローラーは8ビットなので、より便利で、より多くのシェードがあります)。 PWM 37500/256 = 146 Hz、これは満足のいくものです。

割り込み処理についてさらに詳しく考えてみましょう。



//

unsigned char wave_counter=0;//



unsigned char red_bs=0;// 1 (0-255)

unsigned char green_bs=0;// 2 (0-255)

unsigned char blue_bs=0;// 3 (0-255)



interrupt [TIM0_COMPA] void timer0_compa_isr(void)

{

PORTB.RED=(wave_counter<red_bs);

PORTB.GREEN=(wave_counter/2<green_bs);

PORTB.BLUE=(wave_counter<blue_bs);

wave_counter++;

}








各LEDの輝度は、グローバル変数red_bs、green_bs、blue_bsによって設定され、特殊効果計画に従ってメインプログラムによって変更されます。 wave_counterカウンターが円形に回転しています。 LEDの輝度がカウンター値よりも大きい場合は点灯し、そうでない場合は消灯します。 T.O. 輝度が255の場合、これは100%のデューティサイクルに相当します。 輝度を上げるために緑色のLEDを2で割ったのは、 その視覚的明度は他のものよりも低く、明らかにスペクトル特性の特異性であることが判明しました。 一般的に、食品愛好家や興味のある人は、 ソース全体を高く評価できます

全体の明るさの調整、センサーの処理、プログラムのサイズとメモリの量(ああ、ダム、もう1つの痛いところ)、ウォッチドッグタイマーと低電力消費モードの設定(メーターが示すように) 、ハイバネーションでは、回路は0.06 mAを消費します)...初心者に視認性と明瞭性を高めるためにオシログラムを添付し、rand()関数の使用について議論し、最適化の便利さとパワーを備えたアセンブラプログラミングの喜びの並置について議論することが可能です ンCodeVisionAVRのコンパイラコード。 しかし、忘れられないコズマ・プルトコフが言ったように:「人は広大なものを受け入れることはできません」、そして、一般的な知恵は「少しずつ良い」と言います。 この分野での喜びを皆さんと分かち合う機会が得られることを願っています。そして、あなたが望むこと、そしてプロフェッショナルで、創造的で、あらゆる種類の成功を望みます。

レディースプレゼント-今後



All Articles