Forum: Mikrocontroller und Digitale Elektronik LTC2499 liest nicht vollen Messbereich


von Christoph N. (christoph_n)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe folgendes Problem, bei dem ich mittlerweile recht ratlos bin:
Ich verwende in meiner Schaltung einen LTC2499 (24Bit ADC mit 16 Kanälen 
mit 24 Bit, I2C). Dieser ist wie in angehängtem Schaltplan verbaut. Ich 
kann mit ihm mit meinem ATMega328p mit Arduino-Bootloader kommunizieren 
und kann auch Messwerte lesen. Ich habe als Versorgungs und 
Referenzspannung 5 Volt Spannungsregler verbaut (LT1761-5). Einen 
Spannungsregler für den ADC und weitere 5V-Elektronik auf der Platine 
und eine baugleiche Schaltung für die angeschlossenen Sensoren.
Ich habe den ADC mit folgenden Bytes konfiguriert:
1
Wire.beginTransmission(20);//Connect to 0x14
2
3
Wire.write(byte(0xB8));//CH01, singleended          
4
Wire.write(byte(0x80));//Ext. measurement, 50Hz/60Hz Rejection
5
6
Wire.endTransmission();

Damit misst er auch und alles funktioniert wie erwartet. Das Problem ist 
jetzt aber, dass er bei der Messung nicht den kompletten Messbereich 
abdeckt. Er misst nur im Messbereich von 0 - 2.5V. Bei einer größeren 
Messspannung ist das Ergebnis 1090519039 
(0b1000000111111111111111111111111). Also SIG = 1 (Vorzeichen positiv 
laut Datenblatt), keine Differential-Voltage (Es wurde ja auch 
single-ended gemessen?) und alle Ergebnis-Bits 1. Ich habe jetzt ein 
paar Tage lang das Datenblatt studiert und werde daraus nicht wirklich 
schlau. Ich habe leider auch nicht sehr viel Erfahrung mit dem Aufbau 
von ADC-Schaltungen, oder der implementierung der Treiber, bisher hat es 
halt immer der Interne ADC des uC getan.

Wie dem auch sei, ich weis nicht mehr, wo ich jetzt nach dem Fehler 
suchen soll und wäre für jede Hilfe überaus dankbar!

Vielen Dank und Viele Grüße

Christoph

von Detlef K. (adenin)


Lesenswert?

Ich hab mir das Datenblatt angesehen und habe den verdacht, dass Linear 
hier durch Auslassung ganz böse trickst.
In der Tabele auf Seite 18 ist zu entnehmen, das COM zu IN- wird und CH1 
zu IN+. Das Ding bleibt also differential, nur dass ein Eingang nun fest 
mit COM verbunden ist.
FS(Fullscale) = 0.5*( "Ref+" - "Ref-") also nur 2.5V  :-(

: Bearbeitet durch User
von Christoph N. (christoph_n)


Lesenswert?

Hallo Detlef,

vielen Dank für Deine Antwort.
Ja, das könnte sein. Es steht im Datenblatt nirgendswo, dass der 
Messbereich bis 5V im Single-Ended-Betrieb geht. Denkbar wäre auch, dass 
man bei entsprechend negativem REF- zusätzlich eine negative Spannung 
bis -2.5V messen kann und damit insgesamt wieder 5V hat.
Für meine (fertige) Platine ist das natürlich nicht so schön. Ich werde 
jetzt als workaround wohl Spannungsteiler einbauen müssen und evtl. bei 
der nächsten Revision auf einen anderen ADC umsteigen.

Vielen Dank für Deine Mühe und Viele Grüße

Christoph

von Arc N. (arc)


Lesenswert?

Detlef Kunz schrieb:
> Ich hab mir das Datenblatt angesehen und habe den verdacht, dass Linear
> hier durch Auslassung ganz böse trickst.

Da wird nicht getrickst:
Seite 3 und 4 im Datenblatt
VIN Input Differential Voltage Range VIN+ - VIN-: -FS - +FS
FS Full Scale of the Differential Input (IN+– IN–): 0.5 VREF

Seite 11 unter Pin Functions und Seite 14 unter Input Voltage Range
"Within these limits, the LTC2499 converts the bipolar differential 
input signal VIN = IN+ – IN– (where IN+ and IN– are the selected input 
channels), from –FS = –0.5 * VREF to +FS = 0.5 * VREF where VREF = REF+ 
- REF–. Outside this range, the converter indicates the overrange or the 
underrange condition using distinct output codes" oder Seite 16 Data 
Output Format

: Bearbeitet durch User
von Detlef K. (adenin)


Lesenswert?

Du könntest noch versuchen "COM" auf "2.5V (also Ref/2) zu setzen.
Dann müsste bei 0V ein Resultat von -2.5V, bei 2.5V -> 0V und bei 5V -> 
2.5V angezeigt werden (wenn Du Glück hast :) ).
Also immer 2.5V addieren um das korrekte Ergebnis zu erhalten.
Ansonsten schau mal bei TI nach. Die haben ähnlich aufgebaute ADC's, die 
machen 5V-Bereich im singleended (als nicht so kompatibles Beispiel: 
ADS1258). (Und die haben schönere Datenblätter)

von Christoph N. (christoph_n)


Lesenswert?

Hallo,

nochmals vielen Dank für die Tips. Ich habe es mittlerweile erstmal mit 
Spannungsteilern erschlagen... Nicht so schön.
Im Redesign werde ich den ADC (vielleicht durch einen von TI) ersetzen.

Viele Grüße

Christoph

von Arc N. (arc)


Lesenswert?

Christoph N. schrieb:
> Hallo,
>
> nochmals vielen Dank für die Tips. Ich habe es mittlerweile erstmal mit
> Spannungsteilern erschlagen... Nicht so schön.

Was nicht nötig gewesen wäre: Siehe die andere Antwort oben mit COM = 
2.5V.
+FS wären 5V * 0.5 = 2.5V, -FS wären -5V * 0.5 = -2.5V
Ist VIN- = COM = VREF * 0.5 = 2.5V, dann ist VIN = VIN+ - VIN- = VIN+ - 
2.5V bzw. |VIN+ - VIN-| <= VREF * 0.5 im richtigen Bereich (solange 
natürlich die absoluten Grenzen eingehalten werden -0.3V <= CHx <= VCC + 
0.3V)

von Christoph N. (christoph_n)


Lesenswert?

Ok, das geht auch. Habs gerade bei der zweiten Platine probiert. Das 
hieß zwar 38 Poliges QFN raus, Leiterbahn aufmachen und wieder einbauen, 
aber geht.
Nochmals vielen Dank.

Die Lösung für eine single-ended-Messung mit dem LTC 2499 ist also, COM 
(Pin 7) - in diesem Fall mittels Spannungsteiler - auf 2.5V zu setzen.

: 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.