www.sensirion.com Preliminary Version 0.9 D1 November 2018 1/20
Datasheet SPS30
Particulate Matter Sensor for Air Quality Monitoring and Control
Unique long-term stability
Advanced particle size binning
Superior accuracy in
mass-concentration sensing
Small, ultra-slim package
Fully calibrated digital output
Product Summary
The SPS30 Particulate Matter (PM) sensor is a technological breakthrough in optical PM sensors. Its
measurement principle is based on laser scattering and makes use of Sensirion’s innovative contamination-
resistance technology. This technology, together with high-quality and long-lasting components, enables
accurate measurements from its first operation and throughout its lifetime of more than eight years. In addition,
Sensirion’s advanced algorithms provide superior accuracy for different PM types and higher-resolution particle
size binning, opening up new possibilities for the detection of different sorts of environmental dust and other
particles. With dimensions of only 41 x 41 x 12 mm3, it is also the perfect solution for applications where size is
of paramount importance, such as wall-mounted or compact air quality devices.
Content
1 Particulate Matter Sensor Specifications 2
2 Electrical Specifications 3
3 Hardware Interface Specifications 4
4 Operation and Communication through the UART Interface 5
5 Operation and Communication through the I2C Interface 11
6 Technical Drawings 17
7 Shipping Package 18
8 Ordering Information 18
9 Important Notices 19
10 Headquarters and Subsidiaries 20
www.sensirion.com Preliminary Version 0.9 D1 November 2018 2/20
1 Particulate Matter Sensor Specifications
Default conditions of 25 °C and 5 V supply voltage apply to values in the table below, unless otherwise stated.
Parameter
Conditions
Value
Units
Mass concentration accuracy1
0 to 100 μg/m3
10
μg/m3
100 to 1’000 μg/m3
10
%
Mass concentration range
-
0 to 1’000
μg/m3
Mass concentration resolution
-
1
μg/m3
Mass concentration size range2
PM1.0
0.3 to 1.0
μm
PM2.5
0.3 to 2.5
μm
PM4
0.3 to 4.0
μm
PM10
0.3 to 10.0
μm
Number concentration range
-
0 to 3’000
1/cm3
Number concentration size range2
PM0.5
0.3 to 0.5
μm
PM1.0
0.3 to 1.0
μm
PM2.5
0.3 to 2.5
μm
PM4
0.3 to 4.0
μm
PM10
0.3 to 10.0
μm
Sampling interval
-
1
s
Start-up time
-
< 8
s
Lifetime3
24 h/day operation
> 8
years
Acoustic emission level
0.2 m
25
dB(A)
Weight
-
26
g
Table 1: Particulate Matter sensor specifications.
Figure 1: Typical consistency tolerance for PM2.5 in µg/m3
between 0-100 µg/m3.
1
Deviation to TSI DustTrak™ DRX Aerosol Monitor 8533 reference. PM2.5 accuracy is verified for every sensor after calibration using a defined potassium chloride
particle distribution. Ask Sensirion for further details on accuracy characterization procedures.
2
PMx defines particles with a size smaller than “x” micrometers (e.g., PM2.5 = particles smaller than 2.5 μm).
3
Validated with accelerated aging tests. Ask Sensirion for further details on accelerated aging validation procedures. Lifetime might vary depending on different
operating conditions.
Figure 2: Typical consistency tolerance for PM2.5 in %
between 100-1000 µg/m3.
±0
±5
±10
±15
±20
±25
±30
±35
±40
±45
±50
-10 0 10 20 30 40 50 60
ΔM.C.
[%]
Temperature C]
Typical Consistency
www.sensirion.com Preliminary Version 0.9 D1 November 2018 3/20
1.1 Recommended Operating Conditions
The sensor shows best performance when operated within recommended normal temperature and humidity range of
10 40 °C and 20 80 %RH, respectively.
2 Electrical Specifications
2.1 Electrical Characteristics
Default conditions of 25 °C and 5 V supply voltage apply to values in the table below, unless otherwise stated.
Parameter
Conditions
Value
Units
Supply voltage
-
4.5 to 5.5
V
Idle current
Idle-Mode
< 8
mA
Average supply current
Measurement-Mode
60
mA
Max. supply current
First ~200 ms after start of Measurement-Mode
80
mA
Input high level voltage (VIH)
-
> 2.31
V
Input low level voltage (VIL)
-
< 0.99
V
Output high level voltage (VOH)
-
> 2.9
V
Output low level voltage (VOL)
-
< 0.4
V
Table 2: Electrical specifications.
2.2 Absolute Minimum and Maximum Ratings
Stress levels beyond those listed in Table 3 may cause permanent damage to the device. These are stress ratings only
and functional operation of the device at these conditions cannot be guaranteed. Exposure to the absolute maximum
rating conditions for extended periods may affect the reliability of the device.
Parameter
Rating
Supply voltage VDD
-0.3 to 5.5 V
Interface Select SEL
-0.3 to 4.0 V
I/O pins (RX/SDA, TX/SCL)
-0.3 to 5.5 V
Max. current on any I/O pin
±16 mA
Operating temperature range
-10 to +60 °C
Storage temperature range
-40 to +70 °C
Operating humidity range
0 to 95 %RH (non-condensing)
ESD CDM (charge device model)4
±4 kV contact, ±8 kV air
Electromagnetic field immunity to high frequencies5
3 V/m (80 MHz to 1000 MHz)
High frequency electromagnetic emission6
30 dB 30 MHz to 230 MHz;
37 dB 230 MHz to 1000 MHz
Low frequency electromagnetic emission7
30-40 dB 0.15 MHz to 30 MHz
Table 3: Absolute minimum and maximum ratings.
4
According to IEC 61000-4-2.
5
According to IEC 61000-4-3.
6
According to CISPR 14.
7
According to CISPR 22.
www.sensirion.com Preliminary Version 0.9 D1 November 2018 4/20
3 Hardware Interface Specifications
The interface connector is located at the side of the sensor opposite to the air inlet/outlet. Corresponding female plug is
ZHR-5 from JST Sales America Inc. In Figure 3 a description of the pin layout is given.
Pin
Name
Description
Comments
1
VDD
Supply voltage
5V ± 10%
2
RX
UART: Receiving pin for
communication
TTL 5V and
LVTTL 3.3V
compatible
SDA
I2C: Serial data input / output
3
TX
UART: Transmitting pin for
communication
TTL 5V and
LVTTL 3.3V
compatible
SCL
I2C: Serial clock input
4
SEL
Interface select
Leave floating to
select UART
Pull to GND to
select I2C
5
GND
Ground
Figure 3 The communication interface connector is
located at the side of the sensor opposite to the air outlet.
Table 4 SPS30 pin assignment.
The SPS30 offers both a UART
8
and an I2C interface. For connection cables longer than 20 cm we recommend using
the UART interface, due to its intrinsic robustness against electromagnetic interference.
3.1 Physical Layer
The SPS30 has separate RX and TX lines with unipolar logic levels. A transmitted byte looks as in Figure 4.
Bit 0 Bit 1 Bit 2 Bit 3 Bit 4 Bit 5 Bit 6 Bit 7
Start
Bit Stop
Bit
Bit Time
(1/Baudrate)
Figure 4 Transmitted byte.
8
Universal Asynchronous Receiver Transmitter.
Pin 1 Pin 5
www.sensirion.com Preliminary Version 0.9 D1 November 2018 5/20
4 Operation and Communication through the UART Interface
SPS30
Connector
VDD (1)
RX (2)
SEL (4)
TX (3)
GND (5)
VDD
Master TX
Master RX
NC
The following UART settings have to be used:
Baud Rate: 115’200 bit/s
Data Bits: 8
Parity: None
Stop Bit: 1
Figure 5 Typical UART application circuit.
4.1 SHDLC Frame Layer
On top of the UART interface, the SPS30 uses the very powerful and easy-to-implement SHDLC
9
protocol. It is a serial
communication protocol based on a master/slave architecture. The SPS30 acts as the slave device.
Data is transferred in logical units called frames. Every transfer is initiated by the master sending a MOSI
10
frame. The
slave will respond to the MOSI frame with a slave response, or MISO
11
frame. The two types of frames are shown in
Figure 6.
Start
(0x7E) ADR
(1 Byte) CMD
(1 Byte) L
(1 Byte) TX Data
0...255 Bytes CHK
(1 Byte) Stop
(0x7E)
Frame Content
MOSI Frame
Start
(0x7E) ADR
(1 Byte) CMD
(1 Byte) L
(1 Byte) RX Data
0...255 Bytes CHK
(1 Byte) Stop
(0x7E)
Frame Content
MISO Frame State
(1 Byte)
Figure 6 MOSI and MISO frames structure.
Start and Stop Byte (0x7E)
The 0x7E character is sent at the beginning and at the end of the frame to signalize frame start and stop. If this byte
(0x7E) occurs anywhere else in the frame, it must be replaced by two other bytes (byte-stuffing). This also applies to the
characters 0x7D, 0x11 and 0x13. Use Table 5 for byte-stuffing.
Original data byte
Transferred data bytes
0x7E
0x7D, 0x5E
0x7D
0x7D, 0x5D
0x11
0x7D, 0x31
0x13
0x7D, 0x33
Table 5 Reference table for byte-stuffing.
Example: Data to send = [0x43, 0x11, 0x7F] Data transmitted = [0x43, 0x7D, 0x31, 0x7F].
9
Sensirion High-Level Data Link Control.
10
Master Out Slave In. Frame direction from master to slave.
11
Master In Slave Out. Frame direction from slave to master.
www.sensirion.com Preliminary Version 0.9 D1 November 2018 6/20
Address
The slave device address is always 0.
Command
In the MOSI frame the command tells the device what to do with the transmitted data. In the MISO frame, the slave just
returns the received command.
Length
Length of the “TX Data” or “RX Data” field (before byte-stuffing).
State
The MISO frame contains a state byte, which allows the master to detect communication and execution errors. The first
bit is reserved for future use. Figure 7 shows the composition of the Status byte.
b7
b6
b0
0
Execution error code
Figure 7 Status byte structure.
The execution error code signalizes all errors which occur while processing the frame or executing the command. The
following table shows the error codes which can be reported from the device. Note that some of these errors are system
internal errors which require additional knowledge to be understood. In case of a problem, they will help Sensirion to
localize and solve the issue.
Error Code
Meaning
dec
hex
0
0x00
No error
1
0x01
Wrong data length for this command (too much or little data)
2
0x02
Unknown command
3
0x03
No access right for command
4
0x04
Illegal command parameter or parameter out of allowed range
40
0x28
Internal function argument out of range
67
0x43
Command not allowed in current state
Table 6 Reference table for error codes.
Data
The data has a usable size of [0…255] bytes (original data, before byte-stuffing). The meaning of the data content
depends on the command.
Checksum
The checksum is built before byte-stuffing and checked after removing stuffed bytes from the frame. The checksum is
defined as follows:
1. Sum all bytes between start and stop (without start and stop bytes).
2. Take the LSB of the result and invert it. This will be the checksum.
For a MOSI frame use Address, Command, Length and Data to calculate the checksum.
For a MISO frame use Address, Command, State, Length and Data to calculate the checksum.
www.sensirion.com Preliminary Version 0.9 D1 November 2018 7/20
Example (MOSI frame without start/stop and without byte-stuffing):
Adr
CMD
L
Tx Data 2 Bytes
CHK
0x00
0x00
0x02
0x01, 0x03
0xF9
The checksum is calculated as follows:
Adr
0x00
CMD
0x00
L
0x02
Data 0
0x01
Data 1
0x03
Sum
0x06
LSB of Sum
0x06
Inverted (=Checksum)
0xF9
4.2 UART / SHDLC Commands
The following table shows an overview of the available SHDLC commands.
CMD
Command
Read / Write / Execute
0x00
Start Measurement
Execute
0x01
Stop Measurement
Execute
0x03
Read Measured Value
Read
0x80
Read/Write Auto Cleaning Interval
Read / Write
0x56
Start Fan Cleaning
Execute
0xD0
Device Information
Read
0xD3
Reset
Execute
Table 7 Reference table for SHDLC commands.
4.2.1 Start Measurement (CMD: 0x00)
Starts the measurement
12
. After power up, the module is in Idle-Mode. Before any measurement values can be read, the
Measurement-Mode needs to be started using this command.
MOSI Data:
Byte #
Datatype
Description
0
uint8
Subcommand, this value must be set to 0x01
1
uint8
Measurement-Mode, this value must be set to 0x03
MISO Data:
No data.
Example Frames:
MOSI
0x7E 0x00 0x00 0x02 0x01 0x03 0xF9 0x7E
MISO
Empty response frame:
0x7E 0x00 0x00 0x00 0x00 0xFF 0x7E
12
This command can only be executed in Idle-Mode.
www.sensirion.com Preliminary Version 0.9 D1 November 2018 8/20
4.2.2 Stop Measurement (CMD: 0x01)
Stops the measurement
13
. Use this command to return to the initial state (Idle-Mode).
MOSI Data:
No data.
MISO Data:
No data.
Example Frames:
MOSI
0x7E 0x00 0x01 0x00 0xFE 0x7E
MISO
0x7E 0x00 0x01 0x00 0x00 0xFE 0x7E
4.2.3 Read Measured Values (CMD: 0x03)
Reads the measured values from the module. This command can be used to poll for new measurement values. If no
new measurements are available, the module returns an empty response frame. The default measurement interval is
1 second.
MOSI Data:
No data.
MISO Data:
If no new measurement values are available: no data.
If new measurement values are available:
Byte #
Datatype
Description
0..3
float (IEEE754)
Mass Concentration PM1.0 [µg/m³]
4..7
float (IEEE754)
Mass Concentration PM2.5 [µg/m³]
8..11
float (IEEE754)
Mass Concentration PM4.0 [µg/m³]
12..15
float (IEEE754)
Mass Concentration PM10 [µg/m³]
16..19
float (IEEE754)
Number Concentration PM0.5 [#/cm³]
20..23
float (IEEE754)
Number Concentration PM1.0 [#/cm³]
24..27
float (IEEE754)
Number Concentration PM2.5 [#/cm³]
28..31
float (IEEE754)
Number Concentration PM4.0 [#/cm³]
32..35
float (IEEE754)
Number Concentration PM10 [#/cm³]
36..39
float (IEEE754)
Typical Particle Size [µm]
Example Frames:
MOSI
0x7E 0x00 0x03 0x00 0xFC 0x7E
MISO
Empty response frame:
0x7E 0x00 0x03 0x00 0x00 0xFC 0x7E
Or response frame with new measurement values:
0x7E 0x00 0x03 0x00 0x28 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00 0x00
0x00 0x00 0x00 0xD4 0x7E
13
This command can only be executed in Measurement-Mode.
www.sensirion.com Preliminary Version 0.9 D1 November 2018 9/20
4.2.4 Read/Write Auto Cleaning Interval (CMD: 0x80)
Reads/Writes the interval [s] of the periodic fan-cleaning. When the module is in Measurement-Mode an automatic
fan-cleaning procedure will be triggered periodically following a defined cleaning interval. This will accelerate the fan to
maximum speed for 10 seconds in order to blow out the dust accumulated inside the fan.
Important notes:
Measurement values are not updated while the fan-cleaning is running.
Set the interval to 0 to disable the automatic cleaning.
Once set, the interval is stored permanently in the non-volatile memory.
The default cleaning interval is set to 604’800 seconds (i.e., 168 hours or 1 week).
If the sensor is switched off, the time counter is reset to 0. Make sure to trigger a cleaning cycle at least every
week if the sensor is switched off and on periodically (e.g., once per day).
MOSI Data:
Read Auto Cleaning Interval:
Byte #
Datatype
Description
0
uint32
Subcommand, this value must be set to 0x00
Write Auto Cleaning Interval:
Byte #
Datatype
Description
0
uint8
Subcommand, this value must be set to 0x00
1..4
uint32
Interval in seconds
MISO Data:
Read Auto Cleaning Interval:
Byte #
Datatype
Description
0..3
uint8
Interval in seconds
Write Auto Cleaning Interval: no data.
Example Frames:
MOSI
Read Auto Cleaning Interval:
0x7E 0x00 0x80 0x01 0x00 0x7D 0x5E 0x7E
Write Auto Cleaning Interval to 0 (disable):
0x7E 0x00 0x80 0x05 0x00 0x00 0x00 0x00 0x00 0x7A 0x7E
MISO
Response frame for Read Auto Cleaning Interval”:
0x7E 0x00 0x80 0x00 0x04 0x00 0x00 0x00 0x00 0x7B 0x7E
Response frame for Write Auto Cleaning Interval”:
0x7E 0x00 0x80 0x00 0x00 0x7F 0x7E
4.2.5 Start Fan Cleaning (CMD: 0x56)
Starts the fan-cleaning manually
14
. For more details, note the explanations given for the “Read/Write Auto Cleaning
Interval” command.
MOSI Data:
No data.
14
This command can only be executed in Measurement-Mode.
www.sensirion.com Preliminary Version 0.9 D1 November 2018 10/20
MISO Data:
No data.
Example Frames:
MOSI
0x7E 0x00 0x56 0x00 0xA9 0x7E
MISO
0x7E 0x00 0x56 0x00 0x00 0xA9 0x7E
4.2.6 Device Information (CMD 0xD0)
This command returns the requested device information. It is defined as a string value with a maximum length of 32
ASCII characters (including terminating null character).
MOSI Data:
Byte #
Datatype
Description
0
uint8
This parameter defines which information is requested:
0x01: Product Name
0x02: Article Code
0x03: Serial Number
MISO Data:
Byte #
Datatype
Description
0…n
string
Requested Device Information as null-terminated ASCII string. The size of the string is limited to 32 ASCII
characters (including null character).
Example Frames:
Product Name:
MOSI
0x7E 0x00 0xD0 0x01 0x01 0x2D 0x7E
MISO
0x7E 0x00 0xD0 0x00 0x0D 0x48 0x65 0x6C 0x6C 0x6F 0x20 0x57 0x6F 0x72
0x6C 0x64 0x21 0x00 0xE5 0x7E
Article Code:
MOSI
0x7E 0x00 0xD0 0x01 0x02 0x2C 0x7E
MISO
0x7E 0x00 0xD0 0x00 0x0C 0x78 0x2D 0x78 0x78 0x78 0x78 0x78 0x78 0x2D
0x78 0x78 0x00 0x91 0x7E
Serial Number:
MOSI
0x7E 0x00 0xD0 0x01 0x03 0x2B 0x7E
MISO
0x7E 0x00 0xD0 0x00 0x15 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30
0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x30 0x00 0x5A 0x7E
4.2.7 Device Reset (CMD: 0xD3)
Soft reset command. After calling this command, the module is in the same state as after a Power-Reset. The reset is
executed after sending the MISO response frame.
MOSI Data:
No data.
MISO Data:
No data.
www.sensirion.com Preliminary Version 0.9 D1 November 2018 11/20
Example Frames:
MOSI
0x7E 0x00 0xD3 0x00 0x2C 0x7E
MISO
0x7E 0x00 0xD3 0x00 0x00 0x2C 0x7E
5 Operation and Communication through the I2C Interface
Rp Rp
SPS30
Connector
VDD (1)
SDA (2)
SEL (4)
SCL (3)
GND (5)
VDD
SDA
SCL
Usage:
I2C address: 0x69
Max. speed: standard mode, 100 kbit/s
Clock stretching: not used
Both SCL and SDA lines are open drain I/Os. They should
be connected to external pull-up resistors (e.g. Rp = 10 kΩ).
Important notice: in order to correctly select I2C as
interface, the interface select (SEL) pin must be pulled to
GND before or at the same time the sensor is powered up.
Figure 8 Typical I2C application circuit.
Some considerations should be made about the use of the I2C interface. I2C was originally designed to connect two chips
on a PCB. When the sensor is connected to the main PCB via a cable, particular attention must be paid to
electromagnetic interference and crosstalk. Use as short as possible (< 10 cm) and/or well shielded connection cables.
We recommend using the UART interface instead, whenever possible: it is more robust against electromagnetic
interference, especially with long connection cables.
5.1 Transfer Types
Set Pointer
Sets the 16-bit address pointer without writing data to the sensor module. It is used to execute commands, which do not
require additional parameters.
SDA
1 9 1 9 1 99
A6 A5 A4 A3 A2 A1 A0
Write
ACK
P
14 P
13 P
12 P
11 P
10 P
9P
8
P
15
ACK
P
6P
5P
4P
3P
2P
1P
0
P
7
ACK
SCL
Pointer Address
S I2C Address
I2C Header
W A Pointer MSB A Pointer LSB A P
www.sensirion.com Preliminary Version 0.9 D1 November 2018 12/20
Set Pointer & Read Data
Sets the 16-bit address pointer and read data from sensor module. It is used to read sensor module information or
measurement results. The data is ready to read immediately after the address pointer is set. The sensor module transmits
the data in 2-byte packets, which are protected with a checksum.
SDA
1 9 1 9 1 99
A6 A5 A4 A3 A2 A1 A0
Write
ACK
P
14 P
13 P
12 P
11 P
10 P
9P
8
P
15
ACK
P
6P
5P
4P
3P
2P
1P
0
P
7
ACK
SCL
Pointer Address
S I2C Address
I2C Header
W A Pointer MSB A Pointer LSB A P
1
A6 A5 A4 A3 A2 A1 A0
Read
ACK
S Slave Address
I2C Header
R A
9
9
D
6D
5D
4D
3D
2D
1D
0
D
7
ACK
D
6D
5D
4D
3D
2D
1D
0
D
7
ACK
Read Data 0
Data 0 A
Data 1 AChecksum 0
1 9
C
6C
5C
4C
3C
2C
1C
0
C
7
ACK
Checksum
. . .
. . .
. . .
. . .
Read Data 1
9 1 9
D
6D
5D
4D
3D
2D
1D
0
D
7
ACK
D
6D
5D
4D
3D
2D
1D
0
D
7
ACK
Read Data (n-2)
1 9
C
6C
5C
4C
3C
2C
1C
0
C
7
NACK
Checksum
. . .
. . .
. . .
. . .
A Data (n-2) A Data (n-1) A PChecksum A
. . .
9 1
1
Read Data (n-1)
It is allowed to read several times in succession without setting the address pointer again. This reduces the protocol
overhead for periodical reading of the measured values.
Set Pointer & Write Data
Sets the 16-bit address pointer and writes data to the sensor module. It is used to execute commands, which require
additional parameters. The data must be transmitted in 2-byte packets which are protected by a checksum.
SDA
1 9 1 9 1 9 1 9 1 9
A6 A5 A4 A3 A2 A1 A0
Write
ACK
P
14 P
13 P
12 P
11 P
10 P
9P
8
P
15
ACK
P
6P
5P
4P
3P
2P
1P
0
P
7
ACK
D
6D
5D
4D
3D
2D
1D
0
D
7
ACK
D
6D
5D
4D
3D
2D
1D
0
D
7
ACK
SCL
Pointer Address Write Data 0
S Slave Address
I2C Header
W A Pointer MSB A Pointer LSB A Data 0 A Data 1 A Checksum A
1 9
C
6C
5C
4C
3C
2C
1C
0
C
7
ACK
Checksum
1 9 1 9
D
6D
5D
4D
3D
2D
1D
0
D
7
ACK
D
6D
5D
4D
3D
2D
1D
0
D
7
ACK
Write Data (n-2)
1 9
C
6C
5C
4C
3C
2C
1C
0
C
7
ACK
Checksum
. . .
. . .
. . .
. . .
Data (n-2) A Data (n-1) A PChecksum A
. . .
. . .
Write Data 1
Write Data (n-1)
www.sensirion.com Preliminary Version 0.9 D1 November 2018 13/20
5.2 Checksum Calculation
The Read and Write Commands transmit the data in 2-byte packets, followed by an 8-bit checksum. The checksum is
calculated as follows:
Property
Value
Name
CRC-8
Protected Data
read and/or write data
Width
8 bit
Polynomial
0x31 (x^8 + x^5 + x^4 + 1)
Initialization
0xFF
Reflect Input
false
Reflect Output
false
Final XOR
0x00
Example
CRC(0xBEEF) = 0x92
Please note that the checksums are used only for the 2-byte data packets. The command code itself already contains a
3-bit CRC and therefore no checksum must be appended to it.
5.3 I2C Commands
The following table shows an overview of the available I2C commands.
Address
Pointer
Command Name
Transfer Type
0x0010
Start Measurement
Set Pointer & Write Data
0x0104
Stop Measurement
Set Pointer
0x0202
Read Data-Ready Flag
Set Pointer & Read Data
0x0300
Read Measured Values
Set Pointer & Read Data
0x8004
Read/Write Auto Cleaning Interval
Set Pointer & Read/Write Data
0x5607
Start Fan Cleaning
Set Pointer
0xD025
Read Article Code
Set Pointer & Read Data
0xD033
Read Serial Number
Set Pointer & Read Data
0xD304
Reset
Set Pointer
Table 8 Reference table for I2C commands.
5.3.1 Start Measurement (0x0010)
Starts the measurement. After power up, the module is in Idle-Mode. Before any measurement values can be read, the
Measurement-Mode needs to be started using this command.
Transfer Type: Set Pointer & Write Data
Pointer Address: 0x0010
Write Data:
Byte #
Description
0
Measurement-Mode, this value must be set to 0x03
1
dummy byte, insert 0x00
2
Checksum for bytes 0, 1
uint8_t CalcCrc(uint8_t data[2]) {
uint8_t crc = 0xFF;
for(int i = 0; i < 2; i++) {
crc ^= data[i];
for(uint8_t bit = 8; bit > 0; --bit) {
if(crc & 0x80) {
crc = (crc << 1) ^ 0x31u;
} else {
crc = (crc << 1);
}
}
}
return crc;
}
www.sensirion.com Preliminary Version 0.9 D1 November 2018 14/20
5.3.2 Stop Measurement (0x0104)
Stops the measurement. Use this command to return to the initial state (Idle-Mode).
Transfer Type: Set Pointer
Pointer Address: 0x0104
5.3.3 Read Data-Ready Flag (0x0202)
This command can be used for polling to find out when new measurements are available. The pointer address only has
to be set once. Repeated read requests get the status of the Data-Ready Flag.
Transfer Type: Set Pointer & Read Data
Pointer Address: 0x0202
Read Data:
Byte #
Description
0
unused, always 0x00
1
Data-Ready Flag
0x00: no new measurements available
0x01: new measurements ready to read
2
Checksum for bytes 0, 1
5.3.4 Read Measured Values (0x0300)
Reads the measured values from the sensor module and resets the “Data-Ready Flag”. If the sensor module is in
Measurement-Mode, an updated measurement value is provided every second and the “Data-Ready Flag” is set. If no
synchronized readout is desired, the “Data-Ready Flag” can be ignored. The command “Read Measured Values” always
returns the latest measured values.
Transfer Type: Set Pointer & Read Data
Pointer Address: 0x0300
Read Data:
Byte #
Description
0, 1
Upper two bytes
big-endian, IEEE754 float value:
Mass Concentration PM1.0 [µg/m³]
2
Checksum for bytes 0, 1
3, 4
Lower two bytes
5
Checksum for bytes 3, 4
6, 7
Upper two bytes
big-endian, IEEE754 float value:
Mass Concentration PM2.5 [µg/m³]
8
Checksum for bytes 6, 7
9, 10
Lower two bytes
11
Checksum for bytes 9, 10
12, 13
Upper two bytes
big-endian, IEEE754 float value:
Mass Concentration PM4.0 [µg/m³]
14
Checksum for bytes 12, 13
15, 16
Lower two bytes
17
Checksum for bytes 15, 16
18, 19
Upper two bytes
big-endian, IEEE754 float value:
Mass Concentration PM10 [µg/m³]
20
Checksum for bytes 18, 19
21, 22
Lower two bytes
23
Checksum for bytes 21, 22
www.sensirion.com Preliminary Version 0.9 D1 November 2018 15/20
24, 25
Upper two bytes
big-endian, IEEE754 float value:
Number Concentration PM0.5 [#/cm³]
26
Checksum for bytes 24, 25
27, 28
Lower two bytes
29
Checksum for bytes 27, 28
30, 31
Upper two bytes
big-endian, IEEE754 float value:
Number Concentration PM1.0 [#/cm³]
32
Checksum for bytes 30, 31
33, 34
Lower two bytes
35
Checksum for bytes 33, 34
36, 37
Upper two bytes
big-endian, IEEE754 float value:
Number Concentration PM2.5 [#/cm³]
38
Checksum for bytes 36, 37
39, 40
Lower two bytes
41
Checksum for bytes 39, 40
42, 43
Upper two bytes
big-endian, IEEE754 float value:
Number Concentration PM4.0 [#/cm³]
44
Checksum for bytes 42, 43
45, 46
Lower two bytes
47
Checksum for bytes 45, 46
48, 49
Upper two bytes
big-endian, IEEE754 float value:
Number Concentration PM10 [#/cm³]
50
Checksum for bytes 48, 49
51, 52
Lower two bytes
53
Checksum for bytes 51, 52
54, 55
Upper two bytes
big-endian, IEEE754 float value:
Typical Particle Size [µm]
56
Checksum for bytes 54, 55
57, 58
Lower two bytes
59
Checksum for bytes 57, 58
5.3.5 Read/Write Auto Cleaning Interval (0x8004)
Reads/Writes the interval [s] of the periodic fan-cleaning. When the module is in Measurement-Mode an automatic
fan-cleaning procedure will be triggered periodically following a defined cleaning interval. This will accelerate the fan to
maximum speed for 10 seconds in order to blow out the dust accumulated inside the fan.
Note that after writing a new interval, this will be activated immediately. However, if the interval register is read out after
setting the new value, the previous value is returned until the next start/reset of the sensor module.
Important notes:
Measurement values are not updated while the fan-cleaning is running.
Set the interval to 0 to disable the automatic cleaning.
Once set, the interval is stored permanently in the non-volatile memory.
The default cleaning interval is set to 604’800 seconds (i.e., 168 hours or 1 week).
If the sensor is switched off, the time counter is reset to 0. Make sure to trigger a cleaning cycle at least every
week if the sensor is switched off and on periodically (e.g., once per day).
Transfer Type: Set Pointer & Read/Write Data
Pointer Address: 0x8004
www.sensirion.com Preliminary Version 0.9 D1 November 2018 16/20
Read/Write Data:
Byte #
Description
0, 1
MSB
big-endian, unsigned 32-bit integer value:
Auto Cleaning Interval [s]
2
Checksum for bytes 0, 1
3, 4
LSB
5
Checksum for bytes 3, 4
5.3.6 Start Fan Cleaning (0x5607)
Starts the fan-cleaning manually
15
. For more details, note the explanations given for the “Read/Write Auto Cleaning
Interval” command.
Transfer Type: Set Pointer
Pointer Address: 0x5607
5.3.7 Read Device Information (0xD025, 0xD033)
This command returns the requested device information. It is defined as a string value with a maximum length of 32 ASCII
characters (including terminating null-character).
Transfer Type: Set Pointer & Read Data
Pointer Address: Article Code: 0xD025
Serial Number: 0xD033
Read Data:
Byte #
Description
0
ASCII Character 0
1
ASCII Character 1
2
Checksum for bytes 0, 1
45
ASCII Character 30
46
ASCII Character 31
47
Checksum for bytes 45, 46
5.3.8 Device Reset (0xD304)
Device software reset command. After calling this command, the module is in the same state as after a power reset.
Transfer Type: Set Pointer
Pointer Address: 0xD304
15
This command can only be executed in Measurement-Mode.
www.sensirion.com Preliminary Version 0.9 D1 November 2018 17/20
6 Technical Drawings
6.1 Product Outline Drawings
Figure 9: Package outline dimensions (in mm) of the SPS30.
4 0 .6
4 0 .6
1 2 .2
4 .6 4
1 0 .8 2 .4
5 .6
1 4 .8
2 .7 4 .8
2 .2 6 .6
1 0
5 .2
1 .2 1 .5
3 .5
www.sensirion.com Preliminary Version 0.9 D1 November 2018 18/20
7 Shipping Package
The SPS30 is shipped in stackable trays with 56 pieces each. Non-packaged tray dimensions are given in
Figure 10. Packaged tray dimensions are 670 mm x 460 mm x 45 mm. The weight of each full packaged tray (including
sensors) is 2.4 kg.
Figure 10: 56-sensor tray dimensions (in mm).
8 Ordering Information
The SPS30 and its evaluation kit can be ordered via the article numbers listed in Table 9.
Product
Description
Article Number
SPS30 sensor
Particulate Matter Sensor
1-101638-10
SPS30 evaluation kit
SPS30 sensor and USB evaluation kit
3.000.119
Table 9: SPS30 and evaluation kit ordering information.
457.00
(42.50)
(42.50)
(15.00)
22.50
379.00
www.sensirion.com Preliminary Version 0.9 D1 November 2018 19/20
9 Important Notices
9.1 Warning, Personal Injury
Do not use this product as safety or emergency stop devices or in any other application where failure of the product could result in
personal injury. Do not use this product for applications other than its intended and authorized use. Before installing, handling, using or
servicing this product, please consult the data sheet and application notes. Failure to comply with these instructions could result in
death or serious injury.
If the Buyer shall purchase or use SENSIRION products for any unintended or unauthorized application, Buyer shall defend, indemnify and hold
harmless SENSIRION and its officers, employees, subsidiaries, affiliates and distributors against all claims, costs, damages and expenses, and
reasonable attorney fees arising out of, directly or indirectly, any claim of personal injury or death associated with such unintended or unauthorized
use, even if SENSIRION shall be allegedly negligent with respect to the design or the manufacture of the product.
9.2 ESD Precautions
The inherent design of this component causes it to be sensitive to electrostatic discharge (ESD). To prevent ESD-induced damage and/or
degradation, take customary and statutory ESD precautions when handling this product.
See application note “ESD, Latchup and EMC” for more information.
9.3 Warranty
SENSIRION warrants solely to the original purchaser of this product for a period of 12 months (one year) from the date of delivery that this product
shall be of the quality, material and workmanship defined in SENSIRION’s published specifications of the product. Within such period, if proven to
be defective, SENSIRION shall repair and/or replace this product, in SENSIRION’s discretion, free of charge to the Buyer, provided that:
notice in writing describing the defects shall be given to SENSIRION within fourteen (14) days after their appearance;
such defects shall be found, to SENSIRION’s reasonable satisfaction, to have arisen from SENSIRION’s faulty design, material, or workmanship;
the defective product shall be returned to SENSIRION’s factory at the Buyer’s expense; and
the warranty period for any repaired or replaced product shall be limited to the unexpired portion of the original period.
This warranty does not apply to any equipment which has not been installed and used within the specifications recommended by SENSIRION for
the intended and proper use of the equipment. EXCEPT FOR THE WARRANTIES EXPRESSLY SET FORTH HEREIN, SENSIRION MAKES NO
WARRANTIES, EITHER EXPRESS OR IMPLIED, WITH RESPECT TO THE PRODUCT. ANY AND ALL WARRANTIES, INCLUDING WITHOUT
LIMITATION, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, ARE EXPRESSLY EXCLUDED AND
DECLINED.
SENSIRION is only liable for defects of this product arising under the conditions of operation provided for in the data sheet and proper use of the
goods. SENSIRION explicitly disclaims all warranties, express or implied, for any period during which the goods are operated or stored not in
accordance with the technical specifications.
SENSIRION does not assume any liability arising out of any application or use of any product or circuit and specifically disclaims any and all liability,
including without limitation consequential or incidental damages. All operating parameters, including without limitation recommended parameters,
must be validated for each customer’s applications by customer’s technical experts. Recommended parameters can and do vary in different
applications.
SENSIRION reserves the right, without further notice, (i) to change the product specifications and/or the information in this document and (ii) to
improve reliability, functions and design of this product.
Copyright© 2018, by SENSIRION.
CMOSens® is a trademark of Sensirion
All rights reserved
www.sensirion.com Preliminary Version 0.9 D1 November 2018 20/20
10 Headquarters and Subsidiaries
Sensirion AG
Laubisruetistr. 50
CH-8712 Staefa ZH
Switzerland
phone: +41 44 306 40 00
fax: +41 44 306 40 30
info@sensirion.com
www.sensirion.com
Sensirion Inc., USA
phone: +1 312 690 5858
info-us@sensirion.com
www.sensirion.com
Sensirion Korea Co. Ltd.
phone: +82 31 337 7700~3
info-kr@sensirion.com
www.sensirion.co.kr
Sensirion Japan Co. Ltd.
phone: +81 3 3444 4940
info-jp@sensirion.com
www.sensirion.co.jp
Sensirion China Co. Ltd.
phone: +86 755 8252 1501
info-cn@sensirion.com
www.sensirion.com.cn
Sensirion Taiwan Co. Ltd
phone: +886 3 5506701
info@sensirion.com
www.sensirion.com
To find your local representative, please visit www.sensirion.com/distributors