SI04 RGB senzor

Kategorie: SI (inteligentní senzor)

RGB senzor SI04 je I2C senzor schopný rozpoznať farbu svetla odrazeného od objektu. Základom SI04 je integrovaný prevodník intenzity osvetlenia na frekvenciu TAOS TCS230D. Prevodník je kvôli dosiahnutiu lepších výsledkov merania doplnený o optiku, ktorá sústreďuje odrazené svetlo priamo na čip prevodníka. Taktiež je doplnený o dve biele LED, ktoré osvetľujú snímanú plochu.

TCS230D je tvorený poľom fotodiód a prevodníkom I/f (prúd/frekvencia). Pole fotodiód je rozdelené na štyri skupiny po 16 kusov. Jedna skupina obsahuje fotodiódy s modrým filtrom, druhá so zeleným filtrom, tretia s červeným filtrom a štvrtá skupina nemá farebný filter. Fotodiódy v jednotlivých blokoch sú zapojené paralelne. Zmenou intenzity dopadajúceho svetla príslušnej farby sa mení prúd pretekajúci blokom fotodiód. Veľkosť prúdu pretekajúceho blokom fotodiód ovplyvňuje výstupnú frekvenciu TCS230D. v jednom momente môže byť aktívny len jeden blok fotodiód. To, ktorý blok je aktívny určuje logická úroveň na vstupoch S2 a S3.

Frekvenčný výstup prevodníka TCS230D je pripojený k vstupu jednočipového mikropočítača ATmega48PA (AVR), ktorý túto frekvenciu meria a prepočítava na jednotlivé zložky modelu RGB. AVR riadi aj prepínanie blokov fotodiód, a komunikuje s nadradeným systémom prostredníctvom rozhrania I2C. Prepočet nameranej frekvencie na jednotlivé zložky RGB robí AVR podľa technickej dokumentácie výrobcu a podľa internej kalibrácie, ktorú je potrebné vykonať pred každým meraním.

Základné parametre senzora SI04 sú zhrnuté v nasledujúcej tabuľke:

Parametr Hodnota Jednotka
Napájecí napětí 5 V
Odběr <30 mA
Měřicí rozsah 0–255 (R,G,B)
Pracovní teplota –40 .. 75 °C

Ke stažení

SKP model: 
PDF dokumentace: 

Příklad Java

/*
 * Příklad RGBSensorExample vypisuje v nekonečné smyčce s periodou 200 milisekund
 * naměřené hodnoty barevných složek do konzole.
 */
package jBotBrain2.RGBSensorExample;

import jBotBrain2.hw.*;
import jBotBrain2.sensors.RGBSensor;

public class RGBSensorExampleMain {
    public static void main(String[] args) throws InterruptedException {
        Led.GREEN1.set(Led.MODE_BLINK, 300);
        RGBSensor rgb = new RGBSensor();
        int r, g, b, a;
        while (true) {
            r = rgb.getR();
            g = rgb.getG();
            b = rgb.getB();
            a = rgb.getA();
            System.out.print("Barva v RGBA: (" + r + ", " + g + ", " + b + ", "+a+")    \r");
            Thread.sleep(200);
    }
}
}