ich weiß jetzt nicht mehr weiter und baue auf eure Hilfe.
Ich möchte ganz simpel mit einem ADS1115 eine DC Spannung messen.
Der ADS1115 ist über I2C an einem RaspberryPi angeschlossen.
Hier mal mein Code
Code: Alles auswählen
import time
from ADS1x15 import ADS1115
# Create an ADS1115 ADC (16-bit) instance.
adc = ADS1115()
# Choose a gain of 1 for reading voltages from 0 to 4.09V.
# Or pick a different gain to change the range of voltages that are read:
# - 2/3 = +/-6.144V
# - 1 = +/-4.096V
# - 2 = +/-2.048V
# - 4 = +/-1.024V
# - 8 = +/-0.512V
# - 16 = +/-0.256V
# See table 3 in the ADS1015/ADS1115 datasheet for more info on gain.
GAIN = 1
def remap_range(value, adc_orgi_min, adc_orgi_max, adc_neu_min, adc_neu_max):
adc_orgi_span = adc_orgi_max - adc_orgi_min
adc_neu_span = adc_neu_max - adc_neu_min
valueScaled = (value - adc_orgi_min) / (adc_orgi_span)
return float(adc_neu_min + (valueScaled * adc_neu_span)) #Gibt angepassten Wert zurück
while (1):
value = adc.read_adc(0, gain=GAIN, data_rate=None)
spannung = remap_range(value, 0, 65536, 0, 4.096)
print (spannung, value)
Warum nicht die 3.3V? Was mache ich falsch? Es ist ja genau die hälfte, aber keine ahnung wieso

An meiner Funktion remap_range() sollte es normalerweise nicht liegen. Die habe ich getestet, indem ich in Value einfach 65536 übergeben habe, da kam dann als Return die 4.096V zurück
Und wieso wird der direkt vom ADC ausgelesene wert (value) -1, wenn ich den Eingang auf GND lege?
Nur um das ganze richtig zu verstehen, wenn ich den GAIN auf 1 stelle müsste ich doch bei einer angelegten Spannung von 4.096V vom ADC direkt 65536 auslesen, oder?