Forum: Mikrocontroller und Digitale Elektronik Voltcraft PM-60V/20A Gleichstromzähler: Zeit läuft zu langsam wenn "Online"


von Akkutester (Gast)


Lesenswert?

Hallo,

Ich habe gerade ein "witziges" Problem.
Vielleicht kennen hier einige den Voltcraft PM-60V/20A, ein billiger 
(60€) Gleichstromzähler für den Modellbau etc.
Eigentlich ein feines Teil, loggt automatisch Spannung, Strom und Zeit 
sowie ein paar min./max. Werte und errechnet daraus z.b. die 
Akkukapazität etc.

Nun verfügt das Dingen noch über einen serielle Schnittstelle, über die 
sich die geloggten Daten auf den PC laden und recht übersichtlich 
plotten lassen.

Allerdings läuft die Zeit auf dem Gerät zu langsam, sobald die 
Schnittstelle verbunden ist (und somit die Werte auf dem Software 
Display aktualisiert werden). Während des Downloads steht die Uhr ganz.

Sobald der Stecker gezogen ist, passt die Zeit, sonst verliert sie je 
Minute 15-17 Sekunden!!!

Das führt natürlich zu völlig wirren Kapazitäten, die da rauskommen. 
Habe das gemerkt, als ich zwei neue Akkupacks "vermessen" habe. Das eine 
hatte plätzlich 20Wh weniger Kapazität als das, das ich offline gemessen 
habe.

Da müssen mal wieder äußerst pfiffige Programmierer am Werk gewesen 
sein!

Hat das Problem schon mal wer gehabt und evtl. eine alternative Firmware 
gezaubert? Sollte eigentlich kein großes Dingen sein. Ein offizielles 
Firmwareupdate habe ich nicht finden können.

Ansonsten das hier nur als Hinweis für andere, die ähnliche 
Überraschungen mit dem Teil erleben. Wird auch unter anderem Label 
verkauft.

Euer
Akkutester

von Thorsten Legat (Gast)


Lesenswert?

Wie soll denn bitteschön die RTC durch eine RS232 beeinflusst werden? 
Und was soll da ein Firmwareupdate bringen? Experten gibt es hier...

von Dr. Sommer (Gast)


Lesenswert?

Thorsten Legat schrieb:
> Wie soll denn bitteschön die RTC durch eine RS232 beeinflusst
> werden?
Wer sagt dass die interne Uhr über eine richtige RTC läuft, und da nicht 
irgendwo ein Task läuft:
1
while (1) { seconds++; sleep (1); }
und der halt weniger Zeit bekommt, wenn nebenher noch was anderes läuft? 
Man ist allgemein viel zu optimistisch bzgl. der Qualität von 
Industrie-Software, da ist unglaublich viel zusammengefrickelter Schrott 
drunter.

von Thorsten Legat (Gast)


Lesenswert?

Bei einem Markenhersteller gehe ich ja mal davon aus, dass das nicht so 
billig gemacht ist. Habe ein Multimeter von  denen, das geht sehr sehr 
genau. Die sitzen immerhin in De.

Wie sollte der denn messen und anzeigen auf dem LCD, wenn er die ganze 
Zeit wartet?

Ich glaube eher, der TE hat eine falsche Baudrate eingestellt. Zu hoch. 
Und dann passt das Timing nicht mehr.

von Dr. Sommer (Gast)


Lesenswert?

Thorsten Legat schrieb:
> Bei einem Markenhersteller gehe ich ja mal davon aus, dass das nicht so
> billig gemacht ist.
Haha, so wie die Software bei VW?  Oder die von Microsoft (zum Glück 
mittlerweile gebessert)? Software-Struktur sieht man nicht, da wird 
gerne gepfuscht. Aber irgendwann fällts dann doch auf. Man schaue doch 
mal nur hier im Forum, was für Frickellösungen als "Produktiv" genutzt 
werden. Das fängt ja shcon damit an, dass unbedingt die "einfachsten" 
(am wenigsten mächtigsten) Tools verwendet werden müssen, um sich den 
Lernaufwand zu sparen.

Thorsten Legat schrieb:
> Die sitzen immerhin in De.
Und das heißt... was? Dass die Entwicklung nicht nach Indien 
outgesourced wurde? Dass aus deutschen Hochschulen nur die perfekten 
Entwickler kommen, und langfristig planende Manager? Wenn ein Programm 
zu funktionieren scheint, wird es doch ausgeliefert, und bloß kein 
Gedanke daran verschwendet, ob die Grundidee nicht doch eine Katastrophe 
ist.

Thorsten Legat schrieb:
> Wie sollte der denn messen und anzeigen auf dem LCD, wenn er die ganze
> Zeit wartet?
Kann doch sein, dass die ein RTOS verwenden. Ein Task hat die o.g. 
Schleife, ein anderer macht den UART, und wenn letzterer beschäftigt 
ist, geht dem anderen die Zeit aus.

Thorsten Legat schrieb:
> Ich glaube eher, der TE hat eine falsche Baudrate eingestellt
Die Baudrate des UART soll die RTC beeinflussen? Das klingt ja nach noch 
seltsamerer Programmierung.

Kleine Anekdote:
An meiner Hochschule gab es als Forschungsprojekt eine Art 
Frequenzzähler für eine besondere Anwendung. Dieser wurde auf einem AVR 
umgesetzt. Weil es aber zu anstrengend war, im Datasheet nahczulesen wie 
der Input Capture funktioniert, wurde das halt in Software gemacht durch 
fleißig Zyklen zählen usw. Wenn man also auf die Idee kommt noch eine 
andere Funktion hinzuzufügen - Kommunikation per UART z.B. - kommt das 
Timing durcheinander. Das Projekt war natürlich super und kam gut an. 
Nur weil man das vernünftig machen kann - mit Input Capture - heißt 
das noch lange nicht, dass das auch gemacht wird!

von W.A. (Gast)


Lesenswert?

Akkutester schrieb:
> Allerdings läuft die Zeit auf dem Gerät zu langsam, sobald die
> Schnittstelle verbunden ist (und somit die Werte auf dem Software
> Display aktualisiert werden). Während des Downloads steht die Uhr ganz.

Dann wird wohl ein delay(1000) die Länge der Sekunden bestimmen und die 
serielle Übertragung nicht asynchron ablaufen.

von Akkutester (Gast)


Lesenswert?

Dr. Sommer schrieb:
> Kann doch sein, dass die ein RTOS verwenden. Ein Task hat die o.g.
> Schleife, ein anderer macht den UART, und wenn letzterer beschäftigt
> ist, geht dem anderen die Zeit aus.

Freunde, es geht um dieses Gerät:
https://www.conrad.de/de/voltcraft-pm-60v20a-dc-leistungsmessgeraet-pm-60v20a-spannung-500-6000-vdc-000-6000-vdc-mit-externer-spannungsversorgung-strom-001-20-a-101668.html

Da drin muckelt ein offensichtlich räudig programmierter PIC irgendwas 
vor sich hin, kein RTOS.
Wär schön, wenn ein sicher vorhandener Timer auch genutzt würde. Es 
dürfte aber wirklich eher eine einfache wait Funktion in der Schleife 
sein, evtl. angepasst auf die ADC Messungen und die LCD Ausgabe. Denn 
nur damit passt die Zeit recht genau, soweit ich das bisher beobachten 
konnte.
Wieso für die Ausgabe der paar Daten auf den UART 17(!) Sekunden je 
Minute vertrödelt werden können, ist mir allerdings völlig schleierhaft.
Wie schafft man denn sowas wohl? Oder ist das ein Feature vom PIC?
Kenne persönlich nur die AVRs und da wüsste ich kaum, wie das gehen 
sollte.

von Dr. Sommer (Gast)


Lesenswert?

Akkutester schrieb:
> Da drin muckelt ein offensichtlich räudig programmierter PIC irgendwas
> vor sich hin, kein RTOS.
Gibt's dafür kein RTOS? Damit kann man doch so einfach und schnell 
programmieren (hust)!

Akkutester schrieb:
> Wieso für die Ausgabe der paar Daten auf den UART 17(!) Sekunden je
> Minute vertrödelt werden können, ist mir allerdings völlig schleierhaft.
Gar kein problem, wenn man synchron sendet, d.h. nach jedem byte in 
einer while-Schleife wartet bis es weg ist (busy waiting). Die 
allermeisten Programme hier im Forum sind doch genauso geschrieben. Wenn 
man jetzt viele Bytes sendet, und die meiste Zeit des Prozessors mit 
Warten auf Fertigstellung vertrödelt, passiert genau sowas, völlig 
unabhängig von AVR / PIC / whatever. Besonders beliebt ist dieses 
Vorgehen auch bei den LCD-Routinen oder SD-Karten-Ansteuerungen, die mit 
Warteschleifen das Programm blockieren.

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.