工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

Arduinoカラーセンシングチュートリアル–TCS230TCS3200カラーセンサー

このArduinoチュートリアルでは、ArduinoとTCS230/TCS3200カラーセンサーを使用して色を検出する方法を学習します。詳細については、次のビデオを見るか、以下のチュートリアルを読むことができます。

TCS230/TCS3200カラーセンサーの仕組み

TCS230は、フォトダイオードの8x8アレイの助けを借りて色の光を感知します。次に、電流周波数変換器を使用して、フォトダイオードからの読み取り値が、光の強度に正比例する周波数の方形波に変換されます。最後に、Arduinoボードを使用して、方形波出力を読み取り、色の結果を取得できます。

センサーを詳しく見ると、さまざまな色がどのように検出されるかがわかります。フォトダイオードには3つの異なるカラーフィルターがあります。それらのうち16個には赤色のフィルターがあり、別の16個には緑色のフィルターがあり、別の16個には青色のフィルターがあり、他の16個のフォトダイオードはフィルターなしで透明です。

16個のフォトダイオードはそれぞれ並列に接続されているため、2つの制御ピンS2とS3を使用して、どちらを読み取るかを選択できます。したがって、たとえば、赤色を検出する場合は、表に従って2つのピンを低論理レベルに設定することで、16個の赤色フィルタリングされたフォトダイオードを使用できます。

センサーには、出力周波数のスケーリングに使用される2つの制御ピンS0とS1があります。周波数は、100%、20%、または2%の3つの異なるプリセット値にスケーリングできます。この周波数スケーリング機能により、センサーの出力をさまざまな周波数カウンターまたはマイクロコントローラー用に最適化できます。

これで、TCS230センサーをArduinoボードに接続する準備が整いました。これが回路図です。

このArduinoチュートリアルに必要なコンポーネントは、以下のリンクから入手できます。

  • TCS230TCS3200カラーセンサー……。
  • Arduinoボード……………………………
  • ブレッドボードとジャンパー線………

TCS230カラーセンサーのソースコード

説明: まず、センサーが接続されているピンを定義し、周波数を読み取るための変数を定義する必要があります。セットアップセクションでは、4つの制御ピンを出力として定義し、センサー出力をArduino入力として定義する必要があります。ここでは、周波数スケーリングも設定する必要があります。この例では、周波数スケーリングを20%に設定し、シリアル通信を開始して結果をシリアルモニターに表示します。

ループセクションでは、赤でフィルタリングされたフォトダイオードの読み取りから始めます。そのために、2つの制御ピンS2とS3を低論理レベルに設定します。次に、「pulseIn()」関数を使用して、出力周波数を読み取り、それを変数「frequency」に入れます。 Serial.print()関数を使用して、結果をシリアルモニターに出力します。同じ手順が他の2つの色にも当てはまりますが、適切な色に制御ピンを調整する必要があります。

/*     Arduino Color Sensing Tutorial
 *      
 *  by Dejan Nedelkovski, www.HowToMechatronics.com
 *  
 */
 
#define S0 4
#define S1 5
#define S2 6
#define S3 7
#define sensorOut 8

int frequency = 0;

void setup() {
  pinMode(S0, OUTPUT);
  pinMode(S1, OUTPUT);
  pinMode(S2, OUTPUT);
  pinMode(S3, OUTPUT);
  pinMode(sensorOut, INPUT);
  
  // Setting frequency-scaling to 20%
  digitalWrite(S0,HIGH);
  digitalWrite(S1,LOW);
  
  Serial.begin(9600);
}

void loop() {
  // Setting red filtered photodiodes to be read
  digitalWrite(S2,LOW);
  digitalWrite(S3,LOW);
  // Reading the output frequency
  frequency = pulseIn(sensorOut, LOW);
  // Printing the value on the serial monitor
  Serial.print("R= ");//printing name
  Serial.print(frequency);//printing RED color frequency
  Serial.print("  ");
  delay(100);

  // Setting Green filtered photodiodes to be read
  digitalWrite(S2,HIGH);
  digitalWrite(S3,HIGH);
  // Reading the output frequency
  frequency = pulseIn(sensorOut, LOW);
  // Printing the value on the serial monitor
  Serial.print("G= ");//printing name
  Serial.print(frequency);//printing RED color frequency
  Serial.print("  ");
  delay(100);

  // Setting Blue filtered photodiodes to be read
  digitalWrite(S2,LOW);
  digitalWrite(S3,HIGH);
  // Reading the output frequency
  frequency = pulseIn(sensorOut, LOW);
  // Printing the value on the serial monitor
  Serial.print("B= ");//printing name
  Serial.print(frequency);//printing RED color frequency
  Serial.println("  ");
  delay(100);
}Code language: Arduino (arduino)

ここで、シリアルモニターを実行すると、いくつかの値の取得が開始されます。これらの値は、選択した周波数スケーリングと周囲の照明によって異なります。

ここで、センサーのデータシートのフォトダイオードのスペクトル感度図からわかるように、各フォトダイオードタイプの感度が異なるため、3つの値が異なることに注意してください。

それでも、センサーの前にさまざまな色を表示したときに値がどのように反応するかを見てみましょう。たとえば、赤い色を使用すると、初期値が70から25程度に下がります。

したがって、検出された色を0〜255の値を持つRGBモデルで表現する場合は、map()関数を使用して、読み取り値を0〜255の値にマッピングまたは変換します。

//Remaping the value of the frequency to the RGB Model of 0 to 255
  frequency = map(frequency, 25,70,255,0);

70の値は0にマップされ、25から255の値はマップされます。同じ手順が他の2つの色にも当てはまります。

この例の最終的なソースコードは次のとおりです。

/*     Arduino Color Sensing Tutorial
 *      
 *  by Dejan Nedelkovski, www.HowToMechatronics.com
 *  
 */
 
#define S0 4
#define S1 5
#define S2 6
#define S3 7
#define sensorOut 8

int frequency = 0;

void setup() {
  pinMode(S0, OUTPUT);
  pinMode(S1, OUTPUT);
  pinMode(S2, OUTPUT);
  pinMode(S3, OUTPUT);
  pinMode(sensorOut, INPUT);
  
  // Setting frequency-scaling to 20%
  digitalWrite(S0,HIGH);
  digitalWrite(S1,LOW);
  
  Serial.begin(9600);
}

void loop() {
  // Setting red filtered photodiodes to be read
  digitalWrite(S2,LOW);
  digitalWrite(S3,LOW);
  // Reading the output frequency
  frequency = pulseIn(sensorOut, LOW);
  //Remaping the value of the frequency to the RGB Model of 0 to 255
  frequency = map(frequency, 25,72,255,0);
  // Printing the value on the serial monitor
  Serial.print("R= ");//printing name
  Serial.print(frequency);//printing RED color frequency
  Serial.print("  ");
  delay(100);

  // Setting Green filtered photodiodes to be read
  digitalWrite(S2,HIGH);
  digitalWrite(S3,HIGH);
  // Reading the output frequency
  frequency = pulseIn(sensorOut, LOW);
  //Remaping the value of the frequency to the RGB Model of 0 to 255
  frequency = map(frequency, 30,90,255,0);
  // Printing the value on the serial monitor
  Serial.print("G= ");//printing name
  Serial.print(frequency);//printing RED color frequency
  Serial.print("  ");
  delay(100);

  // Setting Blue filtered photodiodes to be read
  digitalWrite(S2,LOW);
  digitalWrite(S3,HIGH);
  // Reading the output frequency
  frequency = pulseIn(sensorOut, LOW);
  //Remaping the value of the frequency to the RGB Model of 0 to 255
  frequency = map(frequency, 25,70,255,0);
  // Printing the value on the serial monitor
  Serial.print("B= ");//printing name
  Serial.print(frequency);//printing RED color frequency
  Serial.println("  ");
  delay(100);
}Code language: Arduino (arduino)

色はそれほど正確ではありませんが、単純なプロジェクトには十分です。次のビデオのTCS230カラーセンサーの別の例として、Arduino自動カラーソーティングマシンの作り方を学びます。

以下のコメントセクションでお気軽に質問してください。Arduinoプロジェクトのコレクションをチェックすることを忘れないでください。


製造プロセス

  1. Raspberry Pi光センサー:シンプルなLDRチュートリアル
  2. ArduinoRFIDロックチュートリアル
  3. K30センサーによるCO2モニタリング
  4. あなたの身長はどれくらいですか?
  5. ArduinoまたはESP8266を搭載した静電容量式指紋センサー
  6. Arduinoクラウドセンサータワー
  7. ArduinoRGBカラーミキサー
  8. Arduinoカラーミキサー
  9. ミュージカルカラー
  10. Arduino指紋センサーチュートリアル
  11. Arduinoチュートリアル01:はじめに