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

Arduino-Farberkennung

Komponenten und Verbrauchsmaterialien

Arduino Nano R3
× 1
Farberkennung des Farbsensormoduls
× 1
Adafruit Standard LCD - 16x2 Weiß auf Blau
× 1
Breadboard (generisch)
× 1

Apps und Onlinedienste

Arduino-IDE

Über dieses Projekt

Projekt

Dies ist ein einfaches Tutorial, in dem wir untersuchen, wie Farben mit Arduino und Sensoren wie dem TCS 3200 gelesen werden. Die Idee besteht darin, eine Objektfarbe zu erkennen und auf einem LCD anzuzeigen. Dieses Projekt ist eine Komponente eines größeren Projekts, bei dem es sich um einen Roboterarm handelt, der basierend auf der Farbe eines Objekts eine geeignete Aktion auswählt. Das obige Blockdiagramm zeigt die Hauptkomponenten.

Das Video unten zeigt die Arbeit des endgültigen Projekts:

Schritt 1:Stückliste

Die untenstehenden Links und der Preis dienen nur als Referenz.

  • Arduino Nano (€ 8,00)
  • TCS3200 Farbsensormodul (US$ 9.00)
  • IIC/I2C/TWI 1602 Serielles LCD-Modul mit blauer Hintergrundbeleuchtung (8,00 US-Dollar)
  • Breadboard (2,00 USD)
  • Kabel

Schritt 2:Der TSC 3200 Farbsensor

Wie in seinem Datenblatt beschrieben, ist der TCS3200 ein programmierbarer Farblicht-Frequenz-Wandler, der konfigurierbare Silizium-Fotodioden und einen Strom-Frequenz-Wandler auf einer einzigen monolithischen integrierten CMOS-Schaltung kombiniert.

Die Ausgabe ist eine Rechteckwelle (50% Arbeitszyklus) mit einer Frequenz, die direkt proportional zur Lichtintensität (Bestrahlungsstärke) ist. Die Full-Scale-Ausgangsfrequenz kann über zwei Steuereingangspins (S0 und S1) auf einen von drei voreingestellten Werten skaliert werden. Digitale Eingänge und digitaler Ausgang ermöglichen eine direkte Schnittstelle zu einem Mikrocontroller oder anderen Logikschaltungen.

Output enable (OE) versetzt den Ausgang in den hochohmigen Zustand für die gemeinsame Nutzung mehrerer Einheiten einer Mikrocontroller-Eingangsleitung. Beim TCS3200 liest der Licht-Frequenz-Wandler ein 8 x 8-Array von Photodioden.

  • Sechzehn Fotodioden haben Blaufilter
  • 16 Fotodioden haben Grünfilter
  • 16 Fotodioden haben Rotfilter
  • 16 Fotodioden sind ohne Filter klar.

Die Pins S2 und S3 werden verwendet, um auszuwählen, welche Gruppe von Fotodioden (rot, grün, blau, klar) aktiv ist. Fotodioden sind 110 µm x 110 µm groß und befinden sich auf 134 µm Zentren.

Der OE (Enable) sollte mit GND (LOW) verbunden werden.

Der Sensor ist gekapselt und sollte zwischen 2,7 und 5,5 VDC gespeist werden. Wir werden den 5V Arduino-Ausgang verwenden, um den Sensor mit Strom zu versorgen. Um den Sensor richtig nutzen zu können, installieren wir einen kleinen Gummiring, um den Sensor vor seitlichem Licht zu isolieren. Ich habe Heißkleber verwendet, um es zu reparieren.

Schritt 3:Anschließen der HW

Schließen Sie den TSC3200-Sensor wie folgt an:

  • S0 ==> Nano-Pin D4
  • S1 ==> Nano-Pin D5
  • S2 ==> Nano-Pin D6
  • S3 ==> Nano-Pin D7
  • OUT ==> Nano-Pin D8
  • DE ==> GND
  • VCC ==> +5V
  • GND ==> GND

Schließen Sie das serielle I2C-LCD-2/16-Display an:

  • SDA ==> Nano-Pin A4
  • SCL ==> Nano-Pin A5

Installieren Sie den Arduino Nano auf dem BreadBoard. Verbinden Sie den Nano 5V-Ausgang und GND an beiden Stromschienen.

Schritt 4:Der Arduino-Code

Als erstes muss die Frequenzskalierung wie in der oben gezeigten Tabelle definiert werden. Dafür werden die Pins S0 und S1 verwendet. Die Skalierung der Ausgangsfrequenz ist nützlich, um die Sensormesswerte für verschiedene Frequenzzähler oder Mikrocontroller zu optimieren. Wir werden S0 und S1 beide auf HIGH (100%) setzen:

 digitalWrite(s0,HIGH); digitalWrite(s1,HIGH); 

Als nächstes müssen Sie die Farbe auswählen, die von der Fotodiode gelesen werden soll (Rot, Grün oder Blau), dafür verwenden wir die Steuerpins S2 und S3. Da die Fotodioden parallel geschaltet sind, können Sie durch Einstellen von S2 und S3 LOW und HIGH in verschiedenen Kombinationen verschiedene Fotodioden auswählen, wie in der obigen Tabelle gezeigt.

 digitalWrite(s2, LOW); digitalWrite(s3, LOW); rot =pulseIn (outPin, LOW); // Lesen der ROTEN Komponente der Farbe DigitalWrite (s2, HIGH); digitalWrite (s3, HIGH); grn =pulseIn (outPin, LOW); // Lesen der GRÜNEN Komponente der Farbe DigitalWrite (s2, LOW); digitalWrite (s3, HIGH); blu =pulseIn (outPin, LOW); // BLAUE Farbkomponente lesen 

Beim endgültigen Code werden wir jede der RGB-Komponenten einige Male lesen und einen Durchschnitt nehmen, damit wir den Fehler reduzieren können, wenn einer der Messwerte schlecht ist.

Sobald wir die 3 Komponenten (RGB) haben, müssen wir definieren, welche Farbe das ist. Der Weg, dies zu tun, um das Projekt zuvor zu kalibrieren. Sie können ein bekanntes farbiges Testpapier oder Objekt verwenden und die 3 generierten Komponenten lesen.

Sie können mit meinem beginnen und die Parameter für Ihre Lichtstärke ändern:

void getColor(){readRGB(); if (rot> 8 &&rot <18 &&grn> 9 &&grn <19 &&blu> 8 &&blu <16) color ="WEISS"; else if (rot> 80 &&rot <125 &&grn> 90 &&grn <125 &&blu> 80 &&blu <125) color ="SCHWARZ"; else if (rot> 12 &&rot <30 &&grn> 40 &&grn <70 &&blu> 33 &&blu <70) color ="RED"; else if (rot> 50 &&rot <95 &&grn> 35 &&grn <70 &&blu> 45 &&blu <85) color ="GRÜN"; else if (rot> 10 &&rot <20 &&grn> 10 &&grn <25 &&blu> 20 &&blu <38) color ="GELB"; else if (rot> 65 &&rot <125 &&grn> 65 &&grn <115 &&blu> 32 &&blu <65) color ="BLUE"; else color ="NO_COLOR";} 

Wie Sie oben sehen können, habe ich 6 Farben vordefiniert:Weiß, Schwarz, Rot, Grün, Gelb und Blau. Wenn das Umgebungslicht nachlässt, werden die Parameter tendenziell höher.

Innerhalb der Schleife () definiere ich die Anzeigewerte auf dem LCD jede 1 Sekunde.

Den vollständigen Code finden Sie auf meinem GitHub.

Schritt 5:Fazit

Wie immer hoffe ich, dass dieses Projekt anderen helfen kann, sich in der aufregenden Welt der Elektronik, Robotik und des IoT zurechtzufinden!

Bitte besuchen Sie meinen GitHub für aktualisierte Dateien:Color Detector

Für weitere Projekte besuchen Sie bitte meinen Blog:MJRoBot.org

Saludos aus dem Süden der Welt!

Wir sehen uns bei meinem nächsten Tutorial!

Danke,

Marcelo

Code

  • Code-Snippet 2
  • Code-Snippet #3
Code-Snippet #2Klartext
 digitalWrite(s2, LOW); digitalWrite(s3, LOW); rot =pulseIn (outPin, LOW); // Lesen der ROTEN Komponente der Farbe DigitalWrite (s2, HIGH); digitalWrite (s3, HIGH); grn =pulseIn (outPin, LOW); // Lesen der GRÜNEN Komponente der Farbe DigitalWrite (s2, LOW); digitalWrite (s3, HIGH); blu =pulseIn (outPin, LOW); // Lesen der BLAUEN Farbkomponente
Code-Snippet #3Kurztext
void getColor(){readRGB(); if (rot> 8 &&rot <18 &&grn> 9 &&grn <19 &&blu> 8 &&blu <16) color ="WEISS"; else if (rot> 80 &&rot <125 &&grn> 90 &&grn <125 &&blu> 80 &&blu <125) color ="SCHWARZ"; else if (rot> 12 &&rot <30 &&grn> 40 &&grn <70 &&blu> 33 &&blu <70) color ="RED"; else if (rot> 50 &&rot <95 &&grn> 35 &&grn <70 &&blu> 45 &&blu <85) color ="GRÜN"; else if (rot> 10 &&rot <20 &&grn> 10 &&grn <25 &&blu> 20 &&blu <38) color ="GELB"; else if (rot> 65 &&rot <125 &&grn> 65 &&grn <115 &&blu> 32 &&blu <65) color ="BLUE"; else color ="NO_COLOR";}
Github
https://github.com/Mjrovai/Farbdetektorhttps://github.com/Mjrovai/Farbdetektor

Schaltpläne

Hw
https://github.com/Mjrovai/Color-Detector/blob/master/Color%20Detector.fzz

Herstellungsprozess

  1. Erstellen von Monitor-Ambilight mit Arduino
  2. Arduino Pong-Spiel - OLED-Display
  3. Audiofrequenzdetektor
  4. Arduino Tamagotchi Klon - Digitales Haustier
  5. Wireless Lichtschalter-Manipulator
  6. Tech-TicTacToe
  7. Bewegungssensor-Wasserpistole
  8. Arduino-Countdown-Timer
  9. Arduino RGB-Farbmischer
  10. Arduino Sunflower:Eine elektronische Sonnentänzerin