mikrocontroller.net

Forum: Analoge Elektronik und Schaltungstechnik Spannungsteiler - ADC - Schalter


Autor: Nico (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Joerg Wolfram (joergwolfram)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielleicht geht es ja mit regelmässigen Messungen. Wenn sich das 
ADC-Ergebnis am oberen Ende des Bereiches befindet (Taster Offen), 
einfach das Ergebnis verwerfen.

Gruß Jörg

Autor: Michael U. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Nico (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: ADCler (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Michael U. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Nico (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Michael U.
So hab ich das jetzt auch erstmal gelöst. Funktioniert auch einwandfrei.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.