Get obscuration level from output registers ADPD188BI

Hi Devs,

From similar questions

I would like to know if there is any documentation to get a relation from the output registers IR/LED or Ratio between LED/IR to get the % obscuration or PTR similar to the application Note where "The smoke response for the blue and IR channels of the ADPD188BI is expressed by the power transfer ratio (PTR) in units of nW of optical power returned to the photodiode per mW of optical power emitted by the LED"

I am testing the sensor using a smoke aerosol and the values of the registers jump in the presence of smoke, but how can I measure it or get values in density smoke or obscuration?



note from application note
[edited by: Arepa at 4:15 PM (GMT 0) on 22 Jul 2019]
  • Hi Arepa,

    PTR can be calculated from the output codes of the ADPD188BI. Percent obscuration is the measurement made by UL. You can determine what PTR will translate to what % obscuration by testing the ADPD188BI against the UL standard smoke tests and using the output of the UL measurement as a reference which is what is shown in the plots in the app note you referred to. 

    PTR is calculated from output codes as follows:


    • IPD = (Output Codes * nA/LSB * 1/#Pulses). The nA/LSB factor can be taken from Table 2 of the ADPD188BI datasheet.
    • ILED = the current setting of the LED
    • PDET_AMPS_PER_WATT is expressed in Amps/Watt (or nA/nW) and is a function of wavelength. Use 0.26 for 470nm (Blue) and 0.41 for 850 nm (IR).
    • NOMINAL_WATTS_PER_AMP = 0.38 for Blue, 0.22 for IR
    • DERATING_FACTOR accounts for the Blue LED non-linearity
    • For Blue LED, calculate as :
    • DERATING_FACTOR  = A0 + A1 ( ILED_MA) + A2(ILED_MA)^2 + A3 * (ILED_MA)^3
    • ILED_MA is the LED Pulse Current expressed in mA
    • A0 = 9.8976E-01
    • A1 = -5.1448E-03
    • A2 = 2.0287E-05
    • A3 = -2.9645E-08
    • PART_TO_PART_SCALAR is how we normalize to device to device differences. This scalar will be created at final test and burned into an on-chip NVM. For now, use a part to part scalar of 1.



  • Hi Kevin,

    Thanks for you quickly reply, I would make sure all is clear in my end and I would like double-check some variables from the equation above

    is ILED related to the values in registers 0x22, 0x23, 0x24 and 0x25 (LEDX peak, coarse, fine, scale)?
    is ILED_MA the LED peak?

    In case I was wrong, where can I find these values or get them?


  • Yes, ILED is the programmed value of LED current. The equations to detemine the LED current to within ~10% accuracy based on the settings of the register you mentioned are in the datasheet.



  • so from my understanding:

    ILED = ILEDcoarse + ILEDfine

    using the equations for the LED1 case:

    LED1COARSE = 50.3 + 19.8 × (Register 0x23, Bits[3:0]). = 228.5

    LED1FINE = 0.74 + 0.022 × (Register 0x25, Bits[4:0]). = 1.004

    my led scale is 0.1 because I am using it as low power

    but what about ILED_MA? how to calculate the current per pulse when I am using a pulse width of 3us and period 14us, I am not sure if I should use the equation: ILED_AVERAGE = (tLED_PULSE/tLED_PERIOD) × ILED_PEAK 

  • ILED_MA is the programmed LED current. In the equation, enter the number in mA. So if the current is programmed to 150mA then use 150 in the equation. In the other equation for PTR, ILED is also the programmed current. Use whatever units you want to report the PTR in. For example, if you want your PTR answer in nW/mW then the IPD and ILED should be entered in nA and mA, respectively