Frage zu Spannungsteiler, MCP3008 und Spannungmessung ... Divisor rechnerisch ermitteln

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Die Undervoltage-Warning sehe ich nur in der GUI/Console, oder? In keinem Logfile?
    Aktuell gehe ich nur per ssh auf den Raspi, GUI ist keine gestarted.

    Am SPI-Takt habe ich nichts geändert, nur über Raspi-config eingeschaltet.

    Wie kann ich die digitalen Werte denn protokolieren?


    kle, danke:
    Einen 1 uF kann ich mal anschliessen, soll einfach an die Spanungsversorgung vom MCP angeschlossen werden ... möglichst nah an die Pins vom MCP. Korrekt?

    Was echt merkwürdig ist, warum stundenlang "Ruhe" herrscht, und dann auf einmal (hier aif CH0) Fehlmessunegn erfasts werden...
    Ab 4:00:46 Uhr herrscht 6 Stunden Ruhe auf CH0, zuvor ... siehe Spoiler... und es wurde da nix gemacht (Föhn, Erschütterungen, Telefon, ...), haben alle geschlafen ;)
    Irgendwelche "hohen" Bits scheinen da zu hohe Werte zu verursachen ....

    Spoiler anzeigen

    date - time - ch0 - ch1 - ch2

    14.11.2019 03:42:16 18.47 7.38 0.00

    14.11.2019 03:42:17 0.00 7.38 0.00

    14.11.2019 03:42:19 36.94 7.38 0.00

    14.11.2019 03:42:20 0.00 7.38 0.00

    14.11.2019 03:42:22 25.48 7.38 0.00

    14.11.2019 03:42:23 0.00 7.38 0.00

    14.11.2019 03:59:27 0.00 7.40 0.00

    14.11.2019 03:59:28 0.00 7.38 0.00

    14.11.2019 04:00:35 33.12 7.38 0.00

    14.11.2019 04:00:36 0.00 7.38 0.00

    14.11.2019 04:00:37 16.44 7.38 0.00

    14.11.2019 04:00:38 0.00 7.38 0.00

    14.11.2019 04:00:43 25.48 7.38 0.00

    14.11.2019 04:00:44 0.00 7.38 0.00

    14.11.2019 04:00:46 25.48 7.38 0.00

    14.11.2019 04:00:47 0.00 7.38 0.00

    14.11.2019 04:09:06 0.00 7.36 0.00

    14.11.2019 08:46:21 0.00 7.32 0.00

    14.11.2019 09:28:31 0.00 7.28 0.00

    14.11.2019 10:01:20 0.00 7.24 0.00

    14.11.2019 10:03:06 0.00 7.20 0.00



    Inwieweit das Python Script "gut" ist und ob die Funktion von /cs "gut" im Script abgebildet ich, kann ich leider nichts zu sagen.
    Bin kein spezialist für Digitaltechnik, auch nicht für Python.

    3 Mal editiert, zuletzt von topsurfer (14. November 2019 um 11:20)

  • Frage zu Spannungsteiler, MCP3008 und Spannungmessung ... Divisor rechnerisch ermitteln? Schau mal ob du hier fündig wirst!

  • Einen 1 uF kann ich mal anschliessen, soll einfach an die Spanungsversorgung vom MCP angeschlossen werden ... möglichst nah an die Pins vom MCP. Korrekt?

    ja und beim Elko Plus- und Minus-Pol nicht verwechseln.

    Edit:

    Die Undervoltage-Warning sehe ich nur in der GUI/Console, oder? In keinem Logfile?

    auch mit Kommando dmesg | grep -i "voltage"

    Einmal editiert, zuletzt von kle (14. November 2019 um 12:12)

  • Wie kann ich die digitalen Werte denn protokolieren?

    Du liest doch die digitalen Werte aus. Diese werden doch erst in deinem Programm zu den Spannungswerten umgerechnet.

    Ich weiss nun nicht wie du die Spannungswerte sicherst. Mach eine zweite Datei/Datenbank auf und speichere dort.

    Glaube ersetzt kein Wissen

  • Du liest doch die digitalen Werte aus. Diese werden doch erst in deinem Programm zu den Spannungswerten umgerechnet.

    Ich weiss nun nicht wie du die Spannungswerte sicherst. Mach eine zweite Datei/Datenbank auf und speichere dort.

    OK, ich dachte du meinst Werte vom Chip, was mit 0100101001 ...

    Diese digitalen Werte hatte ich schon mal mitprotokolliert, die passen zu den dann ermittlten Spannungswerten ... also kein Formel-Fehler ...
    Siehe:
    ...

    13.11.2019 16:58:30 0.00 7.60 2.51

    0.000000 382.000000 126.000000

    13.11.2019 16:58:30 0.00 7.60 0.00

    0.000000 382.000000 0.000000

    13.11.2019 17:08:23 0.00 7.60 1.25

    0.000000 382.000000 63.000000

    13.11.2019 17:08:24 0.00 7.60 0.00

    0.000000 382.000000 0.000000

    13.11.2019 17:08:52 0.00 7.60 33.12

    0.000000 382.000000 1664.000000

    ...

  • OK, ist nur leicht abgeändert wie im ersten Thread verlinkt, habe auch dessen Bild Schaltung als Ausgangsbasis genommen und verwendet ....

    - Kein Poti, stattdessen ein Spannungsteiler: Aus 47K und 10K (an Masse) (genaugenommen keine 10K, sondern 9.09K (100k parallel zu 10k))
    - 10nF (oder 100nF?) Kondenastor an den drei genutzten Channels gegen Masse

    - 3 Channels beschaltet (also 3 Spannungsteiler, 3 10nF Kondensatoren verbaut)

    Kabellänge vom Raspi zur Schaltung:15cm

    Hinweis: Elektrisch "passt" die Schaltung ja, es werden ja zu 99% korrekte Werte geliefert an allen 3 Channels! Wenn eine Verbindung schlecht oder falsch wäre, wäre der Fehler ja dauerhaft.
    Und ja, die Leitungsführung und die Umsetzung könnte schöner und besser sein. Aber dafür das ich das so gut wie nie mache und dies nicht mein Fachgebiet ist ....

  • Wenn du willst dann kannst du versuchen ob mit dem Code weniger Fehler kommen.

    Glaube ersetzt kein Wissen

  • auch solltest du unbenutzte ADc auf GND legen!

    Der Weg deines Abblockkondensator am IC VCC -> GND ist zu weit, der Kondensator gehört gleich neben VCC mit kurzer Leitung zum GND Pin.

    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)

  • und alle Channels auf ground

    alle UNBENUTZTEN! Channels auf GND, nicht immer deine Sätze abkürzen, entstellt nur den Sinn!

    100k passen

    was ist 100k? jedenfalls nicht GND! :conf:

    GND ist 0V und da ist nix dazwischen!

    100k sind Rauschquellen und alles andere als GND

    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)

  • Wenn du willst dann kannst du versuchen ob mit dem Code weniger Fehler kommen.

    Gerade mal den Code probiert, scheinst ja die gleichen Pins/GPIO's vom Raspi zu nutzen wie in dem Programm welches ich verlinkt hatte => Verkabelung bleibt also gleich.
    Aber das Script liefert immer nur "0" zurück (genutzter Ch1 sollte ja ca. 370 liefern).
    Ist da noch ein Fehler drin?

    PS: Hier fehlt am Zeilenende der ":" ;)

    Code
    def get_ADC_Data (Channel)

    2 Mal editiert, zuletzt von topsurfer (14. November 2019 um 17:25)

  • scheinst ja die gleichen Pins/GPIO's vom Raspi zu nutzen wie in dem Programm

    Das habe ich auch genommen und geändert. ;)

    Ist da noch ein Fehler drin?

    Da ich nicht die Hardware von dir habe: Ja, sehr wahrscheinlich.

    Hier fehlt am Zeilenende der ":"

    Danke für mitdenken. ;)

    Welche Werte kommen nun? alles normal oder immer noch Ausreisser?

    Glaube ersetzt kein Wissen

  • topsurfer nimm das Skript aus Deiner Anleitung (von Erik Bartmann), das kann ich lesen.

    • 5 Bit Kommando an Din (=11bbb, bbb ist die binäre Kanalnummer 000..111) und dann
    • 11 Bit Daten von Dout (=0bb.bbbb.bbbb, b=[0|1], die Punkte sind nur zur Lesbarkeit)

    sorry bombom

    Du meinst wohl hier im Teil des Scripts, aber was soll ich da wie austauschen, erweitern ? Sorry ...

  • Daß ab und an fehlerhafte Werte kommen liegt imho nicht am Skript.

    Woran liegt es? Es gibt verschiedene Möglichkeiten:

    - Die Spannung am Eingang ändert sich plötzlich. Wäre bei unbeschalteten Eingängen möglich, beim Abgriff der 9V Batterie eher nicht

    - Der ADC arbeitet nicht korrekt:

    -- Der ADC ist defekt, kann durch aus eine Option sein

    -- Die Spannungsversorgung des ADC ist unzureichend, auch möglich. In beiden Fällen würde ich mit mehr Fehlern rechnen.

    - Die Übertragung vom ADC zum RPi ist gestört, auch das liegt im Bereich des Möglichen. Es fehlen an beiden Enden die Abschlusswiderstände.

    - Der RPi bzw GPIO-Pin arbeiten nicht richtig, kann man durch Tausch der Pins umgehen.

    - Die Software hat ein Problem

    Also wo möchtest du zuerst angreifen?

    Werte größer 2047 kann es nicht geben.

    Klar, es werden nur 11 bit ausgelesen.

    Glaube ersetzt kein Wissen

  • Hi,
    danke für die weiteren Tipps und Infos, aber was #35 mir sagen (oder zeigen) soll weiß ich immer noch nicht ;)

    Habe jetzt Ch 3 bis 7 auf Masse gelegt und einen 47uF zwischen Vcc und Ground gelegt, (*)
    zumindest die letzten 13h keine einzige Fehlmessung erhalten!
    Werte größer 1023 kann ich ignorieren und wegfiltern, ist klar, das mache ich dann auch. Mir kam es nur falsch vor, das diese überhaupt entstehen können.
    Und das am (unbelegten) Ch0, der über 10k auf Masse gezogen ist, plötzlich digitalwerte von 60, 72, oder auch 320 erfasst werden, war ja merkwürdig.
    Aber evtl. ist das durch diese Maßnahme (*) ja dann damit vorbei.

    bombom: Wie gesagt, würde dein Script gerne auch mal laufen lassen, aktuell liefert es aber nur "0" zurück.

  • würde dein Script gerne auch mal laufen lassen

    Ich habe es noch überarbeiten müssen. Das dauerte etwas, bis ich die Fehler gefunden habe. Ich habe in der Datei ganz oben noch ein Shebang für Python3 eingefügt.

    Ich bin mir nicht ganz schlüssig, wann Daten geschrieben und gelesen werden soll in Bezug auf die steigende bzw. fallende Flanke.

    Glaube ersetzt kein Wissen

Jetzt mitmachen!

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