Ich verstehe zwar, dass die Farberfassung mit Kamera und Prozessor mit ausreichender Leistung, auf der die Bildhistogrammlogik (oder andere solche Algorithmen) ausgeführt wird, das Vorhandensein bestimmter Farben ziemlich zuverlässig bestimmen kann.
Gibt es jedoch andere, wesentlich kostengünstigere Mechanismen, um das Vorhandensein / Fehlen bestimmter Farben (oder ihrer engen Farbtöne) im Nahbereich mithilfe 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 (einen hellblauen Farbton) in einem kleinen Bereich im Nahbereich erkennen muss.
Bearbeitet: Mit "Nahbereich" meine ich etwas zwischen 1 und 5 cm, obwohl dies keine sehr strenge Anforderung ist. Ich dachte relativ "nah", dh es gibt keine direkte Bestrahlung von der Lichtquelle zum Sensor, eine Art Doppelrohr, so dass nur reflektiertes Licht auf den Sensor trifft. Die Nähe ist also eine Funktion der Platzierung des physischen Sensors, und ich bin offen für Vorschläge (einschließlich vollständig alternativer / orthogonaler Ansätze).
Antworten:
Da als Fotodioden verwendete LEDs am empfindlichsten für die Farbe sind, die sie während des normalen Betriebs abgeben, kann ein grundlegender Farbsensor unter Verwendung der LED in umgekehrter Richtung und eines Operationsverstärkers hergestellt werden:
Die obige Schaltung stammt von dieser Seite . Dies kann auch umgekehrt erfolgen - ein detaillierterer Blick auf die Farberfassung mit LEDs und Lichtsensoren finden Sie hier - auf dieser Seite werden Details mit einem normalen Lichtsensor und verschiedenen Farb-LEDs beschrieben.
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 der LED ändern, um die Reaktionszeit / Empfindlichkeit zu ändern.
quelle
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 Laborsachen, genau wie der Preis: 300 Dollar.
Wenn Sie sich mit weniger zufrieden geben können, würde ich vorschlagen, auch einen fotografischen Filter zu verwenden . Verwenden Sie einen Fototransistor mit einer breiten spektralen Empfindlichkeit, insbesondere im Bereich von 400 nm, und vergleichen Sie den Messwert mit und ohne Blaufilter. Wenn die Farbe des Objekts blau ist, gibt es weniger Unterschiede beim Lesen als beispielsweise bei einem roten Objekt. Sie müssen auch einen Versatz berücksichtigen, da der Filter kein 100% iges Licht durchlässt, selbst wenn er blau ist.
Wenn der Filter beispielsweise um 3 dB gedämpft wird (Fotografen sprechen von Blenden), wird ein blauer Messwert ohne Filter von 1 V mit dem Filter zu 0,7 V. Wenn die Farbe rot ist, ergibt ein 1-V-Messwert ohne Filter mit dem Filter wahrscheinlich etwa 0,4 V.
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 sein muss, die negativer ist als der nichtinvertierende Eingang. Ich finde eine überraschende Anzahl von Schaltkreisen im Netz, in 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.
quelle
Ein sehr einfacher Ansatz zur Bestimmung der Farbe einer Oberfläche besteht darin, eine Fotodiode oder einen Fotowiderstand und eine Anzahl (3, wie beispielsweise in RGB) von LEDs unterschiedlicher Farben zu verwenden, um die Oberfläche zu beleuchten.
Dann wird in einer Zeitmultiplex-Weise jede der LEDs nacheinander für sich eingeschaltet, um die Oberfläche zu beleuchten, und die Intensität des reflektierten Lichts wird für jede von ihnen gemessen.
Beispiel: Wenn drei LEDs verwendet werden, eine rote, eine grüne und eine blaue, ergeben sich drei Reflexionsintensitätswerte, einer für jede Farbkomponente, die zusammen nach einer möglichen Normalisierung eine numerische Annäherung an die Farbe der Oberfläche ergeben des RGB-Raums (was natürlich von den spezifischen Wellenlängenverteilungen der LEDs abhängt).
(Der Einfachheit halber werde ich im Folgenden das RGB-Dreifarben-Beispielsetup verwenden, aber es kann eine beliebige Anzahl von 1 bis n verschiedenfarbiger Lichtquellen verwendet werden. Je mehr verschiedene Farben verwendet werden, desto genauer kann die Farbe der Oberfläche bestimmt werden.)
Das Prinzip ist das gleiche wie beim Chip einer Kamera: Die Intensitäten der roten, blauen und grünen Komponenten des einfallenden Lichts werden unabhängig voneinander gemessen und die Kombination der drei Intensitäten bestimmt die Farbe. In der Kamera befindet sich für jede dieser drei Grundfarben ein 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 daher 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 spielt es für Ihre Wahrnehmung keine Rolle, ob Sie Ihre blau getönte Sonnenbrille aufsetzen oder stattdessen eine Blaulichtquelle 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 vorhanden ist Licht wird reflektiert. Abhängig von der Farbe der Oberfläche sind die Intensitäten für die verschiedenen Lichtfarben (Wellenlängen) unterschiedlich.
In jedem Fall erhalten Sie drei Intensitätswerte, von denen jeder die Intensität eines bestimmten Teils des Farbspektrums bestimmt. Jede vollständige Messung ergibt somit ein Triplett (r, g, b), das die gemessene Farbe bestimmt. Wie in der Computergrafik steht das Triplett (0,0,0) für völlige Dunkelheit, schwarz; (1,1,1) ist das hellste Weiß und jede Kombination (r, g, b), wobei r == g == b einen Grauton darstellt. Alle anderen möglichen Kombinationen identifizieren einen markanten Punkt im RGB-Raum und definieren die gemessene Farbe. (0,5,0,0) ist zum Beispiel etwas mittelrot und (0,9,0,9,0) ist etwas relativ hellgelb usw ..
Hinweis:
Einige zufällige Seiten mit praktischen Informationen zum Thema:
http://www.societyofrobots.com/sensors_color.shtml
http://www.instructables.com/id/Color-Detection-Using-RGB-LED/#step1
http://letsmakerobots.com/node/23768
quelle
Es gibt eine beträchtliche Anzahl von ICs, die diese Aufgabe mit unterschiedlichen Fähigkeiten ausführen. 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 (bei Digikey nicht auf Lager) ist der Avago ADJD-S311-CR999
(2) Darüber befinden sich kleine Anordnungen von Fotodioden mit RGB-Filtern und möglicherweise auch ungefilterten Zellen. Beispiel unten.
(3) Am oberen Ende befinden sich Vollfarbkamera-ICs zu recht vernünftigen Preisen. Beispiel unten.
Einfach und günstig - analoger Rechteckwellenausgang auf RGB-Luminanzkanälen.
Für ca. 3,50 USD auf Lager in 1 / s bei Digikey - 24 oder 64 Fotodioden, angeordnet in 4 verschachtelte Gruppen - jeweils 25% der R-, G-, B- und Clear-Filter.
Die Preise gelten für den größeren IC. Datenblatt hier
Der Ausgang ist eine Rechteckwelle (50% Tastverhältnis) mit einer Frequenz, die direkt proportional zur Lichtintensität (Bestrahlungsstärke) ist.
Die vollständige Ausgangsfrequenz kann über zwei Steuereingangspins mit einem von drei voreingestellten Werten skaliert werden. Digitale Eingänge und digitaler Ausgang ermöglichen eine direkte Schnittstelle zu einem Mikrocontroller oder einer anderen Logikschaltung. Die Ausgangsfreigabe (OE) versetzt den Ausgang in den hochohmigen Zustand für die gemeinsame Nutzung einer Mikrocontroller-Eingangsleitung durch mehrere Einheiten.
Im TCS3200 liest der Licht-Frequenz-Wandler ein 8 × 8-Array von Fotodioden. 16 Fotodioden haben Blaufilter, 16 Fotodioden haben Grünfilter, 16 Fotodioden haben Rotfilter und 16 Fotodioden sind klar ohne Filter.
Im TCS3210 liest der Licht-Frequenz-Wandler ein 4 × 6-Array von Fotodioden. Sechs Fotodioden haben Blaufilter, 6 Fotodioden haben Grünfilter, 6 Fotodioden haben Rotfilter und 6 Fotodioden sind klar ohne Filter.
Die vier Arten (Farben) von Fotodioden sind miteinander verzahnt, um den Effekt der Ungleichmäßigkeit der einfallenden Bestrahlungsstärke zu minimieren. Alle gleichfarbigen Fotodioden sind parallel geschaltet. Mit den Pins S2 und S3 wird ausgewählt, welche Gruppe von Fotodioden (rot, grün, blau, klar) aktiv ist. Fotodioden haben eine Größe von 110 μm × 110 μm und befinden sich in Zentren von 134 μm.
Etwas teurer. Komplexer. Weitaus fähiger.
Für 18 US-Dollar auf Lager bei Digikey erhalten Sie einen vollständigen 5-Mp-RGB-Farbkamerasensor - 2592 x 1944 x 14 fps oder VGA mit 53 fps. Dies sollte Ihren Anforderungen entsprechen [tm].
Datenblatt hier
quelle