Chinese Scale Protocol
Hold and Fast Reading Modes
The purpose of this page is to document the data output protocol of the Chinese-made digital scales commonly sold through E-bay and other on-line merchants. These scales come in horizontal and vertical versions with lengths of 4", 6", 8", 12" and on up. There are also a variety caliper versions available. Here is a picture of the 6" and 12" horizontal and 12" vertical versions:
Figure 1 - 6" and 12" Horizontal and 12" Vertical Chinese Scales
The scales have a digital output connector hidden under a small plastic cover. The connector has a different pin-out and physical shape than the connector found on the more common Mitutoyo scales and calipers. I have been unable to find a supplier for either the cables or the connector that fits these scales though there are several digital read-outs (DROs) available that include them. Little Machine Shop has indicated that they will carry the cables in the future so check there if you are interested. The pin-out of this connector is as follows:
Figure 2 - Scale Connector
Vpos and Vneg are the positive and negative sides of the battery, respectively. Data and clock are received over the corresponding pins.
The Chinese scale communication protocol is different from the Digimatic protocol used by Mitutoyo and other scale manufacturers. In the Digimatic protocol, data availability is signaled via a ready pin. A request pin must be asserted in response to the ready pin in order to receive data. Once this occurs, the scale sends a 52-bit serial data stream with clock. The serial data stream consists of 13 4-bit nibbles which contains the data type, entry number, sign, six BCD digits, decimal point, and the units. The Chinese scales have a completely different protocol and data format. Due to common misconception and misleading advertisements, this bears repeating once more.
The Chinese scales DO NOT use Digimatic protocol!!!
Chinese Scale Protocol
The Chinese scales do not handshake the data output. The scale data is sent continuously with a fixed, ~300ms period. The serial data stream is 48 bits long and is clocked by the scale at a nominal frequency of 90 kHz, although the exact frequency seems to vary somewhat between different scale models. On the scale I used for testing, the clock frequency was about 77 kHz as shown in the following oscilloscope snapshot.
Figure 3 - Clock Frequency
The 48-bit serial stream contains two 24-bit words that are the absolute and relative positions of the scale in binary format, not BCD format like the Digimatic protocol. Each 24-bit word is sent least significant bit (LSB) first, which is opposite from most serial protocols that send the most significant bit (MSB) first. The units of each word are in 20,480 positions per inch or 0x5000 in hexadecimal. The first word is the absolute position of the scale with an arbitrary origin that remains fixed until the scale loses power. The second word is the relative position of the scale with an origin that is reset with every press of the zero button on the scale. The positions are signed values so negative values are expressed in two's complement notation. A diagram of the data format is given below.
Figure 4 - Data Format
The data/clock output viewed on a logic analyzer looks like this:
Figure 5 - Data Output on a Logic Analyzer
The data/clock output viewed on an oscilloscope looks like this:
Figure 6 - Data Output on an Oscilloscope
One thing to note from the above waveforms is the clock pauses before, between, and after the two 24-bit words. I don't know if this is consistent on all scale models but all of mine have these pauses. The pause before the first falling edge is about 55 usec, the pause between the two words is about twice that or 110 usec and the final pause is again about 55 usec.
Electrically, the clock and data outputs are simple logic high, binary signals that swing between the positive and negative voltages of the battery. If we take the negative side of the battery as our reference, then this is 1.5 to 1.7 volts for the typical SR44 battery cell that these scales use.
The best time to sample the data line with respect to the clock is on the falling edge of the clock. The following logic analyzer output shows that there is more hold time following the falling edge of the clock than there is on the rising edge.
Figure 7 - Clock Close-up on a Logic Analyzer
One thing I have seen consistently on my scales is glitches on the data line. The glitches are fairly frequent and seem to be somewhat dependent on the position of the scale. Luckily, I have never seen a glitch on the clock line and the glitches on the data line are very short. In order to combat this, the receiver should apply electrical or digital filtering techniques to ensure that the glitches are not seen when decoding the bit stream. A common digital technique that should work here is to triple sample and majority average the data line after the falling clock edge.
Figure 8 - Data Glitch Captured on an Oscilloscope
Hold and Fast Reading Modes
The data and clock pins also function as mode and zero buttons, respectively, which can come in very handy since most scales do not include the mode button. The button function is activated by momentarily pulling the corresponding pin to the positive voltage level. I would suggest the use of a 1K Ohm resistor in series here to limit any chance of damaging the scale. Activating the zero button (clock pin) will act just like pressing the zero button on the front of the scale. Activating the mode button (data pin) will change the scale mode. The available modes depend on the capabilities of the particular model of scale. Here is a circuit that will work to activate these functions.
Figure 9 - Zero and Mode Button Circuit
The only mode available on the linear scales pictured above is the fast reading mode. Activating the mode button switches back and forth between fast reading and regular reading modes. In fast reading mode, the scale updates about every 20ms (50 Hz) instead of every 300ms (3 Hz). The fast updates are seen on the LCD display as well as the data output. A drawback with the fast reading mode is that the data output has more glitches than the regular reading mode. Thankfully, the techniques described earlier to filter these glitches will also work here.
One scale model I have, a 6" caliper, supports both hold and fast reading modes and operates as follows. Activating the mode button puts the scale in hold mode where the scale will hold the last reading on the scale even if it is moved. "H" is displayed on the LCD in the hold mode. A second press of the mode button puts the scale in minimum hold mode where it displays only the smallest scale reading measured. "H S" is displayed on the LCD in minimum hold mode. A third press of the mode button puts the scale in maximum hold mode where it displays the largest scale reading measured. "H M" is displayed on the LCD in maximum hold mode.
Anytime the scale is in one of the hold modes, pressing the zero button on the scale, or activating the zero button through the clock pin, will put the scale into fast reading mode. In fast reading mode, the scale operates as described above. Activating the zero button again will cancel fast reading mode and go back to the hold mode. Activating the mode button while in fast reading mode will cancel all modes and return to the default mode.