Forum: Mikrocontroller und Digitale Elektronik Daten von Eigenbau-Leistungsmesser visualisieren + EIngangs-Schutzschaltung


von fusi (Gast)


Lesenswert?

Hi,

ich habe mir die letzten Tage ein einfaches Leistungsmessgerät gebaut 
und bin jetzt an einem Punkt, wo ich nicht genau weiss, wie 
weitermachen.

Die Schaltung ist im Grunde in zwei Hälften aufgeteilt, der 
Mikrocontroller-Teil und die "Current Probe" (Shunt+OPV+Teiler).

uC-Teil:
* stm32f103, SD-Karte, TFT-Display, ein paar Buttons
* FTDI an USART1, USB-device Buchse angeschlossen + funktioniert

Current Probe:
* Shunt 0,39Ohm, 1%, 5W, Dale RH5
* LT1013
* Teiler-/OPV-Widerstände sind 0,5%.

Am Referenz-Eingang des Microcontrollers hängt eine TL431-Referenz 
(2.495V).
Test-Messungen an einer ICL8069 1.23V Referenz ergeben auch ziemlich 
genau 1230mV (Abweichung max: +4mV, -2mV).

Die Versorgungsspannung der Current Probe wird durch 12 geteilt und kann 
demnach bis zu 29.94V betragen (bei U_adc_max = U_ref).

Die Spannung, die über der Shunt abfällt wird mit dem OPV um das 
5.7fache verstärkt. (U_max_shunt = 438mV, I_max_shunt = 1.223A).
Gedacht ist die Current Probe für Ströme bis 1A, somit habe ich noch ein 
klein bisschen Reserve nach oben.


Nun zu meinen Fragen...
Bisher zeige ich die Messwerte einfach nur auf dem Display an. Ich 
möchte aber mit dem Gerät die Kurven von Akkupacks, Blei-Akkus usw. 
aufnehmen und daher die SD-Karte+FTDI.
Bei den ganzen freien verfügbaren ADC-Kanälen (~10 Stück oder so) wäre 
es auch praktisch noch 2 oder 4 Analog-Eingänge zum Messen von 
Spannungen hinzuzufügen und/oder digitale Ein-/Ausgänge.

Gibt es da schon PC-Software (vorzugsweise Linux, kann mich aber auch 
mit Windows-Software anfreunden), die mir per RS232 kommuniziert und 
Messdaten anzeigt? Auswerten von Log-Dateien auf SD-Karte wäre auch eine 
Möglichkeit, Live wäre aber schöner.
Ein U/t-Diagramm wäre schön (um z.B. defekte Zellen in Akkuschraubern zu 
finden, defekte Zelle vorher "voll" => Knick in Kurve).
Eigentlich habe ich auch gar keine Ahnung, was ich da noch brauchen kann 
und mir fällt nur das U/t-Diagramm gerade ein. Vielleicht gibt's da ja 
noch mehr...



Die ADC-Eingänge des STM32 vertragen maximal 4V laut Datenblatt, darüber 
muss die Beschaltung sicherstellen, dass nicht mehr als 5mA fliessen.
Der LT1013 in meiner Schaltung wird mit 5V versorgt.
Ich habe ausprobiert, bis wie weit der OPV-Ausgang die Spannung 
hochtreibt bei 5V Versorgung, maximal 4.22V.
Im totalen Worst-Case-Fehlerfall kommen auf dem ADC-Eingang 5V an.
Wie berechne ich nun den Schutzwiderstand für den ADC-Eingang?
(5V-4.22V)/0.005 = 156Ohm
4V/0.005 = 800Ohm
5V/0.005 = 1kOhm

Durch den Schutzwiderstand verfälsche ich das Messergebnis, die 
Eingangsimpedanz geht auf bis zu 20k herunter. 1k davor würde man 
gehörig bemerken...

Am besten nehme ich wohl einen OPV als Spannungsfolger direkt vor jeden 
ADC-Eingang und dimensioniere dessen Versorgung so, dass er gar nicht 
über 3.3V kommen kann, oder?

von dEx (Gast)


Lesenswert?

InfluxDB und Grafana sind zum visualisieren von zeitbasierten 
Datenreihen wohl aktuell das Mass der Dinge

von Stefan F. (Gast)


Lesenswert?

fusi schrieb:
> Gibt es da schon PC-Software (vorzugsweise Linux, kann mich
> aber auch mit Windows-Software anfreunden), die mir per RS232
> kommuniziert und Messdaten anzeigt?

Du brauchst Software, die mit deinem seriellen Protokoll zusammen passt. 
Ich würde das im ersten Entwurf mit Excel oder LibreOffice Makros 
programmieren.

> Wie berechne ich nun den Schutzwiderstand für den ADC-Eingang?
> (5V-4.22V)/0.005 = 156Ohm

Der Widerstand wird allerdings bewirken, dass sich der Sample&Hold 
Kondensator im ADC langsamer umlädt. gebe ihm dazu genug Zeit. Das 
kannst du im Register ADC1->SMPR2 beeinflussen.

> Am besten nehme ich wohl einen OPV als Spannungsfolger
> direkt vor jeden ADC-Eingang

Jedes zusätzliche Bauteil verschlechtert die Genauigkeit. Ich würde das 
nur tun, wenn die Messung schnell gehen muss. Das scheint in deinem 
Anwendungsfall nicht nötig zu sein.

von fusi (Gast)


Lesenswert?

Stefanus F. schrieb:
> Du brauchst Software, die mit deinem seriellen Protokoll zusammen passt.
> Ich würde das im ersten Entwurf mit Excel oder LibreOffice Makros
> programmieren.

Ein Protokoll gibt's noch nicht. Ich würde mich da gern an etwas 
bestehendes "anschliessen". Daher auch meine Frage nach existierender 
Software.

Stefanus F. schrieb:
>> Wie berechne ich nun den Schutzwiderstand für den ADC-Eingang?
>> (5V-4.22V)/0.005 = 156Ohm
>
> Der Widerstand wird allerdings bewirken, dass sich der Sample&Hold
> Kondensator im ADC langsamer umlädt. gebe ihm dazu genug Zeit. Das
> kannst du im Register ADC1->SMPR2 beeinflussen.

Okay, beim messen von Akkus reichen mit 1-2 Punkte pro Sekunde. Das 
heisst, der 156Ohm Widerstand wäre der passende, oder?

von Stefan F. (Gast)


Lesenswert?

fusi schrieb:
> Das heisst, der 156Ohm Widerstand wäre der passende, oder?

Ja.

> Daher auch meine Frage nach existierender Software.

"der" Klassiker dazu wäre Matlab. Habe ich aber noch nie benutzt.

von test (Gast)


Lesenswert?

Mir fällt da erstmal spontan http://logview.info/ ein. Ist ja speziell 
für derartige Visualisierungen gemacht.

Ferner gibts auch noch https://sigrok.org/wiki/Main_Page


Bei beiden müsstest du aber wohl ein Plugin für deine Hardware 
schreiben.

von Andreas S. (igel1)


Lesenswert?

fusi schrieb:
> Gibt es da schon PC-Software (vorzugsweise Linux, kann mich aber auch
> mit Windows-Software anfreunden), die mir per RS232 kommuniziert und
> Messdaten anzeigt? Auswerten von Log-Dateien auf SD-Karte wäre auch eine
> Möglichkeit, Live wäre aber schöner.

Yep, gibt es:

- ich habe früher "Logview Studio" benutzt
- inzwischen benutze ich "DataExplorer"

Beide Programme werden auch oft von Akkuladern aller Couleur zum 
Anzeigen der Lade-/Entladekurven verwendet.  So z.B. auch von meinem 
AV4m+ - Ladegerät, siehe z.B. hier: 
Beitrag "[S] Gute & günstige Ready-to-use Akkus (Mignon) + 9V Blöcke"

Dort habe ich die  ersten Kurven noch mit LogView protokolliert und bin 
erst später im Verlauf des Threads auf DataExplorer umgestiegen.

Wenn's etwas individueller sein soll, so schau Dir evtl. einmal 
"Processing" an: https://processing.org/

Wenn's etwas mathematisch angehaucht werden soll, so sind Programme wie 
Matlab oder die freien Pendants wie z.B. scilab oder Octave auch in der 
Lage, Daten vom seriellen Port zu lesen.

Wenn's ganz professionell sein soll, kannst Du Dich auch in LabVIEW 
einarbeiten - dauert allerdings ein paar Tage.

Dort kann man sich auch schöne Oberfläche für virtuelle Instrumente 
zusammenklicken, die dann nicht nur Daten visualisieren, sondern auch 
rückwärts wieder Steuerbefehle an Deinen Prozessor senden können.

Viele Grüße

Igel1

: Bearbeitet durch User
von Uwe (Gast)


Lesenswert?

Hi,
ich werfe mal noch
Beitrag "Re: Visualisierung von geloggten Daten"
mit in den Ring. Bin sehr begeistert von all den Möglichkeiten.

viel Erfolg, Uwe

von Frank K. (fchk)


Lesenswert?

Kommerzielle Messgeräte nehmen sehr oft SCPI als Protokoll über GPIB, 
RS232 oder TCP. Du darfst Dich ruhig hinter Keysight, R&S, Tektronix, 
LeCroy, Fluke,... einreihen.

http://www.ivifoundation.org/docs/SCPI-99.PDF

fchk

von Schlumpf (Gast)


Lesenswert?

Wenn du keine großen Anforderungen an Zoomen, Skalieren und sonstigen 
Einstellungen hast, aber in "Echtzeit" deine Kurven mit tracken willst, 
dann lässt sich sowas auch mit vertretbarem Aufwand in z.B. C# 
programmieren.

Warten auf Daten am COM-Port
Wertepaar einlesen
Linie auf Bildschirm weiter zeichnen.

Hier steckt dann die Arbeit hauptsächlich in den Komfortfunktionen. Aber 
wenn du auf die verzichten kannst, dann wäre das auch evtl noch eine 
Möglichkeit.

von fusi (Gast)


Lesenswert?

Bin gerade Arbeiten, deshalb nur ganz kurze Antwort. Komme heute Abend 
nochmal mit mehr Text, Screenshots und ein bisschen Code :)
Und ich gehe dann auch nochmal auf eure Antworten ein.


Erstmal vielen Dank für den ganzen Input von euch, das hilft mir sehr 
gut weiter. Die "Blockade", die ich gestern noch hatte ist komplett weg. 
Ich habe nun einige Ideen, was ich machen kann und ein paar gute 
Programme zum Ausprobieren.


Ich habe heute Nacht noch angefangen ein simples log-Format + 
log2png-Programm zu "entwickeln" um PNGs komfortabel aus log-Dateien zu 
erstellen.

Geschrieben in C mit Hilfe von libgd. Compiliert mit gcc auf Linux und 
wird sehr wahrscheinlich mit dev-c++, gcc aus cygwin, etc. auf Windows 
compilieren.

Das Dateiformat ist im Grunde nur eine CSV-Datei mit Meta-Daten im Kopf.
Unterstützt bis zu 16 Kanäle (16 Farben) und "Autoscale" (erstellt die 
Datei genau so gross, wie sie sein muss um alle Werte/Pixel im Diagramm 
zu zeichnen).

War vielleicht zwei Stunden Arbeit und braucht nur noch ein paar kleine 
Clean-Ups um es zu posten.
In Mathe (Realschule) war ich immer der Vollpfosten, der von den 
Mitschülern mit viel Mühe mitgezogen wurde, dass ich nicht durchfalle...
Das jetzt macht ziemlich Spass und ist genau der Stoff der 9ten/10ten 
Klasse. Meine Mitschüler und Lehrer wären stolz...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.