Guten Tag, ich bin ganz neu im Forum und habe ein wenig mitgelesen, aber
keine (direkte?) Antwort auf meine Frage bekommen. Ich versuche, meinen
Gaszähler mit einer IR-Diode auszulesen. Die 6 im Anzeigedisplay hat
eine silberne Platte und eine Empfangsdiode müsste das reflektierende
Signal bemerken.
Ich messe den Widerstand an der Empfangsdiode mit einem MCP3201. Die
Diode selbst ist über einen Widerstand an 3.3 Volt angeschlossen und das
Ausgangssignal wird dann von einem Raspberry ausgewertet, siehe
https://forum.fhem.de/index.php?topic=71609.0
Durch die Schaltung (siehe Bild, allerdings nutze ich 225kOhm
inzwischen) messe ich de facto nur den Widerstand der Diode. Daher ist
eine Schwankung der Referenzspannung irrelevant. Messe ich die Spannung
an der Diode mit einem digitalen Voltmeter, so ist diese Spannung
ziemlich störungsfrei: Läuft eine silberne 6 durch, sinkt die Spannung
deutlich, sonst bleibt sie halbwegs stabil.
Mit dem MCP bekomme ich aber starke Schwankungen auch ohne, dass die
silberne 6 durchläuft und die liegen im 5%-Bereich. Alles mit folgendem
python-Code
1 | spi = spidev.SpiDev()
|
2 | spi.open(0, 0)
|
3 | spi.max_speed_hz = 50000
|
4 | numdata = 100
|
5 | WasHigh = True
|
6 |
|
7 | def GetADC():
|
8 | Msum = 0
|
9 | s = 0
|
10 | while s < numdata:
|
11 | adc = spi.xfer2([0, 0]) #receive raw data
|
12 | hi = (adc[0] & 0x1F); #first three bits are irrelevant
|
13 | low = (adc[1] & 0xFE); #last bit is irrelevant: FE for B, FC for C chip (MCP3201-B/C) Danil
|
14 | data = (hi << 8) | low; #combine all bits
|
15 | Msum += int(data) #calculate average
|
16 | s += 1
|
17 | return int(Msum/(4*numdata)) #value is 4 times or 2 bits too high (see above)
|
18 | usw.
|
Ich hoffe mal, dass das kein Fehler in der Programmierung ist, da ich in
anderen Foren schon darüber diskutiert habe. Sonst wäre ich für einen
Hinweis sehr dankbar. Ich habe inzwischen den Eindruck, dass der MCP
sehr ungenau ist. Wieso muss man überhaupt iterieren und wieso liefert
er nicht unmittelbar einen genauen Wert? Hat hier jemand vergleichbare
Erfahrungen gemacht? Vielen Dank schon im Voraus für die Hinweise.