MCP3008 mit Python auslesen

  • Hallo Jungs, so nun habe ich mein altes Projekt mit dem MCP3008 wieder ausgegraben!
    Nun habe ich das Skript wieder vom Herrn Bartmann rausgegraben und folgenden Source hier.
    http://erik-bartmann.de/component/atta…ownload/21.html

    Das Skript bringt mir aber ein Fehler in adcvalue. Aber warum? Fehlermeldung: IndentationError: unindent does not match any outer indentation Level (line 31)
    Ich verstehe auch nicht warum von adcChannel das ganze umschwenkt auf adcvalue. :wallbash:
    Kann mir jemand helfen? Wäre um jeden Schnipsel Erklärung sehr Dankbar.

    • Offizieller Beitrag

    Dann google mal die Fehlermeldung und anschliessend geisselst du dich 5min lang selbst. Dann überlegst du dir noch mal ob dein Problem wirklich ein Problem ist.

    Der Unterschied zwischen Genie und Wahnsinn definiert sich im Erfolg.

  • ok da hätte ich wirklich mal googeln können! aber da war ich zu unmotiviert und bin von größeren ausgegangen.

    aber nun taucht das eigentliche Problem auf:
    ImportError: No module named RPI.GPIO

    Ok. Also dachte ich vielleicht ging was bei der Installation schief. Also habe ich folgendes probiert:

    Code
    sudo apt-get update
    sudo apt-get -y install python-rpi.gpio

    Dann sagt mir aber mein Pi das die aktuelle Version schon installiert sei. Ich habe Version 0.63 installiert.
    Was mach ich denn falsch? Rechteproblem?

  • Hallo,
    ich habe es erfolgreich geschafft mein MCP3008 über die GPIO Schnittstelle des Raspberry pi 3 (Model B) auszulesen. Ich würde gern einen zweiten am gleichen SPI BUS auslesen. Allerdings habe ich da meine Probleme. Allein nur den Kanal (ADCH) zu wechseln reicht nicht.

    Ich habe schon die zwei Schaltungsvarianten probiert: http://rn-wissen.de/wiki/index.php/SPI

    Dabei wäre mir die Schaltung als Kaskade lieb, da hätte ich dann 16 analoge Kanäle. Die Sternschaltung hat leider auch nicht funktioniert. Kann mir jemand sagen, wie ich das Phyton-Script ändern muss und ich ggf. die Schaltung aufbauen muss?

    Meine Schaltung mit eine MCP3008 sieht wie folgt aus:
    ad-wandler-mcp3008-poti-fritzing_Steckplatine.png
    ad-wandler-mcp3008-poti-fritzing_Schaltplan.png

    Diese Schaltung funktioniert schon mit dem oben dargestellten Phyton-Script.

    Die Schaltung in der zwei MCP3008 als Kaskade geschaltet sind, sieht so aus:
    ad-wandler-mcp3008-kaskade-fritzing_Steckplatine.png
    ad-wandler-mcp3008-kaskade-fritzing_Schaltplan.png

    Diese Schaltung zeigt in der Ausgabe des Scriptes nur unsinnige und ständig wechselnde Werte an. Das liegt sicher daran, dass das Script nur für einen Schaltkreis mit 10 bit entwickelt wurde. So wie ich die Theorie zum SPI Bus (aus oben angegebenen Link) verstanden habe, wird in einer Kaskade der zwei MCP3008 diese vom SPI Bus als ein Baustein angesehen. Damit muss ich dann sicher 20 bit auslesen, statt nur 10 bit. Daher zeigt mein Script so merkwürdige Werte an. Ich hoffe ich habe die Theorie so richtig verstanden. Daher denke ich, dass ich einfach nur das Python Script umbauen muss. Aber ich habe leider keine Ahnung wie das mit den Bits und dem auslesen von Schieberegistern funktioniert. Kann mir da jemand helfen das Script umzustellen?

    Einmal editiert, zuletzt von aq1pioneer (26. März 2017 um 22:10)

  • Hallo aq1pioneer,

    poste bitte DEINE Schaltung und referenziere nicht auf irgenwelche Schaltungen.

    Deine Schaltung - oder Deine Software - enthält einen Fehler, den es zu finden gilt.

    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.


  • Hallo aq1pioneer,

    poste bitte DEINE Schaltung und referenziere nicht auf irgenwelche Schaltungen.
    Deine Schaltung - oder Deine Software - enthält einen Fehler, den es zu finden gilt.

    Beste Grüße

    Andreas

    Hallo Andreas,

    vielen Dank für den Tipp. Ich habe meinem Beitrag, wie von Dir vorgeschlagen, angepasst. Über Hilfe zum Thema wäre ich sehr dankbar.

    VG Alex

  • Hallo aq1pioneer,

    ich bin zwar newbie, aber deine Kaskadenschaltung kommt mir etwas komisch vor.
    Der D_out des linken 3008 ist mit dem D_in des rechten 3008 verbunden.
    Damit wird doch das AD-Ergebnis als Steuerbefehl für den IC2 verwendet, oder??
    [font="sans-serif"]"D_IN: The SPI port serial data input pin is used to load [/font]channel configuration data into the device.
    D_out: The SPI serial data output pin is used to shift out the[font="sans-serif"] results of the A/D conversion. Data will always change [/font][font="sans-serif"]on the falling edge of each clock as the conversion [/font][font="sans-serif"]takes place."
    Hast Du wirklich kein IO mehr für ein eigenes CS des IC2 übrig?
    [/font]
    VG

Jetzt mitmachen!

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