Farbe mit einer RGB_LED ausgeben

Hallo.
ich möchte ein colour detector bauen und habe ein Problem.
Ich detektiere mit einer RGB-Fotofilter eine farbiges Blatt und wandle den Strom, den ich von dieser FOTO Diode bekomme in eine Spannung um. diese Spannung (ADC) wert wandle ich mit einer MAP Funktion in ein PWM-Signal um. Mit diesen 3 PWM-Signalen Steuere ich eine RGB-LED an. diese zeigt mir jedoch (trotz richtigem PWM-Signal für jede farbe(r,g,b)) eine falsche farbe an.
wie kann ich das PWM-Signal so anpassen, dass meine RBG-LED die richtige farbe anzeigt.
MFG Tobi

Hallo
RGB dazu benötigst Du 3 Farbinformationen ,
Mit einer Fotodiode bekommst du nur die Helligkeit
Deine RGB Diode hat doch 4 Pins was hast du denn da angeschlossen

Hallo,
mal so ins Grobe gedacht. Du nimmst 3 Fotodioden und baust jeweils eine Glasscheibe als Filter rot , grün , blau, davor. (oder auch buntes transparentes Papier) , Dann bekommmst Du 3 analoge Spannungen die irgendwie halbwegs den drei Farbwerten entsprechen. damit könnte man eventuell was anfangen. Die drei Werte gehen dann jeweils als pwm Spannung auf die drei pins der RGB Led.
ob das aber so geht oder ob man das noch irgendwie verrechnen muss ???
Heinz

Um eine Farbe zu erkennen braucht man entwedeer Sensoren mit Farbfiltern oder man beleuchtet das Objekt mit verschiedenen Farben.
Ein Fotowiderstand ist der falsche Sensor.
Grüße Uwe

Ja genau mit der RGB-Fotodiode erhalte ich für jeden farbwert einen Strom. Diesen wandle ich mit einem Shunt-Widerstand in eine Spannung um. Diese verstärke ich mit einem OAmp. Mit diesen 3 spannungswerten ( jeweils für Rot, grün und blau) gehe ich auf die analog Pins des arduino.(0-1024)
Mit der map Funktion Mappe ich diesen adc wert zu einem PWM-wert um.
Dieser PWM Wert stimmt ganz gut mit mit einem RGB-farbrechner aus dem Internet über ein.
Wenn ich diesen PWM- wert aber nehme um die RGB led anzusteuern kommt eine ganz andere Farbe raus. Im Internet habe ich mal Gelesen, dass man das mit einer Gamma Funktion ausgleichen kann. Dies verstehe ich aber nicht .
Also deshalb die Frage :raising_hand_man:t3:

Hallo ja das habe ich. Meine Fotodiode gibt mir für jeden farbwert einen Strom aus. Den wandle ich in eine Spannung um. Diese Spannung Mappe ich von 0-1024 zu 0-255 um ein PWM Signal für die jeweiligen farbwerte zu erhalten. Nur ist es so das ich mit diesen PWM Signalen nicht die Farbe bekomme, die ich eigentlich haben sollte. Im Internet habe ich was von einer Gamma Funktion gelesen die das ausgleicht aber das verstehe ich nicht.

https://funduino.de/nr-07-farbsensor-am-arduino

Was hast Du denn nun? Fotowiderstans oder Fotodiode?

  1. wie falsche Farbe? Nimm mal Grundfarben (Rot Grün Blau) und Grundmischfarben.
    https://sv-artikel.de/images/product_images/popup_images/Farbkarte_1_1.jpg
  2. Weder ein Fotowiderstand noch eine Fotodiode sind linear.
    Grüße Uwe

ich habe eine fotodiode --> https://de.farnell.com/kingbright/kps-5130pd7c/fotodiode-farbsensor-0-85mm2/dp/2373479

in dem link kann er nur die grundfarben ausgeben. ich möchte aber mit meiner RGB-LED alle grundfarben inkl. Mischfarben anzeigen können. Bei den Mischfarben kommen trotz richtigen pwm Signal ( angenommen gelb -->r,g,b (235,234,81) nicht gelb an der RGB-LED raus sondern ürigend ein ganz heller weiß ton

Zeigt die RGB-LED bei 255,0,0 reines Rot, bei 0,255,0 Grün und bei 0,0,255 Blau? Skalieren die Farben gleichmäßig 0-255 oder ist Blau ggfs. früher heller als Rot und Grün?

Und dann ist da noch die Sache mit dem nichtlinearen Sehen: LED-Fading

ja genau bei 255,0,0 ist es ein reines rot, bei 0,255,0 ist es ein reines grün und bei 0,0,255 ist es ein reines blau. blau ist nicht direkt früher heller. Z.B dominiert die grüne Farbe gegenüber der blauen Farbe. (grün übertönt blau)

also die reinen Farben sind okay, aber sobald es eine mischfarbe ergibt kommen komische farben raus

Wie ist die RGB-LED angeschlossen? Hast du drei Vorwiderstände oder nur einen?

OK, also scheint deine LED korrekt angeschlossen zu sein :wink:

Bleibt noch die Sache mit der Nichtlinearität, an zwei Stellen: die LEDs könnten bei niedrigen PWM-Raten nicht linear reagieren, und die Sehempfindung ist logarithmisch, nimmt also geringe Helligkeiten stärker wahr.

für jede LED der RGB-led hab ich einen vorwiderstand

ja genau aber das verstehe ich nicht. bzw. habe ich schon ausprobiertaber funktioniert nicht :confused:

Hallo,
du brauchst sicher für jeden Farbkanal eine Umrechnungsfunktion. Ich würde jetzt mal so vorgehen.
Es gibt Farbpaletten im Internet bei denen die RGB Werte mit angegeben sind. Eventuell hast Du ein Programm am PC mit dem man das machen kann. Verwende Mischfarben. Vergleiche die gemessenen Sensorwerte damit. Dann testet Du die RGB LED und stellst die einzelnen RGB Werte der Farbpalette oder Tabelle ein und vergleichst sie mit den angezeigten Farbe der RGB LED. Verstell die RGB Werte so das die angezeigen Farbe am besten passt.
Dazu benötigst Du einen Sketch mit dem Du die RGB Werte über Poti oder Seriell eingeben kannst.
Letztlich bekommst Du eine Tabelle für jeden Farbkanal aus denen Du eine angepasste Funktion zum umrechnen machen kannst.
Heinz