名前が示すように、色の並べ替えは単に色に従って物を並べ替えることです。見れば簡単にできますが、並べ替えが多すぎて繰り返し作業が多い場合は、自動色分け機が便利です。これらの機械には、物体の色を感知するカラーセンサーがあり、カラーサーボモーターを検出した後、物をつかんでそれぞれの箱に入れます。これらは、色の識別、色の区別、色の並べ替えが重要なさまざまなアプリケーション分野で使用できます。応用分野には、農業(色による穀物選別)、食品産業、ダイヤモンド・鉱業、リサイクルなどがあります。これらに限らず、さまざまな産業に応用できます。
色を検出するための最も一般的なセンサーはTCS3200カラーセンサーです。以前は、ArduinoでTCS3200センサーを使用して任意の色のRGBコンポーネント(赤、緑、青)を取得し、RaspberryPiとインターフェイスして任意のオブジェクトの色を検出していました。
このチュートリアルでは、カラーセンサーTCS3200、いくつかのサーボモーター、およびArduinoボードを使用して色分け機を作成します。このチュートリアルには、色付きのボールの並べ替えと、関連するカラーボックスでの保持が含まれます。ボックスは固定位置にあり、サーボモーターを使用してソーターハンドを動かし、ボールを関連するボックスに保持します。
必要なコンポーネント
- Arduino UNO
- TCS3200カラーセンサー
- サーボモーター
- ジャンパー
- ブレッドボード
色分けロボットアームのシャーシの作り方
シャーシ、アーム、ローラー、パッドを含む完全なセットアップを行うために、2mmの厚さの白いサンボードを使用しました。ステーショナリーストアで簡単に入手できます。サンボードシートをカットするためにペーパーカッターを使用し、さまざまなパーツを結合するためにFlexKwikまたはFeviKwikを使用しました。
以下は、色分けアームを構築するいくつかの手順です。
1)サンボードシートを取ります。
2)図のように目盛りとマーカーで四方を測った後、サンボードシートを細かく切ります。
3)次に、2つのサンボードを一緒に保持し、FeviKwikを1滴注ぎ、それらを貼り合わせます。図に従って、ピースを結合し続けます。
4)すべてのピースを結合すると、この色分け機は次のようになります。
TCS3200カラーセンサー
TCS3200は、適切なプログラミングで任意の数の色を検出できるカラーセンサーです。TCS3200には、RGB(赤緑青)アレイが含まれています。微視的レベルの図に示されているように、センサーの目の内側の四角いボックスを見ることができます。これらの四角いボックスは、RGB行列の配列です。これらの各ボックスには3つのセンサーが含まれています。1つは赤の光強度を検出するためのもの、1つは緑の光強度を検出するためのもの、最後は青の光強度を検出するためのものです。
これら3つのアレイの各センサーアレイは、要件に応じて個別に選択されます。したがって、それはプログラム可能なセンサーとして知られています。モジュールは、特定の色を感知し、他の色を残すように機能させることができます。その選択のためのフィルターが含まれています。センサーが白色光を検出する「フィルターなしモード」と呼ばれる4番目のモードがあります。
Arduinoカラーソーター回路図
このArduinoカラーソーターの回路図は非常に簡単に作成でき、多くの接続を必要としません。回路図を以下に示します。
これは、色分け機のセットアップの背後にある回路です。
カラフルなボールをソートするためのArduinoUnoのプログラミング
Arduino UNOのプログラミングは非常に単純であり、色の並べ替えに関連する手順を単純化するための単純なロジックが必要です。デモビデオ付きの完全なプログラムは最後に与えられます。
サーボモーターを使用しているので、サーボライブラリはプログラムの重要な部分です。ここでは2つのサーボモーターを使用しています。第1のサーボはTCS3200検出器の位置に初期位置からカラーボールを移動して、ボールが削除されます仕分位置に移動します。ソート位置に移動した後、2番目のサーボはそのアームを使用してボールを目的のカラーバケットにドロップします。最後にあるビデオで完全な作業を参照してください。
最初のステップは、すべてのライブラリを含め、サーボ変数を定義することです。
#include
TCS3200カラーセンサーは、センサーピンから周波数を読み取って色を決定するだけでよいため、ライブラリがなくても機能します。したがって、TCS3200のピン番号を定義するだけです。
#define S0 4 #define S1 5 #define S2 7 #define S3 6 #define sensorOut 8 intfrequency = 0; int color = 0;
作成した出力として選択ピンを、これはカラーフォトダイオード高が低いか作るとしますと、入力としてTCS3200のOutピンを取ります。OUTピンは周波数を提供します。最初に周波数のスケーリングを20%として選択します。
pinMode(S0、OUTPUT); pinMode(S1、OUTPUT); pinMode(S2、OUTPUT); pinMode(S3、OUTPUT); pinMode(sensorOut、INPUT); digitalWrite(S0、LOW); digitalWrite(S1、HIGH);
サーボモーターはArduinoのピン9と10に接続されています。ピックアップサーボカラーボールをピン9にピックアップ接続され、ドロップサーボPin10に接続されている色に応じた色のボールをドロップします。
pickServo.attach(9); dropServo.attach(10);
最初に、ピックサーボモーターは最初の位置(この場合は115度)に設定されます。異なる場合があり、それに応じてカスタマイズできます。モーターは少し遅れて検出器領域に移動し、検出を待ちます。
pickServo.write(115); delay(600); for(int i = 115; i> 65; i-){ pickServo.write(i); delay(2); } delay(500);
TCS 3200は、色を読み取り、アウト端子からの周波数を与えます。
色= detectColor(); delay(1000);
検出された色に応じて、ドロップサーボモーターは特定の角度で移動し、カラーボールをそれぞれのボックスにドロップします。
スイッチ(色){ ケース1: dropServo.write(50); ブレーク; ケース2: dropServo.write(80); ブレーク; ケース3: dropServo.write(110); ブレーク; ケース4: dropServo.write(140); ブレーク; ケース5: dropServo.write(170); ブレーク; ケース0: ブレーク; } delay(500);
サーボモーターは、次のボールをピックするために初期位置に戻ります。
for(int i = 65; i> 29; i-){ pickServo.write(i); delay(2); } delay(300); for(int i = 29; i <115; i ++){ pickServo.write(i); delay(2); }
関数 detectColor() は、頻度を測定し、色の頻度を比較して色の結論を出すために使用されます。結果はシリアルモニターに印刷されます。次に、ドロップサーボモーターの角度を移動する場合のカラー値を返します。
intdetectColor(){
S2およびS3(LOW、LOW)に書き込むと、赤いフォトダイオードがアクティブになり、赤い色の濃度が読み取られます。
digitalWrite(S2、LOW); digitalWrite(S3、LOW); 周波数= pulseIn(sensorOut、LOW); int R =頻度; Serial.print( "Red ="); Serial.print(frequency); // REDカラー周波数の印刷 Serial.print( ""); delay(50);
S2およびS3(LOW、HIGH)に書き込むと、青色のフォトダイオードがアクティブになり、青色の濃度の読み取り値が取得されます。
digitalWrite(S2、LOW); digitalWrite(S3、HIGH); 周波数= pulseIn(sensorOut、LOW); int B =頻度; Serial.print( "Blue ="); Serial.print(頻度); Serial.println( "");
S2およびS3(HIGH、HIGH)に書き込むと、緑色のフォトダイオードがアクティブになり、緑色の濃度の読み取り値が取得されます。
digitalWrite(S2、HIGH); digitalWrite(S3、HIGH); //出力周波数の読み取り 周波数= pulseIn(sensorOut、LOW); int G =頻度; Serial.print( "Green ="); Serial.print(頻度); Serial.print( ""); delay(50);
次に、値が比較されて色が決定されます。セットアップを行う際の検出距離はすべての人で異なるため、測定値は実験セットアップごとに異なります。
if(R <22&R> 20&G <29&G> 27){ color = 1; //赤 Serial.print( "Detected Color is ="); Serial.println( "RED"); } if(G <25&G> 22&B <22&B> 19){ color = 2; // Orange Serial.println( "Orange"); } if(R <21&R> 20&G <28&G> 25){ color = 3; //緑 Serial.print( "検出された色は="); Serial.println( "GREEN"); } if(R <38&R> 24&G <44&G> 30){ color = 4; //黄色の Serial.print( "検出された色は="); Serial.println( "YELLOW"); } if(G <29&G> 27&B <22&B> 19){ 色= 5; // Blue Serial.print( "Detected Color is ="); Serial.println( "BLUE"); } 戻り色; }
これで、TCS3200とArduinoUNOを使用した色分け機が完成しました。必要に応じて、より多くの色を検出するようにプログラムすることもできます。疑問や提案がある場合は、フォーラムに書き込むか、以下にコメントしてください。以下のビデオもチェックしてください。