If you ever read any other articles on my blog, you know that most of them are about devices I’ve constructed and used for a while. So I do not publish immediately after I finish a construction, because I prefer to use the device for a while and then summarize my experience with using it practically.
With this logic I’ve also written my Brymen 867/869 interface cable article (this was actually one of the first articles published on this blog). I have, too, been using the cable from time to time. But I must say I was not really satisfied with how it worked. So I reworked it and here I am bringing the updated version.
About a year ago, I bought the Brymen 867s, and I’ve been very satisfied with it. The only downside is that the cable to connect it to a PC is sold separately and costs 50 €, which is ridiculous. And you also need to use their proprietary software.
Thankfully, the folks at EEVBlog decoded the protocol and made their own version (see here and here). However, what both the EEVBlog and original Brymen cables do is that they simply retransmit the data from the multimeter, and then you need a dedicated (and relatively complicated) software just to be capable of reading it. I thought, well, since I am already putting a microcontroller in there, I might as well decode the output and send it out via serial in a human readable form. And that’s exactly what this does:
So you can either use any serial terminal or, if you want to read the data into some sort of application, either read it using scanf (something like printf, just for reading) or send ‘R’ to the cable, which will toggle raw data output. Then you can decode it yourselves however you want.
So, what is different from the original release?
- Much improved communication protocol, so it no longer returns timeout errors.
- Changed the commands that control the cable – now, instead of hex codes, you just send in single letters. Also I tried to match the letters to their respective functions, so you don’t have to remember what 0xC0 stands for and so on.
- Some parts of the code have been rewritten (ie the UART part, so now it uses PROGMEM). Now the code takes only 2300 B of flash an 22 bytes of RAM.
- I made a much better, 3D printed case, which also has a strain reliever for the cable and fits better into the DMM.
The construction is, in fact, relatively simple. The brain is an ATtiny45, which uses CH330 (USB-UART converter) to communicate with the PC and also controls the IR LED, IR phototransistor and a normal red LED.
Everything is housed in a 3D printed case, which also has a strain reliver build in. However, to fit nicely in the multimeter’s body, you need to print it really precisely, possibly even adapt the model to your 3D printer.