Page 1 of 1
Raspberry Pi MCP3208
Posted: Mon Nov 12, 2018 6:14 pm
by Consti9_9
Hallo zusammen,
mein Problem ist, dass ich eine Strommessung mit einem Stromsensor & dem MCP3208 durchführen will.
Ich hab schon ein Programm geschrieben. Davor habe ich die SPI Schnittstelle installiert und mit
den MCP3208 installiert.
Jetzt erscheint der Fehler bei dem Startvorgang : No module named MCP3208
Was ist der Fehler?
Code: Select all
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
Re: Raspberry Pi MCP3208
Posted: Tue Nov 13, 2018 5:00 am
by smartifahrer
Code: Select all
https://github.com/MomsFriendlyRobotCompany/mcp3208
Beim programieren must du auf die Schreibweise achten! Es gibt Sprachen die das ignorieren und andere die bei der kleinsten Abweichung maulen.
In Python ist die Unterscheidung in Großschreibung und Kleinschreibung wichtig sowie das einrücken!
Eine Suche bei Google hilft ungemein

So habe ich auch die Lösung für dich gefunden. Obwohl ich mit Python auch noch nicht viel gemacht habe.
Re: Raspberry Pi MCP3208
Posted: Tue Nov 13, 2018 8:28 am
by Consti9_9
Habe es auch mit klein mcp3208 versucht also das ist nicht die Lösung zu dem Problem

Re: Raspberry Pi MCP3208
Posted: Tue Nov 13, 2018 8:39 am
by mline
Führe mal den Befehl
aus und schau nach ob die mcp3208 die du mittels pip installiert hast auch in einem der Pfade da liegt. Falls nicht, füge den Pfad hinzu
Code: Select all
export PYTHONPATH="$PYTHONPATH:/pfad/zum/ordner/in/dem/der/ordner/mcp3208/liegt"
Re: Raspberry Pi MCP3208
Posted: Tue Nov 13, 2018 8:46 am
by Consti9_9
Es steht nicht dort wohin es installiert wird kann ich es auch anders installieren?
Re: Raspberry Pi MCP3208
Posted: Tue Nov 13, 2018 9:09 am
by smartifahrer
Ich habe da noch eine Idee.
Probier mal
Auf dem Raspberry ist Python 2.x und 3.x installiert. pip installiert für Python 2 und du wirst wohl Python 3 verwenden.
https://www.raspberrypi.org/documentati ... /python.md
Re: Raspberry Pi MCP3208
Posted: Tue Nov 13, 2018 9:10 am
by mline
Ich hab deinen Quelltext mal probiert...
Code: Select all
pi@raspberrypi:~ $ pip install mcp3208
...
pi@raspberrypi:~/Downloads $ python test.py
Traceback (most recent call last):
File "test.py", line 1, in <module>
from MCP3208 import MCP3208
ImportError: No module named MCP3208
pi@raspberrypi:~/Downloads $ nano test.py
...
pi@raspberrypi:~/Downloads $ python test.py
Anliegende Spannung: 0.00
Anliegende Spannung: 0.00
Anliegende Spannung: 0.00
Anliegende Spannung: 0.00
Anliegende Spannung: 0.00
pi@raspberrypi:~/Downloads $
Es scheint also, als würde es grundsätzlich klappen wenn man mcp klein schreibt.
Re: Raspberry Pi MCP3208
Posted: Tue Nov 13, 2018 9:20 am
by Consti9_9
Habe versucht pip3 install mcp3208 einzugeben er hat auch wieder etwas installiert.
Jedoch geht es immer noch nicht.
Mline wie hat es bei dir funktioniert erkenne nicht ganz welche Schritte zu gemacht hast
Re: Raspberry Pi MCP3208
Posted: Tue Nov 13, 2018 9:39 am
by mline
Die Schritte die ich ausgeführt habe siehst du in dem Codeblock... aber für dich nochmal:
Ich habe die Library mit
installiert, danach eine neue Datei erstellt
und den Quelltext den du gepostet hast eingefügt.
Mit
gestartet und folgende Fehlermeldung kam: ImportError: No module named MCP3208.
Also die Datei nochmal geöffnet und aus MCP3208 ein mcp3208 gemacht.
Danach wieder
und es hat geklappt.
Also eigentlich hab ich nix gemacht. Bei dir wurde mcp3208 entweder nicht installiert oder irgendwo wo der User den du nutzt nicht rankommt.
Re: Raspberry Pi MCP3208
Posted: Tue Nov 13, 2018 9:41 am
by Consti9_9
Okay danke somit liegt das an dem Installationsvorgang und nicht an dem Programm.
Re: Raspberry Pi MCP3208
Posted: Tue Nov 13, 2018 12:29 pm
by Consti9_9
Da ist jetzt die einzelnen Channel auslesen will benötigte ich einen Code der die Werte einzeln ausgeben kann und ich sie einzeln abfragen kann. Ich arbeite im Moment mit dem Beispielcode:
Code: Select all
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)
Gibt es einen Code mit dem ich das besser Programmieren könnte?
Mit dem Code den ich oben gepostet habe funktioniert es nicht -> keine Werte..
Code: Select all
f
rom 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
Re: Raspberry Pi MCP3208
Posted: Thu Nov 15, 2018 6:30 pm
by Consti9_9
Hat jemand eine Antwort für die obige Frage?
Re: Raspberry Pi MCP3208
Posted: Fri Nov 16, 2018 8:59 am
by Miraculix