MCP 3008 funktioniert nicht mit Python 3

  • Moin, ich bin neu und habe ein Problem das ich weder verstehe, noch lösen kann.

    Ich habe den MCP3008 an die entsprechenden GPIOs(MOSI;MISO;CLK;CEO) angeschlossen. An PIN 1 liegt ein Temperatursensor. Das Programm tmp36 - s. Anhang nutzt die Class mcp3008 -s. Anhang.

    Der SPI ist über config.sys enabled.

    Der Befehl ls /dev/spidev* gibt die Antwort /dev/spidev0.0 /dev/spidev0.1

    py-spidev ist installiert.

    Das Programm läuft beim kompelieren ohne Fehler durch.

    Leider liest das Programm nicht den ADC aus. Es liefert immer den Wert "0"

    Benutze ich die gleiche Hardware mit einem Demoprogramm von Adafruit so liefert es die richtigen Werte und sie ändern sich, wenn man den Sensor erwärmt. Somit gehe ich davon aus das Beschaltung und MCP 3008 in Ordnung sind.

    Was habe ich beim Python3 Programm falsch gemacht???

    Ergänzende Infos:

    Konvertierung des Adafruitprogramms inklusive der Class funktioniert mit 2to3 nicht und mir fehlt das Know How.

    Andere Python3 Programme aus den Tutorien, die die SPI PINs verwenden, liefern auch nur den Wert "0"

  • Probier mal den:

    Von hier:

    https://tutorials-raspberrypi.de/raspberry-pi-m…gnale-auslesen/

  • Wie es der Zufall will, hab ich gerade im Rahmen meiner Diplomarbeit einen MCP3008 verbaut. Da ich heute im Labor bin, habe ich dein Script zusammengefasst und einem Live-Test unterzogen. Ich kann keinen Fehler finden. Bei mir läuft es einwandfrei.

    Vielleicht liegt dein Fehler aber daran, dass dein Channel (0-7) nicht gleich dem Ausgang (1-8) am M3008 ist. Da meine Beschriftung von 1-8 geht, die Channels aber 0-7 sind hat das bei mir auch erstmal für Verwirrung gesorgt.

  • Pertl,

    vielen Dank! Zum Testen sind bei mir alle Eingänge des MCPs mit verschiedenen Spannungen belegt. Somit muss zumindest irgendein Ergebnis herauskommen.

    Ich war mir ziemlich sicher das das Programm in Ordnung ist. Somit muss das Problem woanders liegen, aber ich weiß nicht wo?

    Fred0815

    vielen Dank ür den Code, den kannte ich und er gibt nur 0 aus. Wenn ich mit dem Debugger in der class mcp3008 den Wert data von der Zeile:

    data = ((adc[1] & 3) << 8) + adc[2]

    anschau dann sehe ich 0 - 96 - 0. Die beiden ersten Zahlen ändern sich bei verschiedenen Durchläufen, die letzte nicht. Hilft das weiter?

  • Also ich sitz grad noch im Labor, hab jetzt mal nen Poti dran geschlossen und bekomme folgende Ausgaben:

    Code
    [0, 1, 100]
    [0, 2, 212]

    Soweit ich das sehe (ich bin keine Elektroniker oder der gleichen) sollte der Wertebereich von [0, 0, 0] bis [0, 3, 255] reichen

    Code
    ((0&3)<<8)+0  
    >> 0
    ((3&3)<<8)+255
    >> 1023

    Warum du derart falsche Werte bekommst, kann ich dir leider nicht weiter helfen, da ich leider kein Elektroniker bin. Aber vielleicht helfen dir die Daten weiter...

  • Pertl, deine Ausgaben sind die, die ich erwartet hätte nach dem Datenblatt. Aus meiner Sicht kann es nur noch 2 Gründe geben warum es nicht funktioniert.

    1. Ich habe einen Tippfehler in der class MCP 3008 was man aber eigentlich ausschließen kann da der Code bei Dir funktioniert.

    2.Es bleibt eigentlich nur noch die Spidev Bibliothek. Ich habe diese bereits neu installiert hat nichts geholfen.

    Also muss ich bei der Installation der SpiDev einen Fehler machen, ich weiß nur nicht welchen.

    Einmal editiert, zuletzt von lukas1 (16. November 2017 um 16:46)

  • Ich habe diese zwei Installationen verwendet:

    1. m

    pi@raspberry:~$ sudo apt-get install python-dev python-rpi.gpio

    pi@raspberry:~$ git clone git://http://github.com/doceme/py-spidev

    pi@raspberry:~$ cd py-spidev

    pi@raspberry:~$ sudo python setup.py install

    2.

    pi@raspberry:~$ sudo apt-get install python-dev python-rpi.gpio

    pi@raspberry:~$ git clone git://http://github.com/doceme/py-spidev

    pi@raspberry:~$ cd py-spidev

    pi@raspberry:~$ sudo python3 setup.py install

  • Hi, bin neu hier und beim Thema RasPi ebenfalls. Das Thema hier ist als "erledigt" markiert, aber ich sehe keine Lösung für dieses Problem?

    Ich habe das gleiche Problem wie es scheint. Habe bereits verschiedene Varianten ausprobiert, Software GPIO Nutzung, Hardware, verschiedene Quelltexte, verschiedene Verkabelungen, aber es kommt immer 0 als Wert an. Ich nutze einen Raspberry Pi 3 mit einem MCP3008 (eigentlich mittlerweile mehreren um einen fehlerhaften Chip auszuschliessen) und zwecks Tests einen 10k Poti.

    Hat irgendwer eine Idee bzw. was war die Lösung???

  • Hallo OSchubert,

    herzlich Willkommen in unserem Forum!

    Leider können wir mit Tutorials, an denen Du Dich orientierst, wenig anfangen. Bestenfalls können wir dort Fehler entdecken...

    Am schnellsten und sichersten kommen wir zum Ziel LÖSUNG, wenn Du uns DEINE Schaltung (aktuell, vergebliche Versuche) und ebenso auch den von Dir VERWENDETEN Code zu sehen bekommen.

    Diejenigen, die das schon mal erfolgreich hinbekommen haben, können dann vergleichen... und Unterschiede berichten sowie Dich auf Fehler in DEINER Schaltung und DEINER Software hinweisen.

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Leider können wir mit Tutorials, an denen Du Dich orientierst, wenig anfangen. Bestenfalls können wir dort Fehler entdecken...


    Am schnellsten und sichersten kommen wir zum Ziel LÖSUNG, wenn Du uns DEINE Schaltung (aktuell, vergebliche Versuche) und ebenso auch den von Dir VERWENDETEN Code zu sehen bekommen.

    Na ja, ok, weiß zwar noch nicht, wie ich die Quelltexte via SSH vom Raspi auf meinen Windows Rechner bekomme, zudem habe ich den via copy/paste übernommen, aber ein Bild der Verkabelung kann ich schicken - ist nur ziemlich unübersichtlich, stimmt aber ziemlich sicher mit dem Tutorial überein.

    Nicht wundern, plus und minus sind nicht wirklich vertauscht, war nur einfacher so herum, weil die Verkabelung vom vorherigen Test noch so war.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!