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
+    ),
 );



Manual: https://www.esr.co.uk/manuals/121-104.pdf
Datasheet: http://www.ic-fortune.com/upload/Download/FS9922-DMM4-DS-14_EN.pdf

Thursday 11 February 2016

BGA on a budget

After months of trying to find a reasonably priced PCB manufacturer that offered a spec good enough for 0.8mm pitch BGA parts, I gave up and cheated! As soon as you want below 6mil (or 5 for oshpark I think), or below 12mil vias, the price goes in to the $100+ range for a small board. I wasn't going to spend that amount so I thought I'd push my luck a bit and go under spec and see what I got back. Their website specs I was presuming allowed for a better yield so costs stay down for them. I was honest and left a comment saying I was under spec and would accept any/all failed boards... so there was no risk or loss for them even if the whole batch was unusable. Obviously I didn't reduce drill sizes or anything.

Left: Official DRC in place, 6/6/12 (>=6 annular rings)
Right: Adjusted rules, 6/4/12 (4mil annular rings)


For the real boards I only reduced the specs where necessary, under the BGA part. The rest of the board met the requirements. Here's what I ended up with (success!)


All of the 10 were OK for the BGA part (some better than others), but weirdly 3 were unusable in other (in-spec) areas because of drill alignment problems. Even though I only went for HASL finish and had never previously soldered a BGA part, it went straight on and works fine. Not really sure what all the fuss is about! People complain about the fact you need an xray to check for faults... but these things have boundary scan... I mean that's what JTAG was invented for, right?