DIV-C Firmware: Implementierung

Themen rund um die Software des Digitalvoltmeters DIV gehören hier rein.
Benutzeravatar
ompf
kann c't-Lab-Module konstruieren
kann c't-Lab-Module konstruieren
Beiträge: 168
Registriert: 19.01.2008, 13:03
Wohnort: Dortmund

Re: DIV-C Firmware: Implementierung

Beitrag von ompf »

psclab38 hat geschrieben:etwas Fließkommaarithmetik
Aua. Und das mit einem 8bit-Prozessor.

Kannst Du die Werte nicht so lange nach links schieben, bis Du BCD-Arithmetik machen kannst? So rechnen doch fast alle Messgeräte.


Patrick
psclab38
kann c't-Lab-Konstrukteure konstruieren
kann c't-Lab-Konstrukteure konstruieren
Beiträge: 942
Registriert: 25.01.2008, 23:34

Re: DIV-C Firmware: Implementierung

Beitrag von psclab38 »

Hi Patrick,
ompf hat geschrieben:
psclab38 hat geschrieben:etwas Fließkommaarithmetik
Aua. Und das mit einem 8bit-Prozessor.
Jaaa, ich weiß was Du meinst.
Allerdings muß ich sagen, daß ich da überhaupt keine Schmerzen habe. Bei der DIV-C ist alles platz- und zeitmäßig vollkommen unkritisch, so daß ich meine Energie auf gewinnbringendere Dinge konzentieren möchte. Der Kompromiß mit gelegentlich verwendeter Fließkommaarithmetik funktioniert für mich gut. Das hält auch den Code etwas verständlicher für Quereinsteiger... :mrgreen:
Außerdem kümmere ich mich derzeit scheinbar alleine um den C-Code, und ich verfüge leider auch nicht über unbegrenzte Zeitvorräte. Wer (neu) mit einsteigen will, sei aber herzlich willkommen; lohnende Aufgaben gibt's genug.
ompf hat geschrieben:Kannst Du die Werte nicht so lange nach links schieben, bis Du BCD-Arithmetik machen kannst?
Ja, könnte ich machen. Ich sehe aber derzeit keinen Grund, es zu ändern. S. o. .
ompf hat geschrieben: So rechnen doch fast alle Messgeräte.
Mag sein. Aber bei allen c't-Lab Firmwaren, sei es Pascal oder C, kommt Fließkomma zum Einsatz, wo sinnvoll. In der Vergangenheit haben wir schon optimiert und auf ein vernünftiges Maß reduziert. Speziell bei der DIV-C steht für mich ein funktionierendes Ergebnis mit vertretbarem Zeitaufwand ganz vorne in der Prioritätenliste, insbesondere da sich die Beteiligung am ganzen c't-Lab-Projekt schon spürbar reduziert hat.

Grüße
Paul
EXA
kann c't-Lab-Module umbauen
kann c't-Lab-Module umbauen
Beiträge: 91
Registriert: 11.02.2008, 22:25

Re: DIV-C Firmware: Implementierung

Beitrag von EXA »

Hi Paul,
65000 Sekunden wären ja ~18h. Das würde mir persönlich dicke reichen. Ich habe da so an einen Zeitrahmen von 1-2h gedacht. Ich würde damit hauptsächlich Ausschläge von Drehgebern, Spannungsschwankungen, Temperatursensoren, etc. ausmessen wollen. Wie gesagt für eine Temperaturmessung, die 5min dauert würde ich undern 2min warten bis der PC hochgefahren ist. Da ist am Display ablesen schon bequemer :lol:
Wer eine Langzeitmessung machen will, möchte die Daten dann sowieso am PC auswerten. Da kann die Auswertesoftware auch das Zeitmanagement mit übernehmen.
Ich möchte auch ein großen Lob für dein Engagement loswerden. Ich hoffe du hast auch weiterhin genug Zeit dazu.
Beste Grüße
EXA
psclab38
kann c't-Lab-Konstrukteure konstruieren
kann c't-Lab-Konstrukteure konstruieren
Beiträge: 942
Registriert: 25.01.2008, 23:34

Re: DIV-C Firmware: Implementierung

Beitrag von psclab38 »

Hi Exa,
EXA hat geschrieben:65000 Sekunden wären ja ~18h. Das würde mir persönlich dicke reichen.
Mal schauen, welcher Wertebereich Sinn macht. Die Beschleunigungsfunktion für den Drehencoder ist leider nicht ganz so ideal hier, um hohe Werte einzukurbeln.
EXA hat geschrieben:Ich habe da so an einen Zeitrahmen von 1-2h gedacht. Ich würde damit hauptsächlich Ausschläge von Drehgebern, Spannungsschwankungen, Temperatursensoren, etc. ausmessen wollen. Wie gesagt für eine Temperaturmessung, die 5min dauert würde ich undern 2min warten bis der PC hochgefahren ist. Da ist am Display ablesen schon bequemer :lol:
Wer eine Langzeitmessung machen will, möchte die Daten dann sowieso am PC auswerten. Da kann die Auswertesoftware auch das Zeitmanagement mit übernehmen.
Ich könnte mir vorstellen, einen zusätzlichen Parameter für die Min/Max-Messdauer einzuführen, Auflösung 1 Sekunde. Diese Zeit läuft dann automatisch los, sobald man die Min/Max-Werte per Encoder oder Kommando zurücksetzt. Ist die Zeit abgelaufen, stoppt die Anzeige einfach. Ob ich den laufenden Timer irgendwie signalisieren kann, weiß ich noch nicht.
Und wenn die Timervorgabe Null ist, dann läuft die Min/Max-Auswertertung halt unendlich.

Wie machen wir's? Du schickst ein Beweisfoto, wenn Du die DIV aufgebaut hast und ich bau' dann das Feature ein? :P
EXA hat geschrieben:Ich möchte auch ein großen Lob für dein Engagement loswerden. Ich hoffe du hast auch weiterhin genug Zeit dazu.
Danke Dir, ich hoffe auch, daß vielleicht doch nochmal jemand mitmacht...

PS: Hab grade noch selbst einen kleinen Bug im Menü gefunden!
EXA
kann c't-Lab-Module umbauen
kann c't-Lab-Module umbauen
Beiträge: 91
Registriert: 11.02.2008, 22:25

Re: DIV-C Firmware: Implementierung

Beitrag von EXA »

psclab38 hat geschrieben:Wie machen wir's? Du schickst ein Beweisfoto, wenn Du die DIV aufgebaut hast und ich bau' dann das Feature ein? :P
Genau so machen wir's, der Lötkolben raucht schon :lol:
psclab38 hat geschrieben:Ob ich den laufenden Timer irgendwie signalisieren kann, weiß ich noch nicht.
Evtl. ließe sich hierfür die unbenutzte LED (LED2 oder LED3, hab den Schaltplan jetzt nicht da) auf dem PM8 verwenden. Die benötigte Hardware ist schon da, wer das haben will lötet die LED rein und bohrt ein M3 Loch an passender Stelle in die Frontplatte.
Beste Grüße
EXA
psclab38
kann c't-Lab-Konstrukteure konstruieren
kann c't-Lab-Konstrukteure konstruieren
Beiträge: 942
Registriert: 25.01.2008, 23:34

Re: DIV-C Firmware: Implementierung

Beitrag von psclab38 »

EXA hat geschrieben:
psclab38 hat geschrieben:Ob ich den laufenden Timer irgendwie signalisieren kann, weiß ich noch nicht.
Evtl. ließe sich hierfür die unbenutzte LED (LED2 oder LED3, hab den Schaltplan jetzt nicht da) auf dem PM8 verwenden. Die benötigte Hardware ist schon da, wer das haben will lötet die LED rein und bohrt ein M3 Loch an passender Stelle in die Frontplatte.
Die LED in der Frontplatte ist ja schon mit AutoRange vorbelegt. Die zweite wäre dann NOT-Autorange, weil die verkoppelt sind und nur von einem Signal gesteuert werden, leider. Daher gibt's nur beim DCG zwei LEDs.

Vielleicht kann ich die AutoRange-LED aber blinken lassen, wenn der Timer läuft. Mal sehen...
psclab38
kann c't-Lab-Konstrukteure konstruieren
kann c't-Lab-Konstrukteure konstruieren
Beiträge: 942
Registriert: 25.01.2008, 23:34

Re: DIV-C Firmware: Implementierung

Beitrag von psclab38 »

Hallo Linearitätsfanatiker,

nachdem das Thema DIV einige Zeit nur niedrige Priorität genießen konnte, habe ich mir nun selbst ein Excel-Blatt erstellt, um die Korrekturrechnung per Polynom ausprobieren zu können. Um die Funktion aber mit echtem Datenmaterial testen zu können, wären mir ein paar Meßdaten aus dem echten Leben wirklich hilfreich. Bei eigenen Versuchen hat sich herausgestellt, daß es ganz gut funktionieren könnte, wenn die Sollwerte mit möglichst der gleichen Auflösung des DIV gemessen werden könnten. Mein genauestes DMM hat leider eine ganze Stelle zu wenig.

Also ich bräuchte bitte: Sollwerte (Referenzgerät) und Istwerte (DIV) bei 10%, 20%....100%. Etwa so:
Sollwert - Istwert
0,24970 - 0,24971
0,50012 - 0,50015
0,75108 - 0,75114
1,00201 - 1,00209
1,25282 - 1,25293
1,50363 - 1,50372
1,75432 - 1,75438
2,00474 - 2,00478
2,25542 - 2,25544
2,49921 - 2,49926

Es ist für diesen Versuch egal, ob das DIV genau abgeglichen ist, nur der Offset sollte nach Abwarten der Aufwärmzeit unbedingt geNullt werden. Meßbereich ist der 2.5V-Bereich. Die Spannungsquelle muß nicht allzu genau sein, es wird ja der Sollwert mit berücksichtigt. Nur einigermaßen stabil, damit mit die korrespondierenden Werte ohne Hektik ablesen kann.

Viele Grüße
Paul

[EDIT]Ach ja, die negativen Spannungen sind natürlich genauso interessant, da der "Nullpunkt" bei 50% des ADC liegt.
psclab38
kann c't-Lab-Konstrukteure konstruieren
kann c't-Lab-Konstrukteure konstruieren
Beiträge: 942
Registriert: 25.01.2008, 23:34

Re: DIV-C Firmware: Implementierung

Beitrag von psclab38 »

Also tut mir echt leid, aber ohne Mitarbeit von Euch komme ich nicht weiter. Woran liegt's?

- Kein Interesse mehr an der Linearisierung?
- Kein genaues Referenz-Meßgerät?
- ...?

Paul
Benutzeravatar
thoralt
Site Admin
Site Admin
Beiträge: 262
Registriert: 10.04.2006, 08:48
Wohnort: Chemnitz
Kontaktdaten:

Re: DIV-C Firmware: Implementierung

Beitrag von thoralt »

Hallo Paul,

ich verfolge das Thema zwar mit Interesse, aber bei mir trifft der Punkt "kein genaues Referenz-Messgerät" zu. Daher kann ich Dich nur moralisch unterstützen :)

Thoralt
There are 10 kinds of people in this world: Those who understand binary and those who don't.
psclab38
kann c't-Lab-Konstrukteure konstruieren
kann c't-Lab-Konstrukteure konstruieren
Beiträge: 942
Registriert: 25.01.2008, 23:34

Re: DIV-C Firmware: Implementierung

Beitrag von psclab38 »

Ich habe mir jetzt mal ein genaues Meßeisen als Referenz organisiert, so eines der Kategorie "diamantgeschliffenes Haarlineal": 6-stellig, Toleranz 24ppm, Kalibrierdatum 31.08.2010.

Was soll ich sagen, das Ergebnis spricht für das DIV. Abweichungen nur im letzten Digit, und die dürften daher rühren, daß der Skalierungsfaktor nur mit vier Stellen nach dem Komma wirkt. Ob das jetzt an der Firmware liegt oder am "DIV-Abgleich.vi" habe ich noch nicht überprüft.

Bezüglich Linearität: also geradliniger könnte das DIV nicht sein, siehe Tabelle:
DIV_Linearität.png
DIV_Linearität.png (9.05 KiB) 10105 mal betrachtet
Meßbereiche:
DIV fix 2.5VDC,
Referenzgerät fix 10VDC.

Ich glaube nicht, daß ich hier ein besonders "gutes" DIV erwischt habe. Aufgrund dieses Ergebnisses sehe ich keinen Handlungsbedarf ein Linearisierungspolynom einzubauen und stelle hiermit die weiteren Untersuchungen zu dem Thema ein.

Grüße
Paul
Lennart
kann c't-Lab-Bausätze löten
kann c't-Lab-Bausätze löten
Beiträge: 32
Registriert: 11.12.2009, 05:42
Wohnort: Berlin
Kontaktdaten:

Re: DIV-C Firmware: Implementierung

Beitrag von Lennart »

wow .. hätte nicht gedacht, das das DIV so gute werte erreicht .. aber gut zu wissen das man für rel. kleines Geld so ein gutes Instrument bekommt ;)

kann dir nur zustimmen, das es nicht wirklich Sinn macht, an dieser Stelle weiter zu machen
"When in trouble or in doubt, run in circles, scream and shout."
Aktuelle Projekte: DevilTrac, ArmLab
psclab38
kann c't-Lab-Konstrukteure konstruieren
kann c't-Lab-Konstrukteure konstruieren
Beiträge: 942
Registriert: 25.01.2008, 23:34

Re: DIV-C Firmware: Implementierung

Beitrag von psclab38 »

Lennart hat geschrieben:wow .. hätte nicht gedacht, das das DIV so gute werte erreicht .. aber gut zu wissen das man für rel. kleines Geld so ein gutes Instrument bekommt ;)
Sehe ich auch so....
psclab38 hat geschrieben:Abweichungen nur im letzten Digit, und die dürften daher rühren, daß der Skalierungsfaktor nur mit vier Stellen nach dem Komma wirkt. Ob das jetzt an der Firmware liegt oder am "DIV-Abgleich.vi" habe ich noch nicht überprüft.
Das Problem habe ich mir gerade angesehen. Also:

- Die DIV-C Firmware akzeptiert als Input Scale-Werte mit effektiv 7 Stellen nach dem Komma (interne Darstellung als "double")
- Die DIV-C Firmware gibt die Scale-Werte mit 5 Stellen nach dem Komma aus, weil das "Backup&Restore.vi" nur 5 Stellen nach dem Komma verarbeitet.
- Das "DIV-Abgleich.vi" liest zwar die 5 Stellen nach dem Komma aus der Firmware... (Read-Button)
- ... schreibt aber (Write-Button) nur 4 Stellen nach dem Komma.

Die 5 Stellen nach dem Komma reichen grade so aus, um das letzte Digit des DIV noch ordentlich zu skalieren. Wer kennt sich denn mit dem LabView aus? Ich such mir immer den Wolf und hab keine Ahnung, wie und wo ich da was ändern könnte.

Grüße
Paul
PatHoff
kann c't-Lab-Bausätze löten
kann c't-Lab-Bausätze löten
Beiträge: 34
Registriert: 02.10.2009, 23:47

Re: DIV-C Firmware: Implementierung

Beitrag von PatHoff »

Hallo Paul,
psclab38 hat geschrieben:Die 5 Stellen nach dem Komma reichen grade so aus, um das letzte Digit des DIV noch ordentlich zu skalieren. Wer kennt sich denn mit dem LabView aus? Ich such mir immer den Wolf und hab keine Ahnung, wie und wo ich da was ändern könnte.
Das Problem trat bei mir schon mal auf (siehe http://thoralt.ehecht.com/phpbb/viewtop ... f=14&t=312). Der Grund ist die ASCII-Wandlung in Festkomma-Format (also nicht Exponential-Darstellung álá x.xxxE-xx) mit 4 festen Nachkommastellen in dem VI "CTLAB-SendVal.vi" (das steckt in der Bibliothek CTLIB.llb).
Ich habe deswegen ein neues VI "CTLAB-SendVALExp.vi" in der unten angehängten Bibliothek CTLIBNeu.llb geschrieben. Das habe ich gleich an der kritischen Stellen in "DIV-Abgleich_PH.vi" integriert. Es überträgt jetzt 6 Nachkommastellen. Im Prinzip kann man diese Zahl beliebig hoch setzen. Ich weiß aber nicht, was die FirmWare mit so vielen Nachkommestellen macht. Da reagiert die Pascal-FW ggf. anders als die C-FirmWare, weil ja da sicher Standard-Wandlungsroutienen wie VAL (Pascal) oder atof (C) verwendet wurden.

Ich habe das neue DIV-Abgleich-PH.vi noch nicht getestet. Wenn es Probleme gibt kann ich ja mal mein DIV ranhängen und Fehlersuche betreiben.

Viele Grüße !
Patrick
DIV-Abgleich_PH.ZIP
(413.23 KiB) 306-mal heruntergeladen
psclab38
kann c't-Lab-Konstrukteure konstruieren
kann c't-Lab-Konstrukteure konstruieren
Beiträge: 942
Registriert: 25.01.2008, 23:34

Re: DIV-C Firmware: Implementierung

Beitrag von psclab38 »

PatHoff hat geschrieben:
Ich habe das neue DIV-Abgleich-PH.vi noch nicht getestet. Wenn es Probleme gibt kann ich ja mal mein DIV ranhängen und Fehlersuche betreiben.

Viele Grüße !
Patrick
Hi Patrick,
da bedanke ich mich ganz herzlich! Ich hoffe, ich hab am Wochenende genügend Zeit zum Ausprobieren. Die C-Firmware ist - wie gesagt - bezüglich der Stellen nach dem Komma ziemlich unempfindlich.

Viele Grüße
Paul
Zuletzt geändert von psclab38 am 03.11.2010, 22:07, insgesamt 1-mal geändert.
psclab38
kann c't-Lab-Konstrukteure konstruieren
kann c't-Lab-Konstrukteure konstruieren
Beiträge: 942
Registriert: 25.01.2008, 23:34

Re: DIV-C Firmware: Implementierung

Beitrag von psclab38 »

psclab38 hat geschrieben: Ich hoffe, ich hab am Wochenende genügend Zeit zum Ausprobieren.
Hallo Patrick,

hab etwas verspätet Deinen Patch angetestet: funktioniert, Lesen und Schreiben der Scale-Parameter mit fünf Stellen. Sehr schön!
Nochmal vielen Dank!

Viele Grüße
Paul
Antworten