Forum: Mikrocontroller und Digitale Elektronik Atmega8 A/d Wandler schwingt


von David (Gast)


Lesenswert?

Hallo,
ich möchte eine A/d Wandlung mit dem Atmega8 machen. Habe einen Sensor
der mir einen Strom von 4-20mA ausgibt. Habe diesen Strom an einen
Widerstand gelegt der im Arbeitsbereich des Sensors dafür laut
hersteller ausgelegt ist. Da der Spannungsabfall zwischen 0,8 und 4,2V
liegt habe ich einen Op(Op07) als differnzverstärker benutzt. So wird
der Spannungbereich auf Null Volt runtergezogen (Am Ausgang also
zwischen 0V - 3,4V). Dann habe ich einen zweiten Op(op07) als
nichtinvertierer beschaltet. So habe ich schließlich 0V-5V als
eingangspannung für den Atmega8. Mein Problem ist das der Ausgegebende
Wert 0-1023 nach der Wandlung nicht stabil ist. Er schwingt bis zu 8
Werten vom eigentlichen wert ab. Ich betreibe den Atmega8 mit 4Mhz.
Wenn ich ihn mit 1Mhz betreibe ist das schwingen weg. Weiß nicht was
ich machen muss, habe schon an sämtlichen Stellen Kondensatoren
eingesetzt, leider ohne Erfolg. Zur kommunikation mit dem Pc bin ich
auf die 4 Mhz angewiesen. Danke im vorraus für jede Antwort

von Michael (Gast)


Lesenswert?

Laß die OP07 einfach weg und begnüge Dich mit 0,8 - 4,2 V.

von Ingo (Gast)


Lesenswert?

Wie sieht die Beschaltung von AVcc aus?

von A.K. (Gast)


Lesenswert?

Saubere Referenzspannung? 5V klingt nach Vref=Vcc.
ADC Noise Reduction Mode ausprobiert?
ADC-Takt stimmt?

von Simon K. (simon) Benutzerseite


Lesenswert?

(Ich würde auch den OP weglassen und stattdessen softwaremäßig
subtrahieren.)

von Hannes L. (hannes)


Lesenswert?

> Zur kommunikation mit dem Pc bin ich
> auf die 4 Mhz angewiesen.

Die Kommunikation mit dem PC geht mit einem Baudratenquarz, z.B.
3,686400MHz bedeutend besser als mit 4MHz.

Ansonsten würde ich mal überprüfen, ob der Vorteiler für den ADC-Takt
richtig eingestellt ist. Der ADC-Takt sollte zwischen 50kHz und 200kHz
liegen. Ist er zu schnell, dann wird das Ergebnis ungenau.

Dann gibt es noch die Möglichkeit der Mittelwertbildung über mehrere
Messungen, sollte man aber erst tun, wenn die anderen Fehlerquellen
beseitigt sind.

OPVs würde ich in deinem Fall nicht einsetzen, mach lieber den
Lastwiderstand der Stromschleife so, dass du den (nach oben) vollen
Arbeitsbereich des ADC nutzt. Die unteren unbenutzbaren 20% kannst du
dann subtrahieren (wie schon genannt wurde).

...

von Jadeclaw D. (jadeclaw)


Lesenswert?

@David: Wie versorgst du den OP07?
Das Teil ist nicht Rail-to-Rail-fähig. Weder Eingangs- noch
Ausgangsseitig.
Schwingeffekte sind häufig das Ergebnis, wenn der zulässige Bereich
verlassen wird.
Ansonsten kann ich mich den Vorpostern nur anschliessen: OP weglassen
und den Bereich per Software anpassen.

Gruss
Jadeclaw.

von David (Gast)


Lesenswert?

Da ich eine gröst möglichste Auflösung haben möchte würde ich bei 0,8
bis 4,2V nicht den kompleten Arbeitsbereich des A/D Wandlers ausnutzen.
Selbst wenn ich die Refernzspannung auf 4,2V runtersetze ist mir die
Auflösung nicht gross genug. Brauche 1000 von 1023 Schritten.

 ADC-Takt habe ich geändert. Schwingt aber immer noch.

ADC Noise Reduction Mode habe ich noch nicht ausprobiert weis auch
nicht was das bringen soll.

Viele raten von den OPs ab! Bringen die OPs denn grosse Störungen mit
sich? Habe extra schon welche mit niedrigem  INPUT OFFSET
VOLTAGE DRIFT ausgewählt.
Was heist "Rail-to-Rail-fähig"?

OPs werden mit +12V und -12V betrieben.
AVCC = 5Volt
AREFF = 5Volt (78L05 Feinfestspannungsregler)

von Hannes L. (hannes)


Lesenswert?

> Viele raten von den OPs ab! Bringen die OPs denn grosse Störungen
> mit sich?

Damit OPVs richtig und störungsfrei arbeiten können, muss man schon
eine verdammt gute Platine designen. Die ersten 5 selbstentwickelten
Platinen gehören mit Sicherheit nicht dazu. Der OPV wird dir also
vermutlich mehr Schaden durch Schwingungen verursachen, als er Nutzen
bei der Vergrößerung der Auflösung bringt.

> Was heist "Rail-to-Rail-fähig"?

Das heißt, dass Eingänge und Ausgang den gesamten
Betriebsspannungsbereich annehmen können. Denn normalerweise
funktionieren OPVs nicht bei Spannungen, die sehr nahe an den
Betriebsspannungsgrenzen liegen.

...

von A.K. (Gast)


Lesenswert?

"weis auch nicht was das bringen soll"

Die Abweichungen, die du misst, sind u.U. ebensolcher "noise".

Ansonsten kannst du auch den Differenz-Modus vom ADC des Mega8
ausprobieren. Der ist zwar in der DIP-Version nicht getestet, wird aber
meist funktionieren.

von Michael (Gast)


Lesenswert?

>>Brauche 1000 von 1023 Schritten.

Dann nimm besser einen 12Bit ADC. 4-20mA ist der Meßbereich. Hinzu
kommen noch Erkennung für Fehlfunkion (Kabelbruch, Nullpunktdrift) und
Überlast, sodaß die Spannung am Meßwiderstand mit 0,8 - 4 V nicht auf 0
V -> Vref ausgereizt werden sollten.

von David (Gast)


Lesenswert?

Habe die spannung jetzt direkt vom widerstand abgegriffen. Der vom A/D
Wandler ausgegebende Wert schwingt immer noch.

@A.K.
Zum "Differenz-Modus vom ADC des Mega8" habe ich im Datenblatt (305
Seiten) vom Atmega8 nichts gefunden.

von A.K. (Gast)


Lesenswert?

Sorry, stimmt. War der falsche Typ, im Mega8 gibt's den nicht.

von Hannes L. (hannes)


Lesenswert?

> Zum "Differenz-Modus vom ADC des Mega8" habe ich im Datenblatt (305
> Seiten) vom Atmega8 nichts gefunden.

Ich auch nicht!!! - Auch nicht beim Mega48/88/168.

Also bitte, wo ist die ADC-Differenzwandlung mit Mega8/48/88/168
beschrieben? Die interessiert mich nämlich sehr (falls es sie wirklich
gibt).

...

von Hannes L. (hannes)


Lesenswert?

Gut, erledigt, ich ziehe meine Frage zurück...

...

von David (Gast)


Lesenswert?

Weis keiner woran das liegen könnte?

von A.K. (Gast)


Lesenswert?

Es wurde schon nach der Beschaltung von Vcc, AVcc, Vref usw gefragt. Ich
habe den noise reduction mode angeregt.

Wie wär's, wenn du mal mit exakter Info zu Stromversorgung und
Beschaltung kommst - mit Bild bitte, Worte sind da zu ungenau. Und auch
den noise reduction mode ausprobierst.

von Jadeclaw D. (jadeclaw)


Lesenswert?

Brummschleife/Erdungsschleife können wir ausschliessen?
Desktop/Tower-PCs sind faktisch alle masseseitig mit PE verbunden.
Wenn das Teil woanders her ebenfalls Schutzerde bekommt, dann
schlabberts mit 50Hz.
Die Wandler im ATMega8 sind allerdings auch etwas unruhig, D0/D1
wechseln, dazu schau mal ins Datenblatt ab Seite 201 'ADC Noise
Canceler'.
Die CPU wird während der Wandlung gestoppt und durch den ADC-Interrupt
wieder aufgeweckt. Dadurch wird verhindert, dass CPU-HF-Müll während
der Wandlung in den Converter einstrahlt.

Gruss
Jadeclaw.

von David (Gast)


Angehängte Dateien:

Lesenswert?

Masse ist nicht mit PE verbunden.
Mit dem noise reduction mode habe ich es jetzt auch ausprobiert.
Schwingt immer noch. Habe auch den Eingang des A/D Wandlers von PC0 auf
PC1 gewechselt aber das schwingen ist immer noch da.
Habe eine Zeichnung gemacht.

von Jadeclaw D. (jadeclaw)


Lesenswert?

Wenn ich das richtig sehe, fehlen an den Spannungsreglern die
Abblockkondensatoren. 1µF direkt an den Ausgang jedes Reglers, 100µF
direkt an den Eingang jedes Reglers. Ohne schwingen die Teile wie Sau.
Direkt am Controller 100nF keramisch von VCC gegen GND und ebenfalls
100nF von AVCC gegen GND. Autos sind rollende Streubüchsen, deshalb
10kOhm zwischen ADC-Eingang und Knoten 251Ohm-Widerstand - Sensor. Vom
ADC-Eingang 100nF gegen GND. Bei allen Kondensatoren auf kurze
Verbindungen achten.

Wenn das nicht hilft, dann weiss ich leider auch nicht weiter.

Gruss
Jadeclaw.

von Jadeclaw D. (jadeclaw)


Lesenswert?

Addendum: Ebenfalls 100nF von AREF gegen GND.

Gruss
Jadeclaw.

von Benedikt (Gast)


Lesenswert?

Bei der Schaltung kannst du mit Schwankungen von +/-8 zufrieden sein...

Häng direkt einen 10nF Kondensator vom ADC Pin zu AGND.

Einen 78L05 direkt an eine Autobatterie zu hängen ist auch ziemlich
mutig...

von A.K. (Gast)


Lesenswert?

Zum Anschluss ans Bordnetz seit dies empfohlen, sonst hast du evtl.
nicht lang Freude daran:
http://www.dse-faq.elektronik-kompendium.de/dse-faq.htm#F.23

von A.K. (Gast)


Lesenswert?

Die 47pF am Reset sind übrigens ein Fehler im Tutorial. Sollten 47nF
oder 100nF sein, 47pF ist da sinnlos.

von A.K. (Gast)


Lesenswert?

Was soll eigentlich der Reset-Taster gegen VCC? Der gehört gegen GND,
ein Mega8 ist doch kein 8051.

Zur Stromversorgung und Pufferung wurde schon genug gesagt. Ansonsten
würde ich noch empfehlen, unbenutzte Pins (zumindest) von Port C
irgendwie auf definierten Pegel zu bringen, damit die nicht floaten. Am
einfachsten und sichersten geht das mit dem internem Pullup.

Der Programmieradapter hängt hoffentlich an Reset und nicht an PD0.

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.