Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

Arduino Color Sensing Tutorial – TCS230 TCS3200 Farbsensor

In diesem Arduino-Tutorial lernen wir, wie man Farben mit Arduino und dem Farbsensor TCS230 / TCS3200 erkennt. Sie können sich das folgende Video ansehen oder das schriftliche Tutorial unten lesen, um weitere Einzelheiten zu erfahren.

Funktionsweise des Farbsensors TCS230 / TCS3200

Der TCS230 erfasst Farblicht mit Hilfe eines 8 x 8-Arrays von Fotodioden. Dann werden die Messwerte von den Fotodioden mit einem Strom-Frequenz-Konverter in eine Rechteckwelle mit einer Frequenz umgewandelt, die direkt proportional zur Lichtintensität ist. Schließlich können wir mit dem Arduino Board die Rechteckwellenausgabe lesen und die Ergebnisse für die Farbe erhalten.

Wenn wir uns den Sensor genauer ansehen, können wir sehen, wie er verschiedene Farben erkennt. Die Photodioden haben drei verschiedene Farbfilter. Sechzehn davon haben Rotfilter, weitere 16 haben Grünfilter, weitere 16 haben Blaufilter und die anderen 16 Fotodioden sind ohne Filter klar.

Jeweils 16 Fotodioden sind parallel geschaltet, sodass wir mit den beiden Steuerpins S2 und S3 auswählen können, welche davon gelesen werden sollen. Wenn wir beispielsweise rote Farbe erkennen möchten, können wir einfach die 16 rot gefilterten Fotodioden verwenden, indem wir die beiden Pins gemäß der Tabelle auf einen niedrigen Logikpegel setzen.

Der Sensor hat zwei weitere Steuerpins, S0 und S1, die zur Skalierung der Ausgangsfrequenz verwendet werden. Die Frequenz kann auf drei verschiedene voreingestellte Werte von 100 %, 20 % oder 2 % skaliert werden. Diese Frequenzskalierungsfunktion ermöglicht es, die Ausgabe des Sensors für verschiedene Frequenzzähler oder Mikrocontroller zu optimieren.

Jetzt können wir weitermachen und den TCS230-Sensor mit dem Arduino-Board verbinden. Hier ist der Schaltplan.

Die für dieses Arduino-Tutorial benötigten Komponenten erhalten Sie über die folgenden Links:

  • TCS230 TCS3200 Farbsensor…….
  • Arduino-Board ……………………………
  • Steckbrett und Schaltdrähte ……… 
  •  

TCS230-Farbsensor-Quellcode

Beschreibung: Zuerst müssen wir die Pins definieren, an denen der Sensor angeschlossen ist, und eine Variable zum Lesen der Frequenz definieren. Im Setup-Bereich müssen wir die vier Steuerpins als Ausgänge und den Sensorausgang als Arduino-Eingang definieren. Hier müssen wir auch die Frequenzskalierung einstellen, für dieses Beispiel werde ich sie auf 20% setzen, und die serielle Kommunikation starten, um die Ergebnisse im Serial Monitor anzuzeigen.

Im Schleifenabschnitt beginnen wir mit dem Lesen der rotgefilterten Fotodioden. Dazu setzen wir die beiden Steuerpins S2 und S3 auf Low-Logikpegel. Dann lesen wir mit der Funktion „pulseIn()“ die Ausgangsfrequenz und geben sie in die Variable „Frequenz“ ein. Mit der Funktion Serial.print() drucken wir das Ergebnis auf dem seriellen Monitor. Das gleiche Verfahren gilt für die beiden anderen Farben, wir müssen nur die Steuerstifte für die entsprechende Farbe anpassen.

/* 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); } Codesprache:Arduino (arduino)

Wenn wir jetzt den Serial Monitor ausführen, erhalten wir einige Werte. Diese Werte sind abhängig von der gewählten Frequenzskalierung, sowie von der Umgebungsbeleuchtung.

Beachten Sie hier, dass sich drei Werte aufgrund der unterschiedlichen Empfindlichkeit jedes Fotodiodentyps unterscheiden, wie aus dem spektralen Empfindlichkeitsdiagramm der Fotodiode aus dem Datenblatt des Sensors ersichtlich ist.

Trotzdem schauen wir uns jetzt an, wie sich die Werte verhalten, wenn wir verschiedene Farben vor den Sensor bringen. Wenn wir also zum Beispiel rote Farbe bringen, sinkt der Anfangswert, in meinem Fall von etwa 70 auf etwa 25.

Wenn wir also jetzt die erkannten Farben mit dem RGB-Modell darstellen möchten, das Werte von 0 bis 255 hat, verwenden wir die Funktion map(), um die Messwerte auf die Werte von 0 bis 255 abzubilden oder umzuwandeln.

//Umwandlung des Frequenzwerts in das RGB-Modell von 0 bis 255 frequency =map(frequency, 25,70,255,0);

Der Wert von 70 wird auf 0 abgebildet und der Wert von 25 auf 255. Das gleiche Verfahren gilt für die beiden anderen Farben.

Hier ist der endgültige Quellcode für dieses Beispiel:

/*     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);
} Codesprache:Arduino (arduino) 

Beachten Sie, dass die Farben nicht so genau sind, aber für einfache Projekte immer noch gut genug sind. Als weiteres Beispiel für den TCS230-Farbsensor in meinem nächsten Video werden wir lernen, wie man eine automatische Arduino-Farbsortiermaschine herstellt.

Fühlen Sie sich frei, Fragen im Kommentarbereich unten zu stellen, und vergessen Sie nicht, sich meine Sammlung von Arduino-Projekten anzusehen.


Herstellungsprozess

  1. Raspberry Pi-Lichtsensor:Eine einfache LDR-Anleitung
  2. Anleitung zum Arduino-RFID-Schloss
  3. CO2-Überwachung mit K30-Sensor
  4. Wie groß bist du?
  5. Kapazitiver Fingerabdrucksensor mit einem Arduino oder ESP8266
  6. Arduino Cloud Sensor Tower
  7. Arduino RGB-Farbmischer
  8. Arduino Farbmischer
  9. Musikalische Farbe
  10. Arduino-Tutorial 01:Erste Schritte