Unser Farbsensor TCS230 (ohne Bibliothek) - AZ-Delivery

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

ProduktvorstellungenSensoren

2 Kommentare

AndreasK

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

RalfK

Also so eine M&M Sortiermaschine wäre schon ein Cooles Projekt :)

Kommentar hinterlassen

Alle Kommentare werden von einem Moderator vor der Veröffentlichung überprüft

Empfohlene Blogbeiträge

  1. ESP32 jetzt über den Boardverwalter installieren - AZ-Delivery
  2. Internet-Radio mit dem ESP32 - UPDATE - AZ-Delivery
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1 - AZ-Delivery
  4. ESP32 - das Multitalent - AZ-Delivery