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?
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.
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?
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.
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.
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
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
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.
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...