Ich verstehe zwar, dass die Farberfassung mit Kamera und Prozessor mit ausreichender Leistung, die Bildhistogrammlogik (oder andere solche Algorithmen) ausführen, das Vorhandensein bestimmter Farben ziemlich zuverlässig bestimmen kann.
Gibt es jedoch andere, wesentlich kostengünstigere Mechanismen, um das Vorhandensein / Fehlen einer bestimmten Farbe (oder ihrer nahen Schattierungen) aus nächster Nähe unter Verwendung einfacherer / billigerer Sensoren und geringerer Rechenanforderungen zu bestimmen?
Ich vermute, dass Dinge wie pH-Sensoren oder andere chemische Sensoren solche Methoden verwenden könnten. In meinem Fall ist die Anwendung so, dass ich das Vorhandensein / Fehlen einer bestimmten Farbe (ein hellblauer Farbton) in einem kleinen Bereich aus nächster Nähe erkennen muss.
Bearbeitet: Mit "Nahbereich" meine ich etwas zwischen 1-5 cm, obwohl dies keine sehr strenge Anforderung ist. Ich dachte an "nah" relativ, dh es gibt keine direkte Bestrahlung von der Lichtquelle zum Sensor, eine Art Doppelfass, so dass nur reflektiertes Licht auf den Sensor trifft. Nähe ist also eine Funktion der physischen Sensorplatzierung, und ich bin offen für Vorschläge (einschließlich vollständig alternativer / orthogonaler Ansätze).
Da LEDs, die als Fotodioden verwendet werden, am empfindlichsten auf die Farbe reagieren, die sie während des normalen Betriebs emittieren, kann ein grundlegender Farbsensor mit der umgekehrten LED und einem Operationsverstärker hergestellt werden:
Die obige Schaltung stammt von dieser Seite . Es kann auch umgekehrt gemacht werden - ein viel detaillierterer Blick auf die Farberkennung mit LEDs und Lichtsensoren ist hier verfügbar - diese Seite beschreibt die Verwendung eines normalen Lichtsensors und LEDs mit verschiedenen Farben.
Ich konnte den in den Kommentaren erwähnten App-Hinweis nicht finden, aber diese Seite scheint eine ziemlich gründliche Behandlung des Themas Transimpedanzverstärker zu sein. Sie können die Vorspannung über die LED ändern, um die Reaktionszeit/Empfindlichkeit zu ändern.
Wenn Sie eine ganz bestimmte Farbe erkennen möchten, benötigen Sie einen Schmalbandfilter wie diesen 11-nm-Bandbreitenfilter von Edmund Optics. Die Produkte von EO sind wirklich hochpräzise Laborgeräte, und der Preis ist es auch: 300 Dollar.
Wenn Sie sich mit weniger zufrieden geben können, würde ich vorschlagen, einen fotografischen Filter zu verwenden . Verwenden Sie einen Fototransistor mit einer breiten spektralen Empfindlichkeit, insbesondere im Bereich von 400 nm, und vergleichen Sie die Messung mit und ohne Blaufilter. Wenn die Farbe des Objekts blau ist, ist der Unterschied beim Lesen geringer als beispielsweise bei einem roten Objekt. Sie müssen auch einen Versatz berücksichtigen, da der Filter nicht 100 % Licht durchlässt, selbst wenn es blau ist.
Wenn der Filter beispielsweise um 3 dB dämpft (Fotografen sprechen von Blenden), werden aus einem Blauwert ohne Filter von 1 V mit Filter 0,7 V. Wenn die Farbe rot ist, ergibt ein Messwert von 1 V ohne Filter wahrscheinlich etwa 0,4 V mit Filter.
Sie können den Strom der Fotodiode mit einem Vorwiderstand oder mit einem Opamp-Transimpedanzverstärker in eine Spannung umwandeln:
Beachten Sie, dass die Anode der Diode an eine Spannung gebunden werden muss, die negativer ist als der nicht invertierende Eingang. Ich finde überraschend viele Schaltungen im Netz, bei denen die Anode mit Masse verbunden ist. Da die Diode jedoch einen Spannungsabfall erzeugt, kann der Operationsverstärker den Ausgang nicht so regeln, dass die Eingänge gleich werden und der Ausgang gesättigt wird.
Ein sehr einfacher Ansatz zur Bestimmung der Farbe einer Oberfläche besteht darin, eine Fotodiode oder einen Fotowiderstand und eine Anzahl (z. B. 3 wie bei RGB) LEDs unterschiedlicher Farbe zu verwenden, um die Oberfläche zu beleuchten.
Dann wird jede der LEDs im Zeitmultiplexverfahren einzeln nacheinander eingeschaltet, um die Oberfläche zu beleuchten, und die Intensität des reflektierten Lichts wird für jede von ihnen gemessen.
Beispiel: Wenn Sie drei LEDs verwenden, eine rot, eine grün und eine blau, ergibt dies drei Reflexionsintensitätswerte, einen für jede Farbkomponente, die zusammen nach einer möglichen Normalisierung in irgendeiner Form eine numerische Annäherung an die Farbe der Oberfläche ergeben des RGB-Raums (der natürlich von den spezifischen Wellenlängenverteilungen der LEDs abhängt).
(Ich werde im Folgenden der Einfachheit halber den RGB-Dreifarben-Beispielaufbau verwenden, aber es kann eine beliebige Anzahl von 1 bis n unterschiedlich farbiger Lichtquellen verwendet werden; je mehr verschiedene Farben verwendet werden, desto genauer kann die Farbe der Oberfläche bestimmt werden.)
Das Prinzip ist dasselbe wie im Chip einer Kamera: Die Intensitäten der Rot-, Blau- und Grünanteile des einfallenden Lichts werden unabhängig voneinander gemessen und die Kombination der drei Intensitäten bestimmt die Farbe. In der Kamera gibt es für jede dieser drei Grundfarben einen Fotodetektor, so dass alle drei Intensitäten gleichzeitig gemessen werden können. Was dies kompliziert macht, ist, dass drei verschiedene Sensoren oder drei verschiedene Filter benötigt werden.
Der Vorschlag funktioniert also umgekehrt: Anstatt das Licht zu filtern, nachdem es von der Oberfläche reflektiert wurde, kann man das Licht auch „filtern“, bevor es auf die Oberfläche trifft; Grundsätzlich ist es für Ihre Wahrnehmung egal, ob Sie Ihre blau getönte Sonnenbrille aufsetzen oder stattdessen eine blaue Lichtquelle und keine Sonnenbrille verwenden.
Die für jede Farbkomponente (oder LED) gemessene Intensität des reflektierten Lichts ergibt einen (normalisierten) Wert im Bereich von [0,0, ..., 1,0], wobei 0,0 bedeutet, dass kein Licht reflektiert wird, und 1,0 bedeutet, dass eine maximale Menge reflektiert wird Licht wird reflektiert. Je nach Farbe der Oberfläche sind die Intensitäten für die verschiedenen Lichtfarben (Wellenlängen) unterschiedlich.
Sie erhalten jeweils drei Intensitätswerte, die jeweils die Intensität eines bestimmten Teils des Farbspektrums bestimmen. Jede vollständige Messung ergibt somit ein Triplett (r,g,b), das die gemessene Farbe bestimmt. Wie in der Computergrafik repräsentiert das Triplett (0,0,0) völlige Dunkelheit, schwarz; (1,1,1) ist das hellste Weiß, und jede Kombination (r,g,b) mit r == g == b steht für einen gewissen Grauton. Alle anderen möglichen Kombinationen identifizieren einen markanten Punkt im RGB-Raum, der die gemessene Farbe definiert. (0,5,0,0) ist zum Beispiel ein mittleres Rot und (0,9,0,9,0) ist ein relativ helles Gelb usw.
Notiz:
Einige zufällige Seiten mit 'hands on' zum Thema:
http://www.societyofrobots.com/sensors_color.shtml
http://www.instructables.com/id/Color-Detection-Using-RGB-LED/#step1
Es gibt eine beträchtliche Anzahl von ICs, die diese Aufgabe mit unterschiedlichen Fähigkeiten erfüllen. Ich werde den Bereich in 3 Teile aufteilen, aber es gibt absolut harte und schnelle Grenzen.
(1) Am unteren Ende befinden sich ICs mit effektiv einem einzelnen Diodensensor pro Farbe, RGB-Filtern und 3-Kanal-Ausgang.
Ein Beispiel (nicht auf Lager bei Digikey) ist der Avago ADJD-S311-CR999
(2) Darüber befinden sich kleine Arrays von Fotodioden mit RGB-Filtern und möglicherweise auch ungefilterten Zellen. Beispiel unten.
(3) Am oberen Ende stehen vollfarbige Kamera-ICs zu recht günstigen Preisen. Beispiel unten.
Einfach und günstig – analoge Rechteckwellenausgabe auf RGB-Luminanzkanälen.
Für etwa 3,50 $ auf Lager in 1/s bei Digikey – 24 oder 64 Fotodioden, angeordnet in 4 verschachtelten Gruppen – jeweils 25 % R-, G-, B- und Clear-Filter.
Die Preise gelten für den größeren IC. Datenblatt hier
Etwas teurer. Komplexer. Weitaus leistungsfähiger.
Für 18 US-Dollar auf Lager bei Digikey können Sie einen vollständigen 5-MP-RGB-"Farbkamera"-Sensor erhalten - 2592 x 1944 x 14 fps oder VGA mit 53 fps. Dies sollte Ihren Bedarf decken [tm].
Datenblatt hier
JeeShen Lee
stevenvh
JeeShen Lee
stevenvh
bdutta74
bdutta74