Forum: Mikrocontroller und Digitale Elektronik AT Mega 32 Port A (ADC) PA1 bis PA7 haben 1,470V


von Michel S. (11michi11)


Lesenswert?

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

von Hubert G. (hubertg)


Lesenswert?

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.

von Michel S. (11michi11)


Lesenswert?

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?

von Hubert G. (hubertg)


Lesenswert?

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.

von Michel S. (11michi11)


Lesenswert?

Danke für den Tipp, damit werde ich es mal ausprobieren.

von Thomas (kosmos)


Angehängte Dateien:

Lesenswert?

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?

von Michel S. (11michi11)


Lesenswert?

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
Noch kein Account? Hier anmelden.