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!
:
Bearbeitet durch User
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
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.
:
Bearbeitet durch User
Andreas V. schrieb: > Somit wären wir bei 14Bit ohne das Rauschen zu berücksichtigen! Du könntest einen Spannungsteiler verwenden.
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.
:
Bearbeitet durch Moderator
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.
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
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....
:
Bearbeitet durch User
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.
:
Bearbeitet durch User
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.
:
Bearbeitet durch User
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.
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!
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
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.
:
Bearbeitet durch User
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
Lass doch einfach die Leute mit deiner Unfähigkeit in Ruhe.... Lern erstmal wie ADCs funktionieren und wenn du das gemacht hast komm wieder.
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, ...)
:
Bearbeitet durch User
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.
:
Bearbeitet durch User
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...
:
Bearbeitet durch User
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
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
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
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.
:
Bearbeitet durch User
@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.
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
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!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.