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:Weil wir grade von den Knöpfen sprechen: Wenn man bei der Pascal-FW den "Encoder"/"Enter"-Knopf drückt, dann kommt "Memorizd". Ich kann aus den Pascal-Quellen da leider nix rauslesen. Hat jemand von Euch geblickt, wofür das Feature gut ist?
Bei der Originalfront (so auch meiner) ist die dritte Taste mit "Zero" beschriftet. Kurz drücken merkt den Bereich, länger drücken sollte einen (temporären) Nullabgleich machen. Und beim Einschalten gedrückt halten startet die Kalibrierung.

Da scheint sich jedoch zu Projektlaufzeit einiges geändert zu haben -- die Autorange-Funktion wurde ja auch nicht mehr umgesetzt.


Gruß
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 »

ompf hat geschrieben:Bei der Originalfront (so auch meiner) ist die dritte Taste mit "Zero" beschriftet. Kurz drücken merkt den Bereich, länger drücken sollte einen (temporären) Nullabgleich machen. Und beim Einschalten gedrückt halten startet die Kalibrierung.

Da scheint sich jedoch zu Projektlaufzeit einiges geändert zu haben -- die Autorange-Funktion wurde ja auch nicht mehr umgesetzt.
Hi Patrick,

wie gesagt, ich kann gerne eine Option für die Encoder-losen Varianten einbauen. Mein Vorschlag:

Code: Alles auswählen

Knopf rauf/runter: Bereichswahl (250mV/2,5V/25V/250V, analog für Strom)
kurzer Druck auf den "Zero"-Knopf Umschaltung in die Modus-Auswahl
      - dabei Knopf rauf/runter Auswahl des Modus (DCV, ACV, DCA, ACA)
      - mit "Zero"-Knopf bestätigen.

Langer Druck auf den "Zero"-Knopf speichert den Meßbereich als Default. (kann ich für die Encoder-Version auch nachrüsten)

Für beide Varianten (mit/ohne Encoder) Wenn der "Zero"-Knopf beim Einschalten gedrückt wird, dann "Auto-Offset" mit Speichern im EEPROM. 
Nachteil des Vorschlags für die Encoderlose Version: die Beschriftung "Zero" trifft nur eingeschränkt zu. Man kann aber nicht mehr aus Versehen vom Spannnungsbereich in den Strombereich umschalten :shock: 
Temporäres "Auto-Offset" ist m.W. bei der Pascal-Version nicht vorgesehen, bei der C-Version geht das schon jetzt über das Menü.

Gibt es sonst Ideen, Vorschläge oder Wünsche, wie das Menü der Encoder-Version aussehen soll? Ich bin da noch ganz offen.

Viele Grüße
Paul
gewo
kann c't-Lab-Bausätze löten
kann c't-Lab-Bausätze löten
Beiträge: 26
Registriert: 01.12.2009, 22:09

Re: DIV-C Firmware: Implementierung

Beitrag von gewo »

[quote="psclab38"]
Gibt es sonst Ideen, Vorschläge oder Wünsche, wie das Menü der Encoder-Version aussehen soll? Ich bin da noch ganz offen.
/quote]
Ich versuch es mal.

Bereichswahl wie bereits eingebaut.
Langer Druck auf Encoder -> Menü Setup/Settings.
Mit den Tasten Setup-Menüpunkte auswählen.
Mit Encoder Setup-Werte ändern.
Langer Druck auf Encoder beendet/speichert Setup/Settings.
Eine Taste mit Normalbetrieb zum Umschalten Auto/Manual -Range.
Bleibt noch eine Taste für etwas anders schnell erreichbares.

Gerhard
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 »

gewo hat geschrieben:
psclab38 hat geschrieben: Gibt es sonst Ideen, Vorschläge oder Wünsche, wie das Menü der Encoder-Version aussehen soll? Ich bin da noch ganz offen.
Ich versuch es mal.

Bereichswahl wie bereits eingebaut.
Langer Druck auf Encoder -> Menü Setup/Settings.
Mit den Tasten Setup-Menüpunkte auswählen.
Mit Encoder Setup-Werte ändern.
Langer Druck auf Encoder beendet/speichert Setup/Settings.
Eine Taste mit Normalbetrieb zum Umschalten Auto/Manual -Range.
Bleibt noch eine Taste für etwas anders schnell erreichbares.

Gerhard
Hi Gerhard,

ganz so hab ich's leider nicht gemeint :oops:
Die Menüstruktur im vorhandenen Framework würde ich lieber nicht umstellen,
a) da ist schon soviel Arbeit reingeflossen
b) es gibt sowieso schon zwei Varianten (DCG-C/EDL-C und DIV-C/DDS-C)

Für die Encoder-Variante müßte sich bitte das Menü an dem orientieren, was DIV-C/DDS-C derzeit schon haben, also meine Frage bezog sich auf die Inhalte, nicht die Struktur. Kleine Features, wie das Abspeichern des Range per langem Druck hab ich grade nachgerüstet (neues Hexfile ist hochgeladen). Aber das war schon recht verzwickt.

Viele Grüße
Paul
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:wie gesagt, ich kann gerne eine Option für die Encoder-losen Varianten einbauen. Mein Vorschlag:

Code: Alles auswählen

(...)
Langer Druck auf den "Zero"-Knopf speichert den Meßbereich als Default. (kann ich für die Encoder-Version auch nachrüsten)
Den "langen Druck" würde ich lieber mit der temporären Nullung belegen. Diese Funktion ist relativ wichtig. Ohne Schreiben ins EEPROM, die Kalibrierdaten sollten dadurch nicht angetastet werden!

Meßbereich merken habe ich eigentlich noch nie gebraucht. Alle meine Multimeter (Solartron 7150plus, HP 34401, HP 3478) starten nach dem Einschalten mit DCV Autorange.

Nach Umschalten der Funktion sollte man automatisch im höchsten Bereich (oder besser im Autorange, falls machbar) landen. Autorange dürfte bei Spannungsmessung unproblematisch sein. Bei Strommessung wäre ich damit vorsichtig.


Gruß
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 »

ompf hat geschrieben:Nach Umschalten der Funktion sollte man automatisch im höchsten Bereich (oder besser im Autorange, falls machbar) landen. Autorange dürfte bei Spannungsmessung unproblematisch sein. Bei Strommessung wäre ich damit vorsichtig.
Hi Patrick,
beim Umschalten des Modus springt automatisch der höchste Bereich an: 250V bzw. 2.5A.

Was Autorange angeht, sollte der Strombereich eher unproblematisch sein. Da greifen bei 250µA und 25mA die Schutzdioden und begrenzen die Verlustleistung an den Meßwiderständen. Der 2.5A-Bereich mit 0.1R ist an sich niederohmig genug.

Autorange für die Spannungsmessung ist allerdings nicht immer ganz hochohmig, wie weiter oben schon mal erwähnt. Wenn man z.B. bei DC-V mehr als 15V auf den Eingang gibt, der momentan auf dem 250mV oder 2.5V-Bereich steht, dann dominieren für die Umschaltezeit die 2*22kOhm Schutz-Widerstände gegen +/-15V und nicht der 1GOhm des LF411. Das ist aber durch die Schaltung so vorgegeben.

Mal sehen, ob ich für die encoderlose Version was Sinnvolles reinfädeln kann.

Viele Grüße
Paul

[EDIT]
Ich hab Dir/Euch mal eine neue Version (Beta4) hochgeladen, mit folgenden Änderungen
- Auto-Offset korrigiert (war teilweise falsche Range-Zuordnung)
- Encoderlose Bedienung (für Ur-DIV, ohne Encoder, aber auch ohne Menü ;-( )

Umschaltung per Parameter 152 (niederwertigstes Bit ist "no-Encoder" (x ist die Modul-Adresse)
x:wen=1!
x:152=1!
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 »

Zur Info:

Die Quellen zur DIV-C habe ich vor ein paar Tagen nach Sourceforge hochgeladen (Zugriff am Besten mit CVS), und es gibt auch ein neues Hexfile (Link siehe im ersten Posting) mit Min- und Max-anzeige. Bei den Sourcen gibt es auch ein XLS mit der Liste der zusätzlichen Kommandos.

Es gibt noch ein paar Dinge, die noch erledigt werden müssen, aber die Grundfunktion sollte inzwischen stabil sein. Bei Problemen bitte einfach hier melden.

Viele Grüße
Paul
gewo
kann c't-Lab-Bausätze löten
kann c't-Lab-Bausätze löten
Beiträge: 26
Registriert: 01.12.2009, 22:09

Re: DIV-C Firmware: Implementierung

Beitrag von gewo »

Hallo Paul,

kann es sein das das Mnemonic "VAL" nicht mehr funktioniert? (C FW Beta5)

1:idn?
#1:254=0.1 [DIV C by PSC]
1:val 0?
#1:255=0 [OK]
1:0?
#1:0= 0.000

Gerhard
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 »

gewo hat geschrieben:kann es sein das das Mnemonic "VAL" nicht mehr funktioniert? (C FW Beta5)
Hi Gerhard,

ja, hast recht. War aber keine Absicht, sondern eine undokumentierte Sache :roll:
Funktioniert jetzt.

Vielen Dank für's Fehlerfinden
Paul
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 an alle,

gibt's für die DIV-C-Firmware von Eurer Seite noch irgendwelchen Input, Fehler, Anregungen? Wenn jemand die Sache mit dem Linearisierungs-Polynom brauchen würde, und vielleicht ein wenig Knowhow (per Excelsheet oder wie oder was auch immer) beisteuern könnte, dann könnte ich mich noch zu einer Implementierung durchringen.

Ansonsten würde ich's mit der DIV-C-Firmware einstweilen bewenden lassen und dann in den nächsten Tagen den Debugger wieder abklemmen um das DIV wieder zusammenzubauen und endlich mal abzugleichen. So im Debug-Modus ist die Funktion auf Dauer zu eingeschränkt und der Arbeitstisch muß wieder frei werden.

Viele 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 »

Hallo Paul,
mein DIV ist noch nicht aufgebaut ich konnte mir die Firmware deshalb noch nicht ansehen.
Auf Seite 1 des Treads stand was von Min / Max Anzeige. Ich fände es wäre ein tolles Feature wenn man via Kommando einen Zeitrahmen festlegen könnte, indem das DIV dann MinU+MaxU und/oder MinI+MaxI ermittelt. Eventuell könnte man die Ermittlung auch via Druck auf den Drehgeber Starten/Stoppen.
Nur so ne Idee, ich hab mir den Code jetzt nicht angesehen vielleicht ist das ja schon implementiert ?

MfG
EXA
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,
mein DIV ist noch nicht aufgebaut ich konnte mir die Firmware deshalb noch nicht ansehen.
Dann wird's aber Zeit! 8)
EXA hat geschrieben: Auf Seite 1 des Treads stand was von Min / Max Anzeige. Ich fände es wäre ein tolles Feature wenn man via Kommando einen Zeitrahmen festlegen könnte, indem das DIV dann MinU+MaxU und/oder MinI+MaxI ermittelt. Eventuell könnte man die Ermittlung auch via Druck auf den Drehgeber Starten/Stoppen.
Nur so ne Idee, ich hab mir den Code jetzt nicht angesehen vielleicht ist das ja schon implementiert ?
Naja, fast. Aber vielleicht reicht Dir das ja:

Im Syntax-DIV-C.xls sind ein paar neue Kommandos dokumentiert:

x:15? bringt den Maximalwert,
x:16? den Minimalwert.
und
x:153=1! setzt Minmal und Maximalwert zurück (auf den in dem Augenblick aktuellen Messwert). Gleiches passiert natürlich automatisch beim Moduswechsel (Strom/Spannung und AC/DC) sonst vergleicht man Äpfel mit Birnen. Beim Meßbereichswechsel (auch Autorange) bleiben die Min-Max-Werte aber erhalten.

Die Min-/Maxwerte sind auch über's Menü zugänglich, ein Druck auf den Encoder in einem der Menüs setzt beide Werte zurück.
Da fehlt jetzt nur noch die Zeitkomponente, aber das kann doch die externe Steuersoftware einfach übernehmen?

Viele 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 »

psclab38 hat geschrieben:Hi Exa,
mein DIV ist noch nicht aufgebaut ich konnte mir die Firmware deshalb noch nicht ansehen.
Dann wird's aber Zeit! 8)
Wie schon CM sagte: Aschewolke über mein Haupt :wink: Die Teile liegen schon da aber ich komm einfach nicht dazu...
Natürlich kann die Zeiterfassung die Steuersoftware übernehmen. Für jemanden der nich immer den Rechner anwerfen will, wenn er das Multimeter benutzt wäre eine Standalone Lösung hald komfortabler.
Aber das ganze macht so schon einen sehr passablen Eindruck.
Beste Grüße
EXA
raven
kann c't-Lab-Bausätze bestellen
kann c't-Lab-Bausätze bestellen
Beiträge: 19
Registriert: 14.10.2009, 22:15

Re: DIV-C Firmware: Implementierung

Beitrag von raven »

Ja die Firmware funktioniert bisher echt gut sehr großes Lob an die Entwickler.
Das mit dem Abgleichpolynom wäre eine tolle sache da ich letzte woche beim Abgleichen immer eine Abweichung von ca.0,001V hatte von 50% Endwert auf 100%Endwert also bei einem von beiden lag die Messung um die 0,001V daneben kam halt drauf an ob ich den Skalen-Abgleich bei 50% oder 100% gemacht habe. Aber ich bin auch so zufrieden mit der Firmware wenn die Abweichung immer auftritt sind die Messwerte ja vergleichbar und darauf kommts mir an.
Wie sollen denn die Excel-Sheets aussehen? Soll dort der Messwert bei kurzgeschlossen bei 50% und bei 100% eingetragen werden und Excel berechnet daraus ein Polynom zweiter oder dritter Ordnung welches dann an das DIV übergeben wird? Könnte man sowas nicht direkt in Labview integrieren?
Wenn du das Abgleichpolynom noch implementierst wäre es bestimmt das beste es abwärtskompatibel zu lassen sodass die alten Abgleichwerte noch passen.

MFG
Tobias
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:Natürlich kann die Zeiterfassung die Steuersoftware übernehmen. Für jemanden der nich immer den Rechner anwerfen will, wenn er das Multimeter benutzt wäre eine Standalone Lösung hald komfortabler.
Tja, sehe ich ein. Die DIV-C kann aber z.B. noch keine Zeit messen. Wielange würde denn so eine Min/Max-Messung laufen? Reichen 65000 Sekunden?
Ich schreib's jedenfalls mal auf die Ideenliste.

Hi Tobias,
raven hat geschrieben:Ja die Firmware funktioniert bisher echt gut sehr großes Lob an die Entwickler.
Danke Dir! Ich baue zwar auf dem Framework der DDS-C auf, für die Implementierung der DIV-C bin ich bislang aber Einzelkämpfer.
raven hat geschrieben:Das mit dem Abgleichpolynom wäre eine tolle sache da ich letzte woche beim Abgleichen immer eine Abweichung von ca.0,001V hatte von 50% Endwert auf 100%Endwert also bei einem von beiden lag die Messung um die 0,001V daneben kam halt drauf an ob ich den Skalen-Abgleich bei 50% oder 100% gemacht habe. Aber ich bin auch so zufrieden mit der Firmware wenn die Abweichung immer auftritt sind die Messwerte ja vergleichbar und darauf kommts mir an.
Wie sollen denn die Excel-Sheets aussehen? Soll dort der Messwert bei kurzgeschlossen bei 50% und bei 100% eingetragen werden und Excel berechnet daraus ein Polynom zweiter oder dritter Ordnung welches dann an das DIV übergeben wird? Könnte man sowas nicht direkt in Labview integrieren?
Wenn du das Abgleichpolynom noch implementierst wäre es bestimmt das beste es abwärtskompatibel zu lassen sodass die alten Abgleichwerte noch passen.
Ich hab mir das in meiner Naivität so vorgestellt:
- Normaler Abgleich mit 0% (=Offset) und 100% (=Scale). Das ist die Referenz und sind auch die Standardwerte.
- Messung im 2.5V-Bereich, da das der direkte Bereich des AD-Wandlers ist und der Vorverstärker hier den Faktor 1 hat.
- Dann Messung bei ein paar Stützstellen, also 25%, 50%, 75% oder vielleicht auch 20%, 40%, 60%, 80%
- Diese Werte bezogen auf den Sollwert gibt dann beispielsweise für 25%: 0.25003, für 50%: 0.49936 und für 75%: 0.75023 (bezogen auf den Skalenendwert)
- Diesen Zahlensalat dann beispielsweise mit Excel behandeln und es kommen Koeffizienten für ein Polynom n-ter Ordnung raus, die man dann einfach per Parameter in die Firmware impft. Fertig ! Oder hab ich was vergessen?

Wenn sich jemand breitschlagen läßt, den Prozess in Labview einzudesignen (für mich ein Buch mit sieben Siegeln), dann bitte vortreten!
Für den Teil der C-Firmware würde ich sagen, daß der Aufwand vertretbar wäre. Eine AD-Wandlung braucht 160ms, da bleibt viel Zeit für etwas Fließkommaarithmetik. Nach dem Auslesen des DA im Interrupt erfolgt der Rest so nebenbei. Und wenn das ein paar Millisekunden länger dauert, dann fällt das sicher keinem richtig auf.

Viele Grüße
Paul
Zuletzt geändert von psclab38 am 23.08.2010, 22:21, insgesamt 1-mal geändert.
Antworten