Undocumented digital caliper signal??

Hi All,

Can someone help me decode the following digital signal? I am breaking my head about this for a couple of days now, and I cannot figure it out! I am analyzing the data coming from my cheap chinese digital calipers, and I think my calipers have a different (new?) protocol that for as far as I know (Googled for many hours). It's not the 48bit 90KHz protocol (2 words of 24 bits) and also not the less common BCD7 protocol (7 packets of 4 bits). What I am seeing when I analyze the signal using a protocol analyzer, is some sort of BCD variant; only 6 packets with 4 bits.

Some measurements below.

I read the data bits from Right to Left, on rising clock, data inverted.

0.00mm

| bin | 0000 | 0000 | 0000 | 0000 | 0000 | 0000 | | - | - | - | - | - | - | - | | dec | 0 | 0 | 0 | 0 | 0 | 0 |

0.01mm

| bin | 0000 | 0000 | 0000 | 0000 | 0000 | 0001 | | - | - | - | - | - | - | - | | dec | 0 | 0 | 0 | 0 | 0 | 1 |

1.00mm

| bin | 0000 | 0000 | 0000 | 0000 | 1001 | 1011 | | - | - | - | - | - | - | - | | dec | 0 | 0 | 0 | 0 | 9 | 11 |

2.00mm

| bin | 0000 | 0000 | 0000 | 0000 | 1100 | 1000 | | - | - | - | - | - | - | - | | dec | 0 | 0 | 0 | 0 | 12 | 8 |

1.000 INCH

| bin | 1000 | 0000 | 0000 | 0111 | 1101 | 0000 | | - | - | - | - | - | - | - | | dec | 1 | 0 | 0 | 7 | 13 | 0 |

Maybe I am looking at it for to long.... can't be that difficult, can it?? ;) Can please someone help me figuring out how to read these packets and transform them to actual numbers?

I have my Arduino hooked up, nice level shifter circuit to push the 1.5V caliper signal to 5V and all, but was getting funny readings with the code I wrote because I wrote it for the 48bits 90KHz signal. So if I can only understand this BCD variant, then finally I can make some progress with my Arduino.

Thanks a ton!

Why do I get this message upon reading this post?!?

Enter username and password for http://195.240.237.18

it had something to do with where the op was trying to host his images

Please try again, problem with hosting the pictures... sorry abt that.

Have you got the decoding right, my read of it is

1000 0000 0000 0000 0000 0000 0mm 1100 0000 0000 0000 0000 0000 0.1mm 1001 0011 0000 0000 0000 0000 1mm 1000 1001 1000 0000 0000 0000 2mm 1000 0101 1111 0000 0000 0000 1"

Not that that's any clearer :)

BTW, there's a new software version available for download from Saleae.


Rob

1000 0000 0000 0000 0000 0000 0mm 1100 0000 0000 0000 0000 0000 0.1mm 1001 0011 0000 0000 0000 0000 1mm 1000 1001 1000 0000 0000 0000 2mm 1000 0101 1111 0000 0000 0000 1"

Not that that's any clearer

Well ignoring the first bit, the first four examples are just a simple binary count in tenths of a mm. Not sure about the 1" value.

Lefty

Thanks for the replies :) I am in the process now of creating a nice table with the measurements and the binary values. Maybe a pattern will emerge then... I will do some more measurements too.

Yesss!! I figured it out! Read right to left, falling clock, data inverted, and create one big number of all packets. For mm, devide the big number by 200, and there is the same number as the scale displays. Oh, and the last packet (far right in screenshot) holds the flags for negative values and inch/mm mode.

Have a nice Christmass everyone!!

Good you figured it out! It is as you say just binary representation of number and you had to read data on falling edge of clock. And sign bit is 21st from 24. I just as you where figuring this out and described my results in article. I guess it's loo late now, but just in case, here it is: http://robocombo.blogspot.com/2010/12/using-tis-launchpad-to-interface.html

Nice blog! Very usefull, gives much more information abt the protocol than my post here. :) If you like, you can use the images from my logic analyzer, they are a little bit more clear in showing the signal I think.