-
-
Moderator
Robotik Einstein
der AD wandler (ADC) wandelt einen spannungswert am eingang in einen zahenwert um.
nehmen wir das so, wie es in deiner zeichnung oben drin ist. reduziert auf das minimum kann man es doch so betrachten:
VCC (5V) -- 999Ω -- ADC-pin -- 2000Ω -- Masse
den 999er runden wir mal auf 1000Ω.
das was du hier siehst ist ein sogenannter spannungsteiler. die spannung in der mitte am adc pin zwischen den beiden widerständen ist:
VCC * R2 / (R1 + R2)
also:
5V * 2000Ω / (2000Ω + 1000Ω)
also etwa 3,3333V
der ADC misst nun diese 3,333V. dabei berücksichtigt er folgendes:
0V -> 0
VCC -> 1023
du kannst also den wert des adc auch berechnen nach folgender formel:
ADCWERT = MESSSPANNUNG * 1023 / VCC
also
ADCWERT = 3,333V * 1023 / 5V
also
ADCWERT = 682
(in diesem fall sogar ohne kommastellen. wenn kommastellen auftreten, werden diese IMMER abgerundet. 100,99999 wäre also 100 und nicht 101!)
diese zahl, 682 ist der vom prozessor berechnete wert für die spannung an seinem ADC-eingang.
dann schauen wir mal in die asuro.c, in diesem fall in die originale von der cd (habe gerade keine andere zur hand). Suche nach der funktion pollswitch. der obere teil ist "nur" dazu da, den ADC zu initialisieren und die messung zu starten. wichtig für uns ist die unterste zeile, bei dem return:
((unsigned char) ((( 1024.0/(float)i - 1.0)) * 61.0 + 0.5))
mithilfe dieser formel wird der eben herausgefundene ADC-wert in einen pollswitch-wert umgerechnet. dabei ist "i" in der formel der ADC-wert.
wir rechnen also: (1024 / 682 - 1) * 61,0 + 0,5
und kommen auf den (eher schlechten) wert von etwa 31 (32 sollten es sein).
aber das grundprinzip ist soweit in ordnung (jetzt siehst du wenigstens mal warum man die 61.0 verändern kann / sollte um die werte zu verbessern).
rechne noch ein paar beispiele, zB den taster auf der gegenüberliegenden seite, oder (LEVEL2 =) rechne was passiert wenn mehrere taster gleichzeitig gedrückt werden (diese sind dann parallel geschaltet!).
wenn du noch fragen hast dann melde dich einfach.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen