Difference between revisions of "Tondaj SL-814"
Uwe Hermann (talk | contribs) m |
Uwe Hermann (talk | contribs) (→Protocol: More Tondaj SL-814 protocol info.) |
||
Line 45: | Line 45: | ||
The device accepts a simple command-based protocol over the (virtual) serial port, using a baudrate of '''9600 baud''', with '''8e1''' settings (8 data bits, even parity, one stop bit). | The device accepts a simple command-based protocol over the (virtual) serial port, using a baudrate of '''9600 baud''', with '''8e1''' settings (8 data bits, even parity, one stop bit). | ||
=== Commands === | === Commands / replies === | ||
Commands and replies can consist of multiple bytes, and always end with '''0x0d'''. | |||
{| border="0" style="font-size: smaller" class="alternategrey sortable sigroktable" | {| border="0" style="font-size: smaller" class="alternategrey sortable sigroktable" | ||
Line 54: | Line 56: | ||
!Comments | !Comments | ||
|- bgcolor="#eeeeee" | |- bgcolor="#eeeeee" style="vertical-align: top" | ||
| Init | | Init | ||
| 0x10 0x04 0x0d | | 0x10 0x04 0x0d | ||
| 0x05 0x0d | | 0x05 0x0d | ||
| It's unclear what exactly this command does. Data transfers also seem to work fine when it is omitted. | |||
|- bgcolor="#eeeeee" style="vertical-align: top" | |||
| Get measurement | |||
| 0x30 '''0xZZ''' 0x0d | |||
| ''0xAA 0xBB'' '''0xZZ+1''' 0x0d | |||
| For a given command with '''0xZZ''' value (0-255), the device returns '''0xZZ + 1''' as part of the reply (a simple "sequence number" mechanism which is apparently meant for the host as error-checking mechanism). | |||
|} | |||
=== Data reply === | |||
The first two bytes of the reply to the "get measurement" command (''0xAA 0xBB'') have the following format: | |||
{| border="0" width="95%" style="font-size: smaller" class="alternategrey sortable sigroktable" | |||
|- | |||
! style="width: 3em;" | Byte | |||
! style="width: 3em;" | Bit | |||
! Value | |||
|- | |||
| 0 | |||
| | |||
| | |||
|- | |||
| | | | ||
| 7 | |||
| ''A/C measurement type''. 0: '''A''', 1: '''C'''. | |||
|- | |- | ||
| | | | ||
| 6 | |||
| ''Unknown/unused''. | |||
|- | |||
| | |||
| 5-4 | |||
| ''Level''. 00: '''40''', 01: '''60''', 10: '''80''', 11: '''100''' | |||
|- | |||
| | |||
| 3 | |||
| ''Slow/Fast measurement mode''. 0: '''Fast''', 1: '''Slow'''. | |||
|- | |||
| | |||
| 2-0 | |||
| ''Value[10..8]''. | |||
|- | |||
| 1 | |||
| | |||
| | |||
|- | |||
| | |||
| 7-0 | |||
| ''Value[7..0]''. | |||
|} | |} | ||
The actual measurement value seems to span 11 bits, and is encoded in BCD format. Example: If ''Value[10..0]'' is '''436''' (decimal), the corresponding measurement value is '''43.6'''. | |||
=== Notes === | |||
The "max" mode on the device (which always keeps showing the highest measured value since the "MAX" button was pressed) only affects the value shown on the display. The values returned via USB upon the "get measurement" command, always show the actual / current value, not the "max" one shown on the display. |
Revision as of 22:53, 25 August 2012
The Tondaj SL-814 is a sound level meter with USB connectivity.
See Tondaj SL-814/Info for more details (such as lsusb -vvv output) about the device.
Hardware
- Atmel ATmega8/L
- ...
Photos
Protocol
The device has a mini-USB connector for PC connectivity. It ships with a Prolific USB-to-serial cable (i.e. the Prolific chip is inside the cable) which can be attached to that connector.
The device accepts a simple command-based protocol over the (virtual) serial port, using a baudrate of 9600 baud, with 8e1 settings (8 data bits, even parity, one stop bit).
Commands / replies
Commands and replies can consist of multiple bytes, and always end with 0x0d.
Name | Command | Reply | Comments |
---|---|---|---|
Init | 0x10 0x04 0x0d | 0x05 0x0d | It's unclear what exactly this command does. Data transfers also seem to work fine when it is omitted. |
Get measurement | 0x30 0xZZ 0x0d | 0xAA 0xBB 0xZZ+1 0x0d | For a given command with 0xZZ value (0-255), the device returns 0xZZ + 1 as part of the reply (a simple "sequence number" mechanism which is apparently meant for the host as error-checking mechanism). |
Data reply
The first two bytes of the reply to the "get measurement" command (0xAA 0xBB) have the following format:
Byte | Bit | Value |
---|---|---|
0 | ||
7 | A/C measurement type. 0: A, 1: C. | |
6 | Unknown/unused. | |
5-4 | Level. 00: 40, 01: 60, 10: 80, 11: 100 | |
3 | Slow/Fast measurement mode. 0: Fast, 1: Slow. | |
2-0 | Value[10..8]. | |
1 | ||
7-0 | Value[7..0]. |
The actual measurement value seems to span 11 bits, and is encoded in BCD format. Example: If Value[10..0] is 436 (decimal), the corresponding measurement value is 43.6.
Notes
The "max" mode on the device (which always keeps showing the highest measured value since the "MAX" button was pressed) only affects the value shown on the display. The values returned via USB upon the "get measurement" command, always show the actual / current value, not the "max" one shown on the display.