Proefopstelling CNY70
Voor de eerste proefopstelling heb ik één CNY70 aangesloten op mijn arduino om eens te gaan kijken welke waardes er binnen zouden komen op de microcontroller.
De CNY70 bestaat uit een infrarood LEDje en een
fototransistor in één behuizing. Ook zit er op de voorkant een laagje dat een
groot deel van normaal “daglicht” weg filtert. Als dus de IF-LED aan staat word
er een deel van de licht weer teruggekaatst en door de fototransistor
opgevangen waardoor er meer stroom gaat lopen van Emitter naar Collector.
Als voorbeeld heb ik onderstaand schema gebruikt voor het
aansluiten van de CNY70 op de arduino:
Op dit schema is de IF-LED via een 220 ohm weerstandje
aangesloten op de +5v van de arduino.
De fototransistor is via een spanningdeling aangesloten
op een analoge ingang van de arduino.
Op die manier krijgt de arduino een nette 0 – 5 volt
binnen afhankelijk van de hoeveelheid ligt die op de fototransistor valt.
Via de Seriële monitor is op een computerscherm exact af
te lezen hoeveel spanning er binnen komt. Dit gaat met een precisie van 0 tot 1023 (0 – 5v).
Verder vond ik het handig om ook zonder computer een
indicatie te hebben van de meetwaarden dus besloot ik 10 LED’s op de uitgangen
aan te sluiten die via een comperrator oplichten bij een bepaalde waarde.
Ook heb ik een voltmetertje aangesloten op de analoge
ingang van de arduino om te kunnen monitoren welke spanning er aanwezig is.
Tot slot leek het me handig om nog een potmeter in te
bouwen die ervoor zorgt dat als de auto zich in een lichte ruimte bevindt de
waarden een beetje kunnen worden aangepast.
Monitor analoge
inganswaarden:
Programma arduino:
int x = 10; // meetsnelheid
int sensor = A0; // fototransistor
int potm = A1; //
potmeter 10K
int schakelaar = 1; //
drukknop
int IFled = 2; // infraroodLED
int a = 3; // indicatieLED
a
int b = 4; //
indicatieLED b
int c = 5; ; // indicatieLED c
int d = 6; //
indicatieLED d
int e = 7; //
indicatieLED e
int f = 8; // indicatieLED
f
int g = 9; //
indicatieLED g
int h = 10; // indicatieLED h
int i = 11; // indicatieLED i
int j = 12; // indicatieLED j
void setup(){
pinMode(sensor, INPUT);
pinMode(potm, INPUT);
pinMode(schakelaar, INPUT);
pinMode(IFled, OUTPUT);
pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
pinMode(h, OUTPUT);
pinMode(i, OUTPUT);
pinMode(j, OUTPUT);
Serial.begin(9600); //Seriele monitor baudrate
}
void loop (){
if (schakelaar = HIGH) {digitalWrite(IFled,
HIGH);}
if (schakelaar = LOW) {digitalWrite(IFled,
LOW);}
int sensorValue = analogRead(A0);
int potmValue = analogRead(A1);
int combiValue = (sensorValue);
// print sensorValue op de seriele monitor:
Serial.println(combiValue);
delay(x);
if (combiValue < 1000) {digitalWrite(a,
HIGH);}
if (combiValue > 1000) {digitalWrite(a,
LOW); }
if (combiValue < 900) {digitalWrite(b,
HIGH);}
if (combiValue > 900) {digitalWrite(b,
LOW); }
if (combiValue < 800) {digitalWrite(c,
HIGH);}
if (combiValue > 800) {digitalWrite(c,
LOW); }
if (combiValue < 700) {digitalWrite(d,
HIGH);}
if (combiValue > 700) {digitalWrite(d,
LOW); }
if (combiValue < 600) {digitalWrite(e,
HIGH);}
if (combiValue > 600) {digitalWrite(e,
LOW); }
if (combiValue < 500) {digitalWrite(f,
HIGH);}
if (combiValue > 500) {digitalWrite(f,
LOW); }
if (combiValue < 400) {digitalWrite(g,
HIGH);}
if (combiValue > 400) {digitalWrite(g,
LOW); }
if (combiValue < 300) {digitalWrite(h,
HIGH);}
if (combiValue > 300) {digitalWrite(h,
LOW); }
if (combiValue < 200) {digitalWrite(i,
HIGH);}
if (combiValue > 200) {digitalWrite(i,
LOW); }
if (combiValue < 100) {digitalWrite(j,
HIGH);}
if (combiValue > 100) {digitalWrite(j,
LOW); }
}
Testen
Vervolgens was het tijd om het zooitje maar eens te gaan
testen.
Ik besloot een kleurenstrookje te nemen en eens te kijken
welke waarde nou bij welke kleur binnenkwam. Dit zijn mijn resultaten:
Blauw:
|
85
|
Groen:
|
70
|
Geel:
|
62
|
Rood:
|
90
|
Zwart:
|
777
|
Wit:
|
59
|
Wat mij hierbij vooral opvalt, is dat eigenlijk zwart
verreweg het meeste contrast heeft in verhouding tot de rest van de kleuren.
Mijn hypothese was dat wit vrijwel alles terug zou kaatsen en de andere kleuren
juist veel zouden opnemen. Uit bovenstaande resultaten blijkt dus dat ik het
verkeerd had. We kunnen dus overwegen om een zwarte streep te kiezen i.p.v. een
witte om zo een duidelijker verschil te hebben in analoge meetwaarden.
Geen opmerkingen:
Een reactie posten