SI05 Senzor čáry

Kategorie: SI (inteligentní senzor)

Čiarový senzor SI05 bol navrhnutý pre potreby navigácie mobilných robotov po farebnej čiare na kontrastnom podklade (napríklad čierna čiara a biely podklad). Na sledovanie čiary používa senzor SI05 päť reflexných optočlenov QRD1114. Reflexný optočlen obsahuje v jednom puzdre vysielaciu infračervenú LED, a infračervený fototranzistor. SI05 je riadený jednočipovým mikropočítačom ATmega48PA (AVR) a komunikuje s nadradeným systémom prostredníctvom rozhrania I2C.

Snímací cyklus začína rozsvietením LED reflexných optočlenov. Infračervené svetlo sa odrazí od povrchu na dopadne na fototranzistor. Podľa intenzity odrazeného svetla sa mení kolektorový prúd fototranzistora, ktorý je napájaný cez pull-up rezistor. Intenzita odrazeného svetla závisí na vlastnostiach povrchu – farba, lesk, materiál. Kolektor fototranzistora je pripojený k vstupu A/D prevodníka, ktorý na záver meracieho cyklu odmeria napätie na kolektoroch všetkých piatich reflexných optočlenov. Podľa veľkosti napätia na jednotlivých kolektoroch, a podľa úvodnej kalibrácie podľa čiary a podkladu vie senzor „povedať“, či sa daný optočlen nachádza nad čiarou, alebo nad podkladom.

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

Parametr Hodnota Jednotka
Napájecí napětí 5 V
Odběr <100 mA
Pracovní teplota –40 .. 85 °C

Ke stažení

SKP model: 
PDF dokumentace: 

Příklad Java

/*
 * Příklad LineSensorExample zkalibruje senzor a vypisuje v nekonečné smyčce s periodou
 * 200 milisekund naměřenou polohu čáry v procentech do konzole.
 */
package LineSensorExample;

import jBotBrain2.hw.*;
import jBotBrain2.sensors.LineSensor;

public class LineSensorExampleMain {
    public static void main(String[] args) throws InterruptedException {
        Led.GREEN1.set(Led.MODE_BLINK, 300);

        LineSensor line = new LineSensor();
        System.out.println("Polozte senzor nad cernou");
        System.out.println("a stisknete tlacitko S2:");
        Button.S2.waitForPress();
        line.calibrate(LineSensor.CALIBRATE_BLACK);

        System.out.println("\nPolozte senzor nad bilou");
        System.out.println("a stisknete tlacitko S2:");
        Button.S2.waitForPress();
        line.calibrate(LineSensor.CALIBRATE_WHITE);
        System.out.println("");
        int percent = 0;

        while (true) {
            percent = line.getValue() / 40;
            System.out.print("Poloha cary: " + percent + " %       \r");
            Thread.sleep(200);
        }
    }
}