mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ADC - Ich checks nicht: Immer falsche Werte, aber konstant falsch!


Autor: Häns (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Morgen!

Ich habe ien Problem mit meinem ADC. (MAX11206)
Ich lese zu Testzwecken verschiedene Spannungen ein.
Vref = 3.3V
20 Bit unipolare Messung gegen GND (1048576 Werte)

Rechnung: Spannung = ((3.3V * ADC-Wert) / 1048576)
Ich habe sogar schon die Referenz gepuffert - der Eingang hat eh nen 
Impedanzwandler.
U[mV] (eingestellt) | U[mV] (ausgegeben) | Diff. U [mV] | Delta U [mV]
----------------------------------------------------------------------
        63          |      42            |    21        |
       125          |      83            |    42        |   21
       250          |     167            |    83        |   41
       500          |     333            |   167        |   84
       750          |     500            |   250        |   83
      1000          |     667            |   333        |   83
      1500          |    1000            |   500        |  167
      2000          |    1334            |   666        |  166
      3000          |    2002            |   998        |  332
So...guckt man sich den Fehler an, um den der ADC stets daneben liegt, 
so ist dieser stets konstant. Eine Verdoppelung der Eingangsspannung 
bewirkt eine Verdoppelung des Fehlers.

Aber: WIESO????? Wokann ich den Fehler suchen?

Der ADC hat ein paar Register für Offset / Gain Calibration, aber diese 
benutze ich nicht. Wenn ich diese Register auslese, dann sind die Bits 
für die Korrektur auch nicht gesetzt - sonst hätte ich verstehen können, 
dass der ADC vielleicht immer einn Offset abzieht. Aber selbst wenn dem 
so wäre, dann müsste zusätzlich noch irgendwas im PGA-Register sein, um 
den Fehler weiter zu verstärken - aber auch dieses Register steht auf 
'0'.

Hat einer einen Tip für mich zur Fehlersuche?

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dein Problem ist ganz einfach, dass du nur 2/3 des Sollwerts 
berausbekommst...
Alles andere sind Folgefehler.

Autor: gerd (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schaltplan?

- gerd

Autor: Häns (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Lothar Miller schrieb:
> Dein Problem ist ganz einfach, dass du nur 2/3 des Sollwerts
> berausbekommst...

Ja, ist schon richtig.

gerd schrieb:
> Schaltplan?

Angehängt - Also...klar, Vref und Vsupply nicht an die selbe 
Versorgung...aber ist hier grad ja nur zum Test - so krass können die 
Werte nicht abweichen. Mit anderen Wandlern geht es so auch. Geht hier 
nicht um mV-genaue Ergebnisse, sondern erstmal nur um Funktion.

Autor: Häns (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nachtrag:

Also am OP liegt es auch nicht - wenn ich AINP direkt auf 3,3V lege, 
dann kommen nach der richtig erkannten 2/3-Regel die 2,2V heraus.

Autor: U.R. Schmitt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es ist auf jeden Fall ein Faktor und kein Offset.
Eigentlich kann es jetzt nur 2 Dinge sein:
1. Du hast im Datenblatt etwas übersehen und musst einen 
Verstärkungsfaktor setzen, bzw. der default Verstärkungsfaktor ist 2/3.
2. Du hast einen Fehler in der Software beim Umrechnen. Die Formel bei 
20Bit sollte so ja korrekt sein (Überschlagsmäßig für 2^20)

Ein Zahlenüberlauf beim rechnen kanns eigentlich nicht sein, da der 
Fehler nicht kappt sondern einwandfrei proportional ist.

Autor: ado (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat der ADC vielleicht die Möglichkeit eine interne Referenz zu 
verwenden und die externe Referenzspannung wird gar nicht verwendet da 
diese nicht aktiviert wurde ?

Ansonsten, wie sieht es mit Kondensatoren an DVDD und AVDD aus.
Steht ja im Datenblatt was da ran soll. Habe ich jetzt nich nachgelesen.
Sieht für mein Empfinden nur so nackt aus.

Autor: Häns (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
U.R. Schmitt schrieb:
> Du hast im Datenblatt etwas übersehen und musst einen
> Verstärkungsfaktor setzen, bzw. der default Verstärkungsfaktor ist 2/3.

Das schaue ich auch gerade nochmal nach...

U.R. Schmitt schrieb:
> Du hast einen Fehler in der Software beim Umrechnen. Die Formel bei
> 20Bit sollte so ja korrekt sein (Überschlagsmäßig für 2^20)

Das stimmt schon - es sind auch float-Typen. Aber die Rechnung passt - 
mit anderen ADCs mit 20Bit ist sie auch korrekt. Dieser hier war nur 
interessant wegen seinem PGA...nur soweit bin ich noch garnicht.

Autor: Häns (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ado schrieb:
> Hat der ADC vielleicht die Möglichkeit eine interne Referenz zu
> verwenden und die externe Referenzspannung wird gar nicht verwendet da
> diese nicht aktiviert wurde ?

Nein, gibt eine interne Referenz - nur nen REFBUF, aber macht kein 
Unterschied ob mit oder ohne.

ado schrieb:
> Sieht für mein Empfinden nur so nackt aus.

Isses auch. Aber habs auch mit allen erforderlichen Cs versucht, kein 
Unterschied. Ist hier halt nur grad vorerst auf nem Steckbrett. Zum 
Funktionstest reicht das aber.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Datenblatt lesen:
The devices power up with the internal calibration regis-
ters disabled, and therefore a full-scale input produces 
a result of 60% of the full-scale digital range. 

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zeig doch mal dein Programm.
2/3 (bzw 1/3 das fehlt) ist ein ungewöhnlicher Faktor.
Auf der anderen Seite: um 20 Bit zu speichern benötigt man mindestens 3 
Byte. Wenn dann das unterste Byte flöten geht .... hat man 1/3 verloren.

Autor: Häns (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
OK Leute - da muss ich mich für meine Dummheit entschuldigen!!!!

U.R. Schmitt schrieb:
> 1. Du hast im Datenblatt etwas übersehen und musst einen
> Verstärkungsfaktor setzen, bzw. der default Verstärkungsfaktor ist 2/3.

Genau so ist es! Ich habe es GELESEN, mit TEXTMARKER MARKIERT und dann 
NICHT MEHR WEITER BEACHTET.


Sorry Leutz!

Autor: Häns (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lothar Miller schrieb:
> Datenblatt lesen:

Ja, jetzt hab ich es auch, danke Lothar!

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Häns schrieb:
> Ich habe es GELESEN, mit TEXTMARKER MARKIERT
> und dann NICHT MEHR WEITER BEACHTET.
EXTREM... ;-)

Autor: Häns (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lothar Miller schrieb:
> EXTREM... ;-)

Ja, extrem dämlich!

Autor: Häns (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So: Nachdem ich jetzt verzweifelt versucht habe, das entsprechende 
Register für die Kalibrierung zu beschreiben, der ADC sich aber 
geweigert hat, diesen Wert anzunehmen...habe ich nun noch 
überraschenderweise feststellen müssen, dass:

1100 0110 hexadezimal 0x06 und NICHT 0x07 sind ;-)

Und siehe da: Alles geht.

Also danke nochmal für die Mühe!

Autor: Häns (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Äh...C6 und C7

LOL, aber im Programm war's jetzt richtig :)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.