Forum: Mikrocontroller und Digitale Elektronik 22bit ADC MCP3551 liefert halbes Ergebnis


von T. F. (sar)


Angehängte Dateien:

Lesenswert?

Hallo,

Ich verwende einen Microchip MCP3551 22bit DAC (mit Vorzeichen, 
http://ww1.microchip.com/downloads/en/devicedoc/21950b.pdf) zur RTD 
Messung (nach 
http://ww1.microchip.com/downloads/en/AppNotes/00001154B.pdf).

Interessanterweise, liefert der ADC immer den halben Wert. Also 
Widerstand mit 100Ohm am Eingang, liefert nach folgender Umrechnung 
50Ohm.
1
int32_t code = RTD_getCode();
2
res =  ((long)code*6800)/(2097152L-code);

2097152 = 2^21 (also 22bit minus Vorzeichen). Gut ich kann den Wert auf 
2^20 ändern und bekomme richtige Ergebnisse.

Um Fehler in der Ansteuerung des MCP3551 auszuschließen, habe ich den 
MCP3551 mal schnell über ein Arduino mit Library angesprochen und das 
selbe Ergebnis erhalten.

Anbei auch das Schema, der TC2014 liefert 3V. Und VCC ist 5V.

Irgendwelche Ideen? Danke, euch.

von Sven (Gast)


Lesenswert?

Ist an J2-1 durch irgendeinen Grund GND angeschlossen?

von T. F. (sar)


Lesenswert?

Nein, J2-1 ist auf dem selben Potential wie J2-2. Es macht keinen 
Unterschied och ich einen Widerstand mit 2-Leiter, 3-Leiter oder 
4-Leiter Verdrahtung anschließe (Lötjumper SJ1 & SJ2 entsprechend 
gesetzt).

von Gerhard G. (g_g)


Lesenswert?

Hallo,

wenn du zwischen deinen Eingängen im 4-Leiter Betrieb einen 
niederohmigen Widerstand (PT100..PT1000) schaltest, hast du zwischen den 
beiden 6,8k Widerständen 1,5V Volt und nicht 3 Volt. Also nur die Hälfte 
(Spannungsteiler). Messe mal die Spannung an VREF mit einem 
Messinstrument. Damit stimmt dein Ergebnis!
In deiner Messung wird der Spannungsteiler aktiv mit einbezogen!

Nachweislich bei mir ok: 22 Bit bei 2,5V Ref

sprintf(disp_ausgabe,"U %.02f V",(mcp3531_value * (2.5/2097152.0)));


Gruß G.G.

von Chris (Gast)


Lesenswert?

Hi,

da der Thread ja noch nicht so alt ist, und ich ein ähnliches Problem 
habe, mache ich mal nicht extra einen neuen auf.

Und zwar weiß ich nicht, ob mein IC kaputt ist, oder ich einfach 
irgendwas falsch mache. Ich habe die Schaltung aus der Appnote s.o. 
nachgebaut und statt des PT100 erstmal einen 100Ohm 0.1% Widerstand 
eingesetzt.

Versorgungsspannung vom Arduino Uno, mein Messgerät zeigt mir da 5,3V, 
kann aber auch am Messgerät liegen. Die Versorgungsspannung habe ich 
auch als VREF benutzt, da liegt dann durch den Spannungsteiler 2,65.
Benutze ich die Formel aus der Appnote, kommt ein Wert ~210Ohm raus.

Passe ich jetzt RA an, Wert: 84xx.x, dann bekomme ich auch 100Ohm raus. 
Auch mit dem PT100 bekomme ich einen Wert. Schließe ich einen 169Ohm 
Widerstand an, wird der auch relativ genau berechnet. Aber der RA Wert 
ist ja deutlich zu groß.

Jetzt habe ich mir gedacht, dass ich für Vref nochmal einen 
Spannungsregler anschließe, der 2V ausgibt, womit dann zwischen VREF und 
GND 1V gemessen werden. Das beeinflusst jetzt natürlich auch mein 
Ergebnis, obwohl VREF ja nicht in der Formel vorkommt. Aber logisch ist 
es ja, da sich ja dadurch ja die Auflösung ändert.

Da liegt mein erstes Problem, ich kann nicht so recht nachvollziehen, 
wie ich dann die Berechnung durchführen muss.

Mein zweites Problem: ändere ich die Versorgungsspannung vom IC von 5V 
auf 3.3V, ändert sich mein Ergebnis auch. Das sollte doch nun wirklich 
nicht passieren.

TL/DR: Ist mein IC einfach nur kaputt? Dann frage ich mich, wieso da 
trotzdem mit einer leichten Formelanpassung trotzdem plausible 
Ergebnisse rauskommen.

Ich hoffe, ich konnte mein Problem gut genug erläutern. Ich fange grade 
erst an, mich mit dem Thema zu beschäftigen.

von Chris W. (nootch)


Lesenswert?

Ach, so langsam verstehe ich, was da passiert. Wenn ich einfach die 
Formel aus der Appnote benutzen möchte, brauche ich auch die 100% 
gleichen Umgebungsbedingungen, sonst muss ich anpassen?
Auf dem Papier habe ich jetzt die Spannung ausgerechnet, die an Pins 1+4 
und 2+3 anliegen muss.
Ist das richtig?

Weiterhin ist meine Auflösung

Wenn ich diesen Wert mit dem Code, den mir der IC ausspuckt 
multipliziere, bekomme ich die Spannung U23?

von Chris W. (nootch)


Lesenswert?

Hi,

ich muss das hier nochmal pushen, da ich ein neues Problem habe, dass 
mit dem Titel 100% übereinstimmt.

Statt der PT100 Schaltung habe ich bei VREF 5V anliegen. An VIN+ ~1,65V 
und VIN- liegt auf GND.

Obwohl ich da jetzt keinen Spannungsteiler habe, liefert mir der ADC 
auch ein halbes Ergebnis. Wenn ich die Anschlüsse durchmesse, liegen die 
angegeben Werte an, nur bei der Berechnung kommt der halbe Wert raus.

Rechnung:

Irgendwelche Ideen?

von Chris W. (nootch)


Lesenswert?

Ich antworte mir hier mal selber...im Microchip-Forum kam der Hinweis 
auf den SPI-Mode. Tatsächlich erscheint das richtige Ergebnis, wenn man 
SPI-Mode3 nimmt, also 1-1...

von G. G. (g_g447)


Lesenswert?

Hallo,

schau dir mal das Datenblatt an:

Punkt 5.5

In SPI mode 1,1, data is read using only 24 clocks or
three byte transfers. The data ready bit must be read
by testing the SDO/RDY line prior to a falling edge of
the clock.
In SPI mode 0,0, data is read using 25 clocks or four
byte transfers. Please note that the data ready bit is
included in the transfer as the first bit in this mode.

Das Ergebnis ist in beiden Fällen gleich(bit 0-21).

Wichtig!
Einmal werden 3 Byte und eimal 4 Byte ausgewertet.

Du verschluckst irgend wie das bit 0.. und schon hast du das halbe 
Ergebnis!

Schau dir das nochmals an.

Gruß G.G.

von Chris W. (nootch)


Lesenswert?

Wow, danke. Das ist doch mal ein echt hilfreicher Hinweis.
Das habe ich die ganze Zeit stur überlesen.
Danke!

Das kommt davon, wenn man einfach irgendwas aus dem Internet übernimmt 
:D
Zum Glück muss ich mir für meine Arbeit auch noch eigene Gedanken 
machen, sodass mir andere Fehler da schon aufgefallen sind.

: Bearbeitet durch User
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.