Hallo, ich habe eine Frage zum AT Mega 32 16PU. Beschäftige mich erst seit kurzem mit diesem Controller und habe vorher mit einem AT Mega88 auf dem Elektor ATM18 Board erste Erfahrungen gesammelt. Da die I/O Lines bzw. eher die Flash-Speichergröße für mein Projekt nicht ausreichten, habe ich mir nun selbstständig eine Platine gelötet und den AT Mega 32 verbaut. Ich möchte an PA0(ADC0) eine Spannung eines Temp.sensors wandeln und an PA7(ADC7) eine Sollwerteinstellung mittels Poti vornehmen. Nun habe ich aber das Problem das der ADC nicht funktioniert bzw.tritt folgender Fehler auf. Selbst wenn ich den kompletten Port A als Eingang konfiguriere liegt an den I/O Lines PA1-PA7 eine Spannung von ca.1,4V an, trotzdessen diese mit keiner Peripherie verbunden sind. Gleiches hatte ich bereits beim Port C an welchem ich ein LCD betreibe, dieses "Problem" löste sich als ich das JTAG Interface (ge)disabled habe an meinem erstmalig in Betrieb genommenen Controller. Woran liegt dies nun aber an Port A? Weiterführend hätte ich gern eure Meinung zu einem anderen Sachverhalt. Derzeit habe ich es mir so vorgestellt bzw. hardwaremäßig realisiert, das ich die Sollwerteinstellung mittels Poti mit Hilfe der internen Referenzspannung von 2,56V erfasse. Wobei ich ein 220k Ohm Poti zwischen AREF und GND platziert habe und den Mittelabgriff zurück an ADC7 führe. An AREF liegen auch geforderte 2,56V an, nur funktioniert die Wandlung eben nicht. Da mein Temp.sensor Spannungen zwischen 1,375V und 3,625V ausgibt dachte ich mir hier AVCC als Referenz zu verwenden und ändere im laufenden Programm via ADMUX die Auswahl der Referenz, nach jedem Ändern mache ich eine Wandlung deren Ergebnis ich verwerfe und zusätzlich warte ich einige Millisekunden um erneut zu wandeln. Doch wie bereits erwähnt funktioniert dies nicht. Ist es hierbei überhaupt möglich, dass ich AREF bei Uref AVCC nicht mittels Kondensator gegen GND schalte, sondern dieser befindet sich dann mittels 220k Ohm Widerstand gegen Masse. Vielen Dank im Voraus für eure Unterstützung. Gruß Michi
Woher die Spannung an Port A kommt kann ich dir nicht sagen. Schon mal den Kontroller aus dem Sockel entfernt? AVCC mit VCC verbunden? An AREF gehört ein 100n nach GND. Der Widerstand einer Spannungsquelle am ADC sollte nicht höher als 10k sein. AREF, als Spannungsquelle, ist nicht geeignet für deine Zwecke.
Hallo Hubert, Vielen Dank für deine Antwort und Einschätzung, dass "Problem" mit den unerklärlichen Spannungspegeln an PA1 und PA7 haben sich in Wohlgefallen aufgelöst. Auch wenn mir nicht erklärlich ist was der Grund war. Mir ist bekannt, dass im Regelfall ein 100nF Kondensator zwischen AREF und GND gehört. Habe diese Beschaltungsvariante aus dem Tutorial entnommen: "Oft interessiert auch der absolute Spannungspegel nicht. Im Beschaltungsbeispiel oben ist man normalerweise nicht direkt an der am Poti entstehenden Spannung interessiert. Viel mehr ist diese Spannung nur ein notwendiges Übel, um die Stellung des Potis zu bestimmen. In solchen Fällen kann die Poti-Beschaltung wie folgt abgewandelt werden: Hier wird AREF (bei interner Referenz) als vom µC gelieferte Spannung benutzt und vom Spannungsteiler bearbeitet wieder an den µC zur Messung zurückgegeben. Dies hat den Vorteil, dass der Spannungsteiler automatisch Spannungen bis zur Höhe der Referenzspannung ausgibt, ohne dass eine externe Spannung mit AREF abgeglichen werden müsste. Selbst Schwankungen in AREF wirken sich hier nicht mehr aus, da ja das Verhältnis der Spannungsteilerspannung zu AREF immer konstant bleibt (ratiometrische Messung). Und im Grunde bestimmt der ADC ja nur dieses Verhältnis. Wird diese Variante gewählt, so muss berücksichtigt werden, dass die Ausgangsspannung an AREF nicht allzusehr belastet wird. Der Spannungsteiler muss einen Gesamtwiderstand von deutlich über 10kΩ besitzen. Werte von 100kΩ oder höher sind anzustreben. Verwendet man anstatt AREF AVCC und schaltet auch die Referenzspannung auf AVCC um, ist die Belastung durch den Poti unkritisch, weil hier die Stromversorgung direkt zur Speisung verwendet wird." Hatte mir davon versprochen das, dass Bit-Zittern geringer ist. Es funktioniert auch alles einwandfrei, nur eben bleibt der gewünschte, erhoffte Effekt aus. Aus dem Tutorialzitat ergibt sich auch die Höhe des verwendeten Widerstandes. Warum bist du der Meinung das es für meine Anwendung ungeeignet ist?
Mit ungeeignet meinte ich das die Belastung von AREF immer kritisch ist. Wenn du es schon machst solltest du den 100n trotzdem einfügen. Je hochohmiger die Quelle am ADC-Eingang ist, um so störungsanfälliger wird sie auch. Wenn du schon deine Konfiguration verwenden willst dann lege noch eine 10n Kondensator vom ADC-Eingang nach GND. Wenn ich Messungen über den ADC mache, dann addiere ich zehn oder mehr Messungen und nehme den Mittelwert.
Danke für den Tipp, damit werde ich es mal ausprobieren.
in ATTiny26 Datenblatt hatte ich mal diesen kleinen Filter gesehen, den verwende ich seit dem an allen AVRs um die AVCC Spannung etwas zu glätten. Wie gesagt ein hochohmiges Signal ist sehr störanfällig, wenn es nicht anders geht würde ich einen kleinen RC Filter nehmen. Der Widerstand begrenzt die Belastung der Signalquelle und der Kondensator puffert das dann für die Wandlung. Allerdings sollte man dann auch die Ladezeiten des RC Filters berücksichtigen und die Messabstände entsprechend verlängern. Evtl. könnte eine Verringerung des ADC-Taktes helfen was auch einer Mittlung gleichkommt. Beim ADMUX Register wird gerne hochgezählt, achte darauf nicht über 111 zu zählen sonst verstellt du neben dem Kanal andere Sachen. Mich wundert etwas deine Codegröße, wozu brauchst du 32 kByte Flash?
Moin, danke für eure Antworten, werde ich mal ausprobieren. Bin bislang aber auch noch nicht dazu gekommen. Ich brauche nicht den kompletten Flash des AT Mega 32, nur war es eben beim AT Mega 88 zu knapp. Mein Projekt besteht aus "etwas" mehr als dem hier beschriebenem und hat unter anderem diverse Textausgaben an ein LCD bzw. "Visualisier" ich einen Erhitzungsprozess mittels blauer und roter LEDs, die ich in Abhängigkeit der Ist-Temperatur langsam aufleuchten bzw. dimmen lasse. Desweiteren gehört ein Countdown dazu und noch einiges mehr ...
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.