본문으로 건너뛰기

미세먼지 센서

SPS30

센서 명세

변수조건단위
농도 정확도0 ~ 100 μg/m³
100 ~ 1000 μg/m³
± 10
± 10
μg/m³
%
농도 범위-0 ~ 1000μg/m³
농도 분해능-1μg/m³
측정 먼지 크기PM 0.50.3 ~ 0.5μm
측정 먼지 크기PM 1.00.3 ~ 1.0μm
측정 먼지 크기PM 2.50.3 ~ 2.5μm
측정 먼지 크기PM 40.3 ~ 4.0μm
측정 먼지 크기PM 100.3 ~ 10.0μm
농도 (개수)-0 ~ 30001/cm³
샘플링 간격-1
시동 시간-< 8
수명24 h/day 작동> 8
소음0.2 m25dB(A)
무게-26g

10 만원 대 센서 중, 수명이 긴 편에 속합니다. 기본 설정은 1 주에 한 번 10 초간 팬을 최대 속도로 돌려 청소를 하게 되어 있습니다. 상황에 따라 청소주기를 바꿔 주는 것이 좋습니다.

8 년 이상 써본적이 없어서 모르겠으나, 센서 특성상 먼지가 계속 유입되다가 측정부를 막게되면 수명에 관계 없이 뜯어서 청소하거나 교체해주어야합니다.

커넥터가 ZHR-5고, 센서 자체도 마운트할 방법이 없어서 불편합니다.

전기적 특성

변수조건단위
전원-4.4 ~ 5.5V
대기 전류idle-mode< 8mA
평균 전류measurement-mode60mA
최대 전류measurement-mode 시작 후 ~ 200 ms80mA
Low 입력-< 0.99V
High 입력-> 2.31V
Low 출력-< 0.4V
High 출력-> 2.9V

최대 최소 범위

변수
SEL pin-0.3 ~ 4.0 V
RX/SDA, TX/SCL-0.3 ~ 5.5 V
± 16 mA
작동 온도-10 ~ 60 ℃
작동 습도0 ~ 95 %RH
ESD CDM± 4 kV contact, ± 8 kV air

인터페이스

이름
1VDD4.5 ~ 5.5 V
2RX/SDA3.3, 5 V 호환
3TX/SCL3.3, 5 V 호환
4SEL플로팅- UART
GND - I2C
5GND

UART

  • 115200 bit/s, 8 bits, None parity, 1 stop bit
  • MOSI 프레임: 0x7E, 0x00(ADR), CMD(1 byte), L(1 byte), Data(0 ~ 255 bytes), CHK(1 byte), 0x7E
  • MISO 프레임: 0x7E, 0x00, CMD, State(1 byte), L, Data, CHK, 0x7E
  • Escape(except start and stop)
    • 0x7E <-> 0x7D 0x5E
    • 0x7D <-> 0x7D 0x5D
    • 0x11 <-> 0x7D 0x31
    • 0x13 <-> 0x7D 0x33
  • CHK: ((ADR + ... + Data) & 0xFF) ^ 0xFF

I2C

  • Slave 주소: 0x69
  • 최대 통신 속도: 100 kbit/s (standard mode)
  • Write Reg: 2 byte Reg, LSB, MSB, CHK, LSB, MSB, CHK, ...
  • Read Reg: write 2 byte Reg -> read LSB, MSB, CHK, ...
  • CHK
    • CRC-8
    • polynormial 0x31(x⁸ + x⁵ + x⁴ + 1)
uint8_t calc_crc_8(uint8_t *data) {
uint8_t crc = 0xFF;
for(int i = 0; i < 2; i++) {
crc ^= data[i];
for(uint8_t bit = 0; bit < 8; bit++) {
if(crc & 0x80) {
crc = (crc << 1) ^ 0x31;
} else {
crc = (crc << 1);
}
}
}
return crc;
}

메모리가 넉넉하면 CRC 테이블을 만들어서 계산하면 됩니다.