Go Down

Topic: ADS1115 Genauigkeit (16bit) (Read 1 time) previous topic - next topic

patrick_bit4bit

In welchem Fall weist dieser die 16bit Genauigkeit auf?

Bei mir springt der Wert in 16er Schritten zwischen 0 und 65k.

SPS habe ich auf 128 gestellt.

Danke!

my_xy_projekt

In welchem Fall weist dieser die 16bit Genauigkeit auf?
Bei mir springt der Wert in 16er Schritten zwischen 0 und 65k.
SPS habe ich auf 128 gestellt.
Also so eine genaue Beschreibung mit geheimem Aufbau und geheimen Code ist mir eine genaue Antwort wert.

https://www.ti.com/lit/ds/symlink/ads1115.pdf

Wenn Du mehr erwartest, dann bitte komm mit Infos.

SpaghettiCode

Ich tippe mal darauf, daß nur 15bit genutzt werden, also das +/- bei der FSR bei  Punkt 9.3.3. im Datenblatt übersehen wurde.

Gruß André

patrick_bit4bit

#3
Jul 01, 2020, 09:06 pm Last Edit: Jul 01, 2020, 09:07 pm by patrick_bit4bit
@ my_xy_projekt --> eventuell hast du ja jetzt mehr Information, als das mir bereits bekannte Datenblatt parat.
Ich habe auch die Kommentare drin gelassen, falls diese noch zur Urteilsfindung beitragen.

Code: [Select]
#include <Adafruit_ADS1015.h>

Adafruit_ADS1115 ads;  /* Use this for the 16-bit version */


void setup(void)
{
 Serial.begin(115200);
 Serial.println("Hello!");
 
 Serial.println("Getting single-ended readings from AIN0..3");
 Serial.println("ADC Range: +/- 6.144V (1 bit = 3mV/ADS1015, 0.1875mV/ADS1115)");
 
 // The ADC input range (or gain) can be changed via the following
 // functions, but be careful never to exceed VDD +0.3V max, or to
 // exceed the upper and lower limits if you adjust the input range!
 // Setting these values incorrectly may destroy your ADC!
 //                                                                ADS1015  ADS1115
 //                                                                -------  -------
 //ads.setGain(GAIN_TWOTHIRDS);  // 2/3x gain +/- 6.144V  1 bit = 3mV      0.1875mV (default)
 //ads.setGain(GAIN_ONE);        // 1x gain   +/- 4.096V  1 bit = 2mV      0.125mV
 //ads.setGain(GAIN_TWO);        // 2x gain   +/- 2.048V  1 bit = 1mV      0.0625mV
 // ads.setGain(GAIN_FOUR);       // 4x gain   +/- 1.024V  1 bit = 0.5mV    0.03125mV
 //ads.setGain(GAIN_EIGHT);      // 8x gain   +/- 0.512V  1 bit = 0.25mV   0.015625mV
 ads.setGain(GAIN_SIXTEEN);    // 16x gain  +/- 0.256V  1 bit = 0.125mV  0.0078125mV
 ads.begin();
 Serial.println("started");

}

void loop(void){
//int16_t adc0 = ads.readADC_SingleEnded(0);
 int16_t adc0 = ads.readADC_SingleEnded(1);
 float resistance = 10.2;
 float mV = adc0 * 0.0078125;
 float mA = mV/resistance;

 float output = mapfloat(mA, 0, 20, 20, 125);

 //Serial.print("mA: "); Serial.println(mA);
 //Serial.print("mV: "); Serial.println(mV);
 Serial.print("AIN0: "); Serial.println(adc0);
 //Serial.print("temp: "); Serial.println(output);
 //Serial.println(" ");
 delay(100);

}

float mapfloat(float x, float in_min, float in_max, float out_min, float out_max){
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}


patrick_bit4bit

@ SpaghettiCode
Da hast du Recht, ich glaube der Sensor hat nur 15bit im positiven Bereich.
Aber warum dann in 16er Schritten? dann müsste der ja in 2er Schritten springen, oder nicht?

uwefed

Quote
Bei mir springt der Wert in 16er Schritten zwischen 0 und 65k.
Also liest Du Werte des gesamten Spannungsbereich.
Fehlt die Masseverbindung der Meßspannung?

Quote
SPS habe ich auf 128 gestellt.
Was bedeutet das? Ist das ein PWM Ausgang?

Grüße Uwe

Doc_Arduino

Hallo,

Quote
... ich glaube der Sensor hat nur 15bit im positiven Bereich.
Damit bist du ganz nah dran. Das ist abhängig von der Konfiguration.
Du treibst irgendwas mit einem 10,2 Ohm Widerstand. Vermutlich misst du den Spannungsabfall.
Mist du Single-Ended oder Differenz?
Zur Messung, 9.5.4 hast du komplett gelesen?
Die Antwort darauf löst deine Frage.

Ein Schaltplan wäre nicht falsch.

@ Uwe:
SPS ... Samples pro Seconds = 128
Tschau
Doc Arduino '\0'

Messschieber auslesen: http://forum.arduino.cc/index.php?topic=273445
EA-DOGM Display - Demos: http://forum.arduino.cc/index.php?topic=378279

uwefed

SPS Speicher Programierbare Schaltung.
Grüße  Uwe

Doc_Arduino

Hallo,

SPS ... Speicherprogrammierbare Steuerung   :smiley-mr-green:



Tschau
Doc Arduino '\0'

Messschieber auslesen: http://forum.arduino.cc/index.php?topic=273445
EA-DOGM Display - Demos: http://forum.arduino.cc/index.php?topic=378279

patrick_bit4bit

@Do_Arduino

Die Information unter 9.5.4 ist mir leider zu hoch und übersteigt meinen Wissensbereich.
Kannst du das bitte kurz erleutern?

Ich habe mich eher auf diesen Artikel bezogen (siehe Anmerkung...jpeg).

Wenn das also stimmt, dass der im positiven Bereich 15bit hat, dann würde es ja bedeuten dass die Ausgabe von 0-32768 festgelegt ist. Das mit den 16er Sprüngen leuchtet mir immer noch nicht ganz ein.

normalerweise sollte dieser ja jeden beliebigen Wert zwischen 0-32k (bei 15bit) annehmen können, oder liege ich da falsch?

anbei einen Entwurf meiner elektronischen Schaltung. :) seid gnädig bezüglich der Optik.

Danke!

patrick_bit4bit

Ein Beispiel vom Output, um es sich besser vorstellen zu können.

Die Werte sind alle auf Basis von AIN0 berechnet.

combie

Quote
Das mit den 16er Sprüngen leuchtet mir immer noch nicht ganz ein.
Kann die Sprünge nicht bestätigen:
AIN0: 1409
AIN0: 1412
AIN0: 1415
AIN0: 1415
AIN0: 1416
AIN0: 1417
AIN0: 1415
AIN0: 1416
AIN0: 1417
AIN0: 1415
AIN0: 1418
AIN0: 1416
AIN0: 1416
AIN0: 1416
AIN0: 1418
AIN0: 1415
AIN0: 1417

Gefährlich, was Theorien aus Menschen machen können.
Schlimmer, was Menschen aus Theorien machen.

patrick_bit4bit

Kannst du mir den Link zu deiner library posten?

wie sieht dein code dazu aus?

combie

#13
Jul 02, 2020, 06:22 pm Last Edit: Jul 02, 2020, 06:37 pm by combie
Kannst du mir den Link zu deiner library posten?

wie sieht dein code dazu aus?
Habe natürlich deinen Code verwendet.
Und auch die gleiche Lib, in der frischesten Variante.
Das Ganze mit der gerade aktuellen IDE 1.8.13
Allerdings mit der AVR-GCC 9.3 mit aktiviertem gnu++17 (C++17)


Das ist ja genau der Grund, weswegen man hier immer den problematischen/fehlerhaften Code posten soll.
ZUM testen!

 :smiley-cool:  :smiley-cool:  :smiley-cool:
Gefährlich, was Theorien aus Menschen machen können.
Schlimmer, was Menschen aus Theorien machen.

patrick_bit4bit

#14
Jul 02, 2020, 07:10 pm Last Edit: Jul 02, 2020, 07:21 pm by patrick_bit4bit
Da hast du vermutlich recht bezüglich dem Code-Post.

Ich habe die library von github bezogen und zwar zweimal, wobei bei der 2ten library die cpp auf ADS1115 umgeschrieben worden ist.
Ergebnis ist das gleiche.

jetzt probier ichs mal mit der library von Arduino IDE des Verwaltungsprogramm.
Danke fürs Testen! Hilft mir schon sehr weiter, jetzt wo ich weiss das es nicht am Code liegt.

Go Up