Author Topic: Grove - I2C Color Sensor  (Read 11362 times)

House

  • freakyfriday
  • Jr. Member
  • *
  • Posts: 95
  • Karma: +1/-0
    • Hausammann-Dekor
Grove - I2C Color Sensor
« on: May 15, 2014, 10:37:45 AM »
Hallo zusammen,

Kann mir jemand beim Grove I2C Color Sensor von Seed Studio weiter helfen? Ich habe den Beispiel Code mal auf meinen Arduino raufgeladen, die Ausgabe im Terminal funktioniert einwandfrei, jedoch kann ich nichts mit den "RGB-Werten"(hab irgendwo im Netz was von RAW RGB Wertausgabe gelesen) anfangen, da diese wie auf der Seed Studio Page, alle im Werte über 255 liegen. Da steht etwas, im oberen bereich der Produkte-Page von 16-Bit analog-digital converter, hat das was mit meiner Terminalausgabe zu tun? Ist diese in 16-Bit?  Auch mit dem "Clear Channel Value" und dem x und y weiss ich noch nicht viel anzufangen. Für mich wäre es schon schön Rot, Grün und Blau im 8-Bit-Format, resp. im 0 - 255 Wertebereich vorliegen zu haben. Kann mir da jemand weiter helfen?

MfG P. Hausammann

MathiasW

  • Global Moderator
  • Hero Member
  • *****
  • Posts: 614
  • Karma: +13/-0
    • my Arduino page
Re: Grove - I2C Color Sensor
« Reply #1 on: May 15, 2014, 01:18:44 PM »
Salut,

ich habe mich vor etwa einem helben Jahr damit beschäftigt. Die Daten müssen kalibriert und umgerechnet werden. Ich erinnere mich, dass die von Seeed verwendete Transformation mathematisch und physikalisch falsch war (bei mir war immer alles Rot ...) Ich muss heute Abend mal nach dem Code suchen ...

Ciao, Mathias

pylon

  • freakyfriday
  • Full Member
  • *
  • Posts: 158
  • Karma: +16/-0
Re: Grove - I2C Color Sensor
« Reply #2 on: May 15, 2014, 02:00:25 PM »
Ich bin auch kein Farbsystem-Experte, aber ich weiss zumindest, dass es Unterschiede zwischen der additiven Farbmischung (farbiges Licht) und der subtraktiven Farbmischung (Licht, das von Farbpigmenten zurückgeworfen wird) gibt. Du möchtest mit dem Sensor den Farbwert einer Oberfläche erhalten (subtraktive Farbmischung), der Sensor kann aber nur das Licht analysieren (additive Farbmischung). Die beiden Systeme sind nur bedingt ineinander überführbar, was natürlich den Anwender massiv verwirrt.
Dein Sensor beleuchtet die Oberfläche mit einer Lichtquelle und misst dann, wieviel Licht im roten, grünen und blauen Spektrum zurückgeworfen wird. Dies wird mit einer Art Phototransistor gemacht, der von farbigen Filtern abgedeckt ist. Diese sind nur in den verschiedenen Farben unterschedlich empfindlich, womit sich Verschiebungen der Werte ergeben. Wenn Du Figure 5 auf Seite 7 des Datenblatts ansiehst, ist gut erkennbar, dass der Sensor z.B. im blauen Bereich deutlich weniger empfindlich ist als im roten.
Den Wert, den Du herauskriegst, kannst Du auch mit dem Gain-Register deutlich beeinflussen. Damit Du RGB-Werte mit je 8 Bit Auflösung erhältst, musst Du wahrscheinlich erst Tests machen und für bekannte Ausgabewerte die Sensorwerte erfassen. Mit etwas Glück ist die Beziehung linear und Du kannst einfach einen Korrekturfaktor nehmen.

House

  • freakyfriday
  • Jr. Member
  • *
  • Posts: 95
  • Karma: +1/-0
    • Hausammann-Dekor
Re: Grove - I2C Color Sensor
« Reply #3 on: May 19, 2014, 02:53:40 PM »
Danke erstmal für Eure Antworten! Ich bin leider noch nicht wahnsinnig weiter gekommen. Die Ausgabe der x- und y-Werte des Beispiel-Sketch, verglichen mit dem CIE 1931 Diagramm (auf der Seed Studio - Page) ergibt bei mir im Moment mehr oder weniger die korrekten Farbwerte, jedoch habe ich noch keine Softwarelösung gefunden, um ohne das Diagramm, Farben zuordnen zu können. Leider kommt es bei mir je nach Farbe immer wieder zu einem "Geberwert-Überfluss" (value overflow), was sich bei mir nur durch einen grösseren Abstand zum Messobjekt beheben lässt, mit der Folge, dass es natürlich dadurch zu Ungenauigkeiten der Messung kommt. Jedoch stimmen die gemessenen Werte grob mit den Diagramm-Farben überein. Werde also um weitere Versuche nicht herum kommen.

Grüsse P. Hausammann