Lidl-Multimeter PDM-300-C2 Analyse und Erweiterungen

Gast #6186961
Lesenswert?

Moin,

ich hab mal ein Projekt aufgesetzt um ein billige Autorange-Multimeter 
vom Discounter aufgesetzt. Dieser Thread führt damit den Hinweis-Thread 
aus dem 'Markt-Bereich' fort: 
Beitrag "(Tipp) Günstiges 13Euro Autorange Multimeter derzeit beim Lidl" . Der Wiki-Artikel zum 
Projekt ist dort: Multimeter PDM-300-C2 Analyse.

Als nächste lade ich mal ein paar Detail-Fotos vom Display und 
Schnittstellen hoch und schau was man an der unbestücken LED (?optischen 
Schnittstelle?) oben links machen könnte. Sinnvoll scheint mir auch eine 
Signalaufzeichnung an TX zu etablieren, ich dachte da an einen RaPi mit 
Sigrok per Kabel durch Batteriefach.

Let's do it!
Gast #6187049
Lesenswert?

Spannendes Projekt!
Hast du die Möglichkeit die Genauigkeit zu überprüfen? Muss ja nicht 
aufwendig sein:
- <0,1% Widerstände falls du welche hast
- genaueres Multimeter zum Vergleich
- Referenzspannungsquelle
- etc.
Gast #6187147
Lesenswert?

Baendiger schrieb:
> Hast du die Möglichkeit die Genauigkeit zu überprüfen? Muss ja nicht
> aufwendig sein:
> - <0,1% Widerstände falls du welche hast
> - genaueres Multimeter zum Vergleich


Ich hab hier ein paar 0,1% 1K, 2k,... Widerstände von einem R2R-projekt 
und ein 4.5 stelliges Tischmultimeter (ca. 40 Jahre alt, unkalibriert). 
Die Widerstände kann ich mal bei Gelegenheit dranhalten, für genauere 
Vergleichsmessungen müsste ich bis zum Ende der Ausgangssperre warten um 
in der Vereinswerkstatt mal nach Messequipment zu schauen. Vielleicht 
kommt da ja ein anderer eher an Vergleichsequipment.
#6188067
Lesenswert?

Volker U. schrieb:
> Als nächste lade ich mal ein paar Detail-Fotos vom Display und
> Schnittstellen hoch und schau was man an der unbestücken LED (?optischen
> Schnittstelle?) oben links machen könnte.

>Betrifft: unbestückte Optische Schnittstelle BL1

Hallo tolle Beiträge um das Lidl - DMM! Meine Vermutung wäre, dass es 
sich hier nicht um eine Schnittstelle handelt, sondern sich ehr 
vielleicht um die "eingesparte" Display-Beleuchtung handelt. Die nähe am 
Display und die vorhandenen Bohrlöcher für 2 Kabel könnten dies vermuten 
lassen. Möglicherweise könnte man diese zum Leben erwecken.(Wenn ein 
"Schalt" - Signal vorhanden ist) Es wäre eigentlich nur ein 
Treibertransistor, Vorwiderstand R10 und ein Widerstand R11 an Diode 
notwendig.
Gast #6188272
Lesenswert?

DCF 7. schrieb:
> Die hat man vielleicht nicht so lange wie ein Fluke,

Vielleicht bei dir nicht.

Mein Multiprüfer-II hat 55 Jahre auf dem Buckel, das M3800 30 Jahre, ein 
Fluke 20 Jahre usw.
Auch das UNIVO hat mich 50 Jahre begleitet.

https://www.radiomuseum.org/r/eka_multimeter_univo.html

Ich benutze es noch sehr oft, vor allem wenn dig. Anzeigen spinnen.

Man muß nur pfleglich damit umgehen.
Gast #6188650
Lesenswert?

Status: An der Diodenschnittstelle habe ich beim Ersten Durchprobbiern 
kein Signal gefunden. Am TX kommen einzelne nichtidentische Datenpakete, 
die ich mal per Videokamera am Scope mitgeschnitten habe. Allerdings ist 
der Mitschnitt weder klein (25MB) noch sonderlich schön, als das ich ihn 
an diese Posts anhänge oder als Download auf dieses Forum bereitstellen 
kann. Dafür gibt es drei einzelne Frames neu im Artikel:

Multimeter PDM-300-C2 Analyse: Signale

Als nächste bekommt TX ein Drähtchen angelötet, damit man auch die 
Anzeige beobachten kann. Und das Terminal f. 300 Baud o.ä. wie 
vorgeschlagen wird drangehangen.
#6193426
Lesenswert?

Ich habe dank NormalZeit, heute einige Multimeter erhalten :-)

Bei dem Serialport habe ich ein gutes Gefühl. Die Daten werden mit 2400 
8N1 gesendet (siehe Signal 1+2).

Ich habe den Bildschirm, sowie die Welle und den Decode bei zwei 
unterschiedlichen Displayinhalten angehängt und die Daten ändern sich, 
bleiben aber bei gleichen Displayinhalt gleich.


Cheers,
Benedikt
Angehängte Dateien:
#6193776
Lesenswert?

So, ich habe jetzt schnell eine PC-Software gebastelt, die die 
Multimeterdaten in Echtzeit abfragt und etwas visueller aufbereitet.

Es muss lediglich ein USB-Seriell-Wandler (ich verwende den FT2232H von 
Reusch) im 3.3V-Modus verwendet werden. Die Signale sind zwar ~3V, aber 
das liegt weit über dem positiven 3.3V CMOS-Schwellwert.
Die Software konfiguriert den Port dann korrekt und stellt die 
übertragenen Daten dar.

Update: Ich habe die Software unter Ubuntu getestet und sie funktioniert 
mit Mono dort auch.
Angehängte Dateien:
#6193954
Lesenswert?

Hier der Vergleich von 5.00V AC und 5.00V DC.

Die Zahlen bleiben gleich, es ändern sich aber 5 Bits in anderen 
Positionen.
Bei diesen handelt es sich also höchstwahrscheinlich um die 
Modus-Felder.

Update:
Einige Bytes verändern sich jeweils nur bei einem Moduswechsel oder 
einer Änderung des Wertes.
Daher gehe ich aktuell von diesem Format aus:
0b11011100 Präambel?
0b10111010 Präambel?
0b00000001 Präambel?
0b00010110 Modus/Range
0b00000100 Modus/Range
0b00000000 Immer Null?
0b00000000 Wert
0b00000000 Wert
0b00000000 Wert
0b00011011 Wert
Angehängte Dateien:
Gast #6194285
Lesenswert?

Benedikt M. schrieb:
> Hier der Vergleich von 5.00V AC und 5.00V DC.

Super, ich schubs das in den Wiki-artikel. An 'meinem' Multimeter bin 
ich noch nicht weitergekommen.


>Update: Ich habe die Software unter Ubuntu getestet und sie funktioniert
>mit Mono dort auch.

Persönlich hab ich als Platform für das Multimeter nen RasPi vorgesehen, 
wegen Allgemeintauglichkeit einige von den GPIO-Pins. Dann müsste m.E. 
eine Consolen-software, also was in jeder shell läuft , brauchbar sein.

>ich verwende den FT2232H von Reusch)

Stabile Kiste, ich hab da was kleineres angedacht:
https://www.reichelt.de/usb-2-0-konverter-seriell-ttl-pinheader-einzeln-1-8-m-3-3-v-delock-83787-p163095.html?&trstct=pol_17&nbc=1

Ist nur leider grad schwer auffindbar :-(
#6194745
Lesenswert?

Ich habe das Format geknackt :-)

0: 0b11011100 Präambel
1: 0b10111010 Präambel
2: 0b00000001 Präambel
3: 0b00010110 Modus & Range
4: 0b00000100 Exponent
5: 0b00000000 Wert (High Byte)
6: 0b00000000 Wert (Middle Byte)
7: 0b00000000 Wert (Low Byte)
8: 0b00000000 Unbekannt
9: 0b00011011 Unbekannt

Exponenten (noch nicht ganz fertig):
1
Bitmuster (b[4])  Format  Multiplikator
2
0000 0001  0.000  TODO (nur ACA?)
3
0000 0010  000.0  10-1
4
0000 0100  0.000  10-3
5
0000 1000  0.00  10-2
6
0010 0000  0.000  TODO
7
0100 0000  0.00  10-2 (nur DCA?)

Modi:
0001 0110 DC V
0001 0101 AC V
0001 1010 uA (Gleich wie AC uA)
0001 1001 mA (Gleich wie AC mA)
0001 1000 A (Gleich wie AC A)
0001 1100 Diode
0001 1011 Continuity
0000 0011 Squarewave
0001 1101 Resistance
Angehängte Dateien:
#6194766
Lesenswert?

Volker U. schrieb:
> Persönlich hab ich als Platform für das Multimeter nen RasPi vorgesehen,
> wegen Allgemeintauglichkeit einige von den GPIO-Pins. Dann müsste m.E.
> eine Consolen-software, also was in jeder shell läuft , brauchbar sein.
IIRC hat der Raspberry Pi doch nur einen Serial Port, der mit der 
Boot-Console belegt ist. Da wäre es vermutlich geschickter, einen 
USB-Seriell-Adapter einzusetzen. Die Software läuft mit Mono übrigens 
auch auf dem Pi. Ich bin gerade dabei, diese neu zu schreiben.
Gut vorstellen könnte ich mir hier auch eine kleine Platine mit ESP8266, 
die den Multimeter über WiFi erreichbar macht und z.B. Datenlogging 
direkt auf dem Chip betreibt.

Volt Nuß schrieb:
> Ist der chip  CoB/TQFT42 mit TX an Pin 16 wirklich neu und unerforscht?
Meines Wissens nach schon. In der Repo gibt es keinen Chip, der sich mit 
dem Protokoll auch nur zum Teil deckt. Zudem, wo wäre dann der Spaß?

Benedikt M. schrieb:
> 5: 0b00000000 Wert (High Byte)
Ich bin noch am Überlegen, was es mit diesem Byte auf sich hat.
Erst dachte ich, dass es sich um ein High-Byte eines 24-Bit Wertes 
handelt, da es bei negativen Zahlen von 00 auf FF umschlägt. Jedoch 
scheint es, wenn OL angezeight wird, anders verwendet zu werden. Und, 16 
Bit sollten zur Darstellung aller Werte reichen.
Gast #6195948
Lesenswert?

Benedikt M. schrieb:
> Dieses soll auf Windows, Linux und
> OS X lauffähig sein.

Vielen danke für deine Mühen Benedikt!

IMHO würde sich der durchschnittliche Unix Nutzer vermutlich sehr 
vielmehr freuen, wenn der Support in die bereits existierenden 
tools/libs eingebaut würde.

BTW,
meldet sich der Chip eigentlich beim Einschalten mit einer abweichenden 
Byte folge?
#6196727
Lesenswert?

Wagt sich jemand ran, Spannungen > 200V AC/DC an den DMM anzuschließen 
und den Datenstrom zu erfassen? Diese Messungen fehlen mir aktuell noch, 
da mein Serial-Opto nur bis 100V Isolationsspannung spezifiziert ist. 
Selbst mit Isolationstrafo möchte ich das eigentlich nicht machen.

Ich frage jetzt mal blöd, aber ist es überhaupt eine gute Idee, 
Spannungen über 200V in der Software zu unterstützen?


Einkaufswagendesinfektor #42 schrieb:
> Vielen danke für deine Mühen Benedikt!
Es freut mich, dass es Dir gefällt :-)

> BTW,
> meldet sich der Chip eigentlich beim Einschalten mit einer abweichenden
> Byte folge?
Ich schaue später Mal nach.

> IMHO würde sich der durchschnittliche Unix Nutzer vermutlich sehr
> vielmehr freuen, wenn der Support in die bereits existierenden
> tools/libs eingebaut würde.
Jeder hat seine Vorlieben, was Software angeht. Ich benutze z.B. Sigrok 
nicht. Daher schreibe ich jetzt einfach eine Referenzimplementierung und 
veröffentliche den Code. Ich kann dich gut verstehen, dass es schön 
wäre, den Code in andere Projekte einzupflegen, aber so viel Zeit habe 
ich dann leider nicht. Wenn jemand sein Lieblingstool unterstützen 
möchte, kann er das gerne anhand der entstehenden Dokumentation tun ;-)
#6197845
Lesenswert?

Mich hat es jetzt doch interessiert, 200+ V AC mit der Software messen 
zu können. Daher habe ich einen ESP8266 mit Serial->Telnet Firmware 
geflasht und ihn an eine Powerbank gehängt und die Multimeterdaten im 
Rohformat auf den PC übertragen.
Das Exponentenbyte für den 200-300V AC-Bereich lautet 0x20.

Jetzt fehlt noch immer der 200-300V DC-Bereich. Hat jemand Lust eine DC 
Spannung über 200V zu erzeugen und die Daten zu erfassen?
Angehängte Dateien:
#6199349
Lesenswert?

Droggelbecher schrieb:
> Keine Diode(n) z.B. 1n4004..7 zur Hand?

Doch, das schon. Ich hatte auch schon über einfaches Gleichrichten 
nachgedacht. Ich war mir zuerst nicht sicher, ob der Multimeter die 
Spitzen von ~350V (Amplitude) im DC-Modus überlebt. Aber in der 
Anleitung steht, dass der Überlastungsschutz 300VAC RMS im AC und im 
DC-Modus ist. Das sollte also gut funktionieren mit dem Gleichrichten. 
Ich bin bisher noch nicht dazu gekommen, das aufzubauen und hatte daher 
mal nachgefragt, ob Jemand Lust hat, sich dranzusetzen, zumal die 
Geschichte mit dem ESP8266 mehr schlecht als recht funktioniert, da die 
WiFi-Verbindung andauernd abreißt.


Grüße,
Benedikt
#6199913
Lesenswert?

Schön, dass es Euch gefällt :-)

Ich habe nun den zweitletzten Modus gemessen.
Diesmal handelte es sich um den 200V-300VDC Modus.
Zuerst habe ich es mit einem einfachen Brückengleichrichter versucht, 
doch das hat den Multimeter überlastet. Zusammen mit einem einfachen 
Spannungsteiler der Werte 100kOhm und 330kOhm ist es mir dann gelungen 
258V DC am Multimeter zu messen und das Paket zu erfassen.

Hier der empfangene Paketinhalt:
dc (Präambel)
ba (Präambel)
01 (Präambel)
16 (DC V)
20 (200-300V Range)
00
01 (Wert High-Byte)
02 (Wert Low-Byte, 258V)
00
3a


Update:
Und der letzte Modus (20V-199VAC):
dc (Präambel)
ba (Präambel)
01 (Präambel)
15 (AC V)
10 (20-200V Range)
00
02 (Wert High-Byte)
48 (Wert Low-Byte, 58.4V)
00
70
#6201322
Lesenswert?

Hallo zusammen!

Es ist endlich soweit.
Hiermit veröffentliche ich ParksideView 1.1 zum ersten Mal in der 
GUI-Version!

Das Programm unterstützt alle Modi des Multimeters, synchronisiert sich 
mit dem Datenstrom. Es verkraftet Übertragungsfehler, das Trennen, sowie 
das Ausschalten des Multimeters. Die Verbindung wird nach Auswählen des 
Anschlusses automatisch korrekt konfiguriert. Es können automatisch, 
tagelange Aufzeichnungen der Multimeterwerte mit verschiedenen 
Aufzeichnungsraten erstellt und als CSV mit Zeitstempel, Wert und 
Einheit gespeichert werden. Das Programm ist vollständig in Deutsch 
gehalten. Als CSV-Format ist jedoch auch der US-Standard wählbar. 
Lauffähig ist das Programm unter Windows XP, 7, 8 und 10, sowie auf 
Linux (x86 und ARM).
Den Quellcode werde ich in den nächsten Tagen unter der GPL v3 Lizenz 
veröffentlichen.

Hardwareseitig muss lediglich ein USB-Serial-Wandler an den Multimeter 
angeschlossen werden. Ein optoisolierter Wandler ist hier praktisch 
Pflicht, da der Multimeter über den Ground-Pfad des Serialports mit dem 
Ground des Computers und damit mit PE verbunden wird. Es besteht eine 
hochimpedante Verbindung zwischen dem Digitalground des Multimeters und 
den Eingangsbuchsen!

Der Testpunkt, der mit TX markiert ist, muss mit dem RX-Anschluss des 
Serial-Wandlers verbunden werden. Als Ground kann eine Verbindung zum 
GND-Testpunkt in der rechten oberen Ecke (am Programmierstecker) gewählt 
werden.

Viel Spaß damit!
Lasst mich wissen, ob es bei Euch funktioniert ;-)


Grüße,
Benedikt
Angehängte Dateien:
#6201879
Lesenswert?

Ist ja Klasse. Vielen Dank Benedikt.

An solchen Opto-Isolationsplatinen wäre ich interessiert. Im Gehäuse ist 
ja noch genügend Platz um sowas unterbringen zu können.

Da ich heute außer der Reihe vom Home-Office doch nochmal in die Firma 
musste, werde ich am Heimweg schauen, was es im Lidl noch an 
Restbeständen gibt.
#6213303
Lesenswert?

Ich habe die GitHub-Repo jetzt noch etwas überarbeitet und Dokumentation 
ergänzt.

Hier einen Teil der README und die neuen Anweisungen zur 
Hardwaremodifikation:

- Liste der Funktionen -
* Große Echtzeitanzeige des aktuell auf dem Multimeter angezeigten 
Wertes
* Bargraph-Anzeige in allen unterstützten Modi
* Aufzeichnen der Messdaten in eine CSV-formatierte Datei
* Einstellbare Aufzeichnungsgeschwindigkeiten
* Ausführbar auf Windows 7, 8, 10 (nicht getestet) und Linux (via Mono: 
https://www.mono-project.com/)
* CSV Format zwischen Deutsch und and US/International wählbar
* Automatische Konfiguration der seriellen Schnittstelle
* Synchronisierung zum Datenstrom, guter Umgang mit Fehlern, Ausblenden 
des Displays bei keinen/ungültigen Daten
* Datenerfassung kann jederzeit angehalten werden (im Normalbetrieb und 
während einer Aufnahme)
* Der aktuelle Modus wird immer mitaufgezeichnet und kann während einer 
Aufnahme geändert werden
* Ein Klick auf den aktuellen Wert, kopiert diesen in die Zwischenablage
* Das Fenster kann auf Knopfdruck über allen anderen Fenstern fixiert 
werden
* Mehrere Instanzen des Programms können gleichzeitig verwendet werden, 
um mehrere Multimeter abzufragen

- Hardware -
Um die Software nutzen zu können, muss ein kleiner, einfacher 
Hardwareeingriff am Multimeter durchgeführt werden.
Zwei Litzen müssen an Testpunkten der Multimeterplatine angelötet und 
nach außen geführt werden.
Diese Litzen können dann z.B. über ein kleines Loch auf der Rückseite 
des Gehäuses nach draußen geführt werden.

- Vorraussetzungen -
* Lötkolben und Lötzinn
* Zange zum Abisolieren und Schneiden
* 28+ AWG / < 0,08mm² Litze (~ 1m)
* USB-Seriell-Wandler (5V mit dem empfohlenen Optokoppler / 3.3V direkt 
- nicht empfohlen!)
* Optokoppler (https://www.sparkfun.com/products/9118 - NICHT für 
Spannungen > 60V verwenden!)

- Testpunkte -
Im folgenden Bild sind die zwei Testpunkte auf der Multimeterplatine 
erkennbar, mit denen der Optokoppler verbunden wird:

https://www.mikrocontroller.net/attachment/450706/Verbindungen.jpg

- Löten -
Um den Multimeter mit dem PC zu verbinden, muss eine Litze vom 
TX-Testpunkt des Multimters zum IN1-Pad des Optokopplers verbunden 
werden.
Dann muss eine weitere Litze vom GND-Testpunkt des Multimeters zum 
GND-Pad des Optokopplers geführt werden.
Eine weitere Verbindung führt vom HV-Pad des Optokopplers zum 5V Kontakt 
des USB-Seriell-Wandlers.
Ebenso muss eine Verbindung vom HVG-Pad des Optokopplers zum GND-Pad des 
USB-Seriell-Wandlers geführt werden.
Letztlich muss das OUT1-Pad des Optokopplers mit dem *RX*-Pad (nicht 
TX!) des USB-Seriell-Wandlers verbunden werden.

- Verwendung des Multimeters -
Nach den Hardware-Modifikationen lässt sich der Multimeter weiterhin 
normal und ohne PC verwenden.
Jedoch darf der Multimeter nicht mehr zum Messen von Spannungen über 
60V über PE verwendet werden.
Um den Multimeter am PC zu verwenden, muss nur der USB-Seriell-Wandler 
eingesteckt werden.
Im Geräte-Manager unter Windows, oder mittels dmesg auf Linux kann der 
korrekte Port ermittelt werden.
Auf Linux lautet dieser meist /dev/ttyUSB0.

Viel Spaß!
#6215517
Lesenswert?

Einkaufswagendesinfektor #42 schrieb:
> BTW,
> meldet sich der Chip eigentlich beim Einschalten mit einer abweichenden
> Byte folge?

Sorry, dass ich nicht früher dazu gekommen bin, das Oszilloskop wieder 
auszupacken.
Ja, tatsächlich gibt es beim Einschalten eine leicht abweichende 
Bytefolge.
Ich habe Dir ein paar Bilder angehängt.
Augenscheinlich liegen die beiden Telegramme inhaltlich weiter 
auseinander, als der Decode zeigt. Scheinbar handelt es sich dabei 
hauptsächlich um unterschiedlich lange Idle-Perioden.

Update: Ich habe noch zwei hexadezimale Ansichten ergänzt.
Angehängte Dateien:
#6216132
Lesenswert?

Walta S. schrieb:
> Gibts auch eine Möglichkeit die Software auf einem Apple Computer laufen
> zu lassen?
>
> danke
> walta

Hallo Walta,

das ist leider nicht möglich, da Mono auf OSX keine GUI-Anwendungen über 
WinForms unterstützt. Ich habe es selbst ohne Erfolg auf meinem Mac 
getestet.
Theoretisch könnte man die Software auf GTK# portieren. Dann wäre die 
Ausführung auf Macs möglich.

Update: Ich habe mich entschieden, einen Port zu beginnen. Das sollte 
auch das Design auf Linux-Platformen verbessern.


Grüße,
Benedikt
#6217452
Lesenswert?

Hier mein aktuelles Verständnis des Formates (als Update zum letzten 
Stand):

0: 0b11011100 Präambel
1: 0b10111010 Präambel
2: 0b00000001 Immer 1, aber Teil der Nutzdaten
3: 0b00010110 Modus
4: 0b00000100 Exponent
5: 0b00000000 Unbekannt (High Byte?)
6: 0b00000000 Wert (in Counts) (High/Middle? Byte)
7: 0b00000000 Wert (in Counts) (Low Byte)
8: 0b00000000 Prüfsumme 2 bis 7 (High Byte)
9: 0b00011011 Prüfsumme 2 bis 7 (Low Byte)
#6217784
Lesenswert?

Die vollständige Hardwaremodifikation sieht bei mir so aus (siehe Bilder 
im Anhang).

Generell bin ich aber weiterhin an einer Funk-Lösung über Bluetooth oder 
WiFi interessiert.
Eine eigene Optokopplerplatine ist für viele Zwecke nicht notwendig, da 
die in der Anleitung beschriebene Platine von Sparkfun die Anforderungen 
weitgehend erfüllt und mit etwa 6 Euro nicht besonders teuer ist. 
Ebenfalls ist die Verfügbarkeit um ein vielfaches besser, als wenn ich 
Euch Platinen verkaufe, oder Gerber bereitstelle.
Jedoch besteht bei der Isolationsspannung noch deutliches 
Verbesserungspotenzial (sprichwörtlich). Ein geeigneter Optokoppler 
sollte meines Erachtens nach über mindestens 50 kHz (besser 100+ kHz) 
Bandbreite verfügen, um auf der sicheren Seite zu sein.
Angehängte Dateien:
#6218264
Lesenswert?

Benedikt M. schrieb:
> Walta S. schrieb:
>> Gibts auch eine Möglichkeit die Software auf einem Apple Computer laufen
>> zu lassen?
>>
>> danke
>> walta
>
> Hallo Walta,
>
> das ist leider nicht möglich, da Mono auf OSX keine GUI-Anwendungen über
> WinForms unterstützt. Ich habe es selbst ohne Erfolg auf meinem Mac
> getestet.
> Theoretisch könnte man die Software auf GTK# portieren. Dann wäre die
> Ausführung auf Macs möglich.
>
> Update: Ich habe mich entschieden, einen Port zu beginnen. Das sollte
> auch das Design auf Linux-Platformen verbessern.
>
>
> Grüße,
> Benedikt

Dankeschön - ich werde die Entwicklung auf alle Fälle weiterverfolgen

walta
#6230375
Lesenswert?

>Eventuell könnte es sich lohnen, einen optoisolierten Konverter zu
>entwickeln, der das Format des Multimeters zu SCPI über USB wandelt.

Ich hab bei mir ein Mega328P und ein Bluetooth Modul drin. Passt gerade 
noch hinein ohne das Gehäuse zu bearbeiten. Der Prozessor musste sein 
weil die Bluetooth Module bei 2400 Baud sehr oft fasche Daten senden.

Die Firmware für den Atmega ist mit Atmel Studio 7 in C geschrieben.

Das PC Programm habe ich mit PureBasic erstellt da der Compiler für 
Windows, Linux und Mac verfügbar und das Projekt ja nicht sehr 
umfangreich ist. Nach der Vorarbeit der Datenanalyse ist das ja schnell 
gemacht.

Ich werde das Bluetooth Modul noch von dem Breakout Board runterholen 
und mit dem Prozessor zusammen auf eine eigene Platine verfrachten.

Der "Aufbau" ist so nur für Testzwecke.

Gruß
Angehängte Dateien:
#6230385
Lesenswert?

Top S. schrieb:
> Ich hab bei mir ein Mega328P und ein Bluetooth Modul drin.

Ist wirklich gut geworden! Schön, eine weitere Version des Mods zu sehen 
:-)

Bluetooth hatte ich mir auch überlegt, jedoch wollte ich auch keines der 
AT-Modems direkt verwenden, da es nicht auszuschließen ist, dass einmal 
zufällig der String "AT" übertragen wird (wobei die Effekte bei einem 
gut implementierten Parser vermutlich zu verkraften sind).
Zur Implementierung des Bargraphen und des Paket-Decoders empfehle ich 
die Datei Multimeter.cs aus meinem Projekt (unter der GPL frei 
verwendbar): 
https://github.com/benedikts-workshop/ParksideView/blob/master/ParksideView/Multimeter.cs
Diese enthält auch die unterschiedlichen Limits der Ranges, sowie die 
Divisoren der rohen Werte.


Ich habe inzwischen den GTK-Port abgeschlossen. Damit ist meine Software 
nun auch für alle drei Platformen verfügbar. Nach einigen Tests werde 
ich diese dann bald veröffentlichen.


Benedikt M. schrieb:
> Eventuell könnte es sich lohnen, einen optoisolierten Konverter zu
> entwickeln, der das Format des Multimeters zu SCPI über USB wandelt.

Das würde mich weiterhin interessieren. Einen SCPI Parser (auf 
Geräteseite) hatte ich bisher zwar nicht implementiert, doch gehe ich 
davon aus, dass es nicht sehr aufwendig ist, nur die erforderlichen 
Kommandos zu implementieren (IDN, MEAS1, RANGE1, ...).
#6230415
Lesenswert?

>Bluetooth hatte ich mir auch überlegt, jedoch wollte ich auch keines der
>AT-Modems direkt verwenden, da es nicht auszuschließen ist, dass einmal
>zufällig der String "AT" übertragen wird (wobei die Effekte bei einem
>gut implementierten Parser vermutlich zu verkraften sind).

Das ist den Modulen egal. Wenn eine Bluetooth Verbindung besteht werden 
alle Daten durchgereicht.

>Zur Implementierung des Bargraphen und des Paket-Decoders empfehle ich
>die Datei Multimeter.cs aus meinem Projekt

Hab ich schon fertig. Format ist ja von dir klar dargelegt worden. 
Parser ist bei mir ein Zustandsautomat.
1
Enumeration STATES
2
  #WAIT_FIRST_START_BYTE
3
  #WAIT_SECOND_START_BYTE
4
  #WAIT_THIRD_START_BYTE
5
  #WAIT_MODE_BYTE
6
  #WAIT_EXPONENT_BYTE
7
  #WAIT_HIGH_VALUE_BYTE
8
  #WAIT_MIDDLE_VALUE_BYTE
9
  #WAIT_LOW_VALUE_BYTE
10
  #WAIT_HIGH_CS_BYTE
11
  #WAIT_LOW_CS_BYTE
12
  #MAKE_DATA_ANALYSIS
13
EndEnumeration
14

15
Procedure receive_thread(dummy.i)
16
  If hCom
17
    Protected state.i = #WAIT_FIRST_START_BYTE
18
    Protected inbyte.a, mode.a, exponent.a, value.i, cs.i, bcs.i, a.i
19
    Protected Dim buffer.a(9)
20
    Repeat
21
      If AvailableSerialPortInput(hCom)
22
        If ReadSerialPortData(hCom, @inbyte, 1) <> 1
23
          state = #WAIT_FIRST_START_BYTE
24
        Else
25
          Debug Hex(inbyte)
26
          If state = #WAIT_FIRST_START_BYTE And inbyte = $DC
27
            buffer(0) = inbyte
28
            state = #WAIT_SECOND_START_BYTE
29
          ElseIf state = #WAIT_SECOND_START_BYTE And inbyte = $BA
30
            buffer(1) = inbyte
31
            state = #WAIT_THIRD_START_BYTE
32
          ElseIf state = #WAIT_THIRD_START_BYTE And inbyte = $01
33
            buffer(2) = inbyte
34
            cs = inbyte 
35
            state = #WAIT_MODE_BYTE
36
          ElseIf state = #WAIT_MODE_BYTE
37
            buffer(3) = inbyte
38
            mode = inbyte
39
            cs = (cs + inbyte) & $FFFF
40
            state = #WAIT_EXPONENT_BYTE
41
          ElseIf state = #WAIT_EXPONENT_BYTE
42
            buffer(4) = inbyte
43
            exponent = inbyte
44
            cs = (cs + inbyte) & $FFFF
45
            state = #WAIT_HIGH_VALUE_BYTE
46
          ElseIf state = #WAIT_HIGH_VALUE_BYTE
47
            buffer(5) = inbyte
48
            ;value = inbyte * $10000                                  ; eher nicht
49
            cs = (cs + inbyte) & $FFFF
50
            state = #WAIT_MIDDLE_VALUE_BYTE
51
          ElseIf state = #WAIT_MIDDLE_VALUE_BYTE
52
            buffer(6) = inbyte
53
            value = (inbyte * $100)
54
            cs = (cs + inbyte) & $FFFF
55
            state = #WAIT_LOW_VALUE_BYTE
56
          ElseIf state = #WAIT_LOW_VALUE_BYTE
57
            buffer(7) = inbyte
58
            value + inbyte
59
            cs = (cs + inbyte) & $FFFF
60
            state = #WAIT_HIGH_CS_BYTE
61
          ElseIf state = #WAIT_HIGH_CS_BYTE
62
            buffer(8) = inbyte
63
            bcs = inbyte * $100
64
            state = #WAIT_LOW_CS_BYTE
65
          ElseIf state = #WAIT_LOW_CS_BYTE
66
            buffer(9) = inbyte
67
            bcs + inbyte
68
            state = #MAKE_DATA_ANALYSIS
69
          Else
70
            state = #WAIT_FIRST_START_BYTE
71
          EndIf
72
        EndIf
73
        If state = #MAKE_DATA_ANALYSIS
74
          If bcs = cs
75
            LockMutex(receive_thread_sync)
76
            record\is_new = #True
77
            record\timestamp = time
78
            For a = 0 To 9 : record\bytebuffer[a] = buffer(a) : Next a
79
            record\mode = mode
80
            record\exponent = exponent
81
            record\value = value
82
            record\cs = cs
83
            record\min = range_min(mode, exponent)
84
            record\max = range_max(mode, exponent)
85
            If is_overloaded(mode, value, record\min, record\max)
86
              record\dvalue = 9999
87
              record\unit = ""
88
            ElseIf mode = #VOLT_DC
89
              If exponent = #RANGE_B
90
                record\precision = 1
91
                record\divider = 10
92
                record\unit = "mV DC"
93
              ElseIf exponent = #RANGE_C
94
                record\precision = 3
95
                record\divider = 1000
96
                record\unit = "V DC"
97
              ElseIf exponent = #RANGE_D
98
                record\precision = 2
99
                record\divider = 100
100
                record\unit = "V DC"
101
              ElseIf exponent = #RANGE_E
102
                record\precision = 1
103
                record\divider = 10
104
                record\unit = "V DC"
105
              ElseIf exponent = #RANGE_F
106
                record\precision = 0
107
                record\divider = 1
108
                record\unit = "V DC"
109
              EndIf
110
              record\dvalue = value / record\divider
111
            ElseIf mode = #VOLT_AC
112
              If exponent = #RANGE_C
113
                record\precision = 3
114
                record\divider = 1000
115
                record\unit = "V AC"
116
              ElseIf exponent = #RANGE_D
117
                record\precision = 2
118
                record\divider = 100
119
                record\unit = "V AC"
120
              ElseIf exponent = #RANGE_E
121
                record\precision = 1
122
                record\divider = 10
123
                record\unit = "V AC"
124
              ElseIf exponent = #RANGE_F
125
                record\precision = 0
126
                record\divider = 1
127
                record\unit = "V AC"
128
              EndIf
129
              record\dvalue = value / record\divider
130
            ElseIf mode = #AMPER
131
              If exponent = #RANGE_F
132
                record\precision = 3
133
                record\divider = 1000
134
                record\unit = "A"
135
              ElseIf exponent = #RANGE_G
136
                record\precision = 2
137
                record\divider = 100
138
                record\unit = "A"
139
              EndIf
140
              record\dvalue = value / record\divider
141
            ElseIf mode = #AMPER_MILLI
142
              If exponent = #RANGE_D
143
                record\precision = 2
144
                record\divider = 100
145
                record\unit = "mA"
146
              ElseIf exponent = #RANGE_E
147
                record\precision = 1
148
                record\divider = 10
149
                record\unit = "mA"
150
              ElseIf exponent = #RANGE_F
151
                record\precision = 3
152
                record\divider = 1000
153
                record\unit = "mA"
154
              EndIf
155
              record\dvalue = value / record\divider
156
            ElseIf mode = #AMPER_MICRO
157
              If exponent = #RANGE_A
158
                record\unit = "µA"  
159
              ElseIf exponent = #RANGE_B
160
                record\precision = 1
161
                record\divider = 10
162
                record\unit = "µA"
163
              ElseIf exponent = #RANGE_C
164
                record\precision = 0
165
                record\divider = 1
166
                record\unit = "µA"
167
              EndIf
168
              record\dvalue = value / record\divider
169
            ElseIf mode = #RESISTANCE_OHM
170
              If exponent = #RANGE_A
171
                record\precision = 1
172
                record\divider = 10
173
                record\unit = "Ohm"
174
              ElseIf exponent = #RANGE_B
175
                record\precision = 3
176
                record\divider = 1000
177
                record\unit = "kOhm"
178
              ElseIf exponent = #RANGE_C
179
                record\precision = 2
180
                record\divider = 100
181
                record\unit = "kOhm"
182
              ElseIf exponent = #RANGE_D
183
                record\precision = 1
184
                record\divider = 10
185
                record\unit = "kOhm"
186
              ElseIf exponent = #RANGE_E
187
                record\precision = 3
188
                record\divider = 1000
189
                record\unit = "MOhm"
190
              ElseIf exponent = #RANGE_F
191
                record\precision = 2
192
                record\divider = 100
193
                record\unit = "MOhm"
194
              EndIf
195
              record\dvalue = value / record\divider
196
            ElseIf mode = #CONTINUITY_OHM
197
              If exponent = #RANGE_A
198
                record\precision = 1
199
                record\divider = 10
200
                record\unit = "Ohm"
201
                record\dvalue = value / record\divider
202
              EndIf
203
            ElseIf mode = #DIODE_VOLT
204
              If exponent = #RANGE_C
205
                record\precision = 3
206
                record\divider = 1000
207
                record\unit = "V"
208
              EndIf
209
              record\dvalue = value / record\divider
210
            ElseIf mode = #SQUAREWAVE
211
              record\unit = ""
212
            EndIf
213
            UnlockMutex(receive_thread_sync)
214
          EndIf
215
          state = #WAIT_FIRST_START_BYTE
216
        EndIf
217
      Else
218
        Delay(50)
219
      EndIf
220
    Until receive_thread_abort <> #False
221
  EndIf
222
EndProcedure

>Das würde mich weiterhin interessieren. Einen SCPI Parser (auf
>Geräteseite) hatte ich bisher zwar nicht implementiert, doch gehe ich
>davon aus, dass es nicht sehr aufwendig ist, nur die erforderlichen
>Kommandos zu implementieren (IDN, MEAS1, RANGE1, ...).

Muss ich mir bei Gelegenheit mal anschauen. Mir ist noch nicht klar wozu 
man das nutzt.

Gruß
#6241073
Lesenswert?

Wäre wahrscheinlich auch ganz gut in der Rubrik „Quick and Dirty“ 
aufgehoben ... so wie ich das hineingebastelt habe.

Ein FTI-232 USB-Seriell Breakout-Board und einen zusätzlichen 
Optokoppler mit Zweikomponentenkleber in das Messgerät verfrachtet und 
seitlich ein Loch für die Mini-USB Buchse mit dem Dremel reingefräst. 
Das Breakoutboard habe ich seiner Stiftleisten beraubt und den Jumper 
für Vcc auf 3,3 V durch eine Drahtbrücke ersetzt.

Der „Fatal Error“ stellte sich beim finalen Zusammenbauen heraus: meine 
Lochrasterplatine mit dem Optokoppler geht zu weit nach rechts und baut 
zu hoch, so dass der Buzzer auf der Messgeräte-Platine anstösst. Der 
Kleber war natürlich schon ausgehärtet, so musste ich den Buzzer köpfen 
und ihm seine Haube rauben. Positiver Nebeneffekt: Das Piepsen ist jetzt 
viel leiser.

Nicht schön, aber funktioniert einwandfrei. Danke an Benedikt für die 
Software.
#6260692
Lesenswert?

Hallo,

ich bin heute endlich dazu gekommen meine Multimeter fertig umzubauen.
Ich habe eine Platine erstellt und fertigen lassen. Die Bauteile sind 
bis auf das Bluetooth Modul von Reichelt. Verbaut wurde ein HC-05 aus 
Ebay.

Zu erst habe ich gedacht ich schließe einfach das Bluetooth Modul an und 
konfiguriere es auf 2400 Baud. Das lief bei mir aber überhaupt nicht. 
Alle Baudraten unter 9600 brachten heftige Übertragungsfehler.

Also habe ich einen Mega328PB beauftragt die 2400 Baud aus dem 
Multimeter mit 38400 Baud an das Bluetooth Modul weiter zu reichen. Und 
ja, ich weiß das man das auch in einen Tiny25 mit SoftUart reinbekommen 
hätte. Aber ich bin Faul und ein 328PB war hier vorhanden.

Die Software ist mit PureBasic geschrieben und alles andere als fertig.

P.S. Platinen sind noch reichlich da. ;-) topsoft_at_gmx_dot_net

Gruß Topsoft
Angehängte Dateien:
#6260757
Lesenswert?

Top S. schrieb:
> Ich habe eine Platine erstellt und fertigen lassen.

Die Platine ist schön geworden.
Ich ergänze bei meiner Software noch einen 9600 Baud Modus, bei der 
Verwendung Deines Moduls.

Eine Kleinigkeit zum Schaltplan:
Vielleicht hätte es auch Sinn gemacht, da du sowieso einen uC benutzt, 
PIO9 (Verbindungsstatus) und PIO11 (Data/Command) zum ATmega328 zu 
routen, um den aktuellen Status des Moduls zu überwachen und 
festzulegen.
#6260766
Lesenswert?

> Die Platine ist schön geworden.
Danke

> Ich ergänze bei meiner Software noch einen 9600 Baud Modus, bei der
Es sind 38400 Baud. Aber die Firmware ist ja im Archiv.

>Vielleicht hätte es auch Sinn gemacht, da du sowieso einen uC benutzt,
>PIO9 (Verbindungsstatus) und PIO11 (Data/Command) zum ATmega328 zu
>routen, um den aktuellen Status des Moduls zu überwachen und
>festzulegen.

Jetzt wo du es sagst. :-) Na ja egal. Ich hab nur 2 Multimeter und noch 
58 Platinen. Also werde ich das nicht mehr ändern.

Danke noch mal für deine Vorarbeit.

Gruß
#6260840
Lesenswert?

Top S. schrieb:
> Jetzt wo du es sagst. :-) Na ja egal. Ich hab nur 2 Multimeter und noch
> 58 Platinen. Also werde ich das nicht mehr ändern.
Mit der Menge hatte ich nicht gerechnet. Damit hast Du gut für die 
Zukunft vorgesorgt ;-)

> Es sind 38400 Baud. Aber die Firmware ist ja im Archiv.
> Alle Baudraten unter 9600 brachten heftige Übertragungsfehler.
Stimmt, das habe ich wohl beim Schreiben der Antwort verdreht.

> Danke noch mal für deine Vorarbeit.
Gerne. War aber nicht ganz uneigennützig, Spaß gemacht (und Zeit zu 
Hause vertrieben) hat's ja auch ;-)

Grüße,
Benedikt
#6261311
Lesenswert?

Normal Z. schrieb:

> Wäre wahrscheinlich auch ganz gut in der Rubrik „Quick and Dirty“
> aufgehoben ... so wie ich das hineingebastelt habe.

"Quick" schon, "Dirty" nicht.

> Der „Fatal Error“ stellte sich beim finalen Zusammenbauen heraus:
> Der Kleber war natürlich schon ausgehärtet,

Mancmal ist es besser, Kleber zu nehmen, der nicht so gut klebt.
Z.B. einfachen Alleskleber oder Doppelklebeband.
#6325781
Lesenswert?

Hiermit veröffentliche ich ParksideView 1.4 mit Min/Max Statistik.
Darüber hinaus ist die Portliste unter Linux nun etwas übersichtlicher.

Hinter der ParksideViewGTK versteckt sich eine primär für Linux/Mac 
entwickelte Version von ParksideView mit GTK# GUI.
An dieser hatte ich im April gearbeitet, war jedoch bisher noch nicht 
dazu gekommen, diese zu veröffentlichen. Mangels Zeit könnte diese noch 
an einigen Stellen etwas "Politur" vertragen.
Den Quellcode für die Linux/Mac-Version gibt es hier: 
https://github.com/benedikts-workshop/ParksideViewGTK

Grüße,
Benedikt
Angehängte Dateien:
#6326104
Lesenswert?

So, nachdem ich heute Version 1.4 veröffentlicht habe, die schon eine 
Weile lang in der Pipeline gesessen hatte, veröffentliche ich jetzt 
gleich noch die heute Abend entstandene 1.5.
Hiermit habe ich nun alle bekannten Bugs beseitigt - der Issue-Tracker 
ist somit leer :-)

Viel Freude damit!


Grüße,
Benedikt
Angehängte Dateien:
#6326859
Lesenswert?

Benedikt M. schrieb:
> Ich ergänze bei meiner Software noch einen 38400 Baud Modus, bei der
> Verwendung Deines Moduls.

Erledigt. Die Versionen mit BT sollten mit topsoft's Bluetooth-Adapter 
kompatibel sein. Weiter wurde ein Anzeigefehler bei der Datenerfassung 
behoben.

Damit schließe ich die Entwicklung von ParksideView für's Erste ab. 
Sollte es weitere Feature-Requests oder Bug-Reports geben, werde ich 
diese weiterhin, soweit es mir zeitlich möglich ist, bearbeiten.
Gast #6613334
Lesenswert?

Gruss

Das Multimeter, das es ab Donnerstag wieder bei
Lidl gibt, hat ja bei Gleichspannungsmessung
einen Messbereich von 0.1mV.
Ist der etwas? Denke, wenn brauchbar, zum paaren und selektieren von BJT 
anwendbar, oder ?
Nah ja wenn anwendbar, würde das bei mir eine entsprechende 
Messschaltung der Einfachheit
halber ersparen.

Dirk St
Gast #6614327
Lesenswert?

Frank M. schrieb:
> Ich habe vor ein paar Tagen
> auch zwei von den Multimetern bei Lidl bestellt und würde mich über eine
> Bluetooth-Anbindung freuen.

Frank,
falls die Multimeter heute oder morgen ankommen, wäre es gut mal kurz zu 
schauen ob der CoB auf Pad 16 immer noch so auskunftsfreudig ist.

Danke!
Moderator Persönliche Seite #6616043
Lesenswert?

Benzinsparer schrieb:
> Frank,
> falls die Multimeter heute oder morgen ankommen, wäre es gut mal kurz zu
> schauen ob der CoB auf Pad 16 immer noch so auskunftsfreudig ist.

Die beiden Multimeter sind heute angekommen. Nicht nur eine Batterie, 
sondern sogar ein Schraubendreher war bei jedem Multimeter dabei :-)

Direkt mal aufgeschraubt... die Platine sieht exakt so aus wie hier auf 
den Fotos. TX ist auch an der alten Stelle.

Ich suche gleich mal einen USB-Seriell-Wandler raus und teste.

Ich melde mich später noch einmal.
Moderator Persönliche Seite #6616092
Lesenswert?

So, ich habe den USB-Adapter (3,3V Pegel) angeschlossen, ParksideView 
V16 unter Win10 gestartet, die COM-Schnittstelle aus dem Geräte-Manager 
im ParksideView eingestellt und dann auf "Start" gedrückt.

Status: Verbunden (ich nehme aber mal an, dass damit nur der Adapter 
gemeint ist)

Leider erscheint keine Anzeige.

EDIT:

Es geht! Ich musste den Pin am USB-Adapter nehmen, der mit TXD 
beschriftet ist. Offenbar meinten die Chinesen, hier die Bezeichnung des 
Zielgerät-Pins angeben zu müssen.

@Benedikt: Klasse Programm!

Fazit: Auch das aktuelle Multimeter von Lidl spuckt die Daten aus :-)
#6616175
Lesenswert?

Frank M. schrieb:
> Status: Verbunden (ich nehme aber mal an, dass damit nur der Adapter
> gemeint ist)
>
> Leider erscheint keine Anzeige.

Genau, verbunden bedeutet in diesem Fall nur, dass die Verbindung zum 
Adapter funktioniert. Im unteren Teil der Anwendung, in der 
Datenlogger-Gruppe, findet sich ein weiterer Status-Text, der anzeigt, 
ob Daten (mit gültiger Prüfsumme) vom Multimeter empfangen werden (siehe 
Screenshot, 'Stumm' ggü. 'Laufend').

> Es geht! Ich musste den Pin am USB-Adapter nehmen, der mit TXD
> beschriftet ist. Offenbar meinten die Chinesen, hier die Bezeichnung des
> Zielgerät-Pins angeben zu müssen.
>
> @Benedikt: Klasse Programm!
>
> Fazit: Auch das aktuelle Multimeter von Lidl spuckt die Daten aus :-)

Glückwunsch, es freut mich, dass es bei dir auch gut funktioniert :-)
Angehängte Dateien:
#6617568
Lesenswert?

Björn W. schrieb:
> Ist die Platine von SparkFun so schlecht isoliert?
> Der Koppler ansich kann ja bis 4kV isolieren.

Sparkfun selbst gibt keine garantierte Isolationsspannung an und 
vermarktet das Modul eher zur Entkopplung von MIDI.

Wenn jemand diese Anleitung im Netz entdeckt und ihr einfach folgt, ohne 
zu wissen, was er tut, möchte ich mit der Isolationsspannung lieber 
etwas pessimistischer und vorsichtiger sein. Zumal Spannungen bis 60V 
über PE insgesamt noch recht ungefährlich sind und ich generell einfach 
ein schlechtes Gefühl bei dem Gedanken habe, dass jemand damit z.B. 230V 
an seinem Computer messen möchte (zu geringe interne Abstände beim 
Modifizieren des Multimeters, Fehler bei der Verdrahtung, etc.).

Wenn man weiß, was man tut, kann man die Warnung ja auch gerne 
ignorieren ;-)
#6628143
Lesenswert?

Benedikt M. schrieb:

> Damit schließe ich die Entwicklung von ParksideView für's Erste ab.
> Sollte es weitere Feature-Requests oder Bug-Reports geben, werde ich
> diese weiterhin, soweit es mir zeitlich möglich ist, bearbeiten.

Erstmal Danke für die tolle Software. Funktioniert hier ganz prima.

Was mich freuen würde, wäre wenn das Aufzeichnungsintervall etwas 
genauer ist.
Wenn ich z.B. 500ms * 2 einstelle dann hätte ich erwartet das jede sek. 
ein Eintrag in der Aufzeichnung erzeugt wird. Aber es sind real 
schwankend 1,05 bis 1,07 sek Intervall. Über Langzeitmessungen summiert 
sich das natürlich.
#6628279
Lesenswert?

Björn W. schrieb:
> Wenn ich z.B. 500ms * 2 einstelle dann hätte ich erwartet das jede sek.
> ein Eintrag in der Aufzeichnung erzeugt wird. Aber es sind real
> schwankend 1,05 bis 1,07 sek Intervall. Über Langzeitmessungen summiert
> sich das natürlich.

Danke für die Information. Ich werde mir das mal genauer anschauen.

Die erfassten Zeitstempel werden beim Parsen des empfangenen Pakets (das 
durch einen Pufferspeicher läuft) erfasst und enthalten den Jitter und 
die Latenz der Software, der seriellen Verbindung und wenn vorhanden, 
dem USB-Serial-Adapter.
Die Aktualisierungsrate selbst wird vom Multimeter vorgegeben; ist eine 
höhere Zahl eingestellt, werden das angezeigte Sample länger gehalten 
und die dazwischen liegenden Samples verworfen.

Ich könnte die Funktion der Software noch optimieren in dem ich die 
Daten schneller verarbeite, dafür müsste ich die Architektur anpassen.
Den Punkt setze ich auf die TODO-Liste und werde sie bei Gelegenheit 
umsetzen.
Gast #6703462
Lesenswert?

Vielen Dank.

Hier mein Beitrag. Anbindung über BLE mit jdy-10. Geschätzt 9 mA 
Verbrauch. Ein Step-Down mit niedriger Ruhestromaufnahme wäre schön. 
Mein kleiner China-Step-Down hat bereits 5 mA Ruhestromaufnahme. Da 
gewinnt man fast nichts.

Kommandos zum Konfigurieren eines Adapters (jdy-10) fuer Digitales 
Multimeter PDM 300 C2

PIN 13 braucht man nur, wenn sich der Adapter bereits irgendwo verbunden 
hat. Dann ist jeweils Wechsel nach GND notwendig, um in den 
Konfigurationsmodus zu kommen. PIN 13 statisch auf GND zu legen, 
funktioniert nicht.

Anschluss des jdy-10 an einen seriellen Anschluss. TxD nach RxD, RxD 
nach TxD (3,3 Volt beachten, gegebenenfalls Spannungsteiler im kOhm 
Bereich vorsehen), VCC nach 3,3 Volt, GND nach GND.

Terminalprogramm mit 115000 Baud 8-N-1 einstellen. CR/LF muss nach jeden 
Kommando vom Terminalprogramm gesendet werden. Char delay=0ms

# Adapter meldet sich nach hochfahren mit Star...\r\n im 
Terminalprogramm
# Ueberpruefung auf Kommunikation
AT+VER
# Ergebnis: +JDY-10-V2.5\r\n
# Name des Adapters aendern
AT+NAMEPDM-300-C2-01
# Richtigen Modus waehlen, CLSSA0 ist aber factory default
AT+CLSSA0
# Sendeleistung einstellen. Default ist minimale Sendeleistung 
eingestellt.
# Kommando ist von jdy-40 abgeleitet
# Im Datenblatt jdy-10 nicht dokumentiert
# Im Datenblatt jdy-40 wird POWE0 mit -25 db angegeben
# POWE0 ist default. POWE[0,9] moeglich
AT+POWE0
# Abschliessend die Geschwindigkeit konfigurieren. BAUD7 = 2400 ist 
undokumentiert
AT+BAUD7

#Terminalprogramm auf 2400 8-N-1 umkonfigurieren.
# Zur Probe nochmal Version abfragen
AT+VER

# Adapter verkabeln.

# Mit BLE-Terminalprogramm verbinden. Android Smartphone funktioniert 
bereits. Bei Linux brauche ich noch ein Block-Device, dass BLE kann bzw. 
bluez mit gatttool.
#7014465
Lesenswert?

Letztes jahr gabs ein paar Wochen nach dem normalen ein ZangenMM. 
Vermutlich
stammt das vom selben Hersteller und ebenso vermutlich wird der in alle 
seine
Geräte weitgehend gleiche Bauteile einbauen. Auch wenns da prinzipiell 
um mehrere 10.000 Geräte geht, die Bauteile werden da sicher billiger, 
wenn statt 50.000,100.000Stück gekauft werden.
#7014472
Lesenswert?

Uli S. schrieb:
> Letztes jahr gabs ein paar Wochen nach dem normalen ein ZangenMM.
> Vermutlich
> stammt das vom selben Hersteller und ebenso vermutlich wird der in alle
> seine
> Geräte weitgehend gleiche Bauteile einbauen. Auch wenns da prinzipiell
> um mehrere 10.000 Geräte geht, die Bauteile werden da sicher billiger,
> wenn statt 50.000,100.000Stück gekauft werden.

Der Parkside Zangenmultimeter ist - soweit ich mich erinnere - leider 
nicht auslesefähig. Ich hatte mir einen zum Testen bestellt.
#7027386
Lesenswert?

Ich habe ein Programm für ES8266 geschrieben, welches die Werte liest 
und per MQTT rausgibt. Funktioniert auch soweit bis auf negative Werte. 
Wie kann ich den 16bit signed wert in int umwandeln?

Für positive Werte klappt folgendes:
1
measurement_raw = (RFin_bytes[6] << 8) | RFin_bytes[7] ;
Gast #7049278
Lesenswert?

Hello.

I found this topic by searching on google.

Lidl in my country (Portugal) is selling a "newer" version of this 
multimeter (PDM-300-C3) but the board is the same and everything works.

I only have one question. After logging a test .CSV file, I noticed the 
times of the measurements are not in day-month-year hour-minute time.

Is there a possibility to add this to the program?

Danke.
Marcos.
#7049783
Lesenswert?

Serge B. schrieb:
> Ich habe ein Programm für ES8266 geschrieben, welches die Werte liest
> und per MQTT rausgibt. Funktioniert auch soweit bis auf negative Werte.
> Wie kann ich den 16bit signed wert in int umwandeln?
>
> Für positive Werte klappt folgendes:
>
1
> measurement_raw = (RFin_bytes[6] << 8) | RFin_bytes[7] ;
2
>

Das Vorzeichen erweitern, wenn das höchste Bit 1 ist.
1
if (measurement_raw & (1 << 15))
2
    measurement_raw |= 0xffff0000;
#7049787
Lesenswert?

Marcos Alves schrieb:
> Hello.
> I found this topic by searching on google.
> Lidl in my country (Portugal) is selling a "newer" version of this
> multimeter (PDM-300-C3) but the board is the same and everything works.
> I only have one question. After logging a test .CSV file, I noticed the
> times of the measurements are not in day-month-year hour-minute time.
> Is there a possibility to add this to the program?
> Danke.
> Marcos.

I’ve changed the CSV format to include date and time and released 
version 1.7 for testing. Changes are in the datetime branch. I can’t 
test right now so feedback from you is required prior to me releasing it 
as stable.
#7131716
Lesenswert?

Ich habe soeben Version 1.8 von ParksideView veröffentlicht.
In dieser Version wurden Bugs mit dem CSV-Output und den 
Continuity-Pakten behoben.

Die Software ist mit dem PDM-300-C2 und dem PDM-300-C3 kompatibel.
Viel Spaß!
Gast #7233544
Lesenswert?

foo schrieb:
> Wie man sich mit dem Parkside umbringt:
> Parkside multimeter zeigt bei gefährlicher Spannung 0 Volt:

Du bist doch auch nur ein Troll, hier Dein Fisch:

Das PDM-300-C3 ist ein CAT-III-Gerät!
Wer denkt, das eben an mehr als 300V betreiben und etwas messen
zu müssen (500/1000V), dem ist sowieso nicht mehr zu helfen.

Aus der Bedienungsanleitung:
> CAT III 300 V (Digitalmultimeter und Messkabel)

Für Dich Troll aber auch noch einen extra Fisch:
Es steht sogar auf dem Gerät, einfach lesen und verstehen bildet da 
durchaus.
Angehängte Dateien:
#7609211
Lesenswert?

Ist schon lange her, aber mega geiles Projekt ! Besteht die Möglichkeit, dass Programm für ein kleinen Obolus abzuspecken ?

Ich würde gerne für den Streaming Bereich nur das " Display" einblenden, also wirklich nur die Zahlen und welcher Modus aktuell aktiv ist.

Wäre super wenn du dich mir annehmen könntest :) LG

Angehängte Dateien:
#7609218
Lesenswert?

Florian schrieb:

Ist schon lange her, aber mega geiles Projekt ! Besteht die Möglichkeit, dass Programm für ein kleinen Obolus abzuspecken ?

Ich würde gerne für den Streaming Bereich nur das " Display" einblenden, also wirklich nur die Zahlen und welcher Modus aktuell aktiv ist.

Wäre super wenn du dich mir annehmen könntest :) LG

Das lässt sich umsetzen. Schreib mir gerne eine PM.

Viele Grüße, Benedikt

#7614865
Lesenswert?

Ich möchte euch ParksideWeb, die neue Alternative zu ParksideView vorstellen.

ParksideWeb ist, wie der Name schon andeutet eine Webversion von ParksideView, die im Browser (oder z.B. in OBS zum Aufnehmen/Streamen) läuft und damit auch endlich auf allen Platformen (insbesondere Linux und Mac) produktiv einsetzbar ist. Es ist zu ParksideView funktionskomplett (abgesehen von Min/Max und CSV mit Semikolon).

Der Code und weitere Dokumentation sind wie immer verfügbar und PRs gerne willkommen: https://github.com/bmuessig/ParksideWeb

Um direkt loszulegen, kann man das Programm z.B. wie folgt starten: ParksideWeb.exe -p COM1 -o -c > data.csv

Zwar bin ich normalerweise dem Ersetzen nativer GUIs durch Webversionen eher kritisch eingestellt, doch bin ich der Ansicht hier einen guten Kompromiss eingegangen zu sein. Die Anwendung lässt sich komplett offline verwenden, bringt alle Ressourcen eingebettet mit und sollte auch mit älteren Browsern kompatibel sein.

Lässt man die Anwendung auf einem Computer im selben Netzwerk laufen, so kann man auch einen oder mehrere Mobilgeräte als externe, kabellose Displays nutzen.

Auch ist eine exklusive Nutzung auf der Kommandozeile möglich (-n -c streamt direkt CSV auf die Standardausgabe - ohne Server), aber auch die Integration in eigene Software (z.B. über die /config.json und /data.json Endpunkte).

Anbei gibt es Builds für die beliebtesten Platformen. Auf GitHub finden sich auch entsprechende Versionen für ARM. Viel Spaß!

Angehängte Dateien:
#7619731
Lesenswert?

Ich habe diese Woche den neusten LIDL/Parkside-Multimeter gekauft, um dessen Modifizierbarkeit zu testen. Der PDAM 300-A1 besitzt leider keine serielle Schnittstelle mehr. Das Display ist zwar dasselbe, aber das Chipset anscheinend nicht. Es verwendet einen externen I2C EEPROM für die Kalibrierung, der beim Starten abgefragt wird. Ich konnte die wichtigsten Signale an den inzwischen unbeschrifteten Testpunkten reverse-engineeren, habe aber auch durch festverdrahten einiger Signale beim Start keinen Output entdecken können.

https://www.lidl.de/p/parkside-digitales-autorange-multimeter-pdam-300-a1/p100371622

#7744038
Lesenswert?

Und schon wieder hat LIDL ein neues Autorange-Multimeter herausgebracht, welches den PDM 300-C3 und scheinbar auch das PDAM 300-A1 ersetzt. Dieses Mal hat er keine Modellnummer mehr und kommt mit einem Temperatur- und NCV-Modus statt eines Diodenmodus.

https://www.lidl.de/p/parkside-digital-multimeter-mit-automatischer-messbereichswahl/p100377731

Ich habe mal ein Gerät bestellt - mal sehen, ob dieses wieder mit einem kompatiblen Chipsatz ausgestattet ist.

Angehängte Dateien:
#7745827
Lesenswert?

Der Multimeter ist inzwischen bei mir angekommen und es gibt Neuigkeiten: Es gibt wieder eine serielle Schnittstelle!

Nur dieses Mal wieder mit anderem Protokoll und es werden nur Daten ausgegeben, wenn man den Modus am Modusrad ändert (siehe Bilder im Anhang). Die Bitrate ist in den Screenshots falsch eingestellt, daher die dekodierten Werte bitte ignorieren.

Als nächstes schaue ich mal, ob sich irgendwie konstant Daten triggern lassen.

Angehängte Dateien:
#7745871
Lesenswert?

Da habe ich mich wohl zu früh gefreut. Leider handelt es sich bei dem seriellen Datenstrom nicht um UART, sondern nur um die SDA-Leitung zum Kalibrierungs-EEPROM. Bei jedem Moduswechsel und Tastendruck kommuniziert der Multimeter mit diesem.

Da keine weiteren Testpunkte übrig bleiben, sieht es tatsächlich so aus, als hätte LIDL seit zwei Multimeter-Generationen keinen UART-Output mehr auf der Platine belassen. Vielleicht wird das Signal weiterhin erzeugt, aber nicht mehr als Testpunkt vom Chip-on-board herausgeführt. Schade!

Der Multimeter ist aber generell eher eine Enttäuschung als eine Weiterentwicklung...

Christoph M. schrieb:

Konnte schon jemand herausfinden, ob die Datenübertragung mit dem C3 funktioniert?

Ja, die Datenübertragung funktioniert beim C2 und C3 exakt gleich.

Angehängte Dateien:

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren