Transientenrekorder

  • Hallo zusammen,


    ich baue mir zurzeit einen kleinen Transientenrekorder aus einem Raspberry 4 und einem AD/DA - Board. Als Programmiersprache verwende ich Python 3 mit QT5 für die Layouts.

    Das Gerät kann inzwischen bereits Spannungen kontinuierlich in einer Schleife messen und auf Ereignisse, wie z.B. plötzliche Änderungen des Meßsignals reagieren.

    Die Messkurven werden auch schon angezeigt :)

    Aktuell arbeite ich am Userinterface, Parametereingaben, Messungen speichern etc.

    Da ich noch nicht so viel Erfahrung mit Python und QT habe, werde ich sicherlich noch eine Menge Fragen haben ....


    Anbei zwei Fotos dazu

  • Hallo Wend,


    da ich gerne experimentiere, habe ich vor das ganze relativ universell auszulegen. Als ein konkretes Beispiel zum Testen dachte ich an einen Blitzsensor mit Phototransistor und einen Windstärkesensor um Böen zu messen. Mal sehen, was da so machbar ist.


    Die momentane Auslegung mit dem Waveshare High-Precision AD/DA läßt 1-kanälig nur etwa 100 - 200 Messungen pro Sekunde zu. Ich habe aber additiv auch einen Arduino hier, der schafft locker 30.000 Messungen pro Sekunde und läßt sich ganz gut an den Raspberry koppeln. Daher habe ich das Programm mit Multiprocessing und Signalen aufgebaut, d.h. es wird in einem Prozess kontinuierlich gemessen und die Messwerte werden parallel von anderen Prozessen ausgewertet und angezeigt.

    Darüber hinaus soll der Waveshare High-Precision AD/DA auch in einer Programmvariante mit mehreren Kanälen als Data-Logger fungieren.

    Da das Teil auch zwei analoge Spannungen ausgeben kann, könnte ich damit eventuell ganze Meßreihen automatisiert ablaufen lassen.

    Die Genauigkeit wäre theoretisch 24-Bit, tatsächlich kann man ohne Abschirmung etc. mit max. 4 Dezimalen rechnen.


    Gruß,

    Holger

  • OK, wenn es so langsam sein soll, dann kann man auch ganz ohne ADC auskommen. Der Raspberry kann Digital ca 1 MHz absamplen. Man kann also einen Puls mit einer Genauigkeit von 1 µs messen. Mit einem Kondensator + Widerstand ist eine analoge Messung im 200 Hz Bereich also auch gemacht.

    Falls es Dich interessiert, das habe ich so für den Ferraris-Stromzähler verwendet.

    Strom/Wasserzaehler mit Reflex-Lichtschranke auslesen


    In diesem Fall hab ich zwar keine Spannungen gemessen, aber dafür quasi den Durchgangs-Widerstand eines Phototransistors. Wenn Du Spannungen Messen willst kannst Du da was mit einem (normalen) Transistor machen. Das Prinzip misst immer die Entladezeit des Kondensators. Die Genauigkeit hängt dann davon ab, wie lannge Du messen willst. Also bei einer Auflösung von 1µs musst Du eine Millisekunde messen, um 10 bit zu erhalten. Wenn DU Dir (bei 200 Messwerten pro Sekunde) 5ms Zeit lassen kannst, dann bekommst Du ungefähr 12 bit. Das ist allerdings etwas theoretisch, da das Betriebsystem des Raspis kein Echtzeitbetriebsystem ist, gibt es ungenauigkeiten, die ich selbst nur durch Mittelung wegbekommen habe. das Reduziert die maximale Samplerate natuerlich weiter. Aber z.B. wenn Du nur einen Messwert pro Sekunde haben willst, dann bekämst Du theoretisch 20 bit Auflösung.

    Edited 2 times, last by wend ().

  • Hallo,

    das ist ein sehr interessanter Ansatz, bzw. interessante Lösung - ultimativ preiswert, genial 8).

    Danke für die Info. Ich denke, ich bleibe aber vorerst mal bei meinem Waveshare AD/DA, schneller will ich erst später werden.


    Ein anderer wichtiger Aspekt für mein Messgerät (Transrec + Logger + ?) ist eine geeignete Eingangsschaltung die folgende Kriterien erfüllen sollte:


    1. galvanische Trennung, unipolar mit hohem Eingangswiderstand --> Optokoppler (auch als Sicherung) möglichst linear und schnell

    2. kalibrierbarer Spannungsteiler mit Offset auf der Primärseite, ich strebe ± 24 V als Messbereich an.

    3. bis zu 8 Kanäle


    Ich habe mich da schon im Netz umgesehen, aber bislang noch nicht so richtig was gefunden das ich auch selbst löten könnte ...

    Hast Du eine Idee dazu ?

  • Als Transientenrekorder solltest du das nicht bezeichnen.


    Ein Transientenrekorder zeichnet z.B. bei einem Crashtest im Sekundenbereich sehr viele Datenpunkte auf.

    Das ist weitaus mehr, als ein Raspberry PI in der kurzen Zeit verarbeiten kann.


    Das kannst du gar nicht mit dem Raspberry PI machen.

    Das Projekt kannst du eher mit einem Datenlogger vergleichen.

  • Ich meine, man muss klein anfangen. Ich habe vorher auch noch nie ein Multiprocessing System in Python programmiert und bin froh, dass dieser Teil schon so gut funktioniert. Für mich ist die Abtastrate erst mal OK. Im nächsten Schritt werde ich versuchen einen Arduino zur Hilfe zu nehmen ... und dann schau´n wir mal.


    wend: Ja, die 8 Kanäle sollen eine gemeinsame Masse haben. Ich habe das Thema auch noch unter "USB und zusätzliche Hardware" zur Diskussion gestellt.

    Viele Grüße

  • OK, gemeinsame Masse macht es einfacher. Ich habe mal einen Datenlogger gemacht, wo das nicht ging. Ich wollte die Spannung einzelner Zellen in einer Serienschaltung von Akkus messen/überwachen. das war dann etwas komplizierter, hat aber letztlich funktioniert. (Thema: flying capacitor).

  • Hallo zusammen,


    anbei ein Foto vom aktuellen Stand. Der Rekorder läuft gut :)

    Das Foto zeigt das Abschalten der Deckenbeleuchtung für ein paar Sekunden. Als Sensor wurde ein einfacher LDR (Lichtabhängiger Widerstand) verwendet.

    Man sieht sehr schön das Nachleuchten der Lampen, ungefähr 1 Sekunde lang (die Kurve im Anstieg). Und beim Wiedereinschalten, die Verzögerung des LED-Panels gegenüber der Leuchtstofflampe (die Stufe im Abfall).

  • Trigger schreibt man mit Doppel-g ;)


    Ich vermute mal es ist eine Arbeit aus Leidenschaft, und damit soll das alles selbst gemacht werden. Kann ich gut nachvollziehen. Ich wollte nur kurz erwaehen, dass sowohl GNU-Radio als auch PulseView bereits bestehende Projekte zur Echtzeitvisualisierung von Daten darstellen. Aufzeichnung, Filtern, Triggern, etc. inklusive.