Forum: Mikrocontroller und Digitale Elektronik ADS1115 und Verpolung


von Andreas V. (Firma: IGL) (andreas_va)


Lesenswert?

Guten Morgen zusammen,

ich konnte in letzter Zeit den ADS1115 auf einem Breakout Board 
kennenlernen.
Mal abgesehen dass das Teil ziemlich verauscht ist und eigentlich und 
damit nur 12 Bit Auflösung Sinn machen habe ich das Problem mit der 
Verpolung. Ich habe inzwischen den zweiten ADS1115 damit gekillt indem 
ich eine Batterie verpolt am Meßeingang angeschlossen habe.

Der ADS1115 ist wie folgt konfiguriert:
- Singleshot
- 6,144V / gain 0
- Comperator disabled
- 1600SPS
(Wert config-Register: 0xC183)

Das Messen funktioniert im mV-Bereich recht gut. Die Nachkommastellen 
kann man allerdings vergessen. Das Verringern der Sample Rate kaschiert 
das Problem nur. Auch ein Kondensator gegen Masse am Eingang bringt 
nicht viel. (Das Rauschen beträgt ca.: +- 3 x 0,1875 mV)

Zum eigentlichen Problem:
Das Gerät ist auf 6.144V mit +-32768 Werten eingestellt.
Das sind 15 Bit für positiv und 15 Bit für negativ.
Schließe ich einen 4V Bleiakku an den Eingang an, dann messe ich auch 
meine 4064 mV.
Schließe ich den Bleiakku verpolt an (für mein Verständnis Minusbereich) 
dann kille ich den ADS1115 damit.

Was ist mein Denkfehler? Ich kenne nur das Blockschaltbild des ADS.

Wie kann ich auch negative Werte messen ohne dass ich mir den 
Analog-Digital-Wandler töte?

von Elias K. (elik)


Lesenswert?

Wo liegt dein Bezugspotential zwischen Batterie und ADS1115? Welche 
Betriebsspannung hat der ADS1115? Welche Spannung hat der Bleiakku?

Lt. Datenblatt:
- VDD: GND-0,3V bis max. 7 V
- Analog Input: GND-0,3V bis max. VDD+0,3V

Spekulation: Du hast die Batterie so angeschlossen, dass an einem der 
Inputs die Batteriespannung negativ anlag? In dem Fall spricht der 
ESD-Schutz an und schließt den Eingang gegen Ground kurz. Die Batterie 
ist stärker und zerstört den Eingang/Chip.

von Achim S. (Gast)


Lesenswert?

Andreas V. schrieb:
> Wie kann ich auch negative Werte messen ohne dass ich mir den
> Analog-Digital-Wandler töte?

Du musst unterscheiden, ob du differentiell oder single ended misst. 
Welche der beiden Messungen du durchführst hängt von deiner 
Konfiguration des Multiplexers ab und davon, wo du den Bezugspol deiner 
Quelle anschließt (ob an Masse oder an einen zweiten Eingang des ADCs).

Bei differentieller Messung darf die Differenzspannung (gemessen 
zwischen Ain_P und Ain_N) negativ werden. Aber keiner der beiden 
Eingänge für sich darf negativ gegenüber dem Masseanschluss werden - 
dafür musst du mit deiner Verbindung zur Quelle sorgen.

Bei single ended Messung, wo der Bezugspol deiner Quelle mit der Masse 
des ADCs verbunden ist,  kannst du dementsprechend nur positive 
Spannungen messen.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Andreas V. schrieb:
> den ADS1115 auf einem Breakout Board kennenlernen.
Gibts dazu einen Namen oder sogar einen Schaltplan?

> Ich kenne nur das Blockschaltbild des ADS.
Lade doch einfach mal das Datenblatt herunter...

> Schließe ich den Bleiakku verpolt an (für mein Verständnis Minusbereich)
> dann kille ich den ADS1115 damit.
Irgendwie logisch, wenn ich die "Absolute Maximum Ratings" im Datenblatt 
anschauen und das hier sehe:
1
Analog input voltage AIN0,AIN1,AIN2,AIN3    GND–0.3   VDD+0.3V
Und wenn ich dann im Datenblatt das Bild "Figure25. InputMultiplexer" 
sehe, dann ist klar, was da bei negativer Eingangsspanung rauchen 
wird...

von Andreas V. (Firma: IGL) (andreas_va)


Lesenswert?

Der ADS1115 wird mit 3,3V über USB versorgt. Das dazwischengeschaltete 
Launchpad wandelt den Pegel auf 3,3V.
Messen kann der ADS1115 bis +6,144V.

Als Test nahm ich den Akku, weil der ist galvanisch getrennt.

Den Akku habe ich verpolt angeschlossen. Wie verhindere ich die 
Zerstörung des ADC? Das ist doch jetzt nichts Ungewöhnliches!

: Bearbeitet durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Andreas V. schrieb:
> Als Test nahm ich den Akku, weil der ist galvanisch getrennt.
Nur solange du ihn nicht an den GND deiner Schaltung anschließt...

> Den Akku habe ich verpolt angeschlossen.
Wozwischen? War der Pluspol an GND?

> Wie verhindere ich die Zerstörung des ADC?
Indem du die Spezifikationen im Datenblatt einhältst.

BTW: die Frage nach dem Namen und oder dem Schaltplan deines speziellen 
Boards hast du gesehen?

: Bearbeitet durch Moderator
von Jim M. (turboj)


Lesenswert?

Andreas V. schrieb:
> Ich habe inzwischen den zweiten ADS1115 damit gekillt indem
> ich eine Batterie verpolt am Meßeingang angeschlossen habe.

Das kommt davon wenn man keinen vernünftigen Schaltplan zeichnet: Man 
übersieht mögliche Probleme.

Und ja, das die ADC Eingänge nicht unter GND Potential und auch nicht 
oberhalb VCC liegen dürfen, steht so im Datenblatt.

Einen Bleiakku ohne Schutzbeschaltung an einen ADC hängen ist - äh - 
mutig.

von Elias K. (elik)


Lesenswert?

Andreas V. schrieb:
> Der ADS1115 wird mit 3,3V über USB versorgt. Das dazwischengeschaltete
> Launchpad wandelt den Pegel auf 3,3V.
> Messen kann der ADS1115 bis +6,144V.

Wie geschrieben, dürfen die Eingänge in dem Fall nur Spannungen zwischen 
0 und 3,3 V sehen. Also kann der ADS auch nur zwischen +- 3,3 V messen.

> Als Test nahm ich den Akku, weil der ist galvanisch getrennt.

Das funktioniert leider nicht. Du musst einen Potentialbezug herstellen. 
Der ADS kann nicht bezugsfrei messen. Also zum Beispiel Minus der 
Batterie mit dem GND vom ADS verbinden.

> Den Akku habe ich verpolt angeschlossen. Wie verhindere ich die
> Zerstörung des ADC? Das ist doch jetzt nichts Ungewöhnliches!

Für ein Multimeter mag das stimmen. Nur handelt es sich hier um ein ADC. 
Für die zwei Fälle der differentiellen Messung würdest du die Batterie 
wie folgt anschließen:
a) Minus an GND und AIN0, Plus an AIN1 -> ADS zeigt pos. Spannung
b) Minus an GND und AIN1, Plus an AIN0 -> ADS zeigt neg. Spannung

ABER: Deine Batterie hat immer noch zu große Spannung!

von Der müde Joe (Gast)


Lesenswert?

Ein zum Meßobjekt in Reihe geschalteter Widerstand, im Wertebereich von 
10kOhm bis 100kOhm, sollte den fließenden Strom im zulässigen Rahmen 
halten, dass Dir im Fehlerfall nicht die integrierten Schutzdioden 
abrauchen. Man kann schon verpolen, auch 10 Volt sind dann kein Problem, 
wenn nur ein minimaler Strom fließt.

von Andreas V. (Firma: IGL) (andreas_va)


Lesenswert?

Leute lasst mir Zeit! Ihr erschlagt mich gerade!

Zum Datenblatt:
Das war das Erste was ich mir besorgt hatte.

Zum Board:
Das ist ein Chinakracher. 
https://www.ebay.de/itm/ADS1115-ADC-4-Kanal-16bit-I2C-PGA-Niedrigen-Strom-F%C3%BCr-Arduino-Raspberry-Pi/323353422910?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2057872.m2749.l2649

Zur Messung:
Nicht Differentiell am Eingang 1, single shot(siehe Config-Register Wert 
oben).

Zur Spannung:
Das macht überhaupt keinen Sinn!
Ich habe einen 16 Bit ADC und kann nur 15 Bit verwenden, weil es 
elektrich nicht passt. Dann habe ich ein Rauschmaß von
+- 3 x Spannungsauflösung(0,1875 mV).

Messungen bis 6V funktionieren definitiv!

Bezieht sich der Null-Bezug nur auf die Diffentielle Messung? Dann komme 
ich ja nie auf 16 Bit! Dann müßte im Datenblatt 12Bit ADC stehen!

Was wurde da für ein Chip entwickelt?

von Bastler_HV (Gast)


Lesenswert?

... Messen kann der ADS1115 bis +6,144V. ...

NEIN!! Kann er nicht. Der binäre Wert könnte bis +6,144V gehen.

steht auch so im Datenblatt:

This parameter expresses the full-scale range of the ADC scaling.Do not 
apply more than VDD+ 0.3 V to the analog inputs of the device.

Zeichne Dein Schaltbild mit allen Massen und Versogungsspannungen und 
poste es, wenn Dir nicht klar ist, warum Du keine +-6V messen kannst 
wenn die Versorgungsspannung nur 3.3V ist.

Tip: Die zu messende Spannung an den Eingängen muss innerhalb der 
Versorgungsspannung bleiben. Immer!

von Wolfgang (Gast)


Lesenswert?

Andreas V. schrieb:
> Zur Messung:
> Nicht Differentiell am Eingang 1, single shot(siehe Config-Register Wert
> oben).

Du meinst "single-ended"?

> Zum Datenblatt:
> Das war das Erste was ich mir besorgt hatte.

Besorgen alleine reicht nicht, lesen auch nicht.
Du musst es verstehen und die dort genannten Grenzen einhalten.

von Andreas V. (Firma: IGL) (andreas_va)


Lesenswert?

Gut! Sei es so dass ich 3,3V Betriebsspannung habe was nicht 
ungewöhnlich ist! Wo hat man schon 6,144V oder 4,096V Betriebsspannung?
Bei einer theoretischen Auflösung von 0,1875mV wären das rund 18000.
Die Werte 18001 bis 32768 können nicht verwendet werden weil es 
elektrisch nicht paßt!
Somit wären wir bei 14Bit ohne das Rauschen zu berücksichtigen!

Ohne Operationsverstärker an 4V oder 6V wirds wohl nichts!
Es wird ja immer schlechter!

von Timo S. (kaffeetas)


Lesenswert?

Die China Module sind für single Ended Messungen nur bedingt geeignet. 
Auf den Modulen sind Ferrite verbaut die einen AGND und AVCC "erzeugen", 
der AGND ist aber nicht herausgeführt. D.h bei single Ended wird gegen 
den Typ. verrauschten Digital GND gemessen.
Miss mal eine 1,5V Batterie im Differential Modus, so schlecht ist der 
AD gar nicht. Für 15/16bit muss man aber natürlich noch mehr Aufwand 
treiben als das was die Module mitbringen.

: Bearbeitet durch User
von Wolfgang (Gast)


Lesenswert?

Andreas V. schrieb:
> Somit wären wir bei 14Bit ohne das Rauschen zu berücksichtigen!

Du könntest einen Spannungsteiler verwenden.

von Andreas V. (Firma: IGL) (andreas_va)


Lesenswert?

Irgendwie hätte ich mehr erwartet.

Wenn ich "single-ended" messe, dann kann ich nur maximal 15 Bit 
ausnutzen wenn ich eine Betriebsspannung von 6,144V habe. Bei kleinerer 
Betriebsspannung geht der Rest der Auflöung verloren.

Wenn ich differentiell messe, dann kann ich 16 Bit ausnutzen wenn ich 
einen Eingang auf 0V lege und den anderen an die positive oder negative 
Spannung? Das erschloß mich mir aus dem Datenblatt nicht. Mal abgesehen 
dass selbst die 15 Bit wegen des Rauschens ohnehin keinen Sinn mehr 
machen! Das Entwerfen von Analogen Schaltungen war noch nie einfach!

Habe ich das richtig verstanden?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Andreas V. schrieb:
> Somit wären wir bei 14Bit ohne das Rauschen zu berücksichtigen!
Andreas V. schrieb:
> Ebay-Artikel Nr. 323353422910
Damit und mit zugehöriger freifliegender Steckbrettverkablung dürftest 
du beim besten Willen nicht mehr als 12 stbile Bits erwarten...

> Ohne Operationsverstärker an 4V oder 6V wirds wohl nichts!
Ich meine da eher, dass ein simpler Spannungsteiler nötig ist.

Andreas V. schrieb:
> Das Gerät ist auf 6.144V mit +-32768 Werten eingestellt.
Stell den ADC auf +-2V ein und nimm Spannungsteiler mit einem Teiler von 
2:1 (für 4V) oder 3:1 (für 6V).
Oder noch besser: nimm die differentielle Messung, stelle einen 
Messbereich +-1V ein und schalte vor jeden der beiden Eingänge den 
erwähnten Spannungsteiler. Dann hast du die gewünschte bidirektionale 
Messung (solange der Akku nicht noch irgendeinen anderen Potentialbezug 
hat).

Andreas V. schrieb:
> Irgendwie hätte ich mehr erwartet.
Was ich nach einigen Jahren gelernt habe ist das: elektronische Bauteile 
funktionieren in den meisten Fällen nicht "wie gewünscht", sondern wie 
im Datenblatt angegeben.

: Bearbeitet durch Moderator
von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Andreas V. schrieb:
> Irgendwie hätte ich mehr erwartet.

Es ist immer wieder interessant bzw. lästig, wie sehr viele Menschen 
beliebige Erwartungen auf irgendwelche Produkte projizieren, ohne zu 
prüfen, ob das Produkt diese Erwartungen auch nur ansatzweise erfüllen 
kann. Ich habe auch einen mittlerweile langjährigen Kunden, dessen 
Produktmanager etwas entwickelt haben möchte und dann sagt: "Alles ganz 
einfach! Ich habe schon ein paar passende Bauteile herausgesucht." Und 
dabei schaut er eben nur auf die Absolute Maximum Ratings der Bauteile 
und leitet daraus die Vorgaben für das Lastenheft ab. Du bist aber noch 
schlimmer: Dich interessieren offenbar noch nicht einmal diese Werte, 
die die Zerstörgrenze des Bauteils definieren, sondern rechnest Dir noch 
optimistischere Werte zurecht.

von Andreas V. (Firma: IGL) (andreas_va)


Lesenswert?

Lothar M. schrieb:
> Damit und mit zugehöriger freifliegender Steckbrettverkablung dürftest
> du beim besten Willen nicht mehr als 12 stbile Bits erwarten...
Da gibt es ein Problem. Ich habe eine Last an den Bleiakku geschaltet. 
Außerdem habe ich einen 68p Kondensator an den ADC-Eingang und gegen 
Masse geschaltet. Damit wird die Spannung stabiler. Trotzdem habe ich 
ein Störsignal von 50Hz mit dem Oszi auf dem Ausgang vom Bleiakku 
gemessen.  Jetzt machen die 15 Bit aber schon eher Sinn.

>> Ohne Operationsverstärker an 4V oder 6V wirds wohl nichts!
> Ich meine da eher, dass ein simpler Spannungsteiler nötig ist.
Ich dachte auch eher an Verpolungsschutz und Messung negativer 
Spannungen mit 4 Kanälen. Wenn's der Spannungsteiler auch tut ist es ja 
super! Die Messung negativer Spannungen geht dann aber nicht! Vor Allem 
verstehe ich nicht wo das 16-te Bit herkommen soll.

2^15 ist 32768! Wenn ich zwei Werte voneinander abziehe komme ich 
maximal auf 32768. Oder ist wiklich nur das Zeichen ob die Differenz 
positiv oder negativ ist? Da würde ich zwei 15-Bit-Absolutwerte 
voneinander abziehen und ein Vorzeichen davorsetzen.

Das sind aber 15-Bit mit Vorzeichen und keine "echten" 16-Bit! Vor Allem 
messe ich dann auch keine positiven oder negativen Spannungen, sondern 
nur Werte gegen den maximal negativsten Spannungswert als Nullpotential.

> Andreas V. schrieb:
>> Irgendwie hätte ich mehr erwartet.
> Was ich nach einigen Jahren gelernt habe ist das: elektronische Bauteile
> funktionieren in den meisten Fällen nicht "wie gewünscht", sondern wie
> im Datenblatt angegeben.
Ja! ADC's in der Praxis sind an mir bisher immer vorbei gegangen. 
Bislang habe ich immer nur mit den digitalen Werten gearbeitet die aus 
einer Messeinheit kamen. Im Datenblatt stehen halt nicht alle Fakten so 
offensichtlich drinnen! Vor Allem beziehen sich viele Aussagen auf 
diffenzielle Messungen! Das war mir nicht klar!

von Andreas V. (Firma: IGL) (andreas_va)


Lesenswert?

Andreas S. schrieb:
> Es ist immer wieder interessant bzw. lästig, wie sehr viele Menschen
> beliebige Erwartungen auf irgendwelche Produkte projizieren, ohne zu
> prüfen, ob das Produkt diese Erwartungen auch nur ansatzweise erfüllen
> kann. Ich habe auch einen mittlerweile langjährigen Kunden, dessen
> Produktmanager etwas entwickelt haben möchte und dann sagt: "Alles ganz
> einfach! Ich habe schon ein paar passende Bauteile herausgesucht." Und
> dabei schaut er eben nur auf die Absolute Maximum Ratings der Bauteile
> und leitet daraus die Vorgaben für das Lastenheft ab. Du bist aber noch
> schlimmer: Dich interessieren offenbar noch nicht einmal diese Werte,
> die die Zerstörgrenze des Bauteils definieren, sondern rechnest Dir noch
> optimistischere Werte zurecht.

Ich war davon ausgegangen was im Datenblatt steht:

- 16-Bit Analog-to-Digital Converter with Internal Reference
- FOUR SINGLE-ENDED INPUTS (ADS1115)
- I2C-Interface

Was ich in der Praxis sehe sind 15-Bit bestenfalls mit Vorzeichen bei 
zwei Kanälen.

Das Problem mit dem Rauschen muss ich noch klären, aber da scheine ich 
ja nicht der Einzige zu sein!

von Guest (Gast)


Lesenswert?

Andreas V. schrieb:
> Im Datenblatt stehen halt nicht alle Fakten so offensichtlich drinnen!

Doch tun sie, du verstehst sie offensichtlich nur nicht. Genauso wenig 
wie du die Funktionsweise eines ADCs verstehst und was der Unterschied 
zwischen Genauigkeit und Auflösung ist.

Der ADC hat echte 16 Bit. Du hast doch angeblich mit digitalen Werten 
gearbeitet dann ist dir sich der Unterschied zwischen int und uint 
bekannt und warum man in einem int nur halb so große zahlen speichern 
kann....

von Digitalinsky (Gast)


Lesenswert?

Andreas V. schrieb:
> Das sind aber 15-Bit mit Vorzeichen und keine "echten" 16-Bit!

Fuck! Käse!

15 Bit und Vorzeichen enstprechen einem Zahlenumfang von 16 Bit!
Und das sind nun mal "echte" 16 Bit.

von Andreas V. (Firma: IGL) (andreas_va)


Lesenswert?

Guest schrieb:
> Der ADC hat echte 16 Bit. Du hast doch angeblich mit digitalen Werten
> gearbeitet dann ist dir sich der Unterschied zwischen int und uint
> bekannt und warum man in einem int nur halb so große zahlen speichern
> kann....

Ich bekomme maximal 2^15 = 32768 Counts zurück!
Die Auflösung ist 6,144V / 32768 = 0,1875mV

Bei der realen Genauigkeit bin ich bei +- 3 x 0,1875mV

von Gerhard O. (gerhard_)


Lesenswert?

Fassen wir doch einmal zusammen:

1) Rauschen: Nach Table 1 und 2 auf Seite 13: Von 8-128 sps sind 16-bit 
Auflösung machbar.
2) 6.144V Messbereich: Nach Table 3 auf Seite 17:
(1) This parameter expresses the full-scale range of the ADC scaling.
Do not apply more than VDD + 0.3 V to the analog inputs of the
device.

Es sind aber +/-3.072V zulässig solange die Spannung die GND/Vdd 
Grenzwerte nicht überschreitet.

"Analog input voltages must never exceed the analog input voltage limits 
given in the Absolute Maximum Ratings. If a VDD supply voltage greater 
than 4 V is used, the ±6.144 V full-scale range allows input voltages to 
extend up to the supply. Although in this case (or whenever the supply 
voltage is less than the full-scale range; for example, VDD = 3.3 V and 
full-scale range = ±4.096 V), a full-scale ADC output code cannot be 
obtained. For example, with VDD = 3.3 V and FSR = ±4.096 V, only signals 
up to VIN = ±3.3 V can be measured. The code range that represents 
voltages |VIN| > 3.3 V is not used in this case."

Die Differenzeingänge sollte man immer über Widerstände und einem C 
beschalten. Erstens wird im Überlastungsfall der Strom in die 
Eingangsbeschaltung begrenzt und zweitens werden hochfrequente 
Störungseinflüsse einschließlich Netzfrequenz gemildert.
(Bei 8-128sps kann man sich das erlauben)

Siehe auch Figure 44.
Siehe auch 10.2.2.6 Filter Kommentar
Siehe auch 10.2.2.8 Resultate

Der Abschnitt 10.2 bis 11 ist als Einführung in die Problematik 
lesenswert.

von Wolfgang (Gast)


Lesenswert?

Andreas V. schrieb:
> Ich bekomme maximal 2^15 = 32768 Counts zurück!

Bau erstmal deine Schaltung so sauber auf, dass du diese 15 Bit 
unverrauscht zu fassen bekommst.

Der Wandler deckt einen Bereich von 16 Bit ab und auf welchen Full Scale 
Range dies abgebildet werden kann, steht in Datenblatt in Tabelle 3.
Wenn dir das nicht passt, hast du den falschen Wandler gewählt.

von Achim S. (Gast)


Lesenswert?

Andreas V. schrieb:
> Ich bekomme maximal 2^15 = 32768 Counts zurück!

Klar: weil du nur eine Hälfte des Messbereichs nutzt (die positive) - du 
verschenkst ein Bit, das der ADC dir bieten würde, wenn du den 
Messbereich vollständig ausnutzt.

Du könntest ja z.B. auch im +-6,144V Messbereich nur Spannungen zwischen 
0V und 384mV anlegen. Dann würdest du halt einen noch kleineren Teil des 
Messbereichs nutzen und bekämst nur Werte von 0 .. 2047 (2^11-1) zurück. 
Trotzdem kämst du (hoffentlich) nicht auf die Idee, es deswegen dann 
einen 11 Bit ADC zu nennen. Es wäre weiter ein 16 Bit ADC, von dessen 
Messbereich du nur den zweiundreißigsten Teil ausnutzt.

von Andreas V. (Firma: IGL) (andreas_va)


Lesenswert?

Digitalinsky schrieb:
> Fuck! Käse!
>
> 15 Bit und Vorzeichen enstprechen einem Zahlenumfang von 16 Bit!
> Und das sind nun mal "echte" 16 Bit.

Genau!

-3V => 0 Counts
0V => 16384 Counts (Ref1)
+3V => 32768 Counts

Beispiel1:
Ref1 = 16384 Counts
Ref2 = 0 Counts
Ref2 - Ref1 = 0 - 16384  = -16384 Counts

Beispiel2:
Ref1 = 16384 Counts
Ref2 = 32768 Counts
Ref2 - Ref1 = 32768- 16384 = +16384 Counts

Macht für mich maximal 2^15 Werte die ich nutzen kann wenn ich die 
Kontakte nicht umpole!

: Bearbeitet durch User
von Digitalinsky (Gast)


Lesenswert?

Andreas V. schrieb:
> Macht für mich maximal 2^15 Werte die ich nutzen kann wenn ich die
> Kontakte nicht umpole!

Bei dir ist Hopfen und Malz verloren. Also alles .....

von Harald W. (wilhelms)


Lesenswert?

Andreas V. schrieb:

> Schließe ich den Bleiakku verpolt an (für mein Verständnis Minusbereich)
> dann kille ich den ADS1115 damit.

Das ist bei den meisten ICs und Elektronikgeräten so, wenn sie nicht
extra gegen eine solche Fehlbedienung abgesichert sind.

> Wie kann ich auch negative Werte messen ohne dass ich mir den
> Analog-Digital-Wandler töte?

https://www.mikrocontroller.net/articles/Spannungsteiler#Spannungsteiler_mit_Offset.2C_passiv

Zusätzlich brauchst Du eine Absicherung gegen zu hohe Spannungen am 
Eingang.

von Andreas V. (Firma: IGL) (andreas_va)


Lesenswert?

Ich versuche die Logik von dem Ding nur zu verstehen bevor ich den 
nächsten ADC töte.

Ich fasse zusammen:
-Ich darf nur positive Spannungen messen.
-Die höchste positive Spannung hat den Wert 32768(2^15) was 6,144V (oder 
auch 4,048V, ...) entspricht.
- Negative Spannungen zerstören das IC an AIN1.
- Ich kann zwei Spannungen in Counts (2^15) subtrahieren
differentiell gilt folgendes:
The ADS1113/4/5 A/D core measures a differential signal, V at any time 
and always reflect the most recent IN, that is the difference of AINP 
and AINN
Wobei alle Spannungen positiv sein müssen, weil ja der ADC keine 
negativen Werte verträgt.

Subtrahiere ich zwei 15-Bit Werte voneinander, dann kann kein 16 
Bit-Wert herauskommen! Auch mit Vorzeichen nicht! Es sei denn AIN2 kann 
negative Werte....

: Bearbeitet durch User
von Guest (Gast)


Lesenswert?

Herr im Himmel....

Der ADC bildet die Differenz für dich und spuckt einen 16 Bit mit 
Vorzeichen aus. Der negative Anschluss kann entweder GND bezogen sein 
oder oder an einen der Anschlüsse verbunden sein. Seite 14 im Datenblatt 
hat doch eine Übersicht und eine Seite weiter ist das Mux nochmal 
erläutert.

Und es ist auch Latte wie rum du die Batterie anschließt, solange du das 
Mux nicht so eingestellt hast, das der negative Eingang auf GND liegt. 
Wenn du dann minus an einen Eingang machst und plus mit GND verbindest 
geht das Ding natürlich hoch. Selbstverständlich darf bei der 
differentiellen Messung dann kein Bezug zwischen der Batterie und GND 
des ADC sein.

von Elias K. (elik)


Lesenswert?

Andreas V. schrieb:
> Ich fasse zusammen:
> -Ich darf nur positive Spannungen messen.
Es dürfen nur positive Potentiale -anliegen-. (zw. GND und VDD)

> -Die höchste positive Spannung hat den Wert 32768(2^15) was 6,144V (oder
> auch 4,048V, ...) entspricht.

> - Negative Spannungen zerstören das IC an AIN1.
Richtig:
1
Electrostatic discharge (ESD) diodes connected to VDD 
2
and GND protect the ADS111x analog inputs. Keep the
3
absolute voltage of any input within the range shown 
4
in Equation 3 to prevent the ESD diodes from turning on.
5
GND – 0.3 V < V(AINX) < VDD + 0.3 V 
6
If the voltages on the input pins can potentially 
7
violate these conditions, use external Schottky diodes 
8
and series resistors to limit the input current to safe 
9
values (see the Absolute Maximum Ratings table).

> - Ich kann zwei Spannungen in Counts (2^15) subtrahieren
> differentiell gilt folgendes:
> The ADS1113/4/5 A/D core measures a differential signal, V at any time
> and always reflect the most recent IN, that is the difference of AINP
> and AINN
> Wobei alle Spannungen positiv sein müssen, weil ja der ADC keine
> negativen Werte verträgt.
Richtig. Aber obwohl alle Spannungen positiv sind, kann der ADC negative 
DIFFERENZspannungen messen. Zwei Beispiele: (für Messbereich ±6.144 V 
und VDD ausreichend groß)
a) IN0 = INP = 6.144 V, IN1 = INN = 0 V
    --> Output =  32768, das entspricht +6.144 V
b) IN0 = INP = 0 V, IN1 = INN = 6.144 V
    --> Output = -32768, das entspricht -6.144 V
Der komplette Messbereich beträgt dann 12,288 V, bzw. -32768 bis 32768 
und damit 2*2^15 = 2^16 Bit.

Im Single Ended Mode ist das Bezugspotential immer Ground. Damit 
entfällt die untere Hälfte des Messbereiches und es sind max. 15 Bit 
nutzbar.

> Subtrahiere ich zwei 15-Bit Werte voneinander, dann kann kein 16
> Bit-Wert herauskommen! Auch mit Vorzeichen nicht! Es sei denn AIN2 kann
> negative Werte....
32768 - (-32768) = 65.536‬ = 2^16
siehe auch oben

von Andreas V. (Firma: IGL) (andreas_va)


Lesenswert?

Ihr habt Recht!

Man kann sich den ADC auch schönrechnen!

Beispiel1:
Ref1 = 32768 Counts
Ref2 = 0 Counts
Ref2 - Ref1 = 0 - 32768  = -32768 Counts

Beispiel2:
Ref1 = 0 Counts
Ref2 = 32768  Counts
Ref2 - Ref1 = 32768  - 0 = +32768 Counts

Damit hätte ich meinen Bezugspunkt (0V) zwar jeweils verschoben, aber 
ich komme auf 2^16 Möglichkeiten!

LOL!

von Achim S. (Gast)


Lesenswert?

Andreas V. schrieb:
> Man kann sich den ADC auch schönrechnen!

Das hat exakt gar nichts mit schönrechnen zu tun. Die Auflösung bezieht 
sich auf den gesamten Messbereich. Und der ADS1115 hat natürlich eine 
Auflösung von 16 Bit. Jeder mit etwas Ahnung von der Sache wird auf 
dieser Aussage bestehen.

Was du immer wieder reinmischst - und dich dadurch selbst verwirrst - 
ist die Frage, wie gut du den vollständigen Messbereich ausnutzt.

Ich hatte das Beispiel schon mal weiter oben gegeben: wenn du im 
Messbereich +- 6,144V willkürlich nur Spannungen zwischen 0V und 384mV 
an den Eingang anlegen würdest, dann würde der ADC nur Werte zwischen 0 
und 2047 Counts liefern. Eigentlich würden also 11 Bit reichen, um 
diesen Wertebereich abzudecken. Trotzdem wäre der ADC kein 11 Bit ADC 
sondern weiter ein 16Bit ADC (von dessen Messbereich halt nur ein 
Bruchteil ausgenutzt wird).

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Andreas V. schrieb:
> Ich war davon ausgegangen was im Datenblatt steht:
>
> - 16-Bit Analog-to-Digital Converter with Internal Reference
> - FOUR SINGLE-ENDED INPUTS (ADS1115)
> - I2C-Interface

Das Datenblatt endet aber nicht mit dem Deckblatt, sondern hat noch 
deutlich mehr Seiten. Und diese muss man eben durchlesen und verstehen.

Andreas V. schrieb:
> Damit hätte ich meinen Bezugspunkt (0V) zwar jeweils verschoben, aber
> ich komme auf 2^16 Möglichkeiten!

Um einen hochauflösenden ADC ordentlich anzusteuern, verwendet man 
vorzugsweise die differentielle Ansteuerung und Signalvorverarbeitung. 
Insbesondere muss man sich sehr genau überlegen, welche Stelle des 
GND-Signals wirklich welches Potential hat. Hierbei muss man natürlich 
beachten, dass die Pins und Bondingdrähte der Bauteile teils erhebliche 
parasitäre Widerstände und Induktivitäten aufweisen.

Wenn man auch nur ansatzweise an die volle Wandlerauflösung herankommen 
will, dann pfuscht man solch eine Schaltung auch nicht mal auf die 
Schnelle auf einem Steckbrett zusammen.

> LOL!

Warum versuchst Du, das ganze ins Lächerliche zu ziehen?

Und noch eine ganz andere Frage:
Warum hast Du eigentlich einen Delta-Sigma- und keinen SAR-Wandler 
ausgewählt? Hierfür muss es doch einen ganz konkreten Grund geben.

: Bearbeitet durch User
von Andreas V. (Firma: IGL) (andreas_va)


Lesenswert?

Achim S. schrieb:
> Ich hatte das Beispiel schon mal weiter oben gegeben: wenn du im
> Messbereich +- 6,144V willkürlich nur Spannungen zwischen 0V und 384mV
> an den Eingang anlegen würdest, dann würde der ADC nur Werte zwischen 0
> und 2047 Counts liefern. Eigentlich würden also 11 Bit reichen, um
> diesen Wertebereich abzudecken. Trotzdem wäre der ADC kein 11 Bit ADC
> sondern weiter ein 16Bit ADC (von dessen Messbereich halt nur ein
> Bruchteil ausgenutzt wird).

Den vollen Messbereich erreicht man nur wenn man sich eine Logik baut 
die den Referenzpunkt bei positiver und negativer Spannung verschiebt.
Ob sich das lohnt sei dahingestellt. Der ADC hat intern von der Hardware 
her so weit ich das sehe 15 Bit bzw. Stufen. Der Rest ist Rechnerei!

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Andreas V. schrieb:
> Den vollen Messbereich erreicht man nur wenn man sich eine Logik baut
> die den Referenzpunkt bei positiver und negativer Spannung verschiebt.
> Ob sich das lohnt sei dahingestellt. Der ADC hat intern von der Hardware
> her so weit ich das sehe 15 Bit bzw. Stufen. Der Rest ist Rechnerei!

Deine Ahnungslosigkeit und Unbelehrbarkeit bezüglich analoger 
Schaltungstechnik sind schon beeindruckend. Aber erst einmal ordentlich 
die Klappe aufreißen...

Und man muss sich auch keine "Logik bauen", die den Referenzpunkt 
verschiebt, sondern eine differentielle analoge Signalverarbeitung 
aufbauen.

: Bearbeitet durch User
von Achim S. (Gast)


Lesenswert?

Andreas V. schrieb:
> Der ADC hat intern von der Hardware
> her so weit ich das sehe 15 Bit bzw. Stufen. Der Rest ist Rechnerei!

Er hat exakt 2^16 Stufen. Die gehen in Schritten von 187,5µV von -6,144V 
bis +6,144V.

Du hast einfach zu spät ins Datenblatt geschaut und deswegen einen 
ungünstigen Messaufbau gewählt, der dir nicht erlaubt, den gesamten 
Messbereich zu nutzen. Das war dein Fehler - auch wenn du versuchst, die 
Schuld daran dem ADC zuzuschreiben ;-)

von Andreas V. (Firma: IGL) (andreas_va)


Lesenswert?

Andreas S. schrieb:
> Und man muss sich auch keine "Logik bauen", die den Referenzpunkt
> verschiebt, sondern eine differentielle analoge Signalverarbeitung
> aufbauen.

Ja! Ich denke wir meinen das Gleiche!

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Achim S. schrieb:
> Das war dein Fehler - auch wenn du versuchst, die
> Schuld daran dem ADC zuzuschreiben ;-)

So darf man doch nicht mit der heutigen Jugend sprechen. Es könnte sie 
schwer traumatisieren, und außerdem sind immer die anderen schuld.

von Andreas V. (Firma: IGL) (andreas_va)


Lesenswert?

Achim S. schrieb:
> Er hat exakt 2^16 Stufen. Die gehen in Schritten von 187,5µV von -6,144V
> bis +6,144V.

Und damit hast Du den ADC getötet!

von Klaus R. (klara)


Lesenswert?

Andreas V. schrieb:
> Ich fasse zusammen:
> -Ich darf nur positive Spannungen messen.
Richtig.

> -Die höchste positive Spannung hat den Wert 32768(2^15) was 6,144V (oder
> auch 4,048V, ...) entspricht.
Falsch.
1
Datenblatt:  7.1 Absolute Maximum Ratings
2
             Analog input voltage
3
             MIN: GND - 0,3 V     MAX: VDD + 0,3 V
1
Datenblatt:  7.3 Recommended Operating Conditions
2
             ANALOG INPUTS
3
             FSR "Full-scale input voltage range" (VIN= V(AINP) V(AINN))
4
             MIN: +/-0,256 V      MAX: +/-6,144 V

Wie passt dies denn nun wieder? Es ist doch an einem Input nur VDD + 0,3 
V erlaubt?

9.2 Functional Block Diagrams, Seite 14.


Figure 22. "ADS1115 Block Diagram

Nach dem MUX haben wir da den PGA, einen programmierbaren 
Operationsverstärker. Der PGA hat symmetrische Eingänge und Ausgänge. 
Der ADC hat ebenfalls symmetrische Eingänge.

9.3.1 Multiplexer, Seite 15.

Figure 25. "Input Multiplexer" zeigt rechts die beiden analogen Kanäle 
die auf den PGA Eingang gehen. Der obere ist mit AINp (p für Plus) und 
der untere ist mit AINn (n für Negativ) bezeichnet.

Jetzt füllen wir mal die Formel VIN= V(AINP)– V(AINN) mit Werten.
1
VIN= V(3,3V) V(0v) = +3,3V
2
VIN= V(0V) V(0V) = -3,3V

Mehr geht leider nicht.
Eine Erklärung gibt es auf Seite 17, 9.3.3 Full-Scale Range(FSR)and 
LSBSize.

Analog input voltages must never exceed the analog input voltage limits 
given in the Absolute Maximum Ratings. If a VDD supply voltage greater 
than 4 V is used, the ±6.144V full-scale range allows input voltages to 
extend up to the supply. Although in this case (or when ever the supply 
voltage is less thanthe full-scale range; for example, VDD= 3.3 V and 
full-scale range= ±4.096V), a full-scale ADC output code can not be 
obtained. For example, with VDD= 3.3 V and FSR= ±4.096V, only signalsup 
to VIN= ±3.3 V can be measured.The code range that represents 
voltages|VIN| > 3.3 V is not used in this case.

Übersetzt von Google:
Analoge Eingangsspannungen dürfen niemals die in den absoluten 
Maximalwerten angegebenen Grenzwerte für die analoge Eingangsspannung 
überschreiten. Wenn eine VDD-Versorgungsspannung von mehr als 4 V 
verwendet wird, können sich die Eingangsspannungen im Bereich von ± 
6,144 V bis zur Versorgung erstrecken. Obwohl in diesem Fall (oder wenn 
die Versorgungsspannung immer kleiner als der Vollbereich ist; z. B. VDD 
= 3,3 V und Vollbereich = ± 4,096 V), kann kein ADC-Ausgangscode im 
Vollbereich erhalten werden. Beispielsweise können mit VDD = 3,3 V und 
FSR = ± 4,096 V nur Signale bis zu VIN = ± 3,3 V gemessen werden. Der 
Codebereich, der die Spannungen | VIN | darstellt > 3,3 V werden in 
diesem Fall nicht verwendet.

TI spricht von "Eingangsspannungen im Bereich von ± 6,144 V". Und zeigt 
in der Tabelle "Table3. Full-Scale Range and Corresponding LSB Size" das 
zum FSR  ± 6,144 V der LSB SIZE 187,5 µV gehört.

Anders gesagt, Du mißt eben nur bis VDD, der Rest wird abgeschnitten. 
Und wenn Du VDD + 0,3 V überschreitest ist der ADC hin.?
Der einzige Effekt für diesen Meßbereich ist, die Auflösung der Messung 
wird gröber. Der Sinn erschließt sich mir leider nicht.?‍♂️

Wenn Du eine größere Spannung als VDD messen willst, dann setz vor dem 
Input einen Spannungsteiler. Als Über- und Unterspannungsschutz kannst 
Du den Schutz auf Seite 15, die Dioden (gegen VDD und GND) beim Muxer, 
nehmen. Es sollten aber Schottky Dioden mit sehr niedriger Flussspannung 
(0,3 V bei max. Ableitstrom) sein. Der Strom wird durch den 
Spannungsteiler begrenzt. Hat der erste Widerstand 1 k so kann eine 100 
mA Diode vor ca. 100 V schützen. Durch Teiler steigt der Schutz sogar 
noch um den Teilungsfaktor. Aber dies wäre nur rein theoretisch oder Du 
verwendest 10 W Widerstände.
mfg Klaus

von Andreas V. (Firma: IGL) (andreas_va)


Lesenswert?

Andreas S. schrieb:
> Achim S. schrieb:
>> Das war dein Fehler - auch wenn du versuchst, die
>> Schuld daran dem ADC zuzuschreiben ;-)
>
> So darf man doch nicht mit der heutigen Jugend sprechen. Es könnte sie
> schwer traumatisieren, und außerdem sind immer die anderen schuld.

Ich bin nur auf der Suche! Ein Totschlagargument wäre einfach zu einfach 
zu finden!

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Andreas V. schrieb:
> Achim S. schrieb:
>> Er hat exakt 2^16 Stufen. Die gehen in Schritten von 187,5µV von -6,144V
>> bis +6,144V.
>
> Und damit hast Du den ADC getötet!

Nein, das hat er nicht. DU hast es getan. Projiziere nicht Deine 
eigene Inkompetenz auf Dritte.

Auf technische Erklärungen hörst Du ja eh nicht, also bringt es auch 
nichts, diese noch einmal zu wiederholen.

von Wolfgang (Gast)


Lesenswert?

Andreas V. schrieb:
> Der ADC hat intern von der Hardware her so weit ich das sehe 15 Bit
> bzw. Stufen.

Das siehst du falsch. Der Input Multiplexer schaltet die gewünschten 
Signale auf den PGA, der Verstärkt die Differenz um den eingestellten 
Faktor und füttert damit den 16-Bit Sigma-Delta ADC.

von PittyJ (Gast)


Lesenswert?

16 Bit AD? Und das mit einem fliegenden Aufbau, 0.18mV messen?

Also: so gute Platinen und Aufbauten hatte ich noch nie.
Von den 10 Bit des Arduinos verwende ich nur 8.
Bei einem NXP habe ich 12, da sind auch nur 10 sinnvoll.
Bei einer Profiplatine hatte ich mal einen 24 Bit AD-Wandler. Trotz 
Oversampling gingen nur 18 Bit, der Rest war Datenmüll.

Überprüfe doch erst einmal, ob deine Platine, und die 
Spannungsversorgung stabil genug ist, um nicht mehr als 0.18 mV zu 
rauschen (z.B. Referenzspannung).

Ansonsten, willkommen in der Realität.

von Jens G. (jensig)


Lesenswert?

>Den vollen Messbereich erreicht man nur wenn man sich eine Logik baut
>die den Referenzpunkt bei positiver und negativer Spannung verschiebt.
>Ob sich das lohnt sei dahingestellt.

Dann baue Dir doch einen "Single-Ended to Differential Converter" mit 
einem entsprechenden OPV auf (Google gibt etliche Beispiele)

>Der ADC hat intern von der Hardware
>her so weit ich das sehe 15 Bit bzw. Stufen. Der Rest ist Rechnerei!

Bloß weil Du es nicht kapierst? Wenn Du Dich da mal nicht versehen hast.

: Bearbeitet durch User
von Andreas V. (Firma: IGL) (andreas_va)


Lesenswert?

Klaus R. schrieb:
> Jetzt füllen wir mal die Formel VIN= V(AINP)– V(AINN) mit Werten.
> VIN= V(3,3V)– V(0v) = +3,3V
> VIN= V(0V)– V(0V) = -3,3V
>
> Mehr geht leider nicht.
> Eine Erklärung gibt es auf Seite 17, 9.3.3 Full-Scale Range(FSR)and
> LSBSize.

Das ist falsch!

von Andreas V. (Firma: IGL) (andreas_va)


Lesenswert?

Andreas S. schrieb:
> Andreas V. schrieb:
>> Achim S. schrieb:
>>> Er hat exakt 2^16 Stufen. Die gehen in Schritten von 187,5µV von -6,144V
>>> bis +6,144V.
>>
>> Und damit hast Du den ADC getötet!
>
> Nein, das hat er nicht. DU hast es getan. Projiziere nicht Deine
> eigene Inkompetenz auf Dritte.
>
> Auf technische Erklärungen hörst Du ja eh nicht, also bringt es auch
> nichts, diese noch einmal zu wiederholen.

Ich sag nur -6,144V am Eingang!

von Elias K. (elik)


Lesenswert?

Wenn wir hier schon über die Auflösung Klugschei#en wollen: Da steckt 
ein Delta Sigma Modulator drin. An dessen Ausgang kommt nur 1 Bit raus. 
Die Auflösung von 16 Bit macht ein digitales Filter. Das könnte auch 24 
Bit draus generieren. Macht bei dem Modulator aber keinen Sinn. Denn 
wenn wir dann noch mit ENOB anfangen...

Und differentielle Signalführung ist durchaus was anderes als zweimal 
Single Ended. Der 16 Bit differenzielle ADC ist praktisch eben nicht 
zweimal 15 Bit.

@Andreas V: Vielleicht in Ruhe drüber schlafen und morgen nochmal in 
Ruhe anschauen. Es wird gerade nur immer peinlicher.

von Andreas V. (Firma: IGL) (andreas_va)


Lesenswert?

Elias K. schrieb:
> Und differentielle Signalführung ist durchaus was anderes als zweimal
> Single Ended. Der 16 Bit differenzielle ADC ist praktisch eben nicht
> zweimal 15 Bit.

Nochmal:
2^16 = 65536 <> 32768

Praktisch erzeugt das Ding nur Werte von 0 bis 32767.
Der Rest mit dem differentiellen Verfahren gibt auch nur maximal 32768 
Werte aus.

Wenn man jetzt den Referenzpunkt verschiebt, dann sind es immer noch 
32768 Werte nur halt in die andere Richtung.
2^15 = 32768

von Guest (Gast)


Lesenswert?

Lass doch einfach die Leute mit deiner Unfähigkeit in Ruhe....

Lern erstmal wie ADCs funktionieren und wenn du das gemacht hast komm 
wieder.

von Andreas V. (Firma: IGL) (andreas_va)


Lesenswert?

Es geht doch lediglich darum wie man negative Spannungen verarbeiten 
soll.
Das hat jetzt erst mal mit dem Prinzip nichts zu tun.
Wenn der Chip das grundsätzlich nicht kann, dann ist das nur mit einer 
Krücke (wie Referenzpunktverschiebung) zu erreichen, da Analog input 
voltage (AINP or AINN) von GND bis VDD geht.

Also 16 Bit ADC ist sehr wohlwollend auagedrückt!

von Elias K. (elik)


Lesenswert?

Andreas V. schrieb:
> Es geht doch lediglich darum wie man negative Spannungen verarbeiten
> soll.

Bitte Differenzspannungen nicht mit negativen Spannungen verwechseln. 
Viele differentielle Signale die ich kenne haben auf beiden Adern 
positive Potentiale zu ihrem Bezugspotential. (LVDS, USB, PCIe, CAN, 
RS485, Wheatstonebrücken, ...)

: Bearbeitet durch User
von Klaus R. (klara)


Lesenswert?

Andreas V. schrieb:
> Klaus R. schrieb:
>> Jetzt füllen wir mal die Formel VIN= V(AINP)– V(AINN) mit Werten.
>> VIN= V(3,3V)– V(0v) = +3,3V
>> VIN= V(0V)– V(0V) = -3,3V
>>
>> Mehr geht leider nicht.
>> Eine Erklärung gibt es auf Seite 17, 9.3.3 Full-Scale Range(FSR)and
>> LSBSize.
>
> Das ist falsch!

Ja, Ja. Es sollte lauten:
VIN= V(0V)– V(3,3V) = -3,3V

Gut aufgepasst.?
mfg Klaus

von Andreas V. (Firma: IGL) (andreas_va)


Lesenswert?

So Kollegen danke ersdtmal,
da gibt's wohl verschiedene Datenblätter die ähnlich aussehen. In einem 
Datenblatt steht das Kapitel Input Protection. Da steht dass die 
Schutzschaltung am AIN 10mA dauerhaft verträgt. Damit habe ich bei einem 
3kOhm Vorwiderstand zum AIN einen Überspannungs-Schutz bis 30V. Bei 
Messung bis 2V fließen bei 2V/6MOhm= = 0,6uA in AIN. Es fallen somit 
3000 Ohm* 0,6uA=1,8mV am Vorwiderstand bei 2V Msßspannung ab. Das kann 
man dann über Korrekturwerte berichtigen.

Die negative Spannung an AIN darf -0,3V nicht übersteigen. Mit einer am 
AIN in Gegenrichtung und gegen Masse geschalteten Germaniumdiode oder 
auch der genannten Schottky Diode ist das zu erreichen. Allerdings 
braucht man dann unbedingt den Spannumgsteiler und verursacht 
Querströme. Obwohl man mit 6uA Querstrom leben kann. Allerdings wird der 
Gesamteigangswiderstand sehr niedrig.

Alternativ könnte man bei Überspannungsschutz bis 30V einen zweiten 
12kOhm Widerstand vorschalten. Somit wäre der Strom bei -30V / 12kOhm = 
-2,5mA begrenzt. Allerdings habe ich den Spannungsabfall bei 2V am 
Vorwiderstand auf 0,6uA * (12 + 3)kOhm = 9mV erhöht. Das wäre dann zu 
berücksichtigen. Allerdings habe ich bei 3,3V Betriebsspannung nur einen 
Messbereich bis 2V

Das hatte ich gesucht.

: Bearbeitet durch User
von Wolfgang (Gast)


Lesenswert?

Andreas V. schrieb:
> Praktisch erzeugt das Ding nur Werte von 0 bis 32767.
> Der Rest mit dem differentiellen Verfahren gibt auch nur maximal 32768
> Werte aus.

Der Wandler liefert ganz praktisch Werte zwischen 0x0000 und 0xFFFF 
verteilt über einen Bereich entsprechen Tab.3
Und du wirst zugeben, dass 0xFFFF durchaus als dezimal 65535 verstanden 
werden kann.

von Andreas V. (Firma: IGL) (andreas_va)


Lesenswert?

Wolfgang schrieb:
> Der Wandler liefert ganz praktisch Werte zwischen 0x0000 und 0xFFFF
> verteilt über einen Bereich entsprechen Tab.3
> Und du wirst zugeben, dass 0xFFFF durchaus als dezimal 65535 verstanden
> werden kann.

- Der größte Wert den ich zurückkriege ist 32768(2^15). Auch in allen 
Beispielen die ich sah ist das so.
- Negative analoge Eingangssignale sind nicht erlaubt.
- Somit ist auch beim differentiellen Verfahren eine Differenz von 
+-32768 möglich; - je nach dem wie man die Referenz legt. Allerdings 
sind dann logischerweise die Hälte der Werte redundant.

Wie kriegt man denn eine analoge Referenzpunktumschaltung/Invertierung 
bei genau einem bestimmten Wert so genau hin? Das schreit doch nach 
Fehler! Jetzt schreib nicht Trigger...

Hardwareentwickler versuche ich immer wieder zu verstehen...

: Bearbeitet durch User
von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Andreas V. schrieb:
> - Der größte Wert den ich zurückkriege ist 32768(2^15). Auch in allen
> Beispielen die ich sah ist das so.

Der Baustein liefert einen Wertebereich von 0x0000 bis 0xFFFF. Mehr 
nicht. Wie Du ihn interpretierst, ist Deine Sache. Und wenn Du oder 
irgendeine schrottige "Arduinobibliothek" Probleme mit Vorzeichen hat, 
ist das kein Problem des ADC.

> - Negative analoge Eingangssignale sind nicht erlaubt.

Wenigstens siehst Du das endlich ein.

> - Somit ist auch beim differentiellen Verfahren eine Differenz von
> +-32768 möglich; - je nach dem wie man die Referenz legt. Allerdings
> sind dann logischerweise die Hälte der Werte redundant.

Nein.

> Wie kriegt man denn eine analoge Referenzpunktumschaltung/Invertierung
> bei genau einem bestimmten Wert so genau hin? Das schreit doch nach
> Fehler! Jetzt schreib nicht Trigger...

Das ist kompletter Unsinn. Du bist ja offenbar nicht ansatzweise bereit, 
Dich mit analoger Signalverarbeitung zu beschäftigen. Da benötigt man 
keinen "Trigger".

Andreas V. schrieb:
> Ja! Ich denke wir meinen das Gleiche!

Wie bitte? Du maßt Dir an, solch eine Behauptung aufzustellen? Und 
unmittelbar danach stellt Du wieder unter Beweis, dass Du die Thematik 
überhaupt nicht verstanden hast.

> Hardwareentwickler versuche ich immer wieder zu verstehen...

Du musst nicht Hardwareentwickler verstehen, sondern die Grundlagen der 
elektronischen Schaltungstechnik. Die meisten der hiesigen Diskutanten 
sind auch keine reinen Hardwarewareentwicklung. Ich mache z.B. alles von 
analogen Messschaltungen, über Microcontroller, FPGA bis hin zur 
Firmware, Signalverarbeitung und Serveranwendungen. Nur mit 
GUI-Entwicklung kann man mich jagen.

: Bearbeitet durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Angehängte Dateien:

Lesenswert?

Andreas V. schrieb:
> Das Problem mit dem Rauschen muss ich noch klären
Sieh dir mal im Datenblatt nicht nur die erste Seite, sondern auch das 
Kapitel 12 an. Das wird dir bei der Ursachenforschung helfen.

Andreas V. schrieb:
> - Der größte Wert den ich zurückkriege ist 32768(2^15). Auch in allen
> Beispielen die ich sah ist das so.
Eigentlich ist das falsch. In der Hardware ist der höchste positive Wert 
32767. Die Zahl 32768 ist dann ein Überlauf und zugleich die größte 
negative Zahl.

> - Negative analoge Eingangssignale sind nicht erlaubt.
Nicht, wenn sie auf GND bezogen sind.

> - Somit ist auch beim differentiellen Verfahren eine Differenz von +-32768
> möglich;
Eine vorzeichenbehaftete 16 Bit Zahl kann Werte von -32768 bis +32767 
darstellen.
Und +32767+1 ergibt dann wegen eines Überlaufs ins 17. Bit den Wert 
-32768.

> - je nach dem wie man die Referenz legt. Allerdings sind dann
> logischerweise die Hälte der Werte redundant.
Nein, sie zeigen einen völlig neuen Wertebereich an, nämlich den der 
umgepolten Spannungen.

Andreas V. schrieb:
> Hardwareentwickler versuche ich immer wieder zu verstehen...
Hardwareentwickler sehen das Datenblatt nicht als "Wunschliste", sondern 
als eine Sammlung von Einschränkungen, die man einhalten muss. Sie 
beachten die erste "Werbeseite" nicht unnötig ausgiebig...  ;-)

: Bearbeitet durch Moderator
von Andreas V. (Firma: IGL) (andreas_va)


Lesenswert?

Also Leute ich lasse mich ja gerne beschimpfen, beleidigen und was auch 
immer!
Wenn's etwas bringt schlagt mich mit der Peitsche.

Aber diese Diskussion führt zu nichts!

Der ADC-funktioniert ja, allerdings nicht so wie ihr das beschreibt.

Mit den Arduino-Bibliotheken bin ich übrigens auch nicht zufrieden. In 
vielen Fällen sind die Libraries aufgebläht und decken Funktionen ab die 
man in den meisten Fällen nicht braucht. Insbesondere bei Displays ist 
das oft so. Eine Arduino Bibliothek ist allerdings besser als nichts. 
Beim SSD1306 habe ich mir die Arduino-Bibliothek umgeschrieben dass sie 
beim MSP430 auch  funktioniert. Im Übrigen steht es jedem frei es besser 
zu machen!

Was das beste Board ohne gescheite Software taugt habe ich beim Intel 
Quark letzte Woche erlebt. Das Teil is nämlich tot!

Fakt ist: Nicht überall wo 16 bit draufsteht ist 16-Bit drinnen. Nur 
hinterfragt das niemand! Glaube an die 16bit oder ich hau dir ...

;-)

: Bearbeitet durch User
von Bastler_HV (Gast)


Lesenswert?

Oh mamm mimimi ... keine 16 bit ...

Datenblatt lesen !!

Schalt deinen programmable gain amplifier(PGA) auf max d.h. ±256mV und 
Du kannst prima 16 Bit aus dem ADC rausholen.
Weil -256mV darfst Du unter GND gehen. Also alles gut, alles richtg.
(Das Rauschen ist natürlich höher ...)

Wenn im Prospekt auf der ersten Seite von Deinem Auto steht der Motor 
hat 300Nm dann meckerst Du doch auch nicht wenn die bei 100RPM nicht da 
sind.

von Johannes (Gast)


Lesenswert?

Lass mich raten: Du hast mit Elektronik noch nicht zu lang zu tun?

Die Welt ist halt ein wenig komplexer, als du sie dir vorstellst. Es 
gibt zig Nebenbedingungen und Umgebungsbedingungen, die das Verhalten 
von einem ADC beeinflussen. So ein Baustein ist kein fertiges 
Digitalmultimeter das du einfach irgendwo dranhängen könntest - man kann 
damit aber natürlich ein DMM bauen, erfordert aber einiges an 
Beschaltung um den ADC.

Die Datenblätter sind ein wenig wie Gesetzestexte. Klar steht da 16 Bit, 
und die 16 Bit lassen sich auch erreichen. *Aber nicht unter deinen 
Nebenbedingungen*. Und das das so ist, steht auch im Datenblatt.

Natürlich kommt hier auch noch der Marketingaspekt dazu. Teile werden 
gekauft, weil sie in den Datenblättern gut aussehen. Die Datenblätter 
sind zwar einerseits der Wahrheit verpflichtet, aber andererseits 
schreibt niemand gern auf die Titelseite "Manchmal-16bit-ADC".


Und zu guter letzt grätscht auch noch die Physik rein. Rauschverhalten, 
Nonlinearity, Missing Codes, Temperaturdrift usw. sind alles 
unterschiedliche Ungenauigkeiten eines ADC.
Je nach Einsatzzweck sind davon aber nur einige relevant und andere kann 
man ignorieren.

Der Hersteller kennt deinen Einsatzzweck nicht, den kennst nur du. Also 
musst du dich mit diesen Abweichungen beschäftigen und schauen, welche 
davon für dich relevant sind und welche nicht.
Dafür musst du aber natürlich erst mal verstehen, was diese Abweichungen 
genau bedeuten. Die Datenblätter werden von Leuten geschrieben die sich 
mit den jeweiligen Bauteilen bestens auskennen, und eine gewisse 
Grundkenntnis wird da vorausgesetzt.

Nur weil ein Autohersteller seinem Auto 250km/h Vmax bescheinigt, kannst 
du das ja auch nicht überall fahren.

Wenn du einen ADC quasi ohne Rauschen willst, dann bleib bei 10bit. Da 
geht das noch, da ärgert einen die Physik nicht so sehr.

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Johannes schrieb:
> Der Hersteller kennt deinen Einsatzzweck nicht, den kennst nur du. Also
> musst du dich mit diesen Abweichungen beschäftigen und schauen, welche
> davon für dich relevant sind und welche nicht.

Der TE weigert sich auch beharrlich, zu erklären, warum seine Wahl 
überhaupt auf einen Delta-Sigma-ADC und nicht auf einen anderen Typ, 
z.B. SAR, gefallen ist. Wo bleibt da die schlüssige Begründung.

von Johannes S. (Gast)


Lesenswert?

Andreas S. schrieb:
> Wo bleibt da die schlüssige Begründung.

braucht man nicht, die Dinger gibts beim Chinesen zu Schüttgutpreisen 
und 16 Bit hört sich doch gut an.

von Guest (Gast)


Lesenswert?

Andreas V. schrieb:
> Aber diese Diskussion führt zu nichts!
> Der ADC-funktioniert ja, allerdings nicht so wie ihr das beschreibt.

Das die Diskussion zu nichts führt ist korrekt du hast nämlich absolut 
keine Ahnung und weigerst dich etwas zu lernen.

Der ADC tut genau das was jeder hier beschreibt, du verstehst nur den 
Unterschied zwischen negativer Spannung bezogen auf GND und negativer 
Spannungsdifferenz bezogen auf 2 Punkte ( hier 2 ADC Eingänge) nicht.

Andreas V. schrieb:
> Mit den Arduino-Bibliotheken bin ich übrigens auch nicht zufrieden.

Dann benutz sie nicht, ich befürchte nur das du sowieso nicht in der 
Lage bist ohne klar zu kommen, zumindest wenn du dich da genau so 
anstellst wie hier.

Andreas V. schrieb:
> Fakt ist: Nicht überall wo 16 bit draufsteht ist 16-Bit drinnen. Nur
> hinterfragt das niemand! Glaube an die 16bit oder ich hau dir ...

Da irrst du dich, denn auch hier steht 16 Bit drauf und es stecken auch 
16 Bit drin.

Konfigurier mal deinen ADC korrekt und dann machst du In 2 auf GND und 
an In 1 hälst du eine AA Batterie deren - auf GND bezogen ist und 
anschließend vertauscht du die Eingänge, dann wirst du sehen was 
passiert....

von Johannes (Gast)


Lesenswert?

Andreas S. schrieb:
> Der TE weigert sich auch beharrlich, zu erklären, warum seine Wahl
> überhaupt auf einen Delta-Sigma-ADC und nicht auf einen anderen Typ,
> z.B. SAR, gefallen ist. Wo bleibt da die schlüssige Begründung.

Hab den ADS1115 auch schon verwendet, sogar genau die gleiche Platine 
wie der TE. Bei dem Preis überlegt man wirklich nicht lang, war ziemlich 
zufrieden mit dem Teil.

Man muss natürlich wissen was geht und was nicht. Wobei ich glaub schon 
halbwegs saubere 14bits rausbekommen hab, ist wesentlich besser als alle 
µC integrierten ADCs in der gleichen Preisklasse.

von Andreas V. (Firma: IGL) (andreas_va)


Angehängte Dateien:

Lesenswert?

Bastler_HV schrieb:
> Oh mamm mimimi ... keine 16 bit ...
>
> Datenblatt lesen !!
>
> Schalt deinen programmable gain amplifier(PGA) auf max d.h. ±256mV und
> Du kannst prima 16 Bit aus dem ADC rausholen.
> Weil -256mV darfst Du unter GND gehen. Also alles gut, alles richtg.
> (Das Rauschen ist natürlich höher ...)
>
> Wenn im Prospekt auf der ersten Seite von Deinem Auto steht der Motor
> hat 300Nm dann meckerst Du doch auch nicht wenn die bei 100RPM nicht da
> sind.

Danke!

Das war doch einfach!
Ich war lange Zeit nicht mehr in der Elektronik-Branche und evaluiere 
gerade die Möglichkeiten für diverse Szenarien. Den ADS1115 kannte ich 
noch nicht. Momentan beschäftige ich mich damit wie man kostengünstig 
Werte mit hoher Präzision messen kann. Dabei kommt es nicht auf die 
Schnelligkeit an. Das Interessante an dem Chip sind die vier Kanäle und 
der Preis.

Ich habe gerade versucht die Randbedingungen für 16-Bit 
herauszubekommen!
Die meisten Leute verwenden nur 15 Bit. Ich fragte mich nur die ganze 
Zeit wie man das Maximale aus dem Chip herausholt. Einige Bibliotheken 
die ich bislang sah setzen teilweise falsche Werte was der 
grundsätzlichen Funktion keinen Abbruch tut. Es ist aber falsch!
Beispiel:
1
#define ADS1015_REG_CONFIG_DR_128SPS (0x0000) ///< 128 samples per second
2
#define ADS1015_REG_CONFIG_DR_250SPS (0x0020) ///< 250 samples per second
3
#define ADS1015_REG_CONFIG_DR_490SPS (0x0040) ///< 490 samples per second
4
#define ADS1015_REG_CONFIG_DR_920SPS (0x0060) ///< 920 samples per second
5
#define ADS1015_REG_CONFIG_DR_1600SPS (0x0080) ///< OK 1600 samples per second (default)
6
#define ADS1015_REG_CONFIG_DR_2400SPS (0x00A0) ///< 2400 samples per second
7
#define ADS1015_REG_CONFIG_DR_3300SPS (0x00C0) ///< 3300 samples per second

und
1
define ADS1015_REG_CONFIG_PGA_6_144V (0x0000) //+/-6.144V range = Gain 2/3
2
#define ADS1015_REG_CONFIG_PGA_4_096V (0x0200) //+/-4.096V range = Gain 1
3
#define ADS1015_REG_CONFIG_PGA_2_048V (0x0400) //+/-2.048V range = Gain 2 (default)
4
#define ADS1015_REG_CONFIG_PGA_1_024V (0x0600) //+/-1.024V range = Gain 4
5
#define ADS1015_REG_CONFIG_PGA_0_512V (0x0800) //+/-0.512V range = Gain 8
6
#define ADS1015_REG_CONFIG_PGA_0_256V (0x0A00) //+/-0.256V range = Gain 16

Laut Datenblatt stimmt das nicht. Siehe Tabelle im Anhang!

Ab dem zweiten 0,256V Wert steht die Bitfolge wahrscheinlich für 16 Bit.

Ich bin echt mal gespannt ob das mit den 256mV funktioniert!

von Johannes (Gast)


Lesenswert?

Wenn es dir darum geht das Maximum aus günstiger Hardware herauszuholen, 
würde ich kein Arduino Zeugs dafür verwenden.

Wie du ja schon bemerkt hast, geht es den Arduino Leuten oft darum, 
Dinge schnell irgendwie zum Laufen zu kriegen. Darunter leidet dann die 
vollständige Abdeckung der Hardware und halt auch die Qualität der 
Software. Ist ein Freiwilligenprojekt, und es will andere Dinge 
erreichen als du es willst - man kann den Leuten dafür keinen Vorwurf 
machen.

Wälz das Datenblatt ausführlichst und schreib deinen eigenen Code zur 
Ansteuerung, nur so kommst du an das Maximum der Hardware.

Grundlagen zu ADCs allgemein und deltaSigma im besonderen sind aber auch 
nötig. Man hat es in den letzten 20 Jahren geschafft die Physik 
reichlich zu besch**ßen und die Auflösungen von ADCs haben enorm 
zugenommen, aber das kommt halt mit einem Preis.

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Andreas V. schrieb:
> Das Interessante an dem Chip sind die vier Kanäle und
> der Preis.

Du willst also munter zwischen den Kanälen umschalten?

Dann hast Du sicherlich genau verstanden, welche Wandlertopologie 
hierfür besonders geeignet ist. Ein Tipp: Delta-Sigma ist es nicht...

von Johannes (Gast)


Lesenswert?

Ich seh da kein Problem. Du weist doch weder, ob er die Kanäle synchron 
konvertieren möchte, noch, welche Samplerate er braucht.

Du hast jetzt aus einem Satzfetzen einen recht speziellen Usecase 
konstruiert, für den der ADS1115 nicht geeignet ist. Mir ist nur nicht 
ganz klar wieso?

Oder hab ich was überlesen? Dieses dämliche rumgebashe hilft doch 
keinem, und es lässt den Rumbasher in keinem guten Licht dastehen.

von Andreas V. (Firma: IGL) (andreas_va)


Lesenswert?

Andreas S. schrieb:
> Du willst also munter zwischen den Kanälen umschalten?
>
> Dann hast Du sicherlich genau verstanden, welche Wandlertopologie
> hierfür besonders geeignet ist. Ein Tipp: Delta-Sigma ist es nicht...

Kann das der Multiplexer nicht?

4x pro Sekunde reicht!

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Andreas V. schrieb:
> Kann das der Multiplexer nicht?

Dem Multiplexer ist das völlig egal. Ich behaupte auch nicht, dass so 
etwas nicht ginge. Aber man sollte sich schon vorher überlegen, welches 
die geeignete Wandlertopologie für den gewünschten Anwendungsfall ist. 
Es muss doch eine knallharte Begründung dafür geben, dass Du meinst, 
Delta-Sigma wäre besser geeignet als SAR. Vielleicht können wir 
erfahrenen Elektronikentwickler ja noch etwas von Dir lernen.

PS.: Ich habe nicht gegen Delta-Sigma. In meinem aktuellen Projekt setze 
ich auch solch einen Wandler ein, weil er eben ganz bestimmte andere 
Eigenschaften als ein SAR- oder (Pipelined-)Flash-Wandler besitzt.

: Bearbeitet durch User
von Johannes (Gast)


Lesenswert?

@Andreas S.

Ich versteh's nicht. Was bezweckst du damit?

Der ADS1115 kostet auf Ali 1.43€, erster Treffer. Nenn doch mal einen 
externen SAR Wandler mit gleichem Preis. Und erläutere dann bitte, wo 
bei 4 Umschaltungen / Sekunde der Vorteil von SAR ggü. deltaSigma liegt.

An 16bit Flash Wandlern mit 4x MUX vorn dran wäre ich auch interessiert. 
Ich wär aber auch mit 14bit zufrieden, muss ja fair bleiben.


Du konstruierst dir an den Gegenenheiten völlig vorbei irgendwelche 
Fälle, nur um dem TE eins reinwürgen zu können. Nettikette? Unzufrieden 
im Leben? [Hier passendes einsetzen bitte]



@Andreas V.

4x pro Sekunde ist kein Problem. Wenn du dabei wirklich nur 1 Sample pro 
Kanal benötigst, kannst du auch die Umwandlungsgeschwindigkeit ein wenig 
reduzieren, verbessert das Rauschen. Alternativ aufsummieren und durch 
Messungsanzahl teilen.

von Andreas V. (Firma: IGL) (andreas_va)


Lesenswert?

Also messe ich etwas. Und zwar das was der ADC bekommt. Und das steht im 
config-Register...
Oder halt den Median nehmen.

: Bearbeitet durch User
von Bastler_HV (Gast)


Lesenswert?

Bie manchen Sigma Delta Wandlern muss man nach dem Umschalten des 
Multiplexers erst zwei dummy Messungen machen, erst beim 3. Wert hat 
sich das Filter eingeschwungen ...
Was der ADS1115 macht weiss ich nicht auswendig, schaut ins Datenblatt.
Bei SAR gibt es sowas nicht.

von Andreas V. (Firma: IGL) (andreas_va)


Angehängte Dateien:

Lesenswert?

Mit Config Registerwert 0xCF64 und einem Spannungsteiler mit 1:24 klappt 
es dann mit einem Kanal und 16 Bit endlich!
+- 6000mV funktionieren jetzt!
Wunderbar! Das war super! Danke!

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.