TCS3200 Farbsensor einlesen (Netduino)
Das Licht leuchtet hier in verschiedenen Farben. Mit Hilfe des TCS3200 Sensor, können die verschiedenen Farben gemessen werden. Anders als bei einem lichtempfindlichen Sensor, an dem sich der Leitwert verändert, liegt ein Pulssignal an. Für die Schaltung werden insgesamt fünf Digitale Ports und zwei Pins für die Spannungsversorgung benötigt.
Wenn mal kein Breadboard zur verfügung steht, geht das auch so wie im folgendem Bild. Die Pins von S0 bis S3 und OUT auf die digitalen Ausgängen von Pin 2 bis Pin 6 steckt.
Wie die Schaltung bereits verrät, ist das einlesen deutlich anders. Anstatt über OneWire , I²C oder eines Spannungspegel, kommt ein PWM (oder auch PPM) Signal. Je nach Farbe müssen die Anschlüsse von S0 bis S3 entsprechend geschaltet sein. Das bedeutet wiederum, dass die Farben nacheinander gemessen werden. Im .NET Micro Framework gibt es zum Einlesen die Klasse "InteruptPort", mit der auf das PWM Signal reagiert werden kann. Das erfordert etwas zusätzlichen Programmcode.
// Optionen für Ausgangsfrequenz // Filter Auswahl public class Program // Ruft die gemessene Zeit ab, // S0 und S1 Schaltet die Ausgangs frequenz entsprechend ein (Siehe dazu Datasheet) // S2 und S3 Schaltet die verschiedenen Filter Möglichkeiten ein // Die Onboard LED als Status Aktivität private static string _readColorName = string.Empty; private static bool _valueIsSet = false; public static void Main() while (true) // Farben nach einander einlesen. // Ausgabe über die Messergebnisse. // Status warten // Methode mit Filter- und Ausgangsfrequenzschalten und gibt das Ergebnis über "result" zurück. // Filter einstellen // Member für das erfassen des Messergebnisses. // Event zuweisen // Warten // Event wieder abziehen // Wird ausgeführt, wenn sich der Pegel am Digitalen Port geändert hat. |
Als Ausgangsergebnis werden vier Werte wiedergegeben. Wenn nun vor dem Sensor eine Farbige Fläche mit einer der Grundfarben gehalten wird, dann verändern sich die Werte dementsprechend. Stammt die Farbe von einem Bildschirm (wie im folgenden Bild von einem Smart Phone), dann kann der Blaue Jumper herausgezogen werden, um die LED Beleuchtung abzustellen.
Bei grob angemalten Flächen wie dieser Karteikarte funktioniert es weniger gut..
Anhand der Farbe stellen sich die Werte neu ein. Je ein deutiger die Farbe ist, um so deutlicher zeigt sich das Ergebnis.
Also bei durch gehenhenden Blau, Grün oder Rot zeigt sich ein hoher Wert. Wenn die Farbfläche jedoch wie bei meinem Beispiel mit der Karteikarte durchgeführt wird, stehen an jeden Ausgang relativ hohe Werte.
Noch ein Hinweis. Die Pulslänge wird kürzer, wenn der Weg des reflecktierten Licht kürzer wird, oder salobt gesagt, wenn die Farbfläche zu nah am Sensor ist, dann ist das Pulssignal sehr kurz. Dies führt dann dazu, dass die letzte Methode sehr häufig ausgeführt wird. Im schlimmsten Fall kommt es zu einem Speicherüberlauf und das Programm bleibt stehen.
Beispiel Programm zum Herunterladen für Netduino mit .NET Micro Framework 4.2
Kommentare