I bought a Tenma 72-6870 from MCM to use in a closed-loop temperature
controller I was constructing. I was unaware that the protocol for the
communications would not be available in the instruction manual. Worse, MCM
will not release the protocol. This makes the meter unusable for my intended
purpose. I have partially decoded the 14-byte string , but have had problems
decoding the rest.
Can anybody help with the protocol? TIA.
John
http://home.pages.at/linux/
http://134.76.25.165/~woelz/linux/metex/metex.html
These give information for Metex meters but perhaps one of them uses
a similar enough protocol to your Tenma to help.
Matt Roberds
Thanks, Matt. I have a Metex (they give their protocol, so no problem) but
the Metex and Tenma are different protocols. Good idea, though.
John
Thanks, Michael, I did that. That site leads right back to MCM. I suppose I
could try one of the other distributors though.
John
I have a friend who works at MCM in tech support, but I haven't been
able to reach him. I will try again when I get back from the VA
hospital and see if he can get his hands on it. One question. Do you
have software that came with the meter? I have a piece of shareware to
turn a serial port (or two) into an RS232 serial analyzer that would let
you compare readings with the data stream. It is supposed to run under
win 95/98, and night help you decipher the protocol.
Hi, Michael. Yes, I do have software that came with the meter but I need to
capture the data from the meter and manipulate it in real time. I wrote a VB
program to analyze the serial data and have discovered more than half of the
protocol. What I haven't been able to learn about is how the actual data is
buried in there. For example, I know which bit flags the sign, which bit
flags the milli- prefix, which bit flags the autorange function, and I know
that the high nibble of each byte is a number representing the byte position
in the packet. I have caused the DMM to read several voltages and I read the
returned packets but have not been successful in determining how the data
itself is encoded. For example, it appears that a 0000 reading is 7D 7D 7D
7D or 75 75 75 75 depending on whether I should use 3 or 4 bits.
Anyway, thanks for your offer of inside help. No hurry on this, I've been
working on it off and on for many months.
Cheers,
John
looks like it's the 7 segment display code. Six one bits and one 0 bit.
-
| |
-
| |
-
I'd bet that 8888 comes out as 7f 7f 7f 7f
Mark Zenier mze...@eskimo.com Washington State resident
That's the way that the Fluke 87's undocumented ultrasonic interface works.
One bit per display segment.
Then you would be a winner, Mark. Great insight! I looked at some of the
other data generated by various voltages, decoded the segments, and you are
right on the money.
Each segment is associated with a bit decoded as:
4
-
5 | | 0
- <- 1
6 | | 2
-
3
Thanks for your help.
John
Hi, Ned. Yep, you and Mark are right. See my reply to him earlier in the
thread.
Thanks,
John
How about posting the full protocol so it can be archived on Google
and other archives so someone can find it in the future?
> How about posting the full protocol so it can be archived on Google
> and other archives so someone can find it in the future?
> --
Okay, but I haven't organized it yet, so I'll just post the information I
was working from. If this generates more questions, just ask and I'll try to
accommodate.
14 bytes of data --------------- Meter setting and reading
15 27 3D 47 5D 67 7D 87 9D A0 B0 C0 D4 E1 Volts = 0000 (Manual V)
15 27 3D 47 5D 67 7D 8F 9D A0 B0 C0 D4 E1 Volts = 000.0 (Manual V)
15 27 3D 47 5D 6F 7D 87 9D A0 B0 C0 D4 E1 Volts = 00.00 (Manual V)
15 27 3D 4F 5D 67 7D 87 9D A0 B0 C0 D4 E1 0.000 (Manual V)
15 20 35 49 5F 60 75 81 95 A0 B0 C0 D4 E1 1.317 (Manual V)
15 20 35 49 5F 65 7B 80 95 A0 B0 C0 D4 E1 1.321 (Manual V)
15 25 3B 4F 5E 61 7F 83 9F A0 B0 C0 D4 E1 2.639 (Manual V)
15 2F 3D 47 5D 67 7D 8F 9D A0 B8 C0 D4 E1 mVolts = -000.0 (Manual)
17 27 3D 47 5D 67 7D 8F 9D A0 B8 C0 D4 E1 mVolts = 0 DC (Auto)
17 20 35 49 5F 60 75 81 95 A0 B0 C0 D4 E1 Volts = + 1.317 DC (Auto)
17 20 35 4F 5E 62 77 80 95 A0 B0 C0 D4 E1 1.641 (Auto)
17 25 3B 4F 5E 61 7F 87 9F A0 B0 C0 D4 E1 Volts = + 2.638 DC (Auto)
17 28 35 49 5F 60 75 81 95 A0 B0 C0 D4 E1 Volts = - 1.317 DC (Auto)
13 20 30 47 5D 6E 78 80 90 A0 B2 C4 D0 E1 Ohms = Infinite Megs (Auto)
11 20 30 47 5D 6E 78 80 90 A0 B2 C4 D0 E1 Ohms = Infinite Megs (Manual)
11 20 30 4F 5D 66 78 80 90 A2 B0 C4 D0 E1 Ohms = Infinite K Ohms (Manual)
11 20 30 47 5D 66 78 88 90 A0 B0 C4 D0 E1 Ohms = Infinite Ohms (Manual)
13 27 3D 45 5B 65 7B 8D 9B A0 B0 C0 D0 E4 C degrees = 22.2
11 27 3D 4F 5D 67 7D 87 9D A0 B0 C0 D2 E1 Hz = 0000
17 27 3D 47 5D 6F 7D 87 9D A0 B8 C0 D8 E1 mA = 00.00 (Auto)
17 2F 3D 47 5D 6F 7D 87 9D A0 B8 C0 D8 E1 mA = -00.00 (Auto)
15 27 3D 47 5D 6F 7D 87 9D A0 B0 C0 D8 E1 Amps = 00.00
High nibble of each byte is the sequence position of the byte.
Sign is bit 3 of byte 2. True = Negative.
Decimal point is bit 3 of byte 4, 6, or 8.
Milli- prefix indicated by bit 3 of byte 11.
Auto range indicated by bit 1 of byte 1. True = Auto.
2400, 8, N, 1
There were some mistakes in my last post. I have done more work on
this and have this to offer:
The hardware...
There is a PCB inside which does all the work and contains an IR emitter. An
IR detector on a seperate tiny PCB is mounted on the back cover. This is for
isolation, I presume. The detector is a diode-like thing and has a resistor
of 680 ohms in series with it. Also on this tiny board is male pin and
finger contact like those wall wart connectors. This is the connector for
the serial cable . The other end of the serial cable has a DB9. The wiring
is like so...
DB9 pin 4 (DTR, ~ +12V) --------------A diode C-----|
|
DB9 pin 2 (RXD, ~ 0V) -------------- 680 Ohm -----|
This does not show the wall wart type connector on the meter end.
I had some problems with reliable communications. Sometimes it would garble
the data, sometimes it would not work at all. I traced the problem to
insufficient signal amplitude. I shorted the 680 Ohm resistor but it didn't
work any better. However, I left it shorted since I could see no reason for
it being there. On the main board inside, there is a 3k series resistor
(surface mount) for the IR emitter. I paralleled that with a 1.5k resistor
and it has worked well ever since. There is nothing magical about the 1.5k,
it was just what I had handy.
The protocol...
The Tenma periodically sends out a packet of 14 bytes of data without being
prompted. The parameters are 2400 bps, 8 bits, no parity, one stop bit. The
upper nybble of each byte contains the sequence number of the byte, starting
with 1. That is, the first byte (after a pause) is 0001XXXX, the next is
0010XXXX, the third is 0011XXXX, etc. The lower nybble is the data that
drives the LCD display. In the following, bit 7 is the most significant bit,
bit 0 is the least significant bit.
BYTE 1
BIT
7 - 0
6 - 0
5 - 0
4 - 1
3 - AC
2 - DC
1 - AUTO (RANGE)
0 - 1
BYTE 2 (LEFTMOST LCD DISPLAY DIGIT)
BIT
7 - 0
6 - 0
5 - 1
4 - 0
3 - SIGN
2 - LOWER LEFT VERTICAL SEGMENT
1 - UPPER LEFT VERTICAL SEGMENT
0 - TOP HORIZONTAL SEGMENT
BYTE 3 (LEFTMOST LCD DISPLAY DIGIT)
BIT
7 - 0
6 - 0
5 - 1
4 - 1
3 - BOTTOM HORIZONTAL SEGMENT
2 - LOWER RIGHT VERTICAL SEGMENT
1 - CENTER HORIZONTAL SEGMENT
0 - UPPER RIGHT VERTICAL SEGMENT
BYTE 4 (SECOND LCD DISPLAY DIGIT FROM LEFT)
BIT
7 - 0
6 - 1
5 - 0
4 - 0
3 - DECIMAL POINT
2 - LOWER LEFT VERTICAL SEGMENT
1 - UPPER LEFT VERTICAL SEGMENT
0 - TOP HORIZONTAL SEGMENT
BYTE 5 (SECOND LCD DISPLAY DIGIT FROM LEFT)
BIT
7 - 0
6 - 1
5 - 0
4 - 1
3 - BOTTOM HORIZONTAL SEGMENT
2 - LOWER RIGHT VERTICAL SEGMENT
1 - CENTER HORIZONTAL SEGMENT
0 - UPPER RIGHT VERTICAL SEGMENT
BYTE 6 (THIRD DISPLAY DIGIT FROM LEFT)
BIT
7 - 0
6 - 1
5 - 1
4 - 0
3 - DECIMAL POINT
2 - LOWER LEFT VERTICAL SEGMENT
1 - UPPER LEFT VERTICAL SEGMENT
0 - TOP HORIZONTAL SEGMENT
BYTE 7 (THIRD LCD DISPLAY DIGIT FROM LEFT)
BIT
7 - 0
6 - 1
5 - 1
4 - 1
3 - BOTTOM HORIZONTAL SEGMENT
2 - LOWER RIGHT VERTICAL SEGMENT
1 - CENTER HORIZONTAL SEGMENT
0 - UPPER RIGHT VERTICAL SEGMENT
BYTE 8 (RIGHTMOST LCD DISPLAY DIGIT)
BIT
7 - 1
6 - 0
5 - 0
4 - 0
3 - DECIMAL POINT
2 - LOWER LEFT VERTICAL SEGMENT
1 - UPPER LEFT VERTICAL SEGMENT
0 - TOP HORIZONTAL SEGMENT
BYTE 9 (RIGHTMOST LCD DISPLAY DIGIT)
BIT
7 - 1
6 - 0
5 - 0
4 - 1
3 - BOTTOM HORIZONTAL SEGMENT
2 - LOWER RIGHT VERTICAL SEGMENT
1 - CENTER HORIZONTAL SEGMENT
0 - UPPER RIGHT VERTICAL SEGMENT
BYTE 10
BIT
7 - 1
6 - 0
5 - 1
4 - 0
3 - u (MICRO) INDICATOR
2 - n (NANO) INDICATOR
1 - k (KILO) INDICATOR
0 - DIODE SYMBOL INDICATOR
BYTE 11
BIT
7 - 1
6 - 0
5 - 1
4 - 1
3 - m (MILLI) INDICATOR
2 - unused
1 - M (MEGA) INDICATOR
0 - TONE ANNUNCIATOR SYMBOL
BYTE 12
BIT
7 - 1
6 - 1
5 - 0
4 - 0
3 - F (FARAD) INDICATOR
2 - OMEGA INDICATOR
1 - unused
0 - unused
BYTE 13
BIT
7 - 1
6 - 1
5 - 0
4 - 1
3 - A (AMPERE) INDICATOR
2 - V (VOLT) INDICATOR
1 - Hz INDICATOR
0 - unused
BYTE 14
BIT
7 - 1
6 - 1
5 - 1
4 - 0
3 - unused
2 - DEGREES C INDICATOR
1 - unused
0 - 1
Probably a photodarlington transistor. Sensitive, but slow.
>isolation, I presume. The detector is a diode-like thing and has a resistor
>of 680 ohms in series with it. Also on this tiny board is male pin and
>finger contact like those wall wart connectors. This is the connector for
>the serial cable . The other end of the serial cable has a DB9. The wiring
>is like so...
>
>DB9 pin 4 (DTR, ~ +12V) --------------A diode C-----|
> |
>DB9 pin 2 (RXD, ~ 0V) -------------- 680 Ohm -----|
>
>This does not show the wall wart type connector on the meter end.
Did you look in (or ohm out) the DB9 to see if there were any other
components? I suspect there may be another resistor from one of the pins
(that's normally at -12) to pin 2. (Maybe TXD)? That would give you
the bipolar RS-232 levels.
>I had some problems with reliable communications. Sometimes it would garble
>the data, sometimes it would not work at all. I traced the problem to
>insufficient signal amplitude. I shorted the 680 Ohm resistor but it didn't
>work any better. However, I left it shorted since I could see no reason for
>it being there. On the main board inside, there is a 3k series resistor
>(surface mount) for the IR emitter. I paralleled that with a 1.5k resistor
>and it has worked well ever since. There is nothing magical about the 1.5k,
>it was just what I had handy.
Trading off battery life for reliability. On that note, maybe one of
those "unused" bits is the low battery indicator.
Good point, Mark. I'll do that.
> Trading off battery life for reliability. On that note, maybe one of
> those "unused" bits is the low battery indicator.
>
Another good point. I wish you were the one investigating this meter. You
seem to have a lot of experience.
John
I opened up the DB9 connector and found, to my disappointment, that it is
wired as shown above. I've seen connections such as the resistor you mention
in other equipment, but this one has nothing more. I'd say that's sort of
living on the edge.
Well, my personal opinion is that it is a pretty shoddy design anyway. Maybe
I just expect too much for $40.
Thanks.
John