Archiv verlassen und diese Seite im Standarddesign anzeigen : Suche Hilfe zu Farberkennungsprojekt
lollemann
10.01.2008, 12:11
Guten Hallo an alle,
im Rahmen meiner Ausbildung muss ich ein Projekt abgeben und brauche dafür ein wenig Hilfe.
Und zwar habe ich vor eine "einfache" Farberkennung zu realisieren.
Habe dabei folgende Vorstellung:
Mit einem selbstgebauten Sensor (z.B. http://www.robotroom.com/ColorSensor.html ) soll das Objekt abgetastet werden.
Das Signal soll anschließend über eine Schnittstelle an den PC übergeben werden und mit C++ ausgewertet werden.
Meine Frage ist jetzt
1) ob der im Link vorgestellte Sensor geeignet ist oder ob es andere Möglichkeiten gibt.
2) wie eine Schnittstelle zu realisieren ist.
3) ob es bereits Programme für C++ gibt, mit denen man sowas realisieren könnte
Schonmal danke, kann jede Hilfe gebrauchen.
molleonair
10.01.2008, 18:29
Der Sensor ist natürlich mit der ensprechenden Hardware schon geeignet.
Natürlich fehlt dir nun die Hardware genau diese ist der Knackpunkt.
Um deine Aufgabe zu erfüllen könntest du den Sensor sowie die Leds an einen Mikroprozessor hängen.Dieser hat auch in den meisten Fällen eine Serielle Schnittstelle onboard ZB Atmel Atmega. Die LED werden nacheinander angeschaltet und jeweils die reflektierte Lichstärke vom Sensor an den Prozessor weitergegeben (Spannung) der Prozzie wandelt mit einem Analog-Digital-wandler die gemessene Lichtstärken der einzeln Farben in Digitale Daten um die du dann in der Software des Prozzie weiterverarbeiten und zur Schnittstelle weitergeben mußt.
ganz easy oder?
Frank E.
10.01.2008, 18:51
Natürlich ist das Ein- und Ausschalten von farbigen LEDs ziemlich einfach, aber wenn es nicht nur ein Demo-Projekt, sondern etwas Ernsthaftes werden soll, dann würde ich zu einem Glühlämpchen und 3 Sensoren (z.B. Fotowiderstände) raten.
Der Grund ist die spektrale Schmalbandigkeit der LEDs. Es ist druchaus möglich, dass du z.B. einen Gegenstand vor den Sensor hältst, der für dich rot aussieht, trotzdem liefert der Sensor nur Mist ...
Wenn es nur ein Demo-Projektt ist, empfehle ich dringend für die Vorführung, vorher getestete Farbträger zu verwenden.
Frank
Besserwessi
10.01.2008, 19:57
Das Prinzip ist schon recht gut. Man sollte aber eventuell ein paar mehr (wenigstens 4 = blau,gruen,gelb,rot) LEDs nehmen, so das sich keine deutliche Lücke im Spektrum mehr ergibt. Die LEDs sollte man so ausrichten, das das Licht schräg einfällt und senkrecht gemessen wird. So wie das da dargestellt ist, kommt auch viel glänzend reflectieres Licht auf den Sensor. Als Sensor wäre eventuell auch ein Phototransistor oder eine Photodiode besser geeignet, da besser linear.
Ich habe gerade einen ähnlichen Sensor mit 10 LEDs aufgebaut, allerdings mit dem Ziel sehr feine Farbunterschiede zu erkennen. Funktioniert eigentlich schon ganz gut, man kann z.B. durchaus Vorder- und Rückseite von manchem weissen Papier unterscheiden. Es fehlt aber noch etwas Abgleich und Software.
lollemann
14.01.2008, 08:39
Um deine Aufgabe zu erfüllen könntest du den Sensor sowie die Leds an einen Mikroprozessor hängen. Dieser hat auch in den meisten Fällen eine Serielle Schnittstelle onboard ZB Atmel Atmega.
Die Sache klingt schon sinnvoll. Habe gerade mal geschaut und es gibt von dem Mikroprozessor einige Modele. Könntest du mir nen Tipp geben, welchen man verwenden könnte?
molleonair
14.01.2008, 21:05
Also die meisten hier verwenden die Atmel Modelle mit dem Atmega 8 hast du einen kostengünstigen und leistungsfähigen Prozessor
kostenlose c-compiler oder eine basic entwicklungsumgebung gibts auch dafür
schau mal in den RN-Wissen Bereich
lollemann
15.01.2008, 10:30
Hi Leute, erstmal danke nochmal für die antworten bisher.
Den Sensorkopf habe ich jetzt fertiggestellt und erste Messwerte sind vorhanden.
Jetzt steht das nächste Problem an...
Und zwar stellt sich mir die Frage wie jetzt die eigentliche Farberkennung funktioniert.
Ich meine mit den Messwerten habe ich jetzt die Spannungen je LED / Untergrund, aber im moment ist das doch nichts anderes als ein Graustufenabgleich.
Was muss ich mit den Daten machen, um die Farbe zuordnen zu können?
Nächste Sache:
Für die Schnittstelle zum PC haben wir uns jetzt für das digitale Messgerät M-4650CR von Voltcraft.
Dieses lässt sich nämlich direkt über eine Parallelschnittstelle an einen PC anschließen.
So haben wir die Schnittstelle und das Messgerät mit einem Streich abgehakt.
Meint Ihr das ist eine gute Idee?
Besserwessi
15.01.2008, 18:11
Es sollte mit jeder LED einzeln und ganz ohne LED gemessen werden. Von den gemessenen Intensitäten mit den LEDs wird jeweils der Wert ohne LED abgezogen. Damit hat man 3 Werte die für die 3 Farben der LEDs stehen. Am besten teilt man die Werte dann noch durch die Werte die man für eine weisse Probe erhalt. Für andersfarbige Proben erhält man dann 3 Werte zwischen 0 und 1. Für eine Zuordning zu Farbnamen kann man dann z.B. die Farbdarstellungen für die aditive Farbmischung nehmen, wo am Rand die reinen Wellenlängen um in der Mitte weiss ist. In grober Näherung hat man halt die 3 Farben der LEDs anhand der Werte von 0 bis 1 gemischt. Für die Darstellung der Farben gibt es aber sehr viele verschiedene Möglichkeiten
Wenn man als sensor einen LDR hat, wird da etwas komlizierter, denn der LDR ist siehmlich nichtlinear und man muss die LDR werte erst anhand der Kennlinien wenigstens halbwegs linearisieren. Außerdem sollte man dann darauf achten den Untergrund möglicht klein zu halten.
Das Multimeter ist für einen ersten Test schon ganz gut, aber man muß ja immer noch die LEDs umschalten. Das könnte man vom PC aus über den Paralelport steuern. Die alternative ist halt der Controller, der dann das umschalten und digitalisieren übernimmt, die Daten kann man dann per Serieller Schnittstelle übertragen.
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.