Testen/berekenen van ruis op sensor met LED en transistor
Met deze opstelling gaan we na of dat we onze line-follower kunnen laten
werken met een 'LED-sensor'. We gaan uitzoeken wat de ruis is op de
10bit-schaal van de arduino. We sluiten de led in sper aan naar de
transistor die de sperstroom of opgewekte spanning door lichtinval zal
versterken. Aan de emitter wordt een weerstand aangesloten, de A0pin van
de arduino komt ook aan de emitter. Zie schema Om de weerkaatsing van het licht op het blad te kunnen maken, gebruiken we een witte led.
Zwart
Wit
Min.
Gem.
Max.
Min.
Gem.
Max.
Verschil
Met R=330k
Groene led
232
253,5
275
829
856
883
602,5
We komen een verschil tussen de
gemiddelden van 602,5 uit. Op onze schaal van 1023(10b) is dit voldoende.
Berekenen ruis:
278 - 217=
43
883 - 829=
54
43/602,5 =
7,14
%
54/602,5 =
8,96
%
Gem. ruis=
8,05
%
Programma arduino: const int sensorPin = A0; // pin that the sensor is attached to int sensorValue = 0; // the sensor value
void setup() { Serial.begin(9600); analogReference(INTERNAL1V1); // analoge pin op 1.1 Volt; }
Test van de communicatie met een infrarood fotodiode
Is een fotodiode (IR) genoeg voor communicatie?
·
Testopstelling
·
Wat testen?
o
Zichthoek
o
Maximum afstand van uitlezing
·
Zichthoek
We stellen vast dat de zicht hoek aan vaartbaar is.
90° van het detectie vlak.
·
Maximum afstand van uitlezing
Bij deze test plaatsen we de kniperende IR led (1s aan 1s
uit) tegen de fotodiode en vergroten de afstand tussen de twee voor iedere
cyclus van de led. 1 cm/cyclus
Hello world!
Goodbye world! 0
Cm
Hello world!
Goodbye world! 1
Cm
Hello world!
Goodbye world! 2
Cm
Goodbye world!
Hello world!
Goodbye world! 3
Cm
Hello world!
Goodbye world! 4
Cm
Goodbye world!
Goodbye world! 5
Cm
Goodbye world!
Goodbye world! 5
Cm
Goodbye world!
·
Besluit
Een fotodiode leest niet van een vergenoegen afstand uit.
Voor de communicatie moet een IR recepteur gebruikt worden met een IR led als
emitter.
void loop() {
digitalWrite(12, HIGH); // set the LED on
delay(500);
if (digitalRead(7)==HIGH)
{
Serial.println("Hello
world!");
}
delay(500);
digitalWrite(12, LOW); // set the LED off
delay(500);
if (digitalRead(7)==LOW)
{
Serial.println("Goodbye
world!");
}
delay(500);
}
// return TIMER2 TOP value per given desired frequency (Hz) uint8_t timer2top(unsigned long freq) { return((byte)((unsigned long)SYSCLOCK/2/freq) - 1) ; }