Hallo zusammen,
ich habe mir für mein Projekt den MCP3208 A/D Wandler geholt.
Ziel soll damit sein, einen PT1000 auszuwerten.
Heute wollte ich auf Arbeit meinen ganzen Aufbau mal testen und schauen wie genau das nun wirklich ist. Als Vergleich soll ein gekapselter DS18B20 und eine IR-Kamera dienen.
Jetzt sehe ich, dass es gewaltige Sprünge im Bitwert gibt, der sich natürlich auch auf
meine Berechnung ausweitet.
Damit frage ich den ADC ab.
Die Quelle weiß ich gerade nicht, musste es dann auch mit einem weitere Script
auf den 3208 anpassen.
import spidev
import time
spi = spidev.SpiDev()
spi.open(0, 0)
def readadc(adcnum):
# read SPI data from MCP3008 chip, 8 possible adc's (0 thru 7)
if adcnum > 7 or adcnum < 0:
return -1
r = spi.xfer2([4 + (adcnum >> 2), (adcnum & 3) << 6, 0])
adcout = ((r[1] & 15) << 8) + r[2]
return adcout
while True:
R1 = 1000
Uges = 3.3
Imess = 0.001602
Temp_Koef = 3.79
value = readadc(1)
volts = (value * 3.32) / 4096
#temperature = ((volts * (R1/(Uges - volts))) - 1000)/ Temp_Koef
temperature = ((volts/Imess)-1000) / Temp_Koef
print ("%4d/4096 => %5.3f V => %4.1f °C" % (value, volts, temperature))
time.sleep(1.0)
Alles anzeigen
So sieht die Ausgabe aus, den Temperaturwert lassen wir mal außen vor.
ZitatAlles anzeigen
4095/4096 => 3.319 V => 282.8 °C
4082/4096 => 3.309 V => 281.1 °C
4063/4096 => 3.293 V => 278.6 °C
4088/4096 => 3.314 V => 281.9 °C
3968/4096 => 3.216 V => 265.9 °C
3967/4096 => 3.215 V => 265.7 °C
4064/4096 => 3.294 V => 278.7 °C
4066/4096 => 3.296 V => 279.0 °C
4080/4096 => 3.307 V => 280.8 °C
4064/4096 => 3.294 V => 278.7 °C
4071/4096 => 3.300 V => 279.6 °C
4095/4096 => 3.319 V => 282.8 °C
4079/4096 => 3.306 V => 280.7 °C
4091/4096 => 3.316 V => 282.3 °C
4095/4096 => 3.319 V => 282.8 °C
3983/4096 => 3.228 V => 267.9 °C
3967/4096 => 3.215 V => 265.7 °C
3961/4096 => 3.211 V => 264.9 °C
4063/4096 => 3.293 V => 278.6 °C
4092/4096 => 3.317 V => 282.4 °C
4047/4096 => 3.280 V => 276.4 °C
4095/4096 => 3.319 V => 282.8 °C
4095/4096 => 3.319 V => 282.8 °C
4080/4096 => 3.307 V => 280.8 °C
4092/4096 => 3.317 V => 282.4 °C
4095/4096 => 3.319 V => 282.8 °C
4064/4096 => 3.294 V => 278.7 °C
4094/4096 => 3.318 V => 282.7 °C
3961/4096 => 3.211 V => 264.9 °C
4062/4096 => 3.292 V => 278.4 °C
4095/4096 => 3.319 V => 282.8 °C
4047/4096 => 3.280 V => 276.4 °C
Verkabelt wurde der ADC auf Basis von demhier Link.
Woran kann das liegen?
Die Vermutung von einem Arbeitskollegen ist, dass durch das Script evtl. während der Datenauswertung schon abgefragt wird.
Hat jemand nen besseren Code? Oder kann mir sonst wie weiterhelfen?
Danke