User manual

33 34
5.3 A/D Umsetzer und lichtempndlicher Widerstand LDR
Der LDR03 ist ein lichtempndlicher Widerstand. Er verringert seinen Widerstand umso mehr, je heller er be-
leuchtet wird. In der Schaltung bildet er zusammen mit dem 10 KOhm Widerstand einen Spannungsteiler. Am
A/D-Umsetzer steht ein Wert von Vad = Rldr/(Rldr+R10k)*VBatt an. Wird der Widerstand kleiner, so wird auch
die Spannung am A/D-Umsetzer kleiner. Zu beachten ist noch, dass der A/D-Umsetzer des Arduinos maximal 5V
messen kann, bzw. die Spannung auf diesen Wert begrenzt. So fehlt ein kleiner Bereich wenn man den LDR
verdunkelt. Auf der Konsole werden die umgerechneten Widerstandswerte des LDR03 ausgegeben. Dazu wird
zunächst die Spannung berechnet und dann der Widerstand durch Umstellen der Standardformel (U=I*R). Den
Wert für die Batteriespannung kann man aus dem vorherigen Versuch übernehmen (bei uns 9.0V angenom-
men). Ab einem gemessenem Wert von 12.5k sind 5.0V am Wandlereingang erreicht, daher kann man keine
grösseren Werte messen und die Zahl der dargestellten Stellen ist natürlich übertrieben, die müsste noch an-
gepasst werden (Aufgabe für den Leser). Der Wandler hat „nur“ 10 Bit Auösung, damit ist 1/1024 der kleinste
Schritt, daraus ergibt sich die Anzahl der anzeigbaren Stellen.
+
-
9V
1A
LDR 03
SCLS DA
+9V
A0
A1
Tx
Rx
PD2
SCLKMOSI
PD3
PD 6
PD 4
PD 5
PD 7
A7
A3
A2
A6
NANO
to
Br ick`R`
3,3V 5V
USB
B0
SS
MISC
B1
C
// DE_10 AD Umsetzer und LDR03
// CTRL-SHIFT-M fuer
// seriell Port Monitor
// bzw. STRG und SHIFT und M
// druecken am PC !
#dene PORTAD0 0 // wir nehmen Kanal 0
// Die Ausgabe erfolgt am PC, spaeter
// werden wir noch Anzeige Bricks anschliessen
void setup() { // start
Serial.begin(9600); // die sogenannte BAUDRate
// damit werden die Daten an den PC übertragen
// 9600 Baud = 9600 Bits/Sekunde
}
void loop() { // Schleifenstart
int value; // AD Umsetzer Wert zwischenspeichern
double Vteiler,Rldr; // Spannung am Teiler, und Wid. LDR
value = analogRead(PORTAD0); // A0 einlesen
// Umrechnen value in Vteiler 5V und 1024 Schritte 0..1023
Vteiler = value * 5.0 / 1023.0; // dann Spannung am Teiler
// Umrechnen in Widerstandwert
// Batterie vorher messen (!) hier 9V angenommen
Rldr = (Vteiler*10000.0)/(9.0-Vteiler); // R LDR
Serial.print(Rldr); // Wert auf dem Terminal ausgeben
Serial.println(„Ohm „); // Text Ohm in doppelten Anfuehrungszeichen
}
Beispielausgabe:
5719.65Ohm
5534.00Ohm
5391.17Ohm
5719.65Ohm
5481.76Ohm
5416.95Ohm
5746.54Ohm
5442.80Ohm
5442.80Ohm
5733.08Ohm
5404.05Ohm
5507.83Ohm
Was passiert? Wenn das Terminal aktiviert ist, sollte man
dort eine Zeichenfolge auftauchen sehen z.B. „5719.65Ohm“,
die den gemessenen Widerstandswert des LDR03 anzeigt.
Der angezeigte Wert vergrößert sich bei geringerem Lichtein-
fall (Abdunkeln) und sinkt bei stärkerem Lichteinfall (Ta-
schenlampe)
ACHTUNG:
Terminal aktivieren!
Dazu beim Arduino Pro-
gramm, CTRL und SHIFT
und M drücken (CTRL=STRG
je nach Tastatur).
Dann poppt ein Fenster
hoch in dem die Infos
stehen.
Ggf. muss man die Bau-
drate im Terminalfenster
auf 9600 einstellen, so
daß diese mit unserer im
Programm übereinstimmt.