Farbdetektorschaltung mit Arduino-Code

Versuchen Sie Unser Instrument, Um Probleme Zu Beseitigen





In diesem Beitrag werden wir eine Schaltung konstruieren, die Farbe erkennen und jeweils zugewiesene Relais auslösen kann. Dieses Projekt wird mit dem TCS3200-Farbsensor und der Arduino-Karte durchgeführt.

Farberkennung durch TCS3200

Wenn Sie den vorherigen Artikel noch nicht gelesen haben, lesen Sie ihn bitte durch Grundlagen der Farberkennung mit TCS3200



Das vorgeschlagene Projekt kann nützlich sein, wenn eine Schaltung farbbasierte Maßnahmen ergreifen soll. Es gibt Ozeane von Anwendungen, die auf der Farberkennung in verschiedenen Industriebereichen basieren.

Dieses Projekt gibt einen Einblick, wie wir den Farbsensor so programmieren können, dass er verschiedene Farben erkennt und die Relais auslöst.



Wir werden die Primärfarben betrachten: ROT, GRÜN und BLAU für dieses Projekt. Dieses Projekt kann zwischen diesen drei Farben unterscheiden und die Relais auslösen, jedes Relais für jede Farbe.

Der TCS3200 kann eine beliebige Anzahl von Farben erkennen. Um das Projekt verständlich zu halten und den Programmcode einfach zu halten, konzentrieren wir uns nur auf die Primärfarben.

Schaltplan:

Schnittstelle zwischen dem Arduino- und dem TCS3200-Farbsensor

Das obige Schema dient zur Anbindung des Arduino- und TCS3200-Farbsensors.

Relaisanschlüsse:

Relais verbindet den Farbsensor Arduino und TCS3200

Versorgen Sie den Arduino mit einem 9-V-Adapter mit mindestens 500 mA. Der Transistor fungiert als Verstärker für das Relais, da die GPIO-Pins des Arduino nicht genügend Strom für das Relais liefern können.

Die Diode 1N4007 absorbiert Hochspannungsspitzen von der Relaisspule und schützt so den Rest der Halbleiterkomponenten.

Damit ist die Hardware abgeschlossen.

Lassen Sie uns nun sehen, wie Sie den Code hochladen und den Sensor für Ihre Anforderungen kalibrieren.
Die Farbempfindlichkeit kann von Modul zu Modul variieren und Umgebungslicht kann die Farbempfindlichkeit drastisch verändern.

Alle TCS3200-Sensoren weisen während der Herstellung einige Abweichungen auf. Sie müssen die Farbparameter für den Sensor messen, den Sie derzeit besitzen, damit diese Parameter im Code verwendet werden können, um die Farbe genauer zu erkennen.

Führen Sie die folgenden Schritte aus, um die Messwerte für Ihren Sensor zu kalibrieren und zu optimieren:

Schritt 1: Laden Sie den folgenden Code mit abgeschlossenem Hardware-Setup hoch.

//-----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--------//

Schritt 2: Öffnen Sie den seriellen Monitor. Sie finden die Farbparameter wie folgt:

Bringen Sie das Farbobjekt (farbiges Papier wird bevorzugt) rot, blau und grün.

Schritt 3:

• Legen Sie das rot gefärbte Papier in die Nähe des TCS3200-Sensors.
• Notieren Sie die R-, G- und B-Werte (alle drei Farben), während Sie das rote Papier einlegen.
• Notieren Sie in ähnlicher Weise die Werte für R, G, B für Papiere mit grüner und blauer Farbe.

• HINWEIS: Wenn Sie eine der drei Farben vor dem TCS3200 platzieren, notieren Sie alle roten, blauen und grünen Messwerte für jedes Farbpapier, die Sie im Hauptfarberkennungsprogramm eingeben müssen.

Schritt 4: Lesen Sie Schritt 5 und laden Sie den folgenden Hauptcode hoch (Farberkennungsprogramm).

//-- -- -- -- 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 //-- -- -- -- -- -- -- -- -- -- -- //

Schritt 5: Ersetzen Sie im obigen Code die Werte durch Ihre Werte, die Sie kürzlich notiert haben:

//--------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---------//

Wenn Sie das rot gefärbte Papier auf den Sensor legen, erhalten Sie drei Messwerte, z. B. R = 56 | G = 78 | B = 38.

Platzieren Sie die Werte 56, 78, 38 wie folgt:

// Für ROTE Farbe:
int Rx1 = 56
int Gx1 = 78
int Bx1 = 38

Ebenso für andere zwei Farben und laden Sie den Code hoch.

Schritt 6:

• Öffnen Sie den seriellen Monitor und platzieren Sie eine der drei Farben vor dem Sensor.
• Sie sehen die Erkennung von Farben auf dem seriellen Monitor, während gleichzeitig das entsprechende Farbrelais aktiviert wird.

• Sie müssen die Reset-Taste auf der Arduino-Karte drücken, um das Relais zu deaktivieren.

HINWEIS 1: Die Schaltung erkennt die Farben möglicherweise nicht, wenn Sie nach der Kalibrierung einen etwas anderen Farbton von ROTEN, GRÜNEN, BLAUEN farbigen Objekten / Papieren verwenden. Mit anderen Worten, Sie müssen genau das gleiche farbige Objekt / Papier verwenden, um Farben zu erkennen und das Relais auszulösen.

HINWEIS 2: Umgebungslicht kann die Farberkennung beeinträchtigen. Achten Sie daher beim Kalibrieren und auch beim Erkennen von Farben auf ein gleichmäßiges Licht in der Nähe des Sensors.

Prototyp des Autors:

Prototyp eines Arduino-Farbsensors

Wenn Sie Fragen zu diesem Projekt haben, geben Sie diese bitte im Kommentarbereich an. Möglicherweise erhalten Sie eine schnelle Antwort.




Zurück: Verwenden von TSOP17XX-Sensoren mit benutzerdefinierten Frequenzen Weiter: Mehrfach-Batterieladekreis mit Dump-Kondensator