arduino-i2c-sen5x icon indicating copy to clipboard operation
arduino-i2c-sen5x copied to clipboard

SEN54-SDN-T returns constant 6553.4 µg/m³ on PM channels even after warm-up

Open daniilnahl opened this issue 4 months ago • 5 comments

I’m using a SEN54-SDN-T on a shared I²C bus with another Sensirion sensor. I’ve implemented the startup sequence according to the datasheet, including a warm-up delay before polling PM values. However, my PM1, PM2.5, PM4, and PM10 channels still report 6553.4 µg/m³ consistently, which I understand corresponds to the 0xFFFF “invalid” sentinel.

Hardware setup:

  • SEN54-SDN-T connected via I²C to an MCU.
  • Another SEN5x sensor also on the same I²C bus (different address).
  • Using official Arduino SensirionI2CSen5x driver from GitHub.

Initialization:

  • Call startMeasurement() in init() function.
  • Delay 60 s (also tried 90 s: 60 s warm-up + 30 s PM stabilization per datasheet).

Loop:

  • Poll readMeasuredValues() every 3 seconds.
  • Temperature, humidity, VOC index all report valid and changing values.
  • All PM channels remain at 6553.4.

Behavior:

  1. After first power-up, sometimes PM1 will briefly track down from 6553.4 toward ~6000, but all PM values remain fixed and unrealistically high.
  2. Reboots/warm-up delays do not change the outcome.

Expected behavior: After the documented warm-up, I expect the PM channels to output actual measured µg/m³ values and update with changes in the air environment.

Observed behavior:

  • PM1, PM2.5, PM4, and PM10 always return 6553.4 µg/m³.
  • Other channels (temp, RH, VOC index) behave normally.
  • This persists after both 60 s and 90 s warm-up sequences.

Things I have checked:

  • Confirmed correct I²C address for SEN54-SDN-T using getProductName() → "SEN54-SDN-T".
  • No repeated startMeasurement() calls inside the main loop.
  • Fan is spinning during measurement.
  • Using stock Arduino example code with only delays modified.
  • Power and pull-ups are within datasheet recommendations.

Questions:

  1. Is there any known condition where PM measurements would stay in the sentinel value state after warm-up?
  2. Could this be a firmware issue? (If so, what is the latest firmware and how do I update it?)
  3. Is there any additional command required to explicitly enable the PM laser/fan sampling for the SDN-T variant?

Environment: Sensor: SEN54-SDN-T Driver: Latest Arduino SensirionI2CSen5x from GitHub Platform: ESP 32 - S3 Pull-up resistors: 10 kΩ

daniilnahl avatar Aug 10 '25 23:08 daniilnahl

Update: I tested using function readMeasuredPmValues() and it outputs 6553.40 for everything besides typical particle size which ranges betwen 0.55 and 0.63.

daniilnahl avatar Aug 11 '25 20:08 daniilnahl

Dear @daniilnahl

How old is your sensor, did it always behave like that ?

We can try a few things:

  • Could you read the device state and share the result ?
  • Did you try to run the fan cleaning command ?
  • Do you get the same result if the sensor is alone on the bus ?

Cheers Q

PS: edited my message a few times

quentin-cy avatar Aug 12 '25 10:08 quentin-cy

Hi,

  1. Yes, it behaved like that from start and I thought it was normal when I first got it in June, but as I started investigating its reading this month I realized something is wrong. Although, couple times the readings have changed and came down to 5000s.
  2. The device status I am getting is '0x00000000'. My code to get status is below.
        uint32_t status_before = 0;
        uint16_t err = sen5x.readAndClearDeviceStatus(status_before);
        if (err == 0) {
          char buf[11];
          snprintf(buf, sizeof(buf), "0x%08lX", (unsigned long)status_before);
          Serial.println(buf);
        }
  1. Yes, the measurements for mass concertation was not at 6553.40 but all are still above 6000 and fluctuating.
  2. Yes, although it varied. Sometimes I would get readings as low as 5000s and sometimes it would stay at 6553.40.

daniilnahl avatar Aug 16 '25 23:08 daniilnahl

Hello @daniilnahl

It seems to me you got a defective unit. Could you reach out either to your distributor where you bought it or to the Sensirion support ? In case you reach out to Sensirion customer support please link this issue such that it reaches our team.

Cheers Q

quentin-cy avatar Aug 20 '25 09:08 quentin-cy

Hello @qfisch,

I have sent a request to Sensirion support. Thank you for helping me out!

daniilnahl avatar Sep 05 '25 23:09 daniilnahl