Hallo an alle Forumsteilnehmer, ich habe mir eine kleine an den Analog-komparaktor gebaut. AM AIN1 hängt ein Poti, am AIN0 ein Kondesator,folgerndermaßen beschalten: ___ GND----|_____|----1kOhm-----PORTB1 | | 100kOhm | | AIN0 Dazu verwende ich den Code im Anhang bei einem Atmega8-16PU. Diess Projekt soll die Kapazität des Kondensators über die Dauer der Aufladung berechnen. Also so lagne zählen bis der Analogkomparator den InputCapture am Counter1 auslöst. Wenn ich das Poti an AIN0 jetzt in mittlerer Stellung habe. passiert ganichts. Erst wenn ich es ganz nach links drehe(der ADC zeigt bei einem Test 1023 an,wenn ich das Poti in diesr Stellung an ihn schließe) und dann wieder zurück drehe, tritt der gewünschte Effekt auf: Es werden je nach Ptoi Stellung unterschiedliche Zeiten ausgegen, die es dauert, bis die Aldung des Kondensators höher ist, als die am Poti engestellte. Bis zu einer Stelle, an der die Spannung so hoch ist, als das der Kondensator sie erreichen könnte. Je größer der Kondensator, um so größer die Aufladezeit, was logisch ist. Warum aber muss ich das Poti aber erst voll auf drehen?. Ich freue mich auf viele gute Antworten Gruß Stephan
Hallo Stephan, der Code ist nicht angekommen, aber nach deinen Beschreibungen kann ich mir nur vorstellen, dass der programmierte Ablauf zu Anfang nicht funktioniert. Zu Beginn scheint der Kondensator schon so weit aufgeladen zu sein, dass der Komparator-Interrupt nicht mehr ausgelöst wird. Hat der Kondensator schon 4,9 Volt, hilft nur das das Aufdrehen der Vergleichsspannung auf 5 Volt. Vor der Messung muss für die Entladung des Kondensators gesorgt werden! Mach dir mal ein Ablaufdiagramm! Gruß Ralli
oh habe wohl vergessen,den COde hoch zu laden Also hier ist er....
1 | mov adlow, temp2 ; immer zuerst LOW Byte lesen |
2 | mov adhigh, temp1 ; danach das mittlerweile gesperrte High Byte |
Was bitteschön haben diese beiden Zeilen denn mit dem Einlesen des ADC-Wertes zu tun? Hier werden lediglich zwei Rechenregister kopiert, mehr nicht. Und dabei ist es völlig Schnuppe, in welcher Reihenfolge das gemacht wird. In Deinem ganzen Programm sehe ich nirgends eine Stelle, an der die Datenregister des ADC eingelesen werden oder gar auf das Ende der Wandlung gewartet wird...
entschuldigung für das MIssverständins. Den ADC beutze ich in einem anderen Programm. Das war nur zum test, um zu sehen auf welchem Wert das Poti genau steht.
Hallo, .. wenn Du die Kapazität eines Kondensators möglichst genau ermitteln willst, so solltest man den C über einen konstanten Strom aufladen, den nur so steigt die Spannung auch wirklich 100% linear mit der Zeit an, d.h. Dein Zählerstand entspricht wirklich der Kapazität. In der jetztigen Schaltung ist der Spannungsverlauf über die Zeit zumindest in der Endphase nicht mehr linear und Du müsstes Deinen Zählerstand noch zeitaufwendig mit dem LOG umrechnen. Auch mußt Du sicherstellen dass der Kondensator wirklich leer bzw. auf einem definierten Startspannung steht, wenn die Messung beginnt. Um diesen Startpegel sicherzustellen, könnte man A0 (die Referenz) beim Entladen auf den gewünschten Startwert setzen und beim Erreichen des Entladvorgang den Vorgang abbrechen und wieder auf Ladung umschalten. Im Prinzip musst Du einen programmgesteuerten Multivibrator entwickeln, dessen Lade oder Entladezeit über einen Zähler erfasst wird. Wenn der Lade/Endladevorgang Deinen Zahler zum Überlauf bringt erhöhst Du einfach programmgesteuert (durch weiter OutPorts) den Strom und erreichst somit einen Autorange-Funktion, die Kapazitäten in einem sehr großen Bereich vermessen kann. Grüße Tim
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.