Den heutigen Blogbeitrag wollen wir nutzen um unser TCS Farb-Sensor Modul vorzustellen. Die Funktionsweise ist schnell erklärt, in der Mitte der Platine befindet sich ein Fotosensor mit 64 Dioden bzw. Pixel, davon 16 ohne Filter und jeweils 16 mit roten, blauen oder grünen Farbfiltern. Die 4 5mm Leds dienen dazu, das zu scannende Objekt möglichst gleichmäßig und neutral zu beleuchten. Praxistipp: zur Messung sollten Sie Umgebungslicht bzw. Streulicht vermeiden da dies die Ergebnisse verfälschen kann. Je nach Einsatzbereich ist es manchmal hilfreich den Fotosensor mithilfe eines kleinen Röhrchens abzuschirmen um konstante Werte zu erhalten.
Die Ausgabe des ICs ist ein Rechtecksignal proportional zur jeweiligen Wellenlänge. S0 und S1 skalieren die Frequenz des Ausgangssignals, S2 und S3 dient zur Abfrage der R- / B- / G- und W-Werte.OE schaltet das Modul ein bzw. aus (enable active low)
Die Verkabelung:
Der Code:
const int s0 = 8; //Pins const int s1 = 9; const int s2 = 12; const int s3 = 11; const int out = 10; int red = 0; // Var int green = 0; int blue = 0; void setup() { Serial.begin(115200); pinMode(s0, OUTPUT); pinMode(s1, OUTPUT); pinMode(s2, OUTPUT); pinMode(s3, OUTPUT); pinMode(out, INPUT); digitalWrite(s0, HIGH); //set mode digitalWrite(s1, HIGH); } void loop() { color(); Serial.print("red = "); Serial.print(red, DEC); Serial.print(" green = "); Serial.print(green, DEC); Serial.print(" blue = "); Serial.print(blue, DEC); if (red < blue && red < green && red < 20) //red filter { Serial.println(" – (red color detected)"); } else if (blue < red && blue < green) //blue filter { Serial.println(" – (blue color detected)"); } else if (green < red && green < blue) //green filter { Serial.println(" – (green color detected)"); } else { Serial.println(); } delay(400); } void color() { digitalWrite(s2, LOW); digitalWrite(s3, LOW); red = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH); digitalWrite(s3, HIGH); blue = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH); digitalWrite(s2, HIGH); green = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH); }
Je nachdem wo das Modul verbaut wird ist es u.U. nötig den Farbfilter anzupassen.
Somit steht Ihrer M&Ms-Sortier-Maschine nichts mehr im Weg :-)
Übrigens haben wir auch Servos & Schrittmotortreiber
2 comments
AndreasK
Hallo, ich arbeite im Druckgewerbe. Dort ist der Einsatz von so genannten Spektralphotometern an der Tagesordnung. Nachteil: Die Finger sind richtig teuer und verschleißen mit der Zeit. Gibt der verwendete Chip eine exakte Messung her? Oder wie konstant misst er?
Ich denke, daraus kann man was machen.
RalfK
Also so eine M&M Sortiermaschine wäre schon ein Cooles Projekt :)