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?
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.
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.
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...
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!
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?
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.
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!
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.
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?
... 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!
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.
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!
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.
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?
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.
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.
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!
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!
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....
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.
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
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.
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.
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.
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 .....
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.
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....
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.
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
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!
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).
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.
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!
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.
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 ;-)
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!
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.
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.1AbsoluteMaximumRatings
2
Analoginputvoltage
3
MIN:GND-0,3VMAX:VDD+0,3V
1
Datenblatt:7.3RecommendedOperatingConditions
2
ANALOGINPUTS
3
FSR"Full-scale input voltage range"(VIN=V(AINP)–V(AINN))
4
MIN:+/-0,256VMAX:+/-6,144V
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
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!
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.
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.
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.
>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.
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!
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!
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.
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
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!
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, ...)
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
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.
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.
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...
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.
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... ;-)
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 ...
;-)
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.
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.
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.
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.
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....
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.
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!
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.
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...
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.
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!
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.
@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.
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.
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!