MCP3008 über GPIO mit C einlesen

  • Hallo Forum,

    für ein bestehendes Studiumsprojekt möchte ich meinen selbstgebastelten Helligkeitssensor (Fotowiderstand im Spannungsteiler) mit meinem Pi über einen MCP3008 einlesen.
    Sensor funktioniert am Multimeter einwandfrei, wenn ich aber versuche ihn über GPIO mit dieser Library einzubinden, sind die Werte scheinbar "zufällig" - geben auf jeden Fall nicht die Momentanspannung am Signalausgang/-eingang wider. Ein zu Testzwecken angeschlossenes Poti liefert das gleiche Bild.

    Mein Auslesetest sieht in etwa so aus:

    Verdrahtungsschema:
    gg6.png

    Meine Frage hier: Hat jemand schonmal mit der gleichen lib gearbeitet und vernünftige Ergebnisse bekommen? Kann jemand eine andere/einen anderen Weg empfehlen (wichtig: in C) ?

    Falls noch Infos fehlen bitte ich um Nachsicht. Bin ganz neu in der Materie.

    Vielen Dank und liebe Grüße

  • Es gibt eine Anleitung wie man den Pi mit dem MCP 3008 verbindet.
    Ich bin zur Zeit selber an dieser Anleitung dran, die in meinen Pi zu schreiben.

    google mal nach "Rasberry Pi MCP3008", da kommt eine pdf-Datei Names "Rasberry Pi AddOn Der A/D-Wandler MCP3008 ..."
    Dies ist allerdings in Python geschrieben, man kann sich da aber zu mindestens an sehen, wie man ihn richtig anschließt und was man beachten muss.

    Ich hoffe es hilft dir :)

  • Hallo Zusammen,
    ich habe exakt das selbe Problem. Vorerst möchte ich digitale Werte von einem Potentiometer einlesen. Im Netz gibts dazu ja eine Menge Anleitungen und Beispielprogramme. Das Auslesen der Werte klappt auch, leider sind diese teilweise unplausibel: die digitalen Werte des Poti schwanken sehr stark, beispielsweise erhalte ich bei niedrigstem Spannungsabgriff (mit Multimeter 0,01V gemessen) digitale Werte im Bereich von 60 bis 90. Das klingt zumindest einigermaßen plausbiel. Betrachte ich jetzt den maximalen Spannungsabgriff von 3,3V (3,3V da Versorgungsspannung vom Poti = 3,3V), so schwanken die digitalen Werte im Bereich von 400 = 900 (!), klingt also unplausibel. Bei maximalem Spannungsabgriff sollte ja ein digitaler Wert von circa 1023 angezeigt werden.
    hat jemand eine idee, warum..
    1.) die digitalen Werte bei maximalem Spannungsabgriff so stark schwanken?
    2.) ich nicht den digitalen Ausgang von 1023 (=^3,3V) erreiche?
    Danke für jegliche Hilfe!

    btw.: die unbenutzten Eingänge vom MCP3008 habe ich auf Masse bzw. 3,3V gezogen.

    Einmal editiert, zuletzt von rob.jun7 (26. Juli 2014 um 17:19)

  • Sollte ein Analog/Digital-Converter nicht auch einen Pin haben, mit dessen Hilfe man
    die Referenzspannung (Ref) einstellen/definieren kann?

    Ist nur so eine Idee woher die von Dir genannten kuriosen Werte herrühren könnten (Punkt 2). :blush:

    Hinweis: Habe mir vorab jetzt nicht das Datasheet zum MCP-3008 angesehen! :shy:

    Hinweis am Rande:
    Die hier vorkommenden Fremdwörter sowie Schreibfehler besitzen ein Echtheitszertifikat
    und sind zum Auslösen allg. Verwirrung und Panik vorgesehen! :lol:

    Einmal editiert, zuletzt von Cancriformis (27. Juli 2014 um 07:38)


  • ...Das Auslesen der Werte klappt auch, leider sind diese teilweise unplausibel: die digitalen Werte des Poti schwanken sehr stark, beispielsweise erhalte ich bei niedrigstem Spannungsabgriff (mit Multimeter 0,01V gemessen) digitale Werte im Bereich von 60 bis 90. Das klingt zumindest einigermaßen plausbiel. Betrachte ich jetzt den maximalen Spannungsabgriff von 3,3V (3,3V da Versorgungsspannung vom Poti = 3,3V), so schwanken die digitalen Werte im Bereich von 400 = 900 (!), klingt also unplausibel. Bei maximalem Spannungsabgriff sollte ja ein digitaler Wert von circa 1023 angezeigt werden.
    hat jemand eine idee, warum..

    elektrische Störungen, unsaubere Versorgung der ADC, Einstrahlungen auf Leitungen uvam.

    Nicht umsonst wird zur Avcc Versorgung ein Filter vorgeschlagen (ich bevorzuge 100µH bis 330µH zu 100nF bis 470nF Keramikvielschicht):
    8076-inductor.png

    Ich hatte auch immer 8-32 Readouts aufsummiert und den Mittelwert gebildet

    entweder dividiert durch readout oder eben bei 2er Potenzen 8, 16, 32 viel schneller Rechtshift 3, 4, 5 (2^3 = 8 usw.)

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

    Einmal editiert, zuletzt von jar (27. Juli 2014 um 09:39)

  • Danke für die Antworten.
    Cancriformis: an eine Referenzspannung habe ich natürlich gedacht;) die Referenzspannung wird vom selben PIN abgegriffen wie die Versorgungsspannung des MCP3008. Habe auch schon probiert, Vref und Vdd über separate Quellen zu versorgen. Bringt auch nichts!

    jar: das klingt plausibel, aber an der Stelle frage ich mich: es gibt doch etliche Anleitungen und fast überall funktionieren diese auch. Es hat auch nie jemand erwähnt, dass Fehler durch Strahlungen/EMV dabei entstehen. Warum soll das ausgerechnet bei mir der fall sein? Ich weiß, das du kannst du mir auch nicht beantworten;-) trotzdem merkwürdig!

    Einmal editiert, zuletzt von rob.jun7 (27. Juli 2014 um 22:32)


  • jar: das klingt plausibel, aber an der Stelle frage ich mich: es gibt doch etliche Anleitungen und fast überall funktionieren diese auch.

    Misserfolge werden selten gepostet ! und was bedeutet "fast überall funktionieren" ?

    warst du fast überall dabei ? :s aber egal manchen reicht es wie es geht ......

    dir offensichtlich ja nicht ;) siehe deine Werte !

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

  • Nach erneutem Aufbau der Platine (incl. neuem Verlöten) arbeitet die Wandlung nun tadellos. Nehme also an, dass Software und Verkabelung soweit i.O. waren und es sich vllt nur um eine kalte Lötstelle/einen Wackelkontakt o.ä. gehandelt hat.

    Vielen Dank an alle Vorschläge und Hilfestellungen.

Jetzt mitmachen!

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