The ATMOS22 Ultrasonic Anemometer is designed for continuous monitoring of wind speed and direction
(see Measurement Specifications). Ultra-low power consumption and a robust, no moving parts design that
prevents errors because of wear or fouling, make the ATMOS22 ideal for long-term, remote installations.
NOTE: The ATMOS22 replaces the DS-2 (discontinued) and the outputs and order are not the same as the DS-2. Any DS-2 replaced by
the ATMOS 22 will require data acquisition system reprogramming based on information located in the tech note Integrators replacing
• Tilt sensor informs user of out-of-level conditions
• No configuration necessary
PURPOSE OF THIS GUIDE
METER provides the information in this integrator
guide to help ATMOS22 Ultrasonic Anemometer
customers establish communication between these
sensors and their data acquisition equipment or
field data loggers. Customers using data loggers
that support SDI-12 sensor communications
should consult the data logger user manual. METER
sensors are fully integrated into the METER system
of plug-and-play sensors, cellular-enabled data
loggers, and data analysis software.
COMPATIBLE FIRMWARE VERSIONS
This guide is compatible with firmware versions 1.07 or newer.
Figure 1 ATMOS22 Ultrasonic Anemometer
METER Group, Inc. USA
2365 NE Hopkins Court, Pullman, WA 99163
T +1.509.332.2756 F +1.509.332.5158
E [email protected] W metergroup.com
Page 2
SPECIFICATIONS
MEASUREMENT SPECIFICATIONS
Horizontal Wind Speed
Range0 –30 m/s
Resolution0.01 m/s
AccuracyThe greater of 0.3 m/s or 3%
of measurement
Wind Gust
Range0 –30 m/s
Resolution0.01 m/s
AccuracyThe greater of 0.3 m/s or 3%
of measurement
COMMUNICATION SPECIFICATIONS
Output
SDI-12 communication
PHYSICAL SPECIFICATIONS
Dimensions
Diameter 10 cm (3.94 in)
Height16 cm (6.30 in), includes rain
gauge filter
Operating Temperature Range
Minimum–50 °C
TypicalNA
Maximum60 °C
Wind Direction
Range0° –359°
Resolution1°
Accuracy±5°
Tilt
Range–90° to 90°
Resolution0.1°
Accuracy±1°
Data Logger Compatibility
METER ZL6, Em50, and EM60 data loggers or
any data acquisition systems capable of 3.6- to
15.0-VDC excitation and SDI-12 communication
Cable Length
5 m (standard)
75 m (maximum custom cable length)
NOTE: Contact Customer Support if nonstandard cable length
is needed.
Connector Types
3.5-mm stereo plug connector or stripped and
tinned wires
ELECTRICAL AND TIMING CHARACTERISTICS
Supply Voltage (VCC to GND)
Minimum3.6 VDC continuous
TypicalNA
Maximum15.0 VDC continuous
NOTE: The ATMOS 22 must be continuously powered to
workproperly.
NOTE: For the ATMOS 22 to meet digital logic levels specified
by SDI-12, it must be excited to 3.9 VDC or greater.
Digital Input Voltage (logic high)
Minimum2.8 V
Typical3.6 V
Maximum5.0 V
Digital Input Voltage (logic low)
Minimum–0.3 V
Typical0.0 V
Maximum0.8 V
Digital Output Voltage (logic high)
MinimumNA
Typical3.6 V
MaximumNA
NOTE: For the ATMOS 22 to meet digital logic levels specified
by SDI-12, it must be excited to 3.9 VDC or greater.
Power Line Slew Rate
Minimum1.0 V/ms
TypicalNA
MaximumNA
2
Page 3
Power (brown)
GND
Current Drain (during measurement)
Minimum0.2 mA
Typical8.0 mA
Maximum33.0 mA
Power Up Time (SDI-12, DDI disabled)
MinimumNA
Typical200 ms
MaximumNA
Current Drain (while asleep)
Minimum0.2 mA
Typical0.3 mA
Maximum0.4 mA
Power Up Time (SDI ready)—aRx! Commands
MinimumNA
Typical10 s
MaximumNA
Power Up Time (SDI ready)—Other Commands
MinimumNA
Typical130 ms
MaximumNA
Measurement Duration
MinimumNA
Typical110 ms
Maximum3,000 ms
COMPLIANCE
Manufactured under ISO 9001:2015
EM ISO/IEC 17050:2010 (CE Mark)
EQUIVALENT CIRCUIT AND CONNECTION TYPES
Refer to Figure 2 and Figure 3 to connect the ATMOS22 to a logger. Figure 2 provides a low-impedance variant
of the recommended SDI-12 Specification v1.3.
PIGTAIL CABLE
GND
DATA
Ground (bare)
Digital
communication (orange)
R1
510
NOTE: Some early ATMOS22 units may have the older Decagon
wiring scheme where the power supply is white, the digital out is red,
and the bare wire is ground.
STEREO CABLE
R2
Figure 2 Equivalent circuit diagram
C1
100K
220PF
Figure 3 Connection types
Ground
Digital communication
Power
SAFETY PRECAUTIONS
METER sensors are built to the highest standards, but misuse, improper protection, or improper installation
may damage the sensor and possibly void the warranty. Before integrating sensors into a sensor network,
followthe recommended installation instructions and implement safeguards to protect the sensor from
damaging interference.
SURGE CONDITIONS
Sensors have built-in circuitry that protects them against common surge conditions. Installations in
lightning-prone areas, however, require special precautions, especially when sensors are connected to a
well-grounded third-party logger.
Visit metergroup.com for articles containing more information.
3
Page 4
CABLES
Improperly protected cables can lead to severed cables or disconnected sensors. Cabling issues can be
caused by many factors, including rodent damage, driving over sensor cables, tripping over the cable, not
leaving enough cable slack during installation, or poor sensor wiring connections. To relieve strain on the
connections and prevent loose cabling from being inadvertently snagged, gather and secure the cable
traveling between the ATMOS 22 and the data acquisition device to the mounting mast in one or more places.
Install cables in conduit or plastic cladding when near the ground to avoid rodent damage. Tie excess cable to
the data logger mast to ensure cable weight does not cause sensor to unplug.
SENSOR COMMUNICATIONS
METER digital sensors feature a 3-wire interface following SDI-12 protocol for communicating
sensor measurements.
SDI12 INTRODUCTION
SDI-12 is a standards-based protocol for interfacing sensors to data loggers and data acquisition equipment.
Multiple sensors with unique addresses can share a common 3-wire bus (power, ground, and data). Two-way
communication between the sensor and logger is possible by sharing the data line for transmit and receive
as defined by the standard. Sensor measurements are triggered by protocol command. The SDI-12 protocol
requires a unique alphanumeric sensor address for each sensor on the bus so that a data logger can send
commands to and receive readings from specific sensors.
Download the SDI-12 Specification v1.3 to learn more about the SDI-12 protocol.
DDI SERIAL INTRODUCTION
The DDI serial protocol is the method used by the METER family of data loggers for collecting data from
the sensor. This protocol uses the data line configured to transmit data from the sensor to the receiver only
(simplex). Typically, the receive side is a microprocessor UART or a general-purpose IO pin using a bitbang
method to receive data. Sensor measurements are triggered by applying power to the sensor. When the
ATMOS22 is set to address 0, a DDI serial string is sent on power up, identifying the sensor.
INTERFACING THE SENSOR TO A COMPUTER
The serial signals and protocols supported by the sensor require some type of interface hardware to be
compatible with the serial port found on most computers (or USB-to-serial adapters). There are several
SDI-12 interface adapters available in the marketplace; however, METER has not tested any of these
interfaces and cannot make a recommendation as to which adapters work with METER sensors. METER data
loggers and the ZSC and PROCHECK handheld devices can operate as a computer-to-sensor interface for
making on-demand sensor measurements. For more information, please contact NORTH AMERICA.
METER SDI12 IMPLEMENTATION
METER sensors use a low-impedance variant of the SDI-12 standard sensor circuit (Figure 2). During the
power-up time, sensors output some sensor diagnostic information and should not be communicated with
until the power-up time has passed. After the power up time, the sensors are compatible with all commands
listed in the SDI-12 Specification v1.3 except for the continuous measurement commands (aR0–aR9 and aRC0–
aRC9). M, R, and C command implementations are found on page7.
Out of the factory, all METER sensors start with SDI-12 address 0 and print out the DDI serial startup string
during the power-up time. This can be interpreted by non-METER SDI-12 sensors as a pseudo-break condition
followed by a random series of bits.
The ATMOS22 will omit the DDI serial startup string (sensor identification) when the SDI-12 address is nonzero.
Changing the address to a nonzero address is recommended for this reason.
ATMOS22 INTERNAL MEASUREMENT SEQUENCE
Upon power up, the ATMOS 22 initializes an internal timer to 55. This internal timer is incremented by 1 every
second and resets to 0 after incrementing to 59. In addition, issuing an averaging command (aM!, aR0!, aR3!,
and aC!) resets this timer to 55.
While powered up, the ATMOS 22 takes wind and air temperature measurements every 10 s at internal timer
intervals of 0, 10, 20, 30, 40, 50 and logs these values internally. Orientation is measured every 60 s at the
internal timer interval of 4 and logged internally. The aR4! command will output instantaneous measurements
of theseparameters.
4
Page 5
The aM!, aR0!, aR3!, and aC! commands (and subsequent D commands when necessary) will compute and output
the averages, accumulations, or maximums of these measurements (and derived measurements) and reset
internal averaging counters and accumulators. Therefore, it is not necessary to oversample the ATMOS 22 and
compute averages, accumulations, and maximums in external data systems. Less frequent sampling has the
additional benefit of decreasing data acquisition systems and ATMOS 22 power consumption. If the aM!, aR0!,
aR3!, and aC! commands are issued more frequently than 2 times their measurement interval, the ATMOS22 will
not average the measurements and will output instantaneous values. The ATMOS 22 has two error codes
available—general error code –9999 and invalid wind measurement error code –9990.
SDI12 CONFIGURATION
Table1 lists the SDI-12 communication configuration.
Table1 SDI-12 communication configuration
Baud Rate
Start Bits
Data Bits
Parity Bits
Stop Bits
LogicInverted (active low)
1,200
1
7 (LSB first)
1 (even)
1
SDI12 TIMING
All SDI-12 commands and responses must adhere to the format in Figure 4 on the data line. Both the
command and response are preceded by an address and terminated by a carriage return line feed combination
and follow the timing shown in Figure 5.
STARTSTOPD0D1D2D3D4D5D6EP
Figure 4 Example SDI-12 transmission of the character 1 (0x31)
SENSORDATA LOGGER
Break
(at least 12 ms)
CommandResponse
Marking
(at least 8.33 ms)
Figure 5 Example data logger and sensor communication
Marking
(at least 8.33 ms)
Maximum time*Sensor must respond
within 15 ms
*Maximum time is dependent upon the amount of data returned for the command sent.
5
Page 6
COMMON SDI12 COMMANDS
This section includes tables of common SDI-12 commands that are often used in an SDI-12 system and the
corresponding responses from METER sensors.
IDENTIFICATION COMMAND aI!
The Identification command can be used to obtain a variety of detailed information about the connected
sensor. An example of the command and response is shown in Example 1, where the command is in bold and
the response follows the command.
Example 1 1I!113METER␣ ␣ ␣ATM22␣100631800001
Fixed
Parameter
1I!
11 Sensor address
132Indicates that the target sensor supports SDI-12 Specification v1.3
METER␣ ␣ ␣8Vendor identification string
ATM22␣6Sensor model string
Character
LengthDescription
3Data logger command
Request to the sensor for information from sensor address 1.
Prepended on all responses, this indicates which sensor on the bus is returning the
following information.
(METER and three spaces ␣ ␣ ␣ for all METER sensors)
This string is specific to the sensor type. For the ATMOS 22, the string is ATM22 ␣.
1003Sensor version
This number divided by 100 is the METER sensor version (e.g., 100 is version 1.00).
631800001≤13,
variable
Sensor serial number
This is a variable length field. It may be omitted for older sensors.
CHANGE ADDRESS COMMAND aAB!
The Change Address command is used to change the sensor address to a new address. All other commands
support the wildcard character as the target sensor address except for this command. All METER sensors
have a default address of 0 (zero) out of the factory. Supported addresses are alphanumeric (i.e., a–z, A–Z, and
0–9). An example output from a METER sensor is shown in Example 2, where the command is in bold and the
response follows the command.
Example 2 1A0!0
Fixed
Character
Parameter
1A0!
01 New sensor address.
LengthDescription
4Data logger command.
Request to the sensor to change its address from 1 to a new address of 0.
For all subsequent commands, this new address will be used by the target sensor.
ADDRESS QUERY COMMAND (?!)
While disconnected from a bus, the Address Query command can be used to determine which sensors are
currently being communicated with. Sending this command over a bus will cause a bus contention where all
the sensors will respond simultaneously and corrupt the data line. This command is helpful when trying to
isolate a failed sensor. Example 3 shows an example of the command and response where the command is in
bold and the response follows the command. The question mark (?) is a wildcard character that can be used in
place of the address with any command except the Change Address command.
6
Page 7
Example 3 ?!0
Parameter
?!
Fixed
Character
LengthDescription
2Data logger command.
Request for a response from any sensor listening on the data line.
0
1 Sensor address.
Returns the sensor address to the currently connected sensor.
COMMAND IMPLEMENTATION
The following tables list the relevant Measurement (M), Continuous (R), and Concurrent (C) commands and
subsequent Data (D) commands when necessary.
MEASUREMENT COMMANDS IMPLEMENTATION
Measurement (M) commands are sent to a single sensor on the SDI-12 bus and require that subsequent Data
(D) commands are sent to that sensor to retrieve the sensor output data before initiating communication with
another sensor on the bus.
Please refer to Table2 and Table3 for an explanation of the command sequence and see Table9 for an
explanation of response parameters.
Table2 aM! command sequence
CommandResponse
This command reports average or maximum values.
aM!
aD0!
aD1!a±<airTemperature>
NOTE: The measurement and corresponding data commands are intended to be used back to back. After a measurement command is
processed by the sensor, a service request a <CR><LF> is sent from the sensor signaling the measurement is ready. Either wait until ttt
seconds have passed or wait until the service request is received before sending the data commands. See the SDI-12 Specifications v1.3
document for more information.
atttn
a+<windSpeed>+<windDirection>+<gustWindSpeed>
Table3 aM1! command sequence
CommandResponse
This command reports instantaneous values.
aM1!
aD0!
NOTE: The measurement and corresponding data commands are intended to be used back to back. After a measurement command is
processed by the sensor, a service request a <CR><LF> is sent from the sensor signaling the measurement is ready. Either wait until ttt
seconds have passed or wait until the service request is received before sending the data commands. See the SDI-12 Specifications v1.3
document for more information.
atttn
a±<xOrientation>±<yOrientation>+<nullValue>
CONTINUOUS MEASUREMENT COMMANDS IMPLEMENTATION
Continuous (R) measurement commands trigger a sensor measurement and return the data automatically
after the readings are completed without needing to send a D command.
The aR3! and aR4! commands must be used at intervals of 10s or greater for the response to be returned
within 15 ms as defined in the SDI-12 standard.
Please refer to Table4 through Table7 for an explanation of the command sequence and see Table9 for an
explanation of response parameters.
7
Page 8
Table4 aR0! measurement command sequence
CommandResponse
This command reports average or maximum values.
aR0!
NOTE: This command does not adhere to the SDI-12 response timing. See METER SDI-12 Implementation for more information.
NOTE: This command does not adhere to the SDI-12 response timing. See METER SDI-12 Implementation for more information.
a±<xOrientation>±<yOrientation>±<nullValue>
Table6 aR3! measurement command sequence
CommandResponse
This command reports average or maximum values.
Do not issue this command more frequently than every 20 s or else the ATMOS22 measurements may be compromised. Please see
ATMOS22 Internal Measurement Sequence for more details.
aR3!
NOTE: This command does not adhere to the SDI-12 response format. However, it does adhere to SDI-12 timing if it is sent at intervals ≥10 s.
The values in this command are space delimited. As such, a + sign is not assigned between values, and a - sign is only present if the value is
negative. See METER SDI-12 Implementation for more information.
NOTE: This command does not adhere to the SDI-12 response for mat. The values in this command are space delimited. As such, a + sign is
not assigned between values, and a - sign is only present if the value is negative. See METER SDI-12 Implementation for more information.
Concurrent (C) measurement commands are typically used with sensors connected to a bus. Measurements
are initiated with a C command and subsequent D commands are sent to the sensor to retrieve the readings.
Please refer to Table8 for an explanation of the command sequence and Table9 for an explanation of
response parameters.
Table8 aC! measurement command sequence
CommandResponse
This command reports average or maximum values.
Please see ATMOS22 Internal Measurement Sequence for more details.
NOTE: Please see the SDI-12 Specifications v1.3 document for more information.
atttnn
8
Page 9
PARAMETERS
Table9 Parameter Descriptions
ParameterUnitDescription
±
—Positive or negative sign denoting sign of the next value
a
n
nn
ttt
<TAB>
<CR>
<LF>
<NorthWindSpeed>
<EastWindSpeed>
<windSpeed>
<gustWindSpeed>
<windDirection>
<airTemperature>
<xOrientation>
<yOrientation>
<nullValue>
<sensortype>
<Checksum>
—SDI-12 address
—Number of measurements (fixed width of 1)
—Number of measurements with leading zero if necessary (fixed width of 2)
sMaximum time measurement will take (fixed width of 3)
—Tab character
—Carriage return character
—Line feed character
m/sWind speed from the northerly direction (negative values denote southerly direction)
(average since the last measurement or instantaneous value depending on SDI-12
command used)
m/sWind speed from the easterly direction (negative values denote westerly direction)
(average since the last measurement or instantaneous value depending on SDI-12
command used)
m/sCombined wind speed magnitude of the <NorthWindSpeed> and <EastWindSpeed> (average
since the last measurement or instantaneous value depending on SDI-12 command used)
m/sMaximum measured <windSpeed> since the last measurement
°Wind heading clockwise from north reference
(average since the last measurement or instantaneous value depending on SDI-12
command used)
°CAir temperature (not a true air temperature as it is not corrected for solar radiation)
(average since the last measurement or instantaneous value depending on SDI-12
command used)
°
X orientation angle (0 is level) (last measured value)
°
Y orientation angle (0 is level) (last measured value)
—This parameter is reported as 0. Previous firmware versions reported a compass heading,
which has been removed.
—ASCII character denoting the sensor type
For ATMOS 22, the character is the right square bracket ] character
—METER serial checksum
<CRC>
—METER serial 6-bit CRC
9
Page 10
SERIAL CHECKSUM
These checksums are used in the continuous commands R3 and R4. The legacy checksum is computed from the
start of the transmission to the sensor identification character, excluding the sensor address.
Legacy checksum example input is <TAB>0.26 1.27 0.37 23.1 3.2 4.8 0<CR>\Hg and the resulting checksum
output is H.
uint8_t LegacyChecksum(const char * Response)
{
uint16_t length;
uint16_t i;
uint16_t sum = 0;
// Finding the length of the response string
length = strlen(response);
// Adding characters in the response togetherfor( i = 0; i < length; i++ )
{
sum += response[i];
if(response[i] == '\r')
{
// Found the beginning of the meta data section of the responsebreak;
}
}
// Include the sensor type into the checksum
sum += response[++i];
// Convert checksum to a printable character
sum = sum % 64 + 32;
return sum;
}
10
Page 11
The more robust CRC6, if available, utilizes the CRC-6-CDMA2000-A polynomial with the value 48 added to the
results to make this a printable character and is computed from the start of the transmission to the legacy
checksum character, excluding the senor address.
CRC6 checksum example input is <TAB>0.26 1.27 0.37 23.1 3.2 4.8 0<CR>\Hg and the resulting checksum is
the character g.
unit8_t CRC6_Offset (const char *buffer)
{
uint16_t byte;
uint16_t i;
uint16_t bytes;
uint8_t bit;
uint8_t crc = 0xfc; // Set upper 6 bits to 1’s
// Calculate total message length -- updated once the meta data section is found
bytes = strlen(buffer);
// Loop through all the bytes in the bufferfor(byte = 0; byte < bytes; byte++)
{
// Get the next byte in the buffer and XOR it with the crc
crc ^= buffer[byte];
// Loop through all the bits in the current bytefor(bit = 8; bit > 0; bit--)
{
// If the uppermost bit is a 1...if(crc & 0x80)
{
// Shift to the next bit and XOR it with a polynomial
crc = (crc << 1) ^ 0x9c;
}
else
{
// Shift to the next bit
crc = crc << 1;
}
}
if(buffer[byte] == '\r')
{
// Found the beginning of the meta data section of the response
// both sensor type and legacy checksum are part of the crc6
// this requires only two more iterations of the loop so reset "bytes"
// bytes is incremented at the beginning of the loop, so 3 is added
bytes = byte + 3;
}
}
// Shift upper 6 bits down for crc
crc = (crc >> 2);
// Add 48 to shift crc to printable character avoiding \r \n and !return (crc + 48);
}
11
Page 12
CUSTOMER SUPPORT
NORTH AMERICA
Customer service representatives are available for questions, problems, or feedback Monday through Friday,
7:00 am to 5:00 pm Pacific time.