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

Arduino Farberkennung mit TCS230/TCS3200 Sensoren – Schritt-für-Schritt-Anleitung

In diesem Arduino-Tutorial lernen Sie, wie Sie Farben mit Arduino und dem TCS230 / TCS3200 Farbsensor erkennen. Sie können das folgende Video ansehen oder die schriftliche Anleitung unten lesen.

Funktionsweise des TCS230 / TCS3200 Farbsensors

Der TCS230 erfasst farbiges Licht mithilfe eines 8×8-Arrays von Photodioden. Ein Strom-Frequenz-Wandler konvertiert die Photodioden-Signale in eine Rechteckwelle, deren Frequenz direkt proportional zur Lichtintensität ist. Der Arduino liest diese Rechteckwelle aus und liefert die Farbergebnisse.

Arduino Farberkennung mit TCS230/TCS3200 Sensoren – Schritt-für-Schritt-Anleitung

Betrachtet man den Sensor genauer, sieht man die Farberkennung: Die Photodioden haben drei verschiedene Farbfilter. 16 haben Rotfilter, 16 Grünfilter, 16 Blaufilter und 16 sind klar (kein Filter).

Arduino Farberkennung mit TCS230/TCS3200 Sensoren – Schritt-für-Schritt-Anleitung

Je 16 Photodioden sind parallel geschaltet. Über die zwei Steuerpins S2 und S3 wählen wir aus, welche Gruppe gelesen wird. Für Rot setzen wir beide Pins auf Low-Pegel (siehe Tabelle).

Arduino Farberkennung mit TCS230/TCS3200 Sensoren – Schritt-für-Schritt-Anleitung

Zwei weitere Steuerpins, S0 und S1, skalieren die Ausgangsfrequenz auf 100 %, 20 % oder 2 %. Dies optimiert den Ausgang für verschiedene Frequenzzähler oder Mikrocontroller.

Nun schließen wir den TCS230 an den Arduino an. Hier der Schaltplan:

Arduino Farberkennung mit TCS230/TCS3200 Sensoren – Schritt-für-Schritt-Anleitung

Benötigte Komponenten:

  • TCS230 / TCS3200 Farbsensor
  • Arduino Board
  • Steckbrett und Jumper-Kabel

TCS230 Farbsensor Quellcode

Beschreibung: Zuerst definieren wir die Pins und eine Variable für die Frequenz. Im setup() setzen wir die vier Steuerpins als Outputs, den Sensor-Ausgang als Input. Wir wählen 20 % Frequenzskalierung und starten die serielle Kommunikation (9600 Baud).

Im loop() lesen wir nacheinander die rot-, grün- und blaugefilterten Photodioden: S2/S3 entsprechend setzen, per pulseIn() die Frequenz messen, auf Serial Monitor ausgeben.

/* 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);
  // Frequenzskalierung auf 20%
  digitalWrite(S0, HIGH);
  digitalWrite(S1, LOW);
  Serial.begin(9600);
}
void loop() {
  // Rot-Filter lesen
  digitalWrite(S2, LOW);
  digitalWrite(S3, LOW);
  frequency = pulseIn(sensorOut, LOW);
  Serial.print("R= ");
  Serial.print(frequency);
  Serial.print(" ");
  delay(100);
  // Grün-Filter lesen
  digitalWrite(S2, HIGH);
  digitalWrite(S3, HIGH);
  frequency = pulseIn(sensorOut, LOW);
  Serial.print("G= ");
  Serial.print(frequency);
  Serial.print(" ");
  delay(100);
  // Blau-Filter lesen
  digitalWrite(S2, LOW);
  digitalWrite(S3, HIGH);
  frequency = pulseIn(sensorOut, LOW);
  Serial.print("B= ");
  Serial.print(frequency);
  Serial.println(" ");
  delay(100);
}Code language: Arduino (arduino)

Im Serial Monitor erscheinen Werte, die von der Frequenzskalierung und Umgebungsbeleuchtung abhängen.

Arduino Farberkennung mit TCS230/TCS3200 Sensoren – Schritt-für-Schritt-Anleitung

Die drei Werte unterscheiden sich aufgrund der unterschiedlichen Empfindlichkeit jedes Photodiodentyps (siehe Spektralempfindlichkeitsdiagramm im Datenblatt).

Sehen wir, wie die Werte reagieren, wenn wir verschiedene Farben vor den Sensor halten. Bei Rot fällt der Wert in meinem Fall von ~70 auf ~25.

Arduino Farberkennung mit TCS230/TCS3200 Sensoren – Schritt-für-Schritt-Anleitung

Um die erkannten Farben im RGB-Modell (0–255) darzustellen, nutzen wir die map()-Funktion zur Umrechnung der Messwerte.

// Umrechnung der Frequenz auf RGB-Modell 0-255
frequency = map(frequency, 25, 70, 255, 0);

Der Wert 70 wird auf 0, der Wert 25 auf 255 gemappt. Gleiches für die anderen Farben.

Hier der finale Code 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);
  digitalWrite(S0, HIGH);
  digitalWrite(S1, LOW);
  Serial.begin(9600);
}
void loop() {
  // Rot
  digitalWrite(S2, LOW);
  digitalWrite(S3, LOW);
  frequency = pulseIn(sensorOut, LOW);
  frequency = map(frequency, 25, 72, 255, 0);
  Serial.print("R= ");
  Serial.print(frequency);
  Serial.print(" ");
  delay(100);
  // Grün
  digitalWrite(S2, HIGH);
  digitalWrite(S3, HIGH);
  frequency = pulseIn(sensorOut, LOW);
  frequency = map(frequency, 30, 90, 255, 0);
  Serial.print("G= ");
  Serial.print(frequency);
  Serial.print(" ");
  delay(100);
  // Blau
  digitalWrite(S2, LOW);
  digitalWrite(S3, HIGH);
  frequency = pulseIn(sensorOut, LOW);
  frequency = map(frequency, 25, 70, 255, 0);
  Serial.print("B= ");
  Serial.print(frequency);
  Serial.println(" ");
  delay(100);
}Code language: Arduino (arduino)

Hinweis: Die Farben sind nicht hochpräzise, aber für einfache Projekte gut genug. Als weiteres Beispiel zeigt mein nächstes Video, wie man eine automatische Arduino-Farbsortiermaschine baut.

Arduino Farberkennung mit TCS230/TCS3200 Sensoren – Schritt-für-Schritt-Anleitung

Fragen gerne in den Kommentaren und schauen Sie sich meine Arduino-Projektsammlung an!

Herstellungsprozess

  1. Raspberry Pi Lichtsensor Tutorial – LDR verdrahten und Lichtpegel mit Python auslesen
  2. Sicheres Arduino RFID-Schloss bauen – Schritt-für-Schritt-Anleitung
  3. K30 CO₂-Sensor: Echtzeit-Luftqualitätsmessung mit Arduino
  4. Digitales Stadiometer bauen: Körpergröße messen mit Arduino & Lasersensor VL53L0X
  5. DFRobot Kapazitiver Fingerabdrucksensor mit Arduino oder ESP8266 einbinden
  6. Sensorturm mit Arduino Cloud: Temperatur, Bewegung & Gase überwachen
  7. Arduino RGB-LED-Farbmischer – Einsteigerfreundliches DIY-Projekt
  8. Arduino RGB-Farbmischer bauen – Schritt-für-Schritt-Anleitung
  9. Dynamische Musik-LED-Lichter zum Jahreswechsel – Arduino Nano & NeoPixel
  10. Arduino Einsteiger Tutorial #1: Erstes Projekt (Blink)