Photo Interrupter
En Photo Interrupter består i alt sin enkelhed af en infrarød lysdiode, der lyser fra den ene side af gaflen over på en Photo Transistor der sidder i den anden side af gaflen. På denne måde kan Photo transistoren registrere om lysstrålen brydes af et objekt der føres ind i gaflen.
Denne type OS25B10 er indkøbt ved Seeedstudio.com[1]
Opkobling af Photo Interrupter
For at få den infrarøde lysdiode til at lyse, så kobles der en modstand til f.x. +5V.
Photo transistorens Emitter kobles til stel og fra dens Collector kobles en modstand op til +5V som vist her.
Her er et diagram, hvor Arduinoen indgår:
Komponent-størrelser
Ved at eksperimentere med modstandene kan man komme frem til at 10 k som collector-modstand R2 er en passende størrelse, det gør at Photo Interrupteren ikke bliver påvirket af omgivelsernes lys særligt let.
Som det fremgår af diagrammet, så vil en formodstand til dioden på 1k virke. Det giver en strøm i lysdioden på ca. 4 mA, hvilket i en typisk opstilling vil være fint.
Når lysstrålen ikke brydes, så vil photo-transistoren være tændt, og spændingen på Output vil ligge på ca. 0,2V. Brydes lysstrålen ved at placere noget der ikke kan gennemtrænges af lys nede i gaflen, så stiget spændingen på collector til 4,95 V.
For at arbejde med lidt større sikkerhed kan man anvende en 680 ohm i stedet til lysdiodens formodstand, så stiger strømforbruget til 5,66 mA, og collector-spændingen falder helt ned på 0,18 V.
Hvis man vil følge databladet, så skal man faktisk arbejde med en lysdiode-strøm på 20 mA, hvilket man får med en 180 ohms modstand. Dette vil med sikkerhed kunne give 0,5 mA i collector på photo-transistoren, som der skal til en 10 k collectormodstand.
Kodeeksempel
Der vises her et kodeeksempel, hvor man læser værdien fra photogaten. Den analoge værdi viser hvor meget lys, der kommer igennem på en skal fra 0-1023, hvor 0 er meget lys og 1023 er meget mørk. Den digitale værdi giver HØJ, hvis der kommer lidt/ingen lys igennem. Den giver LAV, hvis der kommer lys igennem.
Programmet her udskriver værdierne ud.
void setup() {
int pin = 0;
pinMode(pin, INPUT);
Serial.begin(9600);
}
int inputa; //analoge værdi
bool inputd; //digital værdi
void loop() {
inputa = analogRead(A0);
inputd = digitalRead(3);
Serial.print("Analog input: ");
Serial.print(inputa);
Serial.print(", digitalt input: ");
Serial.println(inputd);
delay(1000);
}
Normalt vil det ikke være nødvendigt at aflæse med en analog indgang, den analoge aflæsning tager længere tid, og sammenligningen om der er noget der bryder tager også længere tid. I alle normale anvendelser af Photo Interrupteren vil det være fint at bruge et digitalt input.
Test af koden
En test af koden viser at koden fungerer, og den viser både de analoge og digitale værdier - det skal bemærkes at det digitale input svarer med lav når der sættes noget ned i gaflen og høj når der IKKE er noget i gaflen.
Henvisninger