- Erforderliche Komponenten
- Wie man das Chassis für den Farbsortier-Roboterarm herstellt
- TCS3200 Farbsensor
- Arduino Farbsortierer Schaltplan
- Programmierung von Arduino Uno zum Sortieren bunter Kugeln
Wie der Name schon sagt, besteht die Farbsortierung einfach darin, die Dinge nach ihrer Farbe zu sortieren. Es kann leicht gemacht werden, indem man es sieht, aber wenn es zu viele Dinge gibt, die sortiert werden müssen, und es sich wiederholt, sind automatische Farbsortiermaschinen sehr nützlich. Diese Maschinen verfügen über einen Farbsensor, mit dem die Farbe von Objekten erfasst werden kann. Nachdem der Farbservomotor erkannt wurde, greifen Sie nach dem Objekt und legen Sie es in die entsprechende Schachtel. Sie können in verschiedenen Anwendungsbereichen eingesetzt werden, in denen Farbidentifikation, Farbunterscheidung und Farbsortierung wichtig sind. Einige der Anwendungsbereiche umfassen die Landwirtschaftsindustrie (Getreidesortierung nach Farbe), die Lebensmittelindustrie, die Diamant- und Bergbauindustrie, das Recycling usw. Die Anwendungen sind nicht darauf beschränkt und können auf verschiedene Branchen angewendet werden.
Der beliebteste Sensor zur Erkennung der Farben ist der Farbsensor TCS3200. Wir haben zuvor den TCS3200-Sensor mit Arduino verwendet, um die RGB-Komponente (Rot, Grün, Blau) einer beliebigen Farbe zu erhalten, und sie auch mit Raspberry Pi verbunden, um die Farbe eines beliebigen Objekts zu erkennen.
Hier in diesem Tutorial werden wir eine Farbsortiermaschine mit einem Farbsensor TCS3200, einigen Servomotoren und einer Arduino-Platine herstellen. In diesem Tutorial werden farbige Kugeln sortiert und in der entsprechenden Farbbox aufbewahrt. Die Box befindet sich in der festen Position und der Servomotor wird verwendet, um die Sortiererhand zu bewegen, um den Ball in der entsprechenden Box zu halten.
Erforderliche Komponenten
- Arduino UNO
- TCS3200 Farbsensor
- Servomotor
- Jumper
- Steckbrett
Wie man das Chassis für den Farbsortier-Roboterarm herstellt
Für das komplette Setup einschließlich Chassis, Arm, Rolle, Pad haben wir das weiße Sunboard mit einer Dicke von 2 mm verwendet. Es ist leicht in den stationären Geschäften erhältlich. Wir haben das Sunboard Sheet mit einem Papierschneider geschnitten und FlexKwik oder FeviKwik zum Verbinden der verschiedenen Teile.
Im Folgenden finden Sie einige Schritte zum Erstellen des Farbsortierarms:
1) Nehmen Sie das Sunboard Sheet.
2) Schneiden Sie das Sunboard-Blatt in Stücke, nachdem Sie alle Seiten mit Skala und Markierung gemessen haben (siehe Abbildung).
3) Halten Sie nun die beiden Sunboard-Teile zusammen und gießen Sie einen Tropfen FeviKwik darauf, um die Teile zusammenzukleben. Verbinden Sie die Teile weiter, indem Sie der Abbildung folgen.
4) Nachdem alle Teile zusammengefügt wurden, sieht diese Farbsortiermaschine ungefähr so aus:
TCS3200 Farbsensor
TCS3200 ist ein Farbsensor, der mit der richtigen Programmierung beliebig viele Farben erkennen kann. TCS3200 enthält RGB-Arrays (Red Green Blue). Wie in der Abbildung auf mikroskopischer Ebene gezeigt, kann man die quadratischen Kästchen im Auge des Sensors sehen. Diese quadratischen Kästchen sind Arrays der RGB-Matrix. Jede dieser Boxen enthält drei Sensoren. Einer dient zum Erfassen der ROTEN Lichtintensität, einer zum Erfassen der GRÜNEN Lichtintensität und der letzte zum Erfassen der BLAUEN Lichtintensität.
Jedes der Sensorarrays in diesen drei Arrays wird je nach Anforderung separat ausgewählt. Daher ist es als programmierbarer Sensor bekannt. Das Modul kann so ausgestattet werden, dass es die jeweilige Farbe erkennt und die anderen verlässt. Es enthält Filter für diesen Auswahlzweck. Es gibt einen vierten Modus namens " Kein Filtermodus", in dem der Sensor weißes Licht erkennt.
Arduino Farbsortierer Schaltplan
Der Schaltplan für diesen Arduino-Farbsortierer ist recht einfach zu erstellen und erfordert nicht viele Verbindungen. Das Schema ist unten angegeben.
Dies ist die Schaltung hinter der Einrichtung der Farbsortiermaschine:
Programmierung von Arduino Uno zum Sortieren bunter Kugeln
Das Programmieren von Arduino UNO ist ziemlich einfach und erfordert eine einfache Logik, um die Schritte beim Sortieren von Farben zu vereinfachen. Das vollständige Programm mit einem Demonstrationsvideo finden Sie am Ende.
Da der Servomotor verwendet wird, ist die Servobibliothek ein wesentlicher Bestandteil des Programms. Hier verwenden wir zwei Servomotoren. Das erste Servo bewegt die farbigen Kugeln von der Ausgangsposition in die TCS3200-Detektorposition und dann in die Sortierposition, in die die Kugel fallen gelassen wird. Nach dem Bewegen in die Sortierposition lässt das zweite Servo den Ball mit seinem Arm auf den gewünschten Farbeimer fallen. Die vollständige Arbeit finden Sie im Video am Ende.
Der erste Schritt ist die vollständige Einbeziehung der Bibliothek und die Definition der Servovariablen.
#einschließen
Der Farbsensor TCS3200 kann ohne Bibliothek arbeiten, da nur die Frequenz vom Sensorstift abgelesen werden muss, um die Farbe zu bestimmen. Definieren Sie einfach die Pin-Nummern des TCS3200.
#define S0 4 #define S1 5 #define S2 7 #define S3 6 #define sensorOut 8 int frequenz = 0; int color = 0;
Stellen Sie die Auswahlstifte als Ausgang ein, da dadurch die Farbphotodiode hoch oder niedrig wird, und nehmen Sie den Ausgangspin des TCS3200 als Eingang. Der OUT-Pin liefert die Frequenz. Wählen Sie die Frequenzskalierung zunächst als 20%.
PinMode (S0, OUTPUT); PinMode (S1, OUTPUT); PinMode (S2, OUTPUT); PinMode (S3, OUTPUT); pinMode (sensorOut, INPUT); digitalWrite (S0, LOW); digitalWrite (S1, HIGH);
Die Servomotoren sind an Pin 9 und 10 von Arduino angeschlossen. Das Pickup-Servo, das die Farbkugeln aufnimmt, ist an Pin 9 angeschlossen, und das Drop-Servo, das die Farbkugeln entsprechend der Farbe fallen lässt, ist an Pin10 angeschlossen.
pickServo.attach (9); dropServo.attach (10);
Zu Beginn wird der Pick-Servomotor in die Ausgangsposition gebracht, die in diesem Fall 115 Grad beträgt. Es kann abweichen und kann entsprechend angepasst werden. Der Motor bewegt sich nach einiger Verzögerung zum Detektorbereich und wartet auf die Erkennung.
pickServo.write (115); Verzögerung (600); für (int i = 115; i> 65; i--) { pickServo.write (i); Verzögerung (2); } delay (500);
Der TCS 3200 liest die Farbe und gibt die Frequenz vom Out Pin an.
color = detectColor (); Verzögerung (1000);
Abhängig von der erkannten Farbe bewegt sich der Drop-Servomotor mit einem bestimmten Winkel und lässt den Farbball auf die entsprechende Box fallen.
Schalter (Farbe) { Fall 1: dropServo.write (50); Unterbrechung; Fall 2: dropServo.write (80); Unterbrechung; Fall 3: dropServo.write (110); Unterbrechung; Fall 4: dropServo.write (140); Unterbrechung; Fall 5: dropServo.write (170); Unterbrechung; Fall 0: Pause; } delay (500);
Der Servomotor kehrt in die Ausgangsposition zurück, damit der nächste Ball aufgenommen werden kann.
für (int i = 65; i> 29; i--) { pickServo.write (i); Verzögerung (2); } delay (300); für (int i = 29; i <115; i ++) { pickServo.write (i); Verzögerung (2); }}
Die Funktion DetectColor () wird verwendet, um die Frequenz zu messen und die Farbfrequenz zu vergleichen, um den Schluss der Farbe zu ziehen. Das Ergebnis wird auf dem seriellen Monitor gedruckt. Dann wird der Farbwert für Fälle zurückgegeben, in denen der Winkel des Drop-Servomotors verschoben werden soll.
int detectColor () {
Durch Schreiben in S2 und S3 (LOW, LOW) werden die roten Fotodioden aktiviert, um die Messwerte für die rote Farbdichte zu erfassen.
digitalWrite (S2, LOW); digitalWrite (S3, LOW); Frequenz = PulsIn (SensorOut, LOW); int R = Frequenz; Serial.print ("Red ="); Serial.print (Frequenz); // Drucken der ROTEN Farbfrequenz Serial.print (""); Verzögerung (50);
Durch Schreiben in S2 und S3 (LOW, HIGH) werden die blauen Fotodioden aktiviert, um die Messwerte für die blaue Farbdichte zu erfassen.
digitalWrite (S2, LOW); digitalWrite (S3, HIGH); Frequenz = PulsIn (SensorOut, LOW); int B = Frequenz; Serial.print ("Blue ="); Serial.print (Häufigkeit); Serial.println ("");
Durch Schreiben in S2 und S3 (HIGH, HIGH) werden die grünen Fotodioden aktiviert, um die Messwerte für die grüne Farbdichte zu erfassen.
digitalWrite (S2, HIGH); digitalWrite (S3, HIGH); // Ausgangsfrequenz lesen Frequenz = pulsIn (sensorOut, LOW); int G = Frequenz; Serial.print ("Green ="); Serial.print (Häufigkeit); Serial.print (""); Verzögerung (50);
Dann werden die Werte verglichen, um die Farbentscheidung zu treffen. Die Messwerte sind für verschiedene Versuchsanordnungen unterschiedlich, da der Erfassungsabstand bei der Einrichtung für jeden unterschiedlich ist.
if (R 22 & R 20 & G 29 & G 27) { color = 1; // Red Serial.print ("Erkannte Farbe ist ="); Serial.println ("RED"); } if (G 25 & G 22 & B 22 19) { color = 2; // Orange Serial.println ("Orange"); } if (R 21 & R 20 & G 28 & G 25) { color = 3; // Green Serial.print ("Erkannte Farbe ist ="); Serial.println ("GRÜN"); } if (R 38 & R 24 & G 44 & G 30) { color = 4; // Yellow Serial.print ("Erkannte Farbe ist ="); Serial.println ("GELB"); } if (G <29 & G> 27 & B <22 & B> 19) { Farbe = 5; // Blue Serial.print ("Erkannte Farbe ist ="); Serial.println ("BLAU"); }} Farbe zurückgeben; }}
Damit ist die Farbsortiermaschine mit TCS3200 und Arduino UNO fertig. Sie können es auch so programmieren, dass bei Bedarf weitere Farben erkannt werden. Wenn Sie Zweifel haben oder Vorschläge haben, schreiben Sie in unser Forum oder kommentieren Sie unten. Überprüfen Sie auch das Video unten.