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.
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
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
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.
@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.
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
@Michael U. So hab ich das jetzt auch erstmal gelöst. Funktioniert auch einwandfrei.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.