Raspberry Pi MCP3208
Verfasst: Dienstag 4. Dezember 2018, 09:13
Da ichjetzt die einzelnen Channel auslesen will benötigte ich einen Code der die Werte einzeln ausgeben kann und ich sie einzeln abfragen kann, mit den Wert muss ich in dem Programm weiter rechnen können. Somit muss ich diese zum Beispiel als Variable in eine Rechnung einfügen können.
Ich arbeite im Moment mit dem Beispielcode:
Gibt es einen Code mit dem ich das besser Programmieren könnte?
Mit dem folgenden Code funktioniert es jedoch nicht -> Werte sind alle immer 0
Mein Ziel ist es die Werte der einzelnen Channels in Variablen zu schreiben also 8 Channels 8 Variablen.
Mit diesen Variablen möchte ich dann weitere Rechnungen durchführen, da mir ja ein Wert von 0-4096 ausgegeben wird und ich ja aber den Stromwert wissen möchte. Diese Umrechnung habe ich mir schon aufgeschrieben, nur schaffe ich es nicht die Channel-werte als Variable
zu definieren.
Ich arbeite im Moment mit dem Beispielcode:
Code: Alles auswählen
from mcp3208 import MCP3208
import time
adc = MCP3208()
while True:
for i in range(8):
print('ADC[{}]: {:.2f}'.format(i, adc.read(i)))
time.sleep(0.5)
Mit dem folgenden Code funktioniert es jedoch nicht -> Werte sind alle immer 0
Code: Alles auswählen
from MCP3208 import MCP3208
from spidev import SpiDev
import time
class MCP3208:
def __init__(self, bus = 0, device = 0): # Hier wird der SPI Bus aktiviert
self.bus, self.device = bus, device
self.spi = SpiDev()
self.open()
def open(self):
self.spi.open(self.bus, self.device)
def read(self, channel = 0): # Hier werden die Channels abgefragt
adc = self.spi.xfer2([1, (8 + channel) << 4, 0])
data = ((adc[1] & 3) << 8) + adc[2]
return data
def close(self):
self.spi.close()
adc = MCP3208()
value0 = adc.read( channel = 0 ) # Channel 0
value1 = adc.read( channel = 1 ) # Channel 1
value2 = adc.read( channel = 2 ) # Channel 2
value3 = adc.read( channel = 3 ) # Channel 3
value4 = adc.read( channel = 4 ) # Channel 4
print("Anliegende Spannung: %.2f" % (value0 / 4096.0 * 3.3) ) # Ausgabe der Spannung
print("Anliegende Spannung: %.2f" % (value1 / 4096.0 * 3.3) ) # Ausgabe der Spannung
print("Anliegende Spannung: %.2f" % (value2 / 4096.0 * 3.3) ) # Ausgabe der Spannung
print("Anliegende Spannung: %.2f" % (value3 / 4096.0 * 3.3) ) # Ausgabe der Spannung
print("Anliegende Spannung: %.2f" % (value4 / 4096.0 * 3.3) ) # Ausgabe der Spannung
Mit diesen Variablen möchte ich dann weitere Rechnungen durchführen, da mir ja ein Wert von 0-4096 ausgegeben wird und ich ja aber den Stromwert wissen möchte. Diese Umrechnung habe ich mir schon aufgeschrieben, nur schaffe ich es nicht die Channel-werte als Variable
zu definieren.