Arduinoコードを使用したカラー検出回路

問題を排除するために楽器を試してください





この投稿では、色を検出し、割り当てられたそれぞれのリレーをトリガーできる回路を構築します。このプロジェクトは、TCS3200カラーセンサーとArduinoボードを使用して実行されます。

TCS3200によるカラーセンシング

前の記事をまだ読んでいない場合は、ここで説明した記事を読んでください。 TCS3200を使用したカラーセンシングの基本



提案されたプロジェクトは、回路に色に基づいてアクションを実行させたい場合に役立つ可能性があります。さまざまな産業分野で色検出に基づくアプリケーションの海があります。

このプロジェクトでは、さまざまな色を検出してリレーをトリガーするようにカラーセンサーをプログラムする方法についての洞察を提供します。



このプロジェクトでは、原色である赤、緑、青を検討します。このプロジェクトでは、これら3つの色を区別し、リレーをトリガーできます。各リレーは各色に対応しています。

TCS3200は任意の数の色を検出できますが、プロジェクトを理解しやすくし、プログラムコードを単純にするために、原色のみに集中しています。

回路図:

ArduinoとTCS3200カラーセンサーのインターフェース

上記の回路図は、ArduinoとTCS3200カラーセンサーのインターフェース用です。

リレー接続:

リレー接続ArduinoとTCS3200カラーセンサー

少なくとも500mAの9VアダプターでArduinoに電力を供給します。 ArduinoのGPIOピンはリレーに十分な電流を供給できないため、トランジスタはリレーの増幅器として機能します。

ダイオード1N4007は、リレーコイルからの高電圧スパイクを吸収し、残りの半導体コンポーネントを保護します。

これでハードウェアは終わりです。

それでは、コードをアップロードして、要件に合わせてセンサーを調整する方法を見てみましょう。
色感度はモジュールごとに異なる可能性があり、周囲光によって色感度が大幅に変化する可能性があります。

すべてのTCS3200センサーには製造中に多少のばらつきがあります。コードでこれらのパラメーターを使用して色をより正確に検出できるように、現在所有しているセンサーの色パラメーターを測定する必要があります。

センサーの読み取り値を校正および最適化するには、次の手順を正確に実行します。

ステップ1:ハードウェアのセットアップが完了した次のコードをアップロードします。

//-----Program Developed by R.GIRISH-----// const int Red_relay = 9 const int Green_relay = 10 const int Blue_relay = 11 const int s0 = 4 const int s1 = 5 const int s2 = 6 const int s3 = 7 const int out = 8 int var = 25 int red = 0 int green = 0 int blue = 0 int state = LOW int state1 = LOW int state2 = HIGH //-----------Enter Values--------// //For RED Colour: int Rx1 = 92 int Gx1 = 240 int Bx1 = 53 //For GREEN Colour: int Rx2 = 228 int Gx2 = 163 int Bx2 = 64 //For BLUE Colour: int Rx3 = 300 int Gx3 = 144 int Bx3 = 45 //----------------------------// void setup() { Serial.begin(9600) pinMode(Red_relay, OUTPUT) pinMode(Green_relay, OUTPUT) pinMode(Blue_relay, OUTPUT) digitalWrite(Red_relay, LOW) digitalWrite(Green_relay, LOW) digitalWrite(Blue_relay, LOW) pinMode(s0, OUTPUT) pinMode(s1, OUTPUT) pinMode(s2, OUTPUT) pinMode(s3, OUTPUT) pinMode(out, INPUT) //----Scaling Frequency 20%-----// digitalWrite(s0, state2) digitalWrite(s1, state1) //-----------------------------// } void loop() { int redH1 = Rx1 + var int redL1 = Rx1 - var int redH2 = Rx2 + var int redL2 = Rx2 - var int redH3 = Rx3 + var int redL3 = Rx3 - var int blueH1 = Bx1 + var int blueL1 = Bx1 - var int blueH2 = Bx2 + var int blueL2 = Bx2 - var int blueH3 = Bx3 + var int blueL3 = Bx3 - var int greenH1 = Gx1 + var int greenL1 = Gx1 - var int greenH2 = Gx2 + var int greenL2 = Gx2 - var int greenH3 = Gx3 + var int greenL3 = Gx3 - var //-----Sensing RED colour-----// digitalWrite(s2, state1) digitalWrite(s3, state1) red = pulseIn(out, state) delay(100) //------Sensing Green colour----// digitalWrite(s2, state2) digitalWrite(s3, state2) green = pulseIn(out, state) delay(100) //------Sensing Blue colour----// digitalWrite(s2, state1) digitalWrite(s3, state2) blue = pulseIn(out, state) delay(400) if(red = redL1) { if(green = greenL1) { if(blue = blueL1) { Serial.println('Detected Colour: RED') Serial.println('') digitalWrite(Red_relay, HIGH) delay(1000) } } } if(red = redL2) { if(green = greenL2) { if(blue = blueL2) { Serial.println('Detected Colour: Green') Serial.println('') digitalWrite(Green_relay, HIGH) delay(1000) } } } if(red = redL3) { if(green = greenL3) { if(blue = blueL3) { Serial.println('Detected Colour: Blue') Serial.println('') digitalWrite(Blue_relay, HIGH) delay(1000) } } } } //------Program Developed by R.GIRISH--------//

ステップ2:シリアルモニターを開くと、次のようなカラーパラメーターが表示されます。

カラーオブジェクト(色紙が望ましい)を赤、青、緑に持っていきます。

ステップ3:

•赤い色の紙をTCS3200センサーの近くに置きます。
•赤い色の紙を置くときに、R、G、Bの読み取り値(3色すべて)を書き留めます。
•同様に、緑と青のカラーペーパーのR、G、Bの読みを書き留めます。

•注:TCS3200の前に3色のいずれかを配置する場合は、メインの色検出プログラムに入力する必要がある各カラー用紙のすべての赤、青、緑の読み取り値を書き留めてください。

ステップ4:ステップ5を読み、以下のメインコードをアップロードします(色検出プログラム)

//-- -- -- -- Enter Values-- -- --// //For RED Colour: int Rx1 = 92 int Gx1 = 240 int Bx1 = 53 //For GREEN Colour: int Rx2 = 228 int Gx2 = 163 int Bx2 = 64 //For BLUE Colour: int Rx3 = 300 int Gx3 = 144 int Bx3 = 45 //-- -- -- -- -- -- -- -- -- -- -- //

ステップ5: 上記のコードで、値を最近書き留めた値に置き換えます。

//--------Program Developed by R.GIRISH-------// const int s0 = 4 const int s1 = 5 const int s2 = 6 const int s3 = 7 const int out = 8 int frequency1 = 0 int frequency2 = 0 int frequency3 = 0 int state = LOW int state1 = LOW int state2 = HIGH void setup() { Serial.begin(9600) pinMode(s0, OUTPUT) pinMode(s1, OUTPUT) pinMode(s2, OUTPUT) pinMode(s3, OUTPUT) pinMode(out, INPUT) //----Scaling Frequency 20%-----// digitalWrite(s0, state2) digitalWrite(s1, state1) //-----------------------------// } void loop() ') delay(100) //------Sensing Blue colour----// digitalWrite(s2, state1) digitalWrite(s3, state2) frequency3 = pulseIn(out, state) Serial.print(' Blue = ') Serial.println(frequency3) delay(100) Serial.println('-----------------------------') delay(400) //---------Program Developed by R.GIRISH---------//

センサーに赤い色の紙を置くと、3つの読み取り値が得られます。たとえば、R = 56 | G = 78 | B = 38。

次のように値56、78、38を配置します。

// REDカラーの場合:
int Rx1 = 56
int Gx1 = 78
int Bx1 = 38

同様に、他の2色については、コードをアップロードします。

ステップ6:

•シリアルモニターを開き、センサーの前に3色のいずれかを配置します。
•対応するカラーリレーがアクティブになると同時に、シリアルモニターで色の検出が表示されます。

•Arduinoボードのリセットボタンを押して、リレーを非アクティブにしました。

注1:キャリブレーション後に、赤、緑、青の色のオブジェクト/紙のわずかに異なる色合い/色合いを配置すると、回路が色を検出しない場合があります。つまり、色を検出してリレーをトリガーするには、まったく同じ色のオブジェクト/紙を使用する必要があります。

注2:周囲光は色検出に影響を与える可能性があるため、キャリブレーション中および色の検出中は、センサーの近くで一定の光を維持してください。

著者のプロトタイプ:

Arduinoカラーセンサーのプロトタイプ

このプロジェクトに関して質問がある場合は、コメントセクションに記入してください。すぐに返信が届く場合があります。




前:カスタマイズされた周波数でのTSOP17XXセンサーの使用 次へ:ダンプコンデンサを使用した複数のバッテリ充電器回路