Forum: Mikrocontroller und Digitale Elektronik Problem mit AVR-AD-Wandler


von Paul K. (paul_c)


Lesenswert?

Hi Leute,

ich habe in einer Schaltung ein Problem mit dem AVR-AD-Wandler 
(ATmega32) und hoffe auf eure Anregungen.
Ich habe an PA0 bis PA5 Potis als Spannungsteiler angeschlossen, um die 
Stellungen der Potis abzufragen. In einem Testprogramm hat das alles 
auch super geklappt: Der AVR hat den vollen Wertebereich des Wandlers 
ausgegeben.
In der Debug-Phase meiner finalen Firmware bin ich jetzt auf ein 
seltsames Phänomen gestoßen: Wenn das Poti an PA1 heruntergedreht ist, 
dann bekomme ich an PA0 nur einen Teil des Wertebereichs, ca. 2/3. Wenn 
ich nun das Poti an PA1 'raufdrehe, dann steigt die Spannung an PA0 mit 
an, bis sie irgendwann auf den vollen Wert angestiegen ist. Gleiches 
Problem mit den folgenden Potis.

Mein erster Gedanke dazu war, dass zwischen dem Umschalten des 
Eingangspins für den AD-Wandler und dem Starten der Konvertierung zu 
wenig Zeit liegt. Nach dem Studium der entsprechenden Stellen im 
Datasheet bin ich aber der Meinung, dass das keinen Einfluss haben 
sollte. Auch auf Reste in den Registern habe ich meinen Code 
kontrolliert, das sollte es auch nicht sein.
Ich würde mich freuen, wenn jemand von euch einen Tipp hätte, was ich 
noch falsch gemacht haben könnte.

Vielen Dank im Voraus,
Paul

von Paul K. (paul_c)


Lesenswert?

Update:
Ich habe - nur mal so zur Sicherheit - die Spannung an PA0 noch mal mit 
meinem Multi gemessen und sie ist unabhängig von der Stellung des Poti 
an PA1.

von Εrnst B. (ernst)


Lesenswert?

Wie ist AREF und AVCC beschaltet?
Welche Referenz wählst du per Software?
Schaltest du die Referenz regelmäßig um?

von Karl H. (kbuchegg)


Lesenswert?

> dass zwischen dem Umschalten des
> Eingangspins für den AD-Wandler und dem Starten der Konvertierung zu
> wenig Zeit liegt. Nach dem Studium der entsprechenden Stellen im
> Datasheet bin ich aber der Meinung, dass das keinen Einfluss haben
> sollte.

Wie gross sind die Potis?

Bedenke: Wenn du den Multiplexer umprogrammierst, muss sich die interne 
Sampe&Hold Stufe erst mal auf die neue Spannung einstellen. Das dauert 
aber seine Zeit und hängt auch davon ab, wieviel Strom deine 
Eingangsschaltung an die Sample&Hold Stufe liefern kann.

von spess53 (Gast)


Lesenswert?

Hi

>Ich würde mich freuen, wenn jemand von euch einen Tipp hätte, was ich
>noch falsch gemacht haben könnte.

- ADC zu schnell
- Potis zu hochohmig
- ...

MfG Spess

von Paul K. (paul_c)


Lesenswert?

Karl Heinz Buchegger schrieb:
>> dass zwischen dem Umschalten des
>> Eingangspins für den AD-Wandler und dem Starten der Konvertierung zu
>> wenig Zeit liegt. Nach dem Studium der entsprechenden Stellen im
>> Datasheet bin ich aber der Meinung, dass das keinen Einfluss haben
>> sollte.
>
> Wie gross sind die Potis?
Die Potis haben, wenn ich mich nicht irre, 10k (lin).

> Bedenke: Wenn du den Multiplexer umprogrammierst, muss sich die interne
> Sampe&Hold Stufe erst mal auf die neue Spannung einstellen. Das dauert
> aber seine Zeit und hängt auch davon ab, wieviel Strom deine
> Eingangsschaltung an die Sample&Hold Stufe liefern kann.
Okay, das würde ungefähr in die Richtung meines ersten Gedankens gehen. 
Würde es denn dann etwas bringen, wenn ich ad-wandler quasi direkt nach 
dem lesen auf den neuen Pin einstellen würde? Durch die Befehle, die 
danach ausgeführt werden, würde der Multiplexer dann ja seine 
wohlverdiente "Pause" bekommen (es sind ein paar zehn Befehle bei 8 MHz 
- reicht das aus?).

Vielen Dank für die Anregung, das werde ich gleich mal ausprobieren :)

Beste Grüße,
Paul

von Paul K. (paul_c)


Lesenswert?

Vielen Dank für Eure Hilfe.

Ich traue es mich ja fast nicht zuzugeben, aber ich hatte vergessen den 
prescaler einzustellen. Jetzt sieht es so aus, als ob es funktioniert :)

Danke und beste Grüße,
Paul

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.