Attiny13ベースのIR近接センサーを$ 2.42で作る:7ステップ(写真付き)

Attiny13ベースのIR近接センサーを$ 2.42で作る:7ステップ(写真付き)

目次:

Anonim

注:図は間違っています。センスピンはピン5ではなく、ピン6(もう1つ左)に接続されています。すぐに図を更新します。訂正してくれたbrmccollumに感謝します。 (図は修正されました)

これはあなたがいくつかの安い部品とAVRプログラマーで作ることができる非常に安いIR近接センサーです。私はこのInstructableで私のプログラマーとしてArduinoを使います。

このセンサーは約3インチの範囲しかありません。範囲を広げるために、もっと多くのLEDやより明るいLEDを簡単に追加できます。また、ビームが壊れたときにそれを検出するようにLEDを簡単に並べ替えることもできます。

設計は安価なAVR(チップ上のコンピュータ)を利用します。コンピュータはIR LEDを点滅させ、各状態でセンサーからのアナログの読み値を比較します。ライトが点灯しているときの測定値が消灯しているときの測定値よりも上になると、センスピンはハイになり、センサーにそれ自身の(反射された)光が見えていることを示します。このデザインのセンスインジケーターにはLEDが付いているので、センサーがいつ作動するかがわかります。 ArduinoやPicaxeなどのマイクロコントローラに信号を直接接続できます。

この設計はあなたのメインロボットの頭脳からそれ自身のノードに処理を移動します。あなたは信号をデバウンスすることをお勧めしますが、LEDを点滅させて測定値を取得する必要はありません。また、デジタルピンを1本だけ使って読み取りを行うこともできます。スケッチは利用可能な1024のうちおよそ700Kです。

これを作った理由

私は高校を卒業していますが、これはRobot Oddyseyのロボットを現実の世界に持ち込むことに関連する一連のデザインの一部です。私は小学生に私が持っていたロボット工学を学ぶ同じ機会を与えたいと思います。それで私は回転せずに8方向に動くことができる本当に安価なロボットを作ることに取り組んでいます。 「バンパー」はこれで完成です。

フォローする@ dustin1970

用品:

ステップ1:資料を集める

あなたが必要とするエレクトロニクスは以下の通りです。 Digikeyの部品番号および価格は2012/12/18時点のものです。

Digikey部品番号 説明 コスト
1 475-1439-ND475-1439-ND フォトトランジスターNPN W /フィルター5MM $0.53
1 ATTINY13A-PU-ND IC MCU AVR 1Kフラッシュ20MHZ 8PDIP $0.95
3 CF14JT220RCT-ND RES 220 OHM 1 / 4W 5%カーボンフィルム $0.24
1 CF14JT1M00CT-ND RES 1M OHM 1 / 4W 5%カーボンフィルム $0.08
1 2N3904FS-ND ICトランスNPN SS GP 200MA TO-92 $0.18
2 754-1241-ND EMITTER IR 3MM 940NMウォータークリア $0.44
合計 $2.42

あなたも必要になります

  • 電気テープ
  • プラスチックストロー
  • はさみ
  • ワイヤースニッパー
  • ブレッドボードおよび/またははんだごて
  • ジャンパー線
  • AVRプログラマー(Ardunio互換機なら何でも構いません)
  • プログラムAttinyおよびAtiny13コアへの変更を加えたArdunio 1.0ソフトウェア

ステップ2:センサーシュラウドを作成する

赤外線がセンサーの側面から漏れないようにする必要があります。電気テープとわらから小さなトンネルを作ります。私のテープはIRに対して不透明です。あなたもたぶんあなたもいるでしょうが、確かめたいならアルミ箔でそれを並べることができます。回路を破壊するため、金属が露出していないことを確認してください。

ストローを約1.5インチ(4 cm)切り取ります。電気テープでそれを包みます。端をトリムしてきれいにします。

1/2インチ(8mm)のテープをカットし、短い方の端からそれを巻き上げます。ロールを半分に折ります。それで止まりませんが、良い折り目を付けてください。そのように迷光。

ステップ3:センサーを準備する

それがあればあなたのフォトトランジスタから中足を切り取ります。それはこの設計で必要とされないし、それを残す場合実際に問題を引き起こす場合があります。切り取る必要はありませんが、あまり残してはいけません。

ベースが5 mm(1/4インチ)程度になるまで、センサーをわらの中にそっと振り込みます。後ろに折り畳んだテープを後ろに押し込み、後ろを少しテープでシールします。

ステップ4:配線する

あなたはブレッドボード上でこれを行うか、または一緒にそれをすべて「死んだバグ」スタイルにはんだ付けすることができます。あなたが簡単にAttiny13をプログラムすることができるように最初にブレッドボードをしなさい。それがうまくいったらあなたはそれを一緒にはんだ付けすることができます。

配線図に従い、注意してください。

  • チップ、LED、トランジスタは一方向にしか働きません。
  • LEDの短い脚は220オームの抵抗器に接続されています。
  • の 長いです フォトトランジスタのレッグは1Ωの抵抗に接続されています。
  • 既存のペアと並行して、さらにIRエミッタ/抵抗ペアを追加できます。基本回路を最初に動作させます。 IRエミッターを1つだけ使用することもできますが、2つを使用すると測定値がはるかに安定します。
注:この図を作成した後、AttinyチップのVCCからGNDへの間に0.1μFのコンデンサがあると安定性に役立ちます。デザイン内のすべてのマイクロチップに1つずつ配置することをお勧めします。それがなくてもブレッドボードではそれなりにうまくいきましたが、回路基板は追加で本当に良くなりました。

ステップ5:AVR(Arduino)を配線してチップをプログラムする

ArduinoISPスケッチをAtmegaX28ベースのArdunioに焼き付けると、Attinyチッププログラムを焼き付けることができます。図はスペースを節約するためのプロミニです。使用するボードには同じピン番号を使用してください。あなたが他のAVRプログラマーを持っているならば、私はあなたがそれを使う方法を知っていると思います。

sourceforgeからAttiny13 Core13をインストールします。ここに指示とダウンロードするzipファイルさえdiy_blokeによってInstructableがあります。

これは、Attinyを焼くように環境を変更するためのMITの指示です。

このページはあなたが問題を抱えている場合に役立つかもしれません。コメントを確認してください。

Arduinoに配線します。プログラミングが完了したら、ワイヤを外すことができます。

INOファイルをロードしてAttiny13チップに書き込みます。

代わりにAVRプログラマーを使ってhexファイルを焼くか、Instructable作者nikkipughがattiny13チップをプログラムするためのスーパーストリップボードシールドデザインを持っています。

Arduinoのリセットからグランドへの10ufのコンデンサまたは120オームの抵抗が必要かもしれません。

コード:

/ * Dustin Andrews 2012によるAttiny13近接センサーLicense:Creative Commons Unported http://creativecommons.org/licenses/by/3.0/ * / //命令を保存するためにいくつかの低レベルAVRピン書き込みを行います。 1024の1010。閉じる! #define SetPin(ビット)PORTB | =(1 <<ビット)#define ClearPin(ビット)PORTB&=〜(1 <<ビット)// IRをこのピンに配線します。 (チップピン5?)。 #define irOutPin 3 //センサーが障害物を検出すると、このピンはハイレベルになります。 (チップピン6)#define outPin 1 //このピンをあなたのフォトトランスに接続するvcc - >フォトトランス - > pin4 - > 1M res - > gnd(チップピン3)#define sensorInPin 2 void setup(){pinMode() irOutPin、OUTPUT); pinMode(outPin、OUTPUT); // pinMode(2、OUTPUT); analogReference(0); // analogreadはこの行がないとAtiny13では動作しません。おそらくそれを使って他の人には働きません。 void loop(){static long difference = 0;}符号なし静的long lastTime = 0。 SetPin(irOutPin); delay1(); unsigned int r1 = analogRead(sensorInPin); ClearPin(irOutPin); delay1(); unsigned int r2 = analogRead(sensorInPin);差+ = r 1 −r 2。 if(millis() - lastTime> 5)//遅延が大きいほど滑らかな応答が得られる可能性があります。{if(difference> 0){SetPin(outPin);} } clear {ClearPin(outPin);}差= 0。 lastTime = millis(); void delay1(){// delay(1)は、メモリ内でコストがかかりすぎます。どうしてこんなに安いの? :Dロングスタート=ミリス()。 while(true){if(millis() - 開始> 1){break;}}}

ステップ6:センサーを使って素晴らしいロボットを作る

この時点で、ブレッドボード上に機能するセンサーがあるはずです。あなたがロボットに追加することができる安いセンサーのためにそれを一緒にはんだ付けしてください。センサーは3本の外部ワイヤを持つことになります。 VCC(5V)、GNDおよびセンス。 「センス」に接続する場所については回路図を参照してください。それは表示器LEDの長い足と同じワイヤーです。

トラブルシューティング:

  • すべてのワイヤを確認してください。
  • LEDを動かして、LEDがバレルと正しく揃っていることを確認します。
  • 配線をもう一度確認してください。
  • あなたがそれぞれのワイヤーがどこに行くかを説明している間、誰かにあなたの肩越しに見てもらう。 (これはとても面白いことではありません)
  • LED、センサー、トランジスタの極性を確認してください。
  • Attinyの極性を確認してください。暑い場合は後ろ向きに入れます。
  • 電話などのデジタルカメラを使用して、LEDが点灯していることを確認します。
  • 蛍光灯を消し、センサーを直射日光にさらさないでください。
  • LEDを1つ取り、それを長いワイヤーに取り付けて、センサーのバレルの真下に置いて、まったく見えないかどうかを確認します。
  • 感度を低くするには、1M抵抗を小さい値に変更します。
  • コードを微調整します。

ステップ7:オプション - サーキットボード

このステップはあなたが板を作るトナー転写または写真方法でレーザープリンタで使うことができるPDFを持っています。これを行う方法についての指示はたくさんあります。私は、チップのVCCとGNDの両端に0.1ufのキャップを追加すると、ボードがより確実に動作するようになることを確認しました。

ボードの一番下になる部分にパターンを印刷します。図のように基板の空いている側から部品を入れてはんだ付けします。センサーが「前方」に見えるように、LEDとセンサーのリード線を90度曲げました。

PDFとレイアウトは写真とは少し異なります。 0.1ufのキャップを明示的に追加し、トランジスタのベースレッグをセンサーラインから遠ざけました。