Ist eine spezifische Farberfassung auf wirtschaftliche Weise ohne Verwendung der Kamera- / Bilderkennung möglich?

7

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).

icarus74
quelle
Würden Sie Infrarot in Betracht ziehen? Es ist billig und nicht leicht anfällig für Geräusche wie sichtbares Licht.
JeeShen Lee
@JeeShenLee - Sie möchten Blau mit IR erkennen? Und es gibt auch IR-Rauschen. Haben Sie sich jemals den Ausgang eines IR-Empfängermoduls ohne Eingangssignal angesehen?
Stevenvh
@stevenvh, ich schlug eine andere Option als blaues Licht vor. Nach meinem Verständnis ist die Dynamik des sichtbaren Lichts zu groß, um zuverlässig erfasst zu werden (aufgrund der Intensität, des Farbtons und nicht zu vergessen, dass das Licht aus der Umgebung auch blaue Strahlen enthält).
JeeShen Lee
@JeeShenLee - Soweit ich weiß, ist die Substanz blau, andere Farben reichen nicht aus. Ich kann mich irren.
Stevenvh
@stevenvh, in der Tat ist das Objekt blau. In Zukunft muss ich möglicherweise andere Farben erkennen, aber das ist für später und würde es vorziehen, die Dinge vorerst einfach zu halten.
icarus74

Antworten:

7

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:

Farbsensor

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.

Oli Glaser
quelle
3
Wenn Sie nur 1 G Widerstände haben, können Sie drei davon parallel verwenden :-)Ω
Stevenvh
Ich denke nicht, dass die Schaltung funktioniert. Wenn der Ausgang> 0 V ist, macht der Strom der LED den invertierenden Eingang> nicht invertierend, und der Ausgang geht einfach auf Null. Ich erinnere mich auch vage an Dinge wie "Offset-Spannung" und "Eingangsvorspannungsstrom" :-(
stevenvh
@Steven - Es handelt sich um einen einfachen Transimpedanzverstärker (Dual Rail), der das Konzept veranschaulichen soll. Benötigt möglicherweise eine Feinabstimmung. Ich werde ein paar App-Notizen hinzufügen. Ich erinnere mich, dass ich eine gute mache, sie aber scheinbar nicht finde.
Oli Glaser
3
Die LED erzeugt (Rückwärts-) Strom, wenn das Licht darauf scheint - sie wirkt als Fotodiode. Nur zur Überprüfung der Gesundheit habe ich die obige Schaltung zusammengesetzt (mit einem MCP6021 und einer zufälligen LED) und es funktioniert einwandfrei. Ich habe einen 10-Meg-Widerstand mit 100pF parallel verwendet.
Oli Glaser
2
Ich mag die allgemeine Einfachheit (und ich glaube als Ergebnis - die geringen Kosten) dieser Schaltung wirklich.
icarus74
5

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:

Geben Sie hier die Bildbeschreibung ein

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.

stevenvh
quelle
Danke @stevenvh. Dies kommt meiner Vorstellung auf einer sehr abstrakten Ebene am nächsten. Zwei weitere Fragen: [Q1] Kann der Filter + die Fotodiode des Fotografen leicht durch eine einzelne (oder eine Reihe von) Fotodiode (n) mit eingebautem Filter ersetzt werden, wie von Russell in seiner Antwort vorgeschlagen? [Q2] Bei einem batteriebetriebenen Stromkreis (12 V) könnte ich die -5 V an den -ve-Anschluss der Batterie anschließen, GND für Operationsverstärker mit 6 V (Spannungsteiler) und + 5 V Operationsverstärker, um + ve Anschluss von zu sagen Batterie. Recht ?
icarus74
@ icarus74 - Der Fotodioden + Filter ist wie Russells TCS3210, aber nur mit dem blauen und klaren Kanal. Im Datenblatt des TCS3210 sehen Sie, dass Blau auch Infrarot erkennt. Sie müssen alle vier Kanäle verarbeiten, um die tatsächlichen blauen Daten zu erhalten. Das fotografische Filter kann stärker auf die interessierenden Wellenlängen beschränkt sein. [Q2]: Ja.
Stevenvh
4

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:

  1. Der Fotodetektor muss natürlich für alle (3) verwendeten Lichtfarben empfindlich sein.
  2. Es kann einige Zeit dauern, bis sich der Fotodetektor nach dem Umschalten der LEDs stabilisiert hat, bevor genaue Messwerte erhalten werden können. Beispielsweise sind Fotowiderstände normalerweise relativ langsam. Für eine akzeptable Genauigkeit können Minuten bis Hunderte von Millisekunden erforderlich sein, für die genauesten Werte Minuten.
  3. Sobald die Hardware eingerichtet ist, kann sie einfach auf die interessierenden Oberflächenfarben kalibriert werden, indem einfach jeweils eine Probe gemessen wird. Auf diese Weise müssen keine Anstrengungen unternommen werden, um die genauen Wellenlängenverteilungen oder die relative Helligkeit der LEDs oder die relative Empfindlichkeit des Sensors für diese Wellenlängen zu bestimmen.
  4. Vor dem tatsächlichen Gebrauch kann eine Normalisierung der Messwerte erforderlich sein. Um beispielsweise Streulicht von außen zu kompensieren, kann eine weitere Messung bei ausgeschalteten LEDs durchgeführt werden, und das Ergebnis wird dann von den Werten abgezogen, die gemessen werden, wenn die LED leuchtet. Im Allgemeinen ist der für jede Farbkomponente gemessene Absolutwert von geringerer Bedeutung als der relative Unterschied zwischen ihnen.

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

JimmyB
quelle
Vielen Dank. Auf jeden Fall einen Versuch wert, und besonders dann, wenn ich einen etwas breiteren Farbsatz erkennen möchte. Ich bin mir jedoch nicht sicher, ob ich die Physik hinter diesem Prinzip verstehe. Eine einfache Fotodiode / ein einfacher Fotowiderstand würde nur die Intensität erfassen, und ich denke, dass für jedes von R, B, G die gleiche Intensität angegeben werden kann. Ich frage mich also, wie das funktionieren wird.
icarus74
Bitte sehen Sie meine Bearbeitung und lassen Sie uns wissen, wenn etwas noch nicht klar ist.
JimmyB
3

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

  • Die programmierbaren Farb-Licht-Frequenz-Wandler TCS3200 und TCS3210, die konfigurierbare Silizium-Fotodioden und einen Strom-Frequenz-Wandler auf einer einzigen integrierten monolithischen CMOS-Schaltung kombinieren.
    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

  • Der Aptina® MT9P031 ist ein 1 / 2,5-Zoll-CMOS-Aktivpixel-Digitalbildsensor mit einem aktiven Bildpixelarray von 2592H x 1944V. Es enthält ausgefeilte Kamerafunktionen auf dem Chip wie Fenster-, Spalten- und Zeilensprungmodus und Schnappschussmodus. Es ist über eine einfache serielle Zweidrahtschnittstelle programmierbar.
Russell McMahon
quelle
Danke Russell. Ich bin mir nicht sicher, ob es sich um die Formatierung handelt, aber ich kann nicht klar erkennen, ob es sich um 3 Optionen mit 3 Details oder nur um 2 Optionen handelt. Aus Kostengründen kann ich mir den Photodioden-Array-Ansatz leisten. Ich frage mich jedoch, ob ich bei der Bestimmung der Objektfarbe wirklich viel Genauigkeit gewinnen würde, wenn ich eine einzelne Fotodiode im Vergleich zu einem Array von 4x6 oder 8x8 hätte. Ich denke schon, würde aber gerne von anderen hören.
icarus74
@ icarus74 - Antwort aktualisiert.
Russell McMahon