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

Code: Select all

pip install mcp3208
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

from mcp3208 import MCP3208

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 :D 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

Code: Select all

echo $PYTHONPATH
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

Code: Select all

pip3 install mcp3208
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

Code: Select all

pip install mcp3208
installiert, danach eine neue Datei erstellt

Code: Select all

nano test.py
und den Quelltext den du gepostet hast eingefügt.
Mit

Code: Select all

python test.py
gestartet und folgende Fehlermeldung kam: ImportError: No module named MCP3208.
Also die Datei nochmal geöffnet und aus MCP3208 ein mcp3208 gemacht.
Danach wieder

Code: Select all

python test.py
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
hier hat jemand ein ähnliches Projekt:

https://raspi.tv/2013/controlled-shutdo ... -cell-lipo