Forum: Mikrocontroller und Digitale Elektronik AD-Wandler Net-IO spricht schlecht an


von Mikaelis K. (mikaelis)


Lesenswert?

Hallo liebes Forum,


habe ein Net-IO von Pollin, welches u.A. 4 AD-Wandler Eingänge bietet. 
Über eine externe Schaltung liefere ich ein (sauberes = störungsfreies) 
Gleichspannungssignal im Bereich von 0-5V.
Da der Microcontroller (AT Mega32) einen 10 bit AD-Wandler besitzt, 
bedeutet dies ja (theoretisch), dass das unterste Bit einer Spannung von 
(5V / 1024)=0,00488V entspricht. Ich habe nun schon zwei dieser Net-IO 
Boards aufgebaut und bei beiden beginnt das unterste Bit erst bei ca 
17mV (statt 4,88mV).
Nun habe ich - ebenfalls bei beiden Boards - festgestellt, dass auf der 
Versorgungsspannung eine kleine Einstreuung des 16MHz oszillators 
stattfindet (ca 50mV pp). Die Referenzspannung habe ich nun mal extern 
zugeführt (Batterie). Diese ist auch absolut störungsfrei. Hat mein 
Problem jedoch nciht gelöst.

Hat jemand eine Idee, woran dieses Phänomen liegen kan?

Schöne Grüße und vielen Dank,

MikaeLis

von Anja (Gast)


Lesenswert?

Möglicherweise Spannungsabfall an der Masseleitung.
(kann auch dynamisch sein während der Sample-Phase der A/D-Wandlung).

Was auffällt:
1. Im Schaltplan fehlen ggf. 100nF-Kondensatoren am A/D-Eingang.
   bei hochohmigen Quellen kann die Eingangskapazität des A/D-Wandlers
   evtl nicht vollständig aufgeladen/entladen werden.
2. Die Klemmen sind nicht mit AGND Verbunden sondern mit GND
   Versuche mal deine Analogeingänge (Masse) direkt an Pin 31
   des Prozessors anzuschließen

Gruß Anja

von Mikaelis K. (mikaelis)


Lesenswert?

Hi, Danke für deine Antwort.

1.
ja ich habe schon allerlei 100nF Kondensatoren nachgerüstet - auf der 
Unterseite direkt an die Pins gelötet.

Am Ausgang meiner Schaltung liegt ein Operationsverstärker - der sollte 
den AD-Wandler schon geladen kriegen (aber super Idee - hab' ich noch 
gar nicht drüber nachgedacht).

2.
AGND und GND trennen die auf der Platine nicht - die Bezeichnung AGND 
steht nur im Schematic am Pin des Microcontrollers. Alles liegt aber auf 
einer gemeinsamen Masse.

Gruß,
Mikaelis

von Anja (Gast)


Lesenswert?

Mikaelis Kah schrieb:
> Am Ausgang meiner Schaltung liegt ein Operationsverstärker - der sollte
> den AD-Wandler schon geladen kriegen (aber super Idee - hab' ich noch
> gar nicht drüber nachgedacht).

Dann ist möglicherweise der Operationsverstärker die Ursache. Es gibt 
wenige OPs die mit den Stromsprüngen der kapazitiven A/D-Wandler 
zurechtkommen.
Und auch wenige die mit einer kapazitiven Last von 100nF nicht anfangen 
zu schwingen. In der Regel braucht man da mindestens 100 Ohm als 
Entkopplungswiderstand.
Was passiert wenn du anstelle des OPs eine Drahtbrücke nach Masse 
bestückst?

2. Wie viel Spannungsabfall hast Du zwischen Pin 31 des Prozessors und 
der Anschlußklemme für den Analogeingang?

von Mikaelis K. (mikaelis)


Lesenswert?

Anja schrieb:
> Dann ist möglicherweise der Operationsverstärker die Ursache. Es gibt
> wenige OPs die mit den Stromsprüngen der kapazitiven A/D-Wandler
> zurechtkommen.
> Und auch wenige die mit einer kapazitiven Last von 100nF nicht anfangen
> zu schwingen. In der Regel braucht man da mindestens 100 Ohm als
> Entkopplungswiderstand.

Warum gibt es aber dann ab 20mV überhaupt keine Probleme mehr? Ich habe 
es auch mal mit einer Batterie ausprobiert (also die spannung ganz klein 
runtergeteilt) - das klappt genausowenig.

Deine restlichen Vorschläge / Fragen verusche ich im Laufe der Woche zu 
beantworten :) Danke!!!

Gruß
Mikaelis

von Bernd N (Gast)


Lesenswert?

Offset Fehler des Wandler + Offset Fehler vom Op ? hast du die mal 
gemessen, bestimmt ?

von Anja (Gast)


Lesenswert?

Mikaelis Kah schrieb:
> Warum gibt es aber dann ab 20mV überhaupt keine Probleme mehr? Ich habe
> es auch mal mit einer Batterie ausprobiert

Kannst Du mal die Eingangsschaltung posten?
Welchen OP hast du denn?
Ist der Bipolar oder mit single Supply gespeist?

von Mikaelis K. (mikaelis)


Angehängte Dateien:

Lesenswert?

Hallo,

anbei ist mal die Schaltung, so wie Sie derzeit ist (ist ein Screenshot 
von PSpice - daher der R2 Widerstand nur zur Simulation - statt diesem 
gehe ich direkt auf den AD-Wandler).

Gruß,
Mikaelis

P.S.: der OP ist also ein "billiger" LM324 4-fach op. In der Schaltung 
sieht man einen Summierer (erster OP) sowie einen nachgeschalteten 
inverter.
Er ist "bipolar" gespeist, also +Ub und -Ub (+-5V)

von Mikaelis K. (mikaelis)


Lesenswert?

Bernd N schrieb:
> Offset Fehler des Wandler + Offset Fehler vom Op ? hast du die mal
> gemessen, bestimmt ?

Wie messe ich denn den Offset Fehler des Wandlers?
Offset des Wandlers habe ich gemessen ... hab noch einen "guten" LM324 
erwischt mit ca. 8mV. Alleine Durch diesen Offset müsste der AD-Wandler 
schon ansprechen, da das LSB ca 4,88mV ausmacht. Tut er aber nicht ...
Aber wie kann ich beim Mikrocontroller am besten den Offset messen?

Gruß
Mikaelis

von Bernd N (Gast)


Lesenswert?

Am besten ermittelt man den Offset über 2 Stützpunkte (Testmessung).

Also, lese einfach den AD Wert bei einer Eingangsspannung von z.B. 0.4 V 
und dann bei 2 V. Dann hast Du als Ergebnis ein Delta U und ein Delta 
ADC.

Nun kannst Du die Steigung ausrechnen und den Wandler mal linearisieren.

Der Offset wird folgendermaßen bestimmt.

Beispiel:

Faktor = ((Umax - Umin) / (ADCmax - ADCmin)) => Steigung
Offset = (Umin - (Faktor * ADCmin))

Wobei Umax = 2V, Umin = 0.4V und entsprechend ADCmax = der ADC Wert für 
2V und ADCmin der ADC Wert für 0.4V.

Zur Korrektur verwendest Du (ADC_Wert * Faktor) + Offset

Wenn Du die 2 Stützpunktmessungen gemacht hast kannst Du den Offset also 
schon ausrechnen.

von Bernd N (Gast)


Lesenswert?

Achso, den Offset der Eingangsschaltung bestimmst Du in dem Du den 
Meßeingang kurzschließt und am Ausgang des OP die Spannung mißt, die 
sollte idealerweise = 0 sein.

von Anja (Gast)


Lesenswert?

Hallo,

und du bist dir sicher daß der LM324 bei 4,7uF Last am Ausgang nicht 
schwingt?.
Ich verwende da immer so ca 100 Ohm zwischen Pin 1 und Kondensator sowie 
ca 1nF zwischen Pin 1 und Pin 2 des OPs.

Gruß Anja

von Bernd N (Gast)


Lesenswert?

Und die Versorgungsspannung der OP's gehört auch noch geblockt mit je 
100nF, also 4 Stück.

von Mikaelis K. (mikaelis)


Lesenswert?

@Anja: nee der Schwingt keinesfalls.

@Bernd: klar - in der reslisierten Schaltung sind überall 
Abblockkondensatoren verbaut.
Werde die Offsetmessung mal machen

Vielen Dank euch Beiden.
Danach melde cih mich gewiss wieder.

Gruß
Mikaelis

von Einhart P. (einhart)


Lesenswert?

Such doch 'mal in der Software. Wenn du nur 8 Bit auflöst, dann hast du 
den Effekt auch. Gib es denn wirklich eine Änderung von 17 auf 22 mV?

Gruß
Einhart

von Mikaelis K. (mikaelis)


Lesenswert?

Einhart Pape schrieb:
> Such doch 'mal in der Software. Wenn du nur 8 Bit auflöst, dann hast du
> den Effekt auch. Gib es denn wirklich eine Änderung von 17 auf 22 mV?

jep. bei 20mv gehts direkt weiter auf die nächste stufe. war auch schon 
eine meiner vermutungen, dass der ad-wandler auf nur 8 bit läuft.
Gruß,
Mikaelis

von Mikaelis K. (mikaelis)


Lesenswert?

Bernd N schrieb:
> Faktor = ((Umax - Umin) / (ADCmax - ADCmin)) => Steigung
> Offset = (Umin - (Faktor * ADCmin))
>
> Wobei Umax = 2V, Umin = 0.4V und entsprechend ADCmax = der ADC Wert für
> 2V und ADCmin der ADC Wert für 0.4V.
>
> Zur Korrektur verwendest Du (ADC_Wert * Faktor) + Offset

Hallo Bernd: nun habe ich nach deiner Anleitung folgendes getan:
Spannungen eingestellt auf:
Umax = 2,007V
Umin = 0,0997V     beides mit Multimeter direkt am ADC Eingang gemessen.

Entsprechende Spannungen am ADC abgelesen:
ADCmax = 1,992264V
ADCmin = 0,092777V

Dann nach den Formeln (s.o.) berechnet:
Faktor = ... = 1,004113
Offset = ... = 0,0065414 V

Nun habe ich noch mal "genau" nachgemessen und festgestellt, dass bei 
13,5mV am Eingang des ADC dieser auf "0000000001" (also 0,004883V) 
springt. Messe ich nun also mit dem ADC eine Spannung von 0,004883V, 
dann bedeutet dies ja - unter Berücksichtigung des Offsetwertes - dass 
ich in Wirklichkeit eine Spannung von

Ukorr = (0,004883 * 1,004113)V + 0,0065414V = 0,01144447V   habe.

Das liegt ja schon recht nahe an der Realität (den besagte 13,5mV). Aber 
ich will noch nicht so recht glauben, dass nur diese zwei Messwerte von 
Umin=100mV und Umax=1V genügen .... müsste man da nicht eigentlich eine 
in die Tiefe gehende Fehleranalyse machen, um die Bestimmung genauer zu 
machen (ich denke das ist klar ... deine Formeln sind dann der 
theoretische Ansatz?)

Bin gespannt auf deine Antwort, schöne Grüße
Mikaelis

von Sascha W. (sascha-w)


Lesenswert?

@Mikaelis Kah

ich weiß ja nicht was du mit dem A/D vorhast, aber schau dir doch erst 
mal das Datenblatt des ATMega32 an - da kannst du messen wie du wills't 
aber der ist nun mal nicht zu 100% genau!

Sascha

von Bernd N (Gast)


Lesenswert?

Da braucht es nur 2 Testpunkte, glaub mir, Du hast nun die Qualität 
deines Wandler real gesehen :-)

Überleg mal, das ist ein lineares System, die Stützpunkte kannst Du 
beliebig wählen... in Grenzen, aber 2 Testpunkte ergeben nun mal die 
lineare Funktion die einen Wandler ausmachen. Du hast 2 Schnittpunkte 
und verbindest diese.

Es entspricht außerdem meinen eigenen Tests... die Wandler sind 
fehlerbehaftet.

von Bernd N (Gast)


Lesenswert?

Bin drübergeflogen :-)

>> ADCmax = 1,992264V
>> ADCmin = 0,092777V

Nein, ADCmax, min, bewegt sich zwischen 0 und 1024 (1023) also z.B. 
1000, 400.

von Mikaelis K. (mikaelis)


Lesenswert?

ja habe diese Werte einfach mit 0,004883 multipliziert - ist also nur ne 
umrechnung in die entsprechende vom ADC gemessene Spannung?!

Gruß
Mikaelis

von Bernd N (Gast)


Lesenswert?

Aah :-) ok, noch Fragen ?

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.