Wednesday, 1 June 2016

Mercury MTTR01 Digital Multimeter (600.104)

I was after a multimeter that had a PC connection of some kind for data logging purposes. The usual suggestions start from about £40 e.g. Uni-Trend UT60E, but I wanted cheaper! Ebay came to my rescue again with another Mercury product, the MTTR01 "True RMS Multitester with USB Interface", at £30 delivered! Note it is a "multitester", I imagine them using that to describe it hurts sales quite a bit.

It looks like this, outside and inside:


It seems fine as a meter, with one functional exception - the continuity tester is completely useless due to a delay on the detection/beep. At a guess (but no data to verify ...actually maybe that's in the datasheet. I should check)  it's done in software and polled every 250ms or so.

As I write this, there's just 8 minutes left before the provided half-unwrapped battery expires!
Also the fuses are not up to spec (250v not 600v) so this is not safe for high voltage stuff.

It's based around the FS9922-DMM4 (datasheet linked at the end), with the USB interface provided by a nicely opto-isolated CP2102. I looked at the USB connector thinking "huh?" and wondering how on earth it actually worked, but for some reason (via symmetry?!) they bridged D+ and ID:

It spits data out at 2400bps (format spec in datasheet), and the included software will run in WINE if you must. Note that on a real Windows PC it does not connect with a high COM port number. I was given COM21 as default and changing that to COM2 it worked fine.

The FS9922 is used in a bunch of other meters so is already supported by sigrok. It currently needs adding to the list of supported meters but I'll submit a patch after posting this. E.g.

diff --git a/src/hardware/serial-dmm/api.c b/src/hardware/serial-dmm/api.c
index af70fc3..905b239 100644
--- a/src/hardware/serial-dmm/api.c
+++ b/src/hardware/serial-dmm/api.c
@@ -560,4 +560,10 @@ SR_REGISTER_DEV_DRIVER_LIST(serial_dmm_drivers,
         2400, DTM0660_PACKET_SIZE, 0, 0, NULL,
         sr_dtm0660_packet_valid, sr_dtm0660_parse, NULL
+    DMM(
+        "mercury-mttr01-ser", fs9922,
+        "Mercury", "MTTR01", "2400/8n1/rts=0/dtr=1",
+        2400, FS9922_PACKET_SIZE, 0, 0, NULL,
+        sr_fs9922_packet_valid, sr_fs9922_parse, NULL
+    ),