Difference between revisions of "Multimeter ICs"

From sigrok
Jump to navigation Jump to search
(→‎Fortune Semiconductor FS9922-DMM4: fixed broken link to datasheet.)
 
(42 intermediate revisions by 11 users not shown)
Line 1: Line 1:
This page lists some information about ICs commonly used in various multimeters (DMMs).
= Overview =
Many multimeters use a special-purpose multimeter IC internally. This table lists those chips, as they're often directly responsible for the protocol and data format of the PC logging functionality of a multimeter.
{| border="0" style="font-size: smaller" class="alternategrey sortable sigroktable"
|-
! Vendor
! Device
! Builtin PC interface
! Comments
|-
| [http://www.cyrustek.com.tw Cyrustek]
| [http://www.cyrustek.com.tw/spec/ES51978.pdf ES51978]
| RS232, TX only, 2400 baud, 7o1
| Data is sent via the '''SDO''' pin. Data logging can be en/disabled via '''RS232''' pin.
|-
| [http://www.cyrustek.com.tw Cyrustek]
| [http://www.cyrustek.com.tw/spec/ES51922.pdf ES51922]
| RS232, TX only, 19230 baud, 7o1
| Data is sent via the '''SDO''' pin. Data logging can be en/disabled via '''RS232''' pin. Some 3rd-party parsing utilities are listed [[#Cyrustek_ES51922|below]].
|-
| [http://www.dreamtechintl.com.hk/aboutus.html Dream Tech International Ltd]
| [http://doc.wendoc.com/sfff2f1781c5f878a6cdadf2c.html DTM0660]
| RS232, TX only, 2400 baud, 8n1
| Some people think this chip is a copy of the [http://www.hycontek.com/e-page2-3.html HY12P65]. Protocol looks closely to the FS9721_LP3.
|-
| [http://www.ic-fortune.com/eng/new_product3_3.asp Fortune Semiconductor]
| [http://www.ic-fortune.com/upload/Download/FS9721_LP3-DS-20_EN.pdf FS9721_LP3]
| RS232, TX only, 2400 baud, 8n1
| Data is sent via the '''TXD''' pin. Data logging can be en/disabled via '''ENTX''' pin.
|-
| [http://www.ic-fortune.com/eng/new_product3_3.asp Fortune Semiconductor]
| [http://www.ic-fortune.com/upload/Download/FS9922-DMM4-DS-11_EN.pdf FS9922_DMM4]
| RS232, TX only, 2400 baud, 8n1 (?)
| Data is sent via the '''TXD''' pin. Data logging can be en/disabled via '''TXEN''' pin (?) and the '''REL/RS232''' pin (?).
|-
| Hung Change Co Ltd
| HCPD608
| RS232, TX/RX, 9600 baud, 7n1
| Used in Protek 608, Voltcraft VC608
|-
| Intersil
| ICL7106
| ?
|
|-
| Intersil
| ICL7136
| ?
|
|-
| Intersil
| ICL7139/ICL7149
| none (?)
|
|-
| MASTECH
| M343-01
| ?
|
|-
| Maxim
| MAX130/131
| ?
|
|-
| Maxim
| MAX133/134
| ?
|
|-
| Metex
| KS57C2016
| ?
| Possibly a relabel'd Samsung KS57C2016 4-bit microcontroller.
|-
| [http://semicon.njr.co.jp/eng/ New Japan Radio]
| [http://www.datasheetcatalog.com/datasheets_pdf/N/J/U/9/NJU9207.shtml NJU9207]
| none
|
|-
| WENS
| WENS98A
| RS232, TX only, 9600 baud, 8n1
| used in Conrad Electronic / Voltcraft GDM 704
|}
= Cyrustek ES51978 =
The [http://www.cyrustek.com.tw Cyrustek] ES51978 is an all-in-one multimeter chip. The data protocol is well described in the datasheet.
It is used in many multimeters, e.g. the [[ISO-TECH IDM103N]] or the ISO-TECH IDM 98II.
See [[Multimeter ICs/Cyrustek ES519xx]] for a detailed comparison of the Cyrustek ES519xx IC series protocols.
== Resources ==
* [http://www.cyrustek.com.tw/spec/ES51978.pdf Datasheet]
* [http://www.flashingleds.net/rs232/rs232.html 'Unlocking' multimeter RS232 output] (info on hooking up a Cyrustek based multimeter to a computer)
= Cyrustek ES51922 =
The [http://www.cyrustek.com.tw Cyrustek] ES51922 is an all-in-one multimeter chip. The data protocol is mostly described in the datasheet.
It is used in many multimeters, e.g. the [[UNI-T UT61E]] or the [http://shaddack.twibright.com/projects/reveng_TD2200/ Wintex TD2200].
See [[Multimeter ICs/Cyrustek ES519xx]] for a detailed comparison of the Cyrustek ES519xx IC series protocols.
== Resources ==
* [http://www.cyrustek.com.tw/spec/ES51922.pdf Datasheet]
* [https://bitbucket.org/kuzavas/dmm_es51922 Multimeter data parsing utility] complete implementation written in Python
* [http://diyftw.de/wiki/doku.php?id=projekte:ut61e diyftw.de: Uni-Trend UT61E (UT-D04 linux treiber)] (device info, Linux software using HIDAPI: [http://diyftw.de/wiki/lib/exe/fetch.php?media=projekte:ut61e-linux-sw-0.02.tar.gz ut61e-linux-sw-0.02.tar.gz])
* [http://www.steffenvogel.de/2009/11/29/uni-trend-ut61e-digital-multimeter/ Steffen Vogel: UNI-TREND UT61E Digital Multimeter] (device info, Linux software for serial port: [http://static.steffenvogel.de/wp-content/uploads/2009/11/dmmut61e-0.01.tar.gz dmmut61e-0.01.tar.gz])
= Dream Tech International DTM0660 =
Very little information is available about this chip, even though it was put on the market in 2013. Most of the information found on the web is in Chinese. Searches suggest that some PeakTech, UNI-T, RadioShack, and Velleman DMMs use that chip.
[[File:DTM0660.jpg|thumbnail|right|DTM0660 in QFP package]]
== Protocol ==
The protocol used by the DTM0660 looks similar to the one used by the FS9721_LP3 IC (see protocol description below), except that it adds one more byte to the packets (probably to accommodate supplemental symbols displayed on the LCD) and that the nibble order is reversed.
'''Protocol options'''
Interestingly the datasheet indicates that the chip is able to send 14-bytes packets and that the nibble order can be inverted by programming a special register in EEPROM, potentially allowing a full FS9721_LP3 compatibility. This also means that devices using the DTM0660 could have different protocol versions.
[[File:DTM0660 protocol options.png|thumbnail|right|DTM0660 protocol options]]
'''Packet structure (can be affected by EEPROM registers)'''
{|  border="0" style="font-size: smaller" class="alternategrey sigroktable"
! Byte
! Bits 7-4
! Bit 3
! Bit 2
! Bit 1
! Bit 0
|-
| 0||0x1||RS232||Auto||DC||AC
|-
| 1||0x2||1A||1F||1E||- (minus)
|-
| 2||0x3||1B||1G||1C||1D
|-
| 3||0x4||2A||2F||2E||DP1
|-
| 4||0x5||2B||2G||2C||2D
|-
| 5||0x6||3A||3F||3E||DP2
|-
| 6||0x7||3B||3G||3C||3D
|-
| 7||0x8||4A||4F||4E||DP3
|-
| 8||0x9||4B||4G||4C||4D
|-
| 9||0xa||Diode||k||n||u
|-
| 10||0xb||Beep||M|| %||m
|-
| 11||0xc||Hold||Rel||Ohms||Farads
|-
| 12||0xd||Low battery||Hz||V||A
|-
| 13||0xe||User Def. 1||User Def. 2||Celsius||Fahrenheit
|-
| 14||0xf||Max||Min-Max||Min||Auto Power-Off
|}
Note that the segment lettering used here follows the [https://en.wikipedia.org/wiki/Seven-segment_display#Concept_and_visual_structure standardised 7-digit notation]:
{{7seg|A|F|B|G|E|C|D}}
== Resources ==
* [http://doc.wendoc.com/sfff2f1781c5f878a6cdadf2c.html Datasheet (Chinese)]
* [http://www.kerrywong.com/blog/wp-content/uploads/2016/04/DTM0660DataSheet.pdf Datasheet translation] courtesy of [http://www.kerrywong.com Kerry D. Wong] who hacked his ennoLogic eM860T True RMS Multimeter to enable RS232.
* [http://www.peaktech.de/productdetail/kategorie/digital---handmultimeter/produkt/peaktech-3415-usb.815.html?file=tl_files/Software/PeakTech_DMM%20Tool_ISO_complete_18082015.rar Peaktech 3415 software package], contains a file named "PeakTech device communication protocols 2015-07-20.pdf" documenting the protocol corresponding to this chip (among other protocols used by PeakTech).
= Fortune Semiconductor FS9721_LP3 =
[[File:Voltcraft vc820 fs9721 lp3.jpg|thumb|right|FS9721_LP3 on [[Voltcraft VC-820]].]]
[[File:Tp4000zc_chip.jpg|thumb|right|FS9721_LP3 (?) on [[TekPower TP4000ZC]].]]
== Protocol ==
== Protocol ==


The chip periodically sends 14-byte packets at 2400 baud, 8n1.
The chip periodically sends 14-byte packets at 2400 baud, 8n1.
The upper nibble of each byte indicates the byte number. The payload is composed of the lower nibbles, and is a 1-1 mapping of the LCD segments. The downside to this protocol structure is that transmission errors in the LSB nibbles cannot be detected. There is no checksum or CRC in the packet.
The upper nibble of each byte indicates the byte number. The payload is composed of the lower nibbles, and is a 1-1 mapping of the LCD segments. The downside to this protocol structure is that transmission errors in the LSB nibbles cannot be detected. There is no checksum or CRC in the packet. The 4 user-defined bits can have different meaning on different multimeters using this IC.


=== Packet structure ===
'''Example Packet'''
 
17 27 3D 4F 5D 67 7D 87 9D A0 B0 C0 D4 E0 -> reads: DC 0.000V
 
'''Packet structure:'''


{| border="0" width="50%" style="font-size: smaller" class="alternategrey sigroktable"
{| border="0" style="font-size: smaller" class="alternategrey sigroktable"
|-
|-
! style="width: 3em;" | Byte
! Byte
! style="width: 3em;" | Bits 7-4
! Bits 7-4
! style="width: 3em;" | Bit 3
! Bit 3
! style="width: 3em;" | Bit 2
! Bit 2
! style="width: 3em;" | Bit 1
! Bit 1
! style="width: 3em;" | Bit 0
! Bit 0


|-
|-
Line 129: Line 339:
|}
|}


=== Segment lettering ===
'''Segment lettering:'''


{{7seg|C|B|G|F|A|E|D}}
{{7seg|C|B|G|F|A|E|D}}


== Photos ==
= Fortune Semiconductor FS9721B =
 
TODO.
 
= Fortune Semiconductor FS9922-DMM3 =
 
TODO.
 
= Fortune Semiconductor FS9922-DMM4 =
 
[[File:Uni-t ut61d fs9922-dmm4.jpg|thumb|right|FS9922-DMM4 in a [[UNI-T UT61D]].]]
 
The [http://www.ic-fortune.com/eng/ Fortune Semiconductor] FS9922-DMM4 ([http://www.ic-fortune.com/upload/Download/FS9922-DMM4-DS-13_EN.pdf datasheet]) is a widely used 6000-count auto-ranging DMM chip: it takes input from the various controls on the front panel, drives the LCD display, and can communicate its readings via a serial port.
 
== Protocol ==
 
TODO
 
= Metex 14-byte ASCII =
 
[[File:Mastech mas345 mastech m343-01.jpg|thumb|right|MASTECH M343-01 in a [[MASTECH MAS345]].]]
[[File:Rs_22_168_ics5.jpg|thumb|right|Metex KS57C2016 in a [[RadioShack 22-168]].]]
 
== Protocol ==
 
Various multimeters from Metex (and rebadged ones) use this common 14-byte packet based ASCII protocol. The actual multimeter ICs in the devices have different names (e.g. "MASTECH M343-01" or "Metex KS57C2016") but they all use the same common protocol format.
 
The serial port settings can vary from device to device, e.g. '''600'''/'''1200''' baud, '''7n2''', '''RTS low''', '''DTR high'''.
 
Every time the host sends a (any?) character to the DMM (most software packages send a '''D'''/'''0x44'''), it returns '''14 ASCII bytes''' containing the measurement mode, value, and units. Even with continuous packet requests, the IC will only send a packet when a new measurement is available.
 
There is no additional other information about the multimeter status returned in the packets (e.g. no low-battery bit, no relative/min/max/hold bits, and so on).
 
=== Packet structure ===
 
{| border="0" style="font-size: smaller" class="alternategrey sigroktable"
|-
!Byte(s)
!Description
 
|-
| 1-2
| '''Measuring mode''' ('''DC''', '''AC''', '''OH''', '''CA''', '''TE''', '''DI''', ...)
 
|-
| 3
| '''Always a space''' (?)
 
|-
| 4
| '''Sign''' (''''-'''' or ' ', i.e. a minus or a space)
 
|-
| 5-9
| '''Decimal point and current measurement value''' (Examples: '''10.00''', '''0L''', '''3.999''')
 
|-
| 10-13
| '''Unit''' (Examples: '''V''', mV, '''A''', '''mA''', '''kOhm''', '''MOhm''', '''nF''', ...)
 
|-
| 14
| '''Carriage return''' ('''13'''/'''0x0d''')
 
|}
 
==== Example packets ====
 
{| border="0" style="font-size: smaller" class="alternategrey sigroktable"
|-
!01
!02
!03
!04
!05
!06
!07
!08
!09
!10
!11
!12
!13
!14
 
|-
| D
| C
|
| -
| 0
| 0
| 0
| .
| 0
|
|
|
| V
| \r
 
|-
| A
| C
|
|
| 0
| 0
| .
| 0
| 0
|
|
|
| A
| \r
 
|-
| C
| A
|
|
| 0
| .
| 0
| 7
| 1
|
|
| n
| F
| \r
 
|-
| O
| H
|
|
|
| O
| .
| L
|
| M
| O
| h
| m
| \r
 
|}
 
== Alternative Protocol ==
 
Some older devices like the [[Voltcraft M-3650CR]] use a slightly different protocol:
 
=== Packets ===
 
{| border="0" style="font-size: smaller" class="alternategrey sigroktable"
|-
! Range !! 00 !! 01 !! 02 !! 03 !! 04 !! 05 !! 06 !! 07 !! 08 !! 09 !! 10 !! 11 !! 12 !! 13 !! Remarks
|-
| All || || || || || || || || || Sp || || || || || \r ||
|-
| D/Beep ||  ||  || || || || O || L || || || m || V || || || || No contact
|-
|  || || || || 1 || 2 || 3 || 4 || || || m || V || || || || Contact/forward voltage
|-
| 200 Ω || || || || || || O || . || L || || || O || h || m || || No contact/overload (invalid value)
|-
|            || || || || 1 || 2 || 3 || . || 4 || || || O || h || m || || Value
|-
| 2 kΩ    || || || ||  || . || || O || L || || k || O || h || m || || No contact/overload (invalid value)
|-
|          || || || || 1 || . ||2 || 3 || 4 || || k || O || h || m || ||
|-
| 20 kΩ || || || ||  || || . || O || L || || k || O || h || m || || No contact/overload (invalid value)
|-
|          || || || || 1 || 2 || . || 3 || 4 || || k || O || h || m || ||
|-
| 200 kΩ || || || ||  || || O || . || L || || k || O || h || m || || No contact/overload (invalid value)
|-
|          || || || || 1 || 2 || 3 || . || 4 || || k || O || h || m || ||
|-
| 2 MΩ  || || || ||  || . || || O || L || || M || O || h || m || || No contact/overload (invalid value)
|-
|          || || || || 1 || . ||2 || 3 || 4 || || M || O || h || m || ||
|-
| 20 MΩ  || || || ||  || || . || O || L || || M || O || h || m || || No contact/overload (invalid value)
|-
|          || || || || 1 || 2 || . || 3 || 4 || || M || O || h || m || ||
|-
| 200 mV = || D || C || || || || O || . || L || || m || V || || || || Overload
|-
|          || D || C || - || 1 || 2 || 3 || . || 4 || || m || V || || || ||
|-
| 2 V = || D || C || || || . || || O || L || || || V || || || || Overload
|-
|          || D|| C || - || 1 || . ||2 || 3 || 4 || || || V || || || ||
|-
| 20 V = || D || C || ||  || || . || O || L || ||  || V || || || || Overload
|-
|          || D || C || || 1 || 2 || . || 3 || 4 || || || V || || || ||
|-
| 200 V = || D || C || ||  || || O || . || L || || || V || || || || Overload (guessed, not tried ;-))
|-
|          || D || C || - || 1 || 2 || 3 || . || 4 || || || V || || || ||
|-
| 1000 V = || D || C || ||  || || O || L || || || || V || || || || Overload (guessed...)
|-
|          || D|| C || - || 1 || 2 || 3 || 4 || || || || V || || || ||
|-
| 200 mV ≈ || A || C || || || || O || . || L || || m || V || || || || Overload
|-
|          || A || C || || 1 || 2 || 3 || . || 4 || || m || V || || || ||
|-
| 2 V ≈ || A || C || || || . || || O || L || || || V || || || || Overload
|-
|          || A|| C || || 1 || . ||2 || 3 || 4 || || || V || || || ||
|-
| 20 V ≈ || A || C || ||  || || . || O || L || ||  || V || || || || Overload
|-
|          || A || C || || 1 || 2 || . || 3 || 4 || || || V || || || ||
|-
| 200 V ≈ || A || C || ||  || || O || . || L || || || V || || || || Overload
|-
|          || A || C ||  || 1 || 2 || 3 || . || 4 || || || V || || || ||
|-
| 750 V ≈ || A || C || ||  || || O || L || || || || V || || || || Overload (guessed, not tried ;-))
|-
|          || A|| C || || 1 || 2 || 3 || 4 || || || || V || || || ||
|-
| 2 mA = || D || C ||  ||  || . || O || L || || || m || A || || || || Overload, over measurement range
|-
| || D || C || - || 1 || . || 2 || 3 || 4 || || m || A || || || ||
|-
| 200 mA = || D || C ||  || || || O || . || L || || m || A || || || || Overload, over measurement range
|-
| || D || C || - || 1 || 2 || 3 || . || 4 || || m || A || || || ||
|-
| 20 A = || D || C ||  || || O || . || L || || ||  || A || || || || Overload, over measurement range (guessed, not tried)
|-
| || D || C || - || 1 || 2 || . || 3 || 4 || || || A || || || ||
|-
| 2 mA ≈ || A || C || ||  || . || O || L || || || m || A || || || || Overload, over measurement range
|-
| || A || C || || 1 || . || 2 || 3 || 4 || || m || A || || || ||
|-
| 200 mA ≈ || A || C ||  || || || O || . || L || || m || A || || || || Overload, over measurement range
|-
| || A || C || || 1 || 2 || 3 || . || 4 || || m || A || || || ||
|-
| 20 A ≈ || A || C || || || O || . || L || || ||  || A || || || || Overload, over measurement range (guessed, not tried)
|-
| || A || C || || 1 || 2 || . || 3 || 4 || || || A || || || ||
|-
| hFE || || || || 1 || 2 || 3 || 4 || || || || || || || ||
|-
| Logics || || || || R || E || A || D || Y || || || || || || || Start status
|-
|  || || || || H || i || || || || || || || || || || High.
|-
|  || || || || L || o || || || || || || || || || || Low.
|-
|  || || || || F || L || O || A || T || || || || || || || Undefined state.
|-
| 2000 pF || || || ||  ||  || O || L || || || p || F || || || || Overload (capacity larger than measurement range)
|-
|| || || ||  || 1 || 2 || 3 || 4 || || || p || F || || || ||
|-
| 200 nF || || || || ||  || O || . || L || || n || F || || || || Overload (capacity larger than measurement range)
|-
|| || || || || 1 || 2 || 3 || . || 4 || || n || F || || || ||
|-
| 20 μF || || || || || || . || O || L || || u || F || || || || Overload (capacity larger than measurement range)
|-
|| || || || || 1 || 2 || . || 2 || 4 || || u || F || || || ||
|-
| 20 kHz || || || || 0 || 1 || . || 2 || 3 || || k || H || z || || ||
|-
| 200 kHz || || || || 0 || 1 || 2 || . || 3 || || k || H || z || || ||
|-
|}
 
"-" means "-" for negative value, space for positive value.
 
=== Commands ===
 
{| border="0" style="font-size: smaller" class="alternategrey sigroktable"
|-
! Command !!
|-
| D || Send data currently displayed
|-f
| M || Send data stored in memory (up to 5 data sets)
|-
| C || Clear data memory
|-
|}
 
= WENS98A / Voltcraft GDM 704 =
 
== Protocol ==
 
The WENS98A supports two transmission modes, data mode (also "basic mode"), and screenshot mode (also "bit map mode"). Only data mode will be described below.
 
In data mode, the GDM 704 continuously sends 26 Byte data packets of the following form:
 
: <code>b M . S VVVVV UUUU .. s vvvvv uuuu e</code>
 
{| border="0" style="font-size: smaller" class="alternategrey sigroktable"
|-
! Segment !! Position !! Length !! Description !! Example !!
|-
| b || 0 || 1 || beginning of packet (constant 0x02) || <0x02> || Packets can be detected in the data stream by looking for 24 "meaningful" bytes enclosed in an <0x02> / <0x03> pair.
|-
| M || 1 || 1 || mode indicator || A || single letter, A..R
|-
| . || 2 || 1 || ''ignore'' ||  ||
|-
| S || 3 || 1 || main value sign ||  || <space> when positive, '-' when negative
|-
| VVVVV || 4 || 5 || main value || 0.025 || four digits plus (floating) decimal point, zero-padded
|-
| UUUU || 9 || 4 || main value unit || Vac || left-aligned
|-
| .. || 13 || 2 || ''ignore'' ||  ||
|-
| s || 15 || 1 || secondary value sign ||  || <space> when positive, '-' when negative
|-
| vvvvv || 16 || 5 || secondary value ||  50 || up to five digits, or four digits plus (floating) decimal point, zero-padded or right-alined
|-
| uuuu || 21 || 4 || secondary value unit || Hz ||
|-
| e || 25 || 1 || end of packet (constant 0x03) || <0x03> || 
|}
 
The mode indicator can take the following values:
 
{| border="0" style="font-size: smaller" class="alternategrey sigroktable"
|-
! Mode Indicator !! Mode Name !! Primary Value !! Secondary Value !! Example !!
|-
| A || Voltage AC || Voltage || Frequency || <code>AB&nbsp;0.025Vac&nbsp;&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;50&nbsp;Hz&nbsp;</code> ||
|-
| B || Voltage DC || Voltage || Frequency || <code>BB&nbsp;0.020Vdc&nbsp;&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;Hz&nbsp;</code> ||
|-
| C || Voltage AC (mV / high input impedance) || Voltage || Frequency || <code>CB&nbsp;000.0mVac&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;Hz&nbsp;</code> ||
|-
| D || Voltage DC (mV / high input impedance) || Voltage || Frequency || <code>DB&nbsp;000.0mVdc&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;Hz&nbsp;</code> ||
|-
| E || Resistance || Resistance || (Frequency) || <code>EB&nbsp;14.02MOHM&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0 Hz&nbsp;</code> || Frequency is somewhat meaningless and, in my experience, always zero
|-
| G || Diode Test || Voltage || (Voltage) || <code>GB&nbsp;4.000Vdc&nbsp;&nbsp;B&nbsp;4.000Vdc&nbsp;</code> || both voltages are identical
|-
| H || Capacitance || Capacitance || (Frequency) || <code>HB&nbsp;0.000nF&nbsp;&nbsp;&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;Hz&nbsp;</code> || Frequency is somewhat meaningless and, in my experience, always zero
|-
| I || Current AC (mA/µA) || Current || Frequency || <code>IB&nbsp;003.4mAac&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;Hz&nbsp;</code> ||
|-
| J || Current DC (mA/µA) || Current || Frequency || <code>JB&nbsp;000.8mAdc&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;Hz&nbsp;</code> ||
|-
| K || Current AC (20A) || Current || Frequency || <code>KB&nbsp;00.10Aac&nbsp;&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;Hz&nbsp;</code> ||
|-
| L || Current DC (20A) || Current || Frequency || <code>LB&nbsp;00.00Adc&nbsp;&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;Hz&nbsp;</code> ||
|-
| M || Logic || Voltage? || (Frequency) || <code>MB&nbsp;04.45&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;Hz&nbsp;</code> || Voltage is given without units; Frequency is meaningless
|-
| O || Temperature || Temperature (°C) || Temperature (°F) || <code>OB&nbsp;000.0@C&nbsp;&nbsp;&nbsp;B&nbsp;&nbsp;0032@F&nbsp;&nbsp;</code> || with external adapter
|-
| P || relative Humidity || rel. Humidity || (Voltage) || <code>PB-000.0%RH&nbsp;&nbsp;B&nbsp;&nbsp;5.00Vdc&nbsp;</code> || with external adapter; Voltage is meaningless
|-
| Q || Pressure || Pressure (psi) || Pressure (kPA) || <code>QB-000.0psi&nbsp;&nbsp;B&nbsp;&nbsp;0000kPa&nbsp;</code> || with external adapter
|-
| R || Current (High Current) || Current || Frequency || <code>RB&nbsp;023.3Aac&nbsp;&nbsp;B&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;Hz&nbsp;</code> || with external adapter
|-
|}
 
Modes F, N, S, T are described in the documentation, but not produced by my GDM 704. Instead, the multimeter does not transmit anything in those modes.
 
Mode Z indicates screenshot mode.
 
The same protocol is ''probably'' also used by the GDM 703 and the GDM 705.
 
== Resources ==
 
* [http://www.produktinfo.conrad.com/datenblaetter/100000-124999/120700-an-01-de-Grafisches_Display_Multimeter_GDM_704.pdf GDM 704 User Manual (German)]
* [http://www.produktinfo.conrad.com/datenblaetter/100000-124999/120700-an-01-en-Kalibrieranleitung_GDM_704.pdf GDM 704 Calibration Procedure / Circuit Diagram / Parts List ]
* [http://www.produktinfo.conrad.com/datenblaetter/100000-124999/120700-da-01-en-Schnittstellenbeschreibung_GDM704.pdf GDM 704 Interface Description]
* [http://www.mtoussaint.de/cdmm/doc/html/classGDM703.html Earlier implementation (as part of the QtDMM project)]
* [https://www.elektroda.pl/rtvforum/topic1678487.html GDM 704 teardown]


<gallery>
[[Category:Multimeter IC]]
File:Voltcraft vc820 fs9721 lp3.jpg|<small>FS9721_LP3 on [[Voltcraft VC-820]] </small>
<gallery>

Latest revision as of 12:42, 10 December 2019

This page lists some information about ICs commonly used in various multimeters (DMMs).

Overview

Many multimeters use a special-purpose multimeter IC internally. This table lists those chips, as they're often directly responsible for the protocol and data format of the PC logging functionality of a multimeter.

Vendor Device Builtin PC interface Comments
Cyrustek ES51978 RS232, TX only, 2400 baud, 7o1 Data is sent via the SDO pin. Data logging can be en/disabled via RS232 pin.
Cyrustek ES51922 RS232, TX only, 19230 baud, 7o1 Data is sent via the SDO pin. Data logging can be en/disabled via RS232 pin. Some 3rd-party parsing utilities are listed below.
Dream Tech International Ltd DTM0660 RS232, TX only, 2400 baud, 8n1 Some people think this chip is a copy of the HY12P65. Protocol looks closely to the FS9721_LP3.
Fortune Semiconductor FS9721_LP3 RS232, TX only, 2400 baud, 8n1 Data is sent via the TXD pin. Data logging can be en/disabled via ENTX pin.
Fortune Semiconductor FS9922_DMM4 RS232, TX only, 2400 baud, 8n1 (?) Data is sent via the TXD pin. Data logging can be en/disabled via TXEN pin (?) and the REL/RS232 pin (?).
Hung Change Co Ltd HCPD608 RS232, TX/RX, 9600 baud, 7n1 Used in Protek 608, Voltcraft VC608
Intersil ICL7106 ?
Intersil ICL7136 ?
Intersil ICL7139/ICL7149 none (?)
MASTECH M343-01 ?
Maxim MAX130/131 ?
Maxim MAX133/134 ?
Metex KS57C2016 ? Possibly a relabel'd Samsung KS57C2016 4-bit microcontroller.
New Japan Radio NJU9207 none
WENS WENS98A RS232, TX only, 9600 baud, 8n1 used in Conrad Electronic / Voltcraft GDM 704


Cyrustek ES51978

The Cyrustek ES51978 is an all-in-one multimeter chip. The data protocol is well described in the datasheet.

It is used in many multimeters, e.g. the ISO-TECH IDM103N or the ISO-TECH IDM 98II.

See Multimeter ICs/Cyrustek ES519xx for a detailed comparison of the Cyrustek ES519xx IC series protocols.

Resources

Cyrustek ES51922

The Cyrustek ES51922 is an all-in-one multimeter chip. The data protocol is mostly described in the datasheet.

It is used in many multimeters, e.g. the UNI-T UT61E or the Wintex TD2200.

See Multimeter ICs/Cyrustek ES519xx for a detailed comparison of the Cyrustek ES519xx IC series protocols.

Resources

Dream Tech International DTM0660

Very little information is available about this chip, even though it was put on the market in 2013. Most of the information found on the web is in Chinese. Searches suggest that some PeakTech, UNI-T, RadioShack, and Velleman DMMs use that chip.

DTM0660 in QFP package

Protocol

The protocol used by the DTM0660 looks similar to the one used by the FS9721_LP3 IC (see protocol description below), except that it adds one more byte to the packets (probably to accommodate supplemental symbols displayed on the LCD) and that the nibble order is reversed.

Protocol options

Interestingly the datasheet indicates that the chip is able to send 14-bytes packets and that the nibble order can be inverted by programming a special register in EEPROM, potentially allowing a full FS9721_LP3 compatibility. This also means that devices using the DTM0660 could have different protocol versions.

DTM0660 protocol options

Packet structure (can be affected by EEPROM registers)

Byte Bits 7-4 Bit 3 Bit 2 Bit 1 Bit 0
0 0x1 RS232 Auto DC AC
1 0x2 1A 1F 1E - (minus)
2 0x3 1B 1G 1C 1D
3 0x4 2A 2F 2E DP1
4 0x5 2B 2G 2C 2D
5 0x6 3A 3F 3E DP2
6 0x7 3B 3G 3C 3D
7 0x8 4A 4F 4E DP3
8 0x9 4B 4G 4C 4D
9 0xa Diode k n u
10 0xb Beep M % m
11 0xc Hold Rel Ohms Farads
12 0xd Low battery Hz V A
13 0xe User Def. 1 User Def. 2 Celsius Fahrenheit
14 0xf Max Min-Max Min Auto Power-Off

Note that the segment lettering used here follows the standardised 7-digit notation:

  A  
   
F B
   
  G  
   
E C
   
  D  

Resources

Fortune Semiconductor FS9721_LP3

FS9721_LP3 on Voltcraft VC-820.
FS9721_LP3 (?) on TekPower TP4000ZC.

Protocol

The chip periodically sends 14-byte packets at 2400 baud, 8n1. The upper nibble of each byte indicates the byte number. The payload is composed of the lower nibbles, and is a 1-1 mapping of the LCD segments. The downside to this protocol structure is that transmission errors in the LSB nibbles cannot be detected. There is no checksum or CRC in the packet. The 4 user-defined bits can have different meaning on different multimeters using this IC.

Example Packet

17 27 3D 4F 5D 67 7D 87 9D A0 B0 C0 D4 E0 -> reads: DC 0.000V

Packet structure:

Byte Bits 7-4 Bit 3 Bit 2 Bit 1 Bit 0
0 0x1 AC DC Auto RS232
1 0x2 Negative 1A 1B 1C
2 0x3 1D 1E 1F 1G
3 0x4 DP1 2A 2B 2C
4 0x5 2D 2E 2F 2G
5 0x6 DP2 3A 3B 3C
6 0x7 3D 3E 3F 3G
7 0x8 DP3 4A 4B 4C
8 0x9 4D 4E 4F 4G
9 0xa u n k Diode
10 0xb m % M Beep
11 0xc Farads Ohms Rel Hold
12 0xd A V Hz Low battery
13 0xe User bit 3 User bit 2 User bit 1 User bit 0

Segment lettering:

  C  
   
B G
   
  F  
   
A E
   
  D  

Fortune Semiconductor FS9721B

TODO.

Fortune Semiconductor FS9922-DMM3

TODO.

Fortune Semiconductor FS9922-DMM4

FS9922-DMM4 in a UNI-T UT61D.

The Fortune Semiconductor FS9922-DMM4 (datasheet) is a widely used 6000-count auto-ranging DMM chip: it takes input from the various controls on the front panel, drives the LCD display, and can communicate its readings via a serial port.

Protocol

TODO

Metex 14-byte ASCII

MASTECH M343-01 in a MASTECH MAS345.
Metex KS57C2016 in a RadioShack 22-168.

Protocol

Various multimeters from Metex (and rebadged ones) use this common 14-byte packet based ASCII protocol. The actual multimeter ICs in the devices have different names (e.g. "MASTECH M343-01" or "Metex KS57C2016") but they all use the same common protocol format.

The serial port settings can vary from device to device, e.g. 600/1200 baud, 7n2, RTS low, DTR high.

Every time the host sends a (any?) character to the DMM (most software packages send a D/0x44), it returns 14 ASCII bytes containing the measurement mode, value, and units. Even with continuous packet requests, the IC will only send a packet when a new measurement is available.

There is no additional other information about the multimeter status returned in the packets (e.g. no low-battery bit, no relative/min/max/hold bits, and so on).

Packet structure

Byte(s) Description
1-2 Measuring mode (DC, AC, OH, CA, TE, DI, ...)
3 Always a space (?)
4 Sign ('-' or ' ', i.e. a minus or a space)
5-9 Decimal point and current measurement value (Examples: 10.00, 0L, 3.999)
10-13 Unit (Examples: V, mV, A, mA, kOhm, MOhm, nF, ...)
14 Carriage return (13/0x0d)

Example packets

01 02 03 04 05 06 07 08 09 10 11 12 13 14
D C - 0 0 0 . 0 V \r
A C 0 0 . 0 0 A \r
C A 0 . 0 7 1 n F \r
O H O . L M O h m \r

Alternative Protocol

Some older devices like the Voltcraft M-3650CR use a slightly different protocol:

Packets

Range 00 01 02 03 04 05 06 07 08 09 10 11 12 13 Remarks
All       Sp \r
D/Beep       O L m V No contact
 1 2 3 4 m V Contact/forward voltage
200 Ω     O . L O h m No contact/overload (invalid value)
 1  2 3 . 4 O h m Value
2 kΩ    . O L k O h m No contact/overload (invalid value)
 1  . 2 3 4 k O h m
20 kΩ     . O L k O h m No contact/overload (invalid value)
 1  2 . 3 4 k O h m
200 kΩ     O . L k O h m No contact/overload (invalid value)
 1  2 3 . 4 k O h m
2 MΩ    . O L M O h m No contact/overload (invalid value)
 1  . 2 3 4 M O h m
20 MΩ     . O L M O h m No contact/overload (invalid value)
 1  2 . 3 4 M O h m
200 mV = D C   O . L m V Overload
D C -  1  2 3 . 4 m V
2 V = D  C  . O L V Overload
D C -  1  . 2 3 4 V
20 V = D C     . O L V Overload
D C  1  2 . 3 4 V
200 V = D C     O . L V Overload (guessed, not tried ;-))
D C -  1  2 3 . 4 V
1000 V = D C     O L V Overload (guessed...)
D C -  1  2 3 4 V
200 mV ≈ A  C   O . L m V Overload
A C  1  2 3 . 4 m V
2 V ≈ A  C  . O L V Overload
A C  1  . 2 3 4 V
20 V ≈ A  C     . O L V Overload
A C  1  2 . 3 4 V
200 V ≈ A  C     O . L V Overload
A C  1  2 3 . 4 V
750 V ≈ A  C     O L V Overload (guessed, not tried ;-))
A C  1  2 3 4 V
2 mA = D  C  . O L m A Overload, over measurement range
D  C - 1  . 2 3 4 m A
200 mA = D  C  O . L m A Overload, over measurement range
D  C - 1  2 3 . 4 m A
20 A = D  C O  . L A Overload, over measurement range (guessed, not tried)
D  C - 1  2 . 3 4 A
2 mA ≈ A  C  . O L m A Overload, over measurement range
A  C 1  . 2 3 4 m A
200 mA ≈ A  C  O . L m A Overload, over measurement range
A  C 1  2 3 . 4 m A
20 A ≈ A  C O  . L A Overload, over measurement range (guessed, not tried)
A  C 1  2 . 3 4 A
hFE 1 2 4
Logics  R E A D Y Start status
 H i High.
 L o Low.
 F L O A T Undefined state.
2000 pF   O L p F Overload (capacity larger than measurement range)
  1 2 3 4 p F
200 nF   O . L n F Overload (capacity larger than measurement range)
 1 2 3 . 4 n F
20 μF   . O L u F Overload (capacity larger than measurement range)
 1 2 . 2 4 u F
20 kHz  0 1 . 2 3 k H z
200 kHz  0 1 2 . 3 k H z

"-" means "-" for negative value, space for positive value.

Commands

Command
D Send data currently displayed
M Send data stored in memory (up to 5 data sets)
C Clear data memory

WENS98A / Voltcraft GDM 704

Protocol

The WENS98A supports two transmission modes, data mode (also "basic mode"), and screenshot mode (also "bit map mode"). Only data mode will be described below.

In data mode, the GDM 704 continuously sends 26 Byte data packets of the following form:

b M . S VVVVV UUUU .. s vvvvv uuuu e
Segment Position Length Description Example
b 0 1 beginning of packet (constant 0x02) <0x02> Packets can be detected in the data stream by looking for 24 "meaningful" bytes enclosed in an <0x02> / <0x03> pair.
M 1 1 mode indicator A single letter, A..R
. 2 1 ignore
S 3 1 main value sign <space> when positive, '-' when negative
VVVVV 4 5 main value 0.025 four digits plus (floating) decimal point, zero-padded
UUUU 9 4 main value unit Vac left-aligned
.. 13 2 ignore
s 15 1 secondary value sign <space> when positive, '-' when negative
vvvvv 16 5 secondary value 50 up to five digits, or four digits plus (floating) decimal point, zero-padded or right-alined
uuuu 21 4 secondary value unit Hz
e 25 1 end of packet (constant 0x03) <0x03>

The mode indicator can take the following values:

Mode Indicator Mode Name Primary Value Secondary Value Example
A Voltage AC Voltage Frequency AB 0.025Vac  B    50 Hz 
B Voltage DC Voltage Frequency BB 0.020Vdc  B     0 Hz 
C Voltage AC (mV / high input impedance) Voltage Frequency CB 000.0mVac B     0 Hz 
D Voltage DC (mV / high input impedance) Voltage Frequency DB 000.0mVdc B     0 Hz 
E Resistance Resistance (Frequency) EB 14.02MOHM B     0 Hz  Frequency is somewhat meaningless and, in my experience, always zero
G Diode Test Voltage (Voltage) GB 4.000Vdc  B 4.000Vdc  both voltages are identical
H Capacitance Capacitance (Frequency) HB 0.000nF   B     0 Hz  Frequency is somewhat meaningless and, in my experience, always zero
I Current AC (mA/µA) Current Frequency IB 003.4mAac B     0 Hz 
J Current DC (mA/µA) Current Frequency JB 000.8mAdc B     0 Hz 
K Current AC (20A) Current Frequency KB 00.10Aac  B     0 Hz 
L Current DC (20A) Current Frequency LB 00.00Adc  B     0 Hz 
M Logic Voltage? (Frequency) MB 04.45     B     0 Hz  Voltage is given without units; Frequency is meaningless
O Temperature Temperature (°C) Temperature (°F) OB 000.0@C   B  0032@F   with external adapter
P relative Humidity rel. Humidity (Voltage) PB-000.0%RH  B  5.00Vdc  with external adapter; Voltage is meaningless
Q Pressure Pressure (psi) Pressure (kPA) QB-000.0psi  B  0000kPa  with external adapter
R Current (High Current) Current Frequency RB 023.3Aac  B     0 Hz  with external adapter

Modes F, N, S, T are described in the documentation, but not produced by my GDM 704. Instead, the multimeter does not transmit anything in those modes.

Mode Z indicates screenshot mode.

The same protocol is probably also used by the GDM 703 and the GDM 705.

Resources