Spannungsteiler - ADC - Schalter

Gast #574566
Lesenswert?

Hallo,
ich bin gerade dabei mich in die Mikrokontroller einzuarbeiten und stehe 
schon vor einem größeren Problem.
Ich arbeite mit einem ATMega8.

+5V ----------+
              |
             ---
             | |  R(ref)
             | |
             ---
              |
              +------- PC0 (ADC0)
              |
             ---
             | |  R(poti)
             | |
             ---
              |
              .
               \-| (Taster)
              |
             ---
             | |  R(poti)
             | |
             ---
 GND ---------+

Von den 2 Potis nicht verwirren lassen, das spiegelt nur in etwa meine 
Anwendung wieder. R(ref) und beide R(poti) liegen bei mindestens 10k 
Ohm.
Ich möchte eigentlich nur das Verhältnis zwischen R(ref) und R(poti) 
über den ADC bestimmen. Dazu ist das ganze als Spannungsteiler 
aufgebaut. Ohne Taster funktioniert alles problemlos.
Jetzt soll aber eine Messung starten, wenn der Taster gedrückt ist und 
enden, wenn er wieder losgelassen wird.
Nachdem ich mir hier diverse Beispiele zu Tastern angeschaut habe, stehe 
ich aber auf dem Schlauch. Ich habe die Sachen natürlich versucht - 
einen 2. Pin beschaltet und den Pullup ein. Aber das funktioniert ja nur 
wenn keine/geringe Widerstände in meinem Aufbau sind (hab's auch mit 
entsprechend geringeren Widerständen getestet). Bei mehreren kOhm tut 
sich da nix mehr. Ich kann den Taster leider nicht direkt beschalten 
(anwendungsbedingt), sondern muß die Widerstände mitnehmen.

Bin für jeden Ansatz dankbar.
Gast #574572
Lesenswert?

Hallo,

wenn Deine Anordnung wirklich so ist (es gibt 2x Poti, das verwirrt mich 
doch etwas), geht evtl. eine Variante: wenn der Taster offen ist, dann 
ist der Weg gegen GND hochohmig, sagt zumindest Deine Schaltung. Der ADC 
mißt also 1023. Wenn sichergestellt ist, daß jeder denkbare Potiwert 
beim Drücken des Tasters einen ADC-Wert kleiner als 1023 ergibt 
(Meßbereich mit Rref eben passend einschränken) dann ist das Kriterium 
"Taster gedrückt" eben ADC < 1023 und Taster losgelassen ADC = 1023.

Gruß aus Berlin
Michael
Gast #574589
Lesenswert?

Kurz zu den Poti - es handelt sich dabei im Prinzip um 2 hochohmige 
Leiterbahnen, die parallel zueinander verlaufen und die an bestimmten 
Stellen einfach kurzgeschlossen werden (entspricht dann dem 
Tastendruck). Hoffe damit ist das Rätsel geklärt ;)

Das mit der Abfrage des ADC-Wertes habe ich mir auch schon überlegt, 
erschien mir aber etwas "unelegant".
Ich würde eben gerne erst die Messung auslösen, wenn der Taster gedrückt 
ist und nicht permanent den ADC arbeiten lassen und dann vergleichen.
Gast #574595
Lesenswert?

@Nico:
Warum muß denn der auslösende Taster am gleichen ADC Port hängen ?
Mach doch folgendes:

Messanordnung:

+5V ----------+
              |
             ---
             | |  R(ref)
             | |
             ---
              |
              +------- PC0 (ADC0)
              |
             ---
             | |  R(poti)
             | |
             ---
              |
              |
             ---
             | |  R(poti)
             | |
             ---
 GND ---------+

Messauslöser:

GND----------+
             |
             .
              \-| (Taster)
             |
             +------ PC1

Pin PC als Eingang mit internem Pullup definieren und dann in einer 
Schleife pollen.
Sobald der Taster gedrückt ist, die ADC Messung starten.
Zu Tastenentprellung usw. gibt es eine Menge in der Codesammlung, schau 
da einfach mal nach.
Theoretisch könntest Du den Taster auch zwischen dem Messaufbau und PC0 
hängen, am besten als Umschalter gegen GND oder Vcc und dann in der 
Messschleife auswerten, ob GND/Vcc oder ein anderer Wert anliegen.
Mit extra Pin ist es aber sinnvoller.
Gast #574667
Lesenswert?

Hallo,

@ADCler: geht nach seiner Beschreibung vom Aufbau ja leider nicht.

@Nico: meinst Du, der ADC nutzt sich zu sehr ab? ;)

Keine Ahnung, mit wie schnellen Änderungen Du rechnen mußt, nur als 
Beispiel: ADC im Free Running Mode. Timer IRQ alle 1ms. Wert vom ADC 
holen, Test auf 1023, wenn ja, wieder raus, wenn nein Wert merken und 
Tastenflag "gedrückt" setzen. Oder generell 8 oder 16 Messungen holen, 
Mittelwert bilden, dann Test, "entprellt" gleich und unterdrückt 
Störungen.

Das Hauptprogramm wartet nur auf auf das Tastenflag, greift sich dann 
den Messwert und fertig. Von der ADC-Geschichte bekommt es nichts mit 
und die paar Zyklen in der Timer-IRQ stören auch nicht.

Gruß aus Berlin
Michael

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren