MCP3208 merkwürdig wenn alle Känale belegt sind

  • Hallo,
    ich nutze den MCP3208 am Raspberry PI über SPIDEV, ich muss analogen Sensoren Abfrage, speziell einen Drucksensor [Anzeige].
    Ich nutze einen Level Shifter. [Anzeige] Im Test habe ich nur Chanel 0 Drucksensor und Chanel 7 Photocelle abgefragt, alles prima.
    Im Test alles mit Referenz Spannungen vom PI, ich weiß die Genauigkeit. Im Test sollte es reichen.
    Aber jetzt habe ich die anderen 4 Drucksensoren angeschlossen und da ging es los, merkwürdige Werte.
    Also habe ich mit einem Testscript versucht den Fehler zu finden.
    Hier mein Testscript.


    Was ist merkwürdig?
    Wenn ich benachbarte Kanäle belege also 0 und 1 haben beide die identischen Werte.
    Hier die Ausgabe:


    Zeile 1-5 Ch0 = 3,3 V Ch1-6 keine Belegung Ch7=Photocelle
    Zeile 6-12 Ch0 = 3,3 V Ch1=keine Belegung Ch2=3,3V Ch3-6 keine Belegung Ch7=Photocelle
    Zeile12-16 Ch0 = 3,3 V Ch1=3,3V Ch2=3,3V Ch3-6 keine Belegung Ch7=Photocelle
    Zeile16-20 Ch0 = 3,3 V Ch1=3,3V Ch2=3,3V Ch3=3,3V Ch4-6 keine Belegung Ch7=Photocelle
    Ich habe gesucht aber nichts gefunden.
    Hier gibt es einen Hinweis https://gpiozero.readthedocs.io/en/v1.3.1/api_…-converters-adc


    Frage, könnte der 3208 defekt sein?
    Wo ist der Fehler im Script?
    Fehlt eine Parameter?

    Im Moment bin ich verwirrt und ratlos.

    Danke und schöne Grüße aus Schönow

  • Hi


    Danke, Du meinst Tabelle 5-2. Okay, verstehe. :thumbs1:
    Weißt Du wie?
    Habe Hier was gefunden, aber alles in C.
    Mir geht's gerade so :wallbash:
    Danke


    ...sry dass ich mich da einmische...
    Hab mit python zwar nix an Hut, aber vlt. hilft dir <das> weiter.

    Du musst dir eines vor Augen halten: Das sind keine "echten" Kanäle... die sind gemultiplexed.
    Also, erst den Kanal ansprechen bzw aktivieren (single-ended, Tab. 5-2 im Datasheet), und dann kommumizieren, sonst bekommst du Schrott.

    gruß root

    Einmal editiert, zuletzt von root (28. Januar 2017 um 00:41)

  • Zitat

    ...sry dass ich mich da einmische...
    Hab mit python zwar nix an Hut, aber vlt. hilft dir <das> weiter.


    Danke, das war genau der Tipp der mir geholfen hat, jetzt habe ich die Funktion xfer2 verstanden.
    Ich habe hier eine Lösung gefunden.
    In das Script eingebaut.

    und es funktioniert. :bravo2:
    [code=php]Version 1 1 |D0:4063/4096 |D1:4095/4096 |D2:4095/4096 |D3:4095/4096 |D4: 476/4096 |D5:4095/4096 |D6:4063/4096 |D7:4095/4096
    Version 2 1 |D0:1294/4096 |D1:1294/4096 |D2:1293/4096 |D3:1293/4096 |D4: 0/4096 |D5: 5/4096 |D6: 0/4096 |D7:1116/4096
    Version 1 2 |D0:4095/4096 |D1:4095/4096 |D2:4095/4096 |D3:4095/4096 |D4:2296/4096 |D5:4095/4096 |D6:4095/4096 |D7:4015/4096
    Version 2 2 |D0:1295/4096 |D1:1294/4096 |D2:1293/4096 |D3:1294/4096 |D4: 0/4096 |D5: 56/4096 |D6: 0/4096 |D7:1061/4096[/php]

    Version 1 ist quasi die neue Funktion und Version 2 die alte von mir genutzte.

    :danke_ATDE: und auf ein Neues.

  • bafh: Deine erste Version ist schon i.O. Allerdings initialisiert die das Controlregister für differentielle Verwendung (also Ch01-1, Ch2-3...). Wenn Du aber von Kanal 1..8 redest, dann hast Du Deine Sensoren sicher so angeschlossen, daß sie alle gegen Masse messen - sprich verwendest sie eben nicht differentiell sondern single ended. Wenn Deine zweite Variante das gewünschte Ergebnis liefert, dann wohl nur deshalb...


  • Wenn Du aber von Kanal 1..8 redest, dann hast Du Deine Sensoren sicher so angeschlossen, daß sie alle gegen Masse messen - sprich verwendest sie eben nicht differentiell sondern single ended.


    Stimmt genau, so sind quasi alle Beispiele auch im Netz, die meiner Meinung nach relevant für mich sind. siehe http://www.raspberrypi-spy.co.uk/wp-content/upl…P3008_TMP36.png
    Ich muss dann nur mal sehen, was passiert wenn ich die anderen Sensoren anschließe.
    Ziel soll sein:
    Kanal 0 Drucksensor für die Wasserleitung ab Pumpe (Zuleitung)
    Kanal 1 Drucksensor für Beregnungskreislauf 1
    :
    Kanal 6 Drucksensor für Beregnungskreislauf 6
    Kanal 7 Dämmerungsschlater (Photozelle)
    Es geht um Gartenbewässerung, ich benötige nicht den genauen Druck nur liegt Wasser an oder nicht?.

    Danke

  • Hai bath,


    Stimmt genau, so sind quasi alle Beispiele auch im Netz, die meiner Meinung nach relevant für mich sind. siehe http://www.raspberrypi-spy.co.uk/wp-content/upl…P3008_TMP36.png

    Die meisten Besipiele im Netz verwenden den single ended Mode, wobei dann 8 Kanäle zur Verfügung stehen. Mit Deinem ersten Python Script hast Du quasi einen 5er im Lotto gezogen :) , weil es den MCP3x08 im differentiallen Mode anspricht. Hier stehen dann allerdings nur 4 Kanäle zur Verfügung. Für die Eingänge wird als Bezug dann nicht Masse hergenommen, sondern jeweils 2 "benachbarte" analoge Eingänge (0/1, 2/3, 4/5, 6/7). Schließe mal eine kleine Batterie (Spannung kleiner Uref=3,3V) zwischen D0 und D1 (oder D2/D3 , D4/D5, D6/D7) dann wirst Du sehen, daß Du auf Kanal 0 (Kanal 2, 4, 6) oder Kanal 1 (3, 5, 7) ein Signal findest. Auf welchem Kanal bemißt sich dann nach dem Vorzeichen der angelegten Spannung.

    Schöne Grüße

    schnasseldag

Jetzt mitmachen!

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