Photometric Sensor
for Gesture and Proximity
ADUX1020
Data Sheet
FEATURES
GENERAL DESCRIPTION
Multifunction photometric sensor and signal conditioning
Fully integrated AFE, ADC, LED driver, and timing core
Usable for multiple optical measurement applications,
including gesture control and proximity sensing
Enables an ambient light rejection capability using both
optical and analog filtering
On-chip programmable flexible current sink for external LED
High sensitivity and signal-to-noise ratio (SNR)
High resolution position measurement
Gesture recognition with 0.5 cm to 15 cm range
Proximity sensing to 20 cm
400 kHz I2C interface
Gesture/proximity works under infrared (IR) transparent
glass or other materials
Simple integration with optics; no need for precise
alignment and no lens is required
Low power operation
1.8 V analog/digital core
8-lead, 2 mm × 3 mm, 0.65 mm height LFCSP
The ADUX1020 is a highly efficient photometric sensor with an
integrated 14-bit analog-to-digital converter (ADC) and a 20-bit
burst accumulator that works in concert with a flexible light
emitting diode (LED) driver. It is designed to modulate a LED
and measure the corresponding optical return signal. The digital
engine includes circuitry and control for data aggregation and
proximity detection.
The data output and device configuration use a 1.8 V I2C interface.
The control circuitry includes flexible LED pulse width and
period generation combined with synchronous detection. This
circuitry is complemented by a low noise, low power, and wide
dynamic range configurable analog front end (AFE), clock
generation, LED driver, and digital logic for position and smart
sample mode (event driven x, y coordinates, relative z data).
This complete AFE features ambient light rejection, avoiding
corruption due to external interference.
APPLICATIONS
One inexpensive standard surface mount, broad angle or narrow
angle IR LED (depending upon application) is required. This
LED mounts externally to the ADUX1020.
Gesture for user interface (UI) control in portable devices
Industrial/automation monitoring
Presence detection
Angle sensing
Packaged in a small, clear mold, 2 mm × 3 mm, 8-lead LFCSP,
the ADUX1020 is specified over an operating temperature
range of −40°C to +85°C.
FUNCTIONAL BLOCK DIAGRAM
ADUX1020
AFE: SIGNAL CONDITIONING
SDA
SCL
POSITION
SENSOR
ADC
GESTURE ENGINE
DIGITAL INTERFACE
CONTROL LOGIC
INT
VREF
LED DRIVER
11429-001
LEDX
Figure 1.
Rev. A
Document Feedback
Information furnished by Analog Devices is believed to be accurate and reliable. However, no
responsibility is assumed by Analog Devices for its use, nor for any infringements of patents or other
rights of third parties that may result from its use. Specifications subject to change without notice. No
license is granted by implication or otherwise under any patent or patent rights of Analog Devices.
Trademarks and registered trademarks are the property of their respective owners.
One Technology Way, P.O. Box 9106, Norwood, MA 02062-9106, U.S.A.
Tel: 781.329.4700
©2016 Analog Devices, Inc. All rights reserved.
Technical Support
www.analog.com
ADUX1020
Data Sheet
TABLE OF CONTENTS
Features .............................................................................................. 1
Sample/Gesture Mode ............................................................... 10
Applications ....................................................................................... 1
Use of Multiple Modes ............................................................... 10
General Description ......................................................................... 1
Adjustable Sampling Frequency ............................................... 11
Functional Block Diagram .............................................................. 1
Normal Mode Operation and Data Flow ................................ 11
Revision History ............................................................................... 2
AFE Operation............................................................................ 12
Specifications..................................................................................... 3
I2C Serial Interface ..................................................................... 13
Temperature and Power Specifications ..................................... 3
Typical Connection Diagram ................................................... 14
Performance Specifications ......................................................... 4
LED Driver Pin and LED Supply Voltage ............................... 14
Analog Specifications ................................................................... 5
LED Driver Operation ............................................................... 14
Digital Specifications ................................................................... 6
Determining the Average Current ........................................... 15
Timing Specifications .................................................................. 6
LED Inductance Considerations .............................................. 15
Absolute Maximum Ratings ............................................................ 7
Recommended Start-Up Sequence .......................................... 15
Thermal Resistance ...................................................................... 7
Clocks and Timing Calibration ................................................ 15
ESD Caution .................................................................................. 7
Reading Data ............................................................................... 16
Pin Configuration and Function Descriptions ............................. 8
Calculating Current Consumption .......................................... 17
Typical Performance Characteristics ............................................. 9
Recommended Soldering Profile ................................................. 19
Theory of Operation ...................................................................... 10
Complete Register Listing ............................................................. 20
Idle Mode ..................................................................................... 10
Outline Dimensions ....................................................................... 31
Standby Mode ............................................................................. 10
Ordering Guide .......................................................................... 31
Proximity Mode .......................................................................... 10
REVISION HISTORY
6/2016—Revision A: Initial Version
Rev. A | Page 2 of 31
Data Sheet
ADUX1020
SPECIFICATIONS
TEMPERATURE AND POWER SPECIFICATIONS
Table 1. Operating Conditions
Parameter
TEMPERATURE RANGE
Operating Range
Storage Range
POWER SUPPLY VOLTAGES
Input Supply Voltage
Supply Voltage for the LEDs
Symbol
Test Conditions/Comments
Min
Typ
−40
−65
VDD
VLED
1.7
1.8
3.3
VLED depend on the LED selected
Max
Unit
+85
+150
°C
°C
1.9
V
V
VDD = 1.8 V, ambient temperature, unless otherwise noted.
Table 2. Current Consumption
Parameter
TOTAL POWER CONSUMPTION
VDD STANDBY MODE CURRENT
SUPPLY CURRENT
1.8 V VDD Peak
1.8 V VDD Average
Example VDD Average
Average VLED
Example VLED Average
1 Pulse (Proximity)
8 Pulses (Sample/Gesture)
Symbol
Test Conditions/Comments
See the Calculating Current Consumption section
Min
IVDD_STANDBY
IVDD_PEAK
IVDD_AVG
ILED_AVG
Typ
Max
3.5
Continuous maximum rate AFE operation
See the Calculating Current Consumption section
LED_OFFSET = 25 µs, LED_PERIOD = 19 µs,
LED_PULSES = 8, LED peak current = 250 mA
1 Hz data rate; proximity mode
50 Hz data rate; proximity mode
820 Hz data rate; sample/gesture mode
See the Calculating Current Consumption section
Peak LED current = 250 mA, LED_PULSE width = 3 µs
1 Hz data rate
50 Hz data rate
820 Hz data rate
50 Hz data rate
820 Hz data rate
Rev. A | Page 3 of 31
3.6 V may damage the device.
In addition, a negative spike ≤ −0.3 V may also damage the device.
Rev. A | Page 15 of 31
ADUX1020
Data Sheet
Use the following steps to calibrate the 32 kHz clock by referencing
the timer of the controlling microprocessor. Do not set the I2C
output rate to a speed that overloads the I2C FIFO. If the microprocessor is fully available for handling clock calibration operation
at this time, and its I2C speed is set to 400 kHz, the I2C throughput
will be more than 2 kHz.
1.
2.
3.
4.
5.
6.
7.
Set the projected output rate to 820 Hz by writing 0x1C to
Register 0x44.
Set up and run the device in sample mode by writing 0x8
to Register 0x45, Bits[3:0].
Flush the I2C FIFO by writing Register 0x49, Bit 15.
Poll data from I2C FIFO for 0.5 sec by repeatedly reading
Register 0x60. Count the number of sample sets for 1 sec.
Calculate the actual output rate equal to the sample set
count divided by 0.5.
Adjust the 32 kHz oscillator trim value by writing to
Register 0x18, Bits[3:0] with the appropriate value.
Repeat Step 1 through Step 5 until the actual measured
output data rate is as close to 820 Hz as possible. If the
output data rate is below 820 Hz, increment the trim value,
and if it is above 820 Hz, decrement the trim value.
Calibrating the 32 MHz Clock
written to the FIFO. Data packets are written to the FIFO at the
output data rate.
Output Data Rate = fSAMPLE/N
where:
fSAMPLE is the sampling frequency.
N is the averaging factor for sample/gesture mode or proximity
mode. A data packet for the FIFO consists of a complete sample
for either proximity mode or sample/gesture mode. In proximity
mode, the device can store either only intensity i data as 2 bytes
or x, y, and i data as 6 bytes. In sample/gesture mode, the device
always sends 4 bytes to the FIFO.
To ensure that data packets are intact, new data is written only
to the FIFO if there is sufficient space for a complete packet.
Any new data that arrives when there is not enough space is
lost. The FIFO continues to store data when sufficient space
exists. Always read FIFO data in complete packets to ensure
that data packets remain intact.
The number of bytes currently stored in the FIFO is available in
Register 0x49, Bits[14:8]. A dedicated FIFO interrupt is also
available and automatically generates when a specified amount
of data is written to the FIFO.
The 32 MHz oscillator on the ADUX1020 may also have up to
30% variation in frequency due to the variation of on-chip RC
components. Use the following steps to calibrate the 32 MHz
clock by comparing it with the 32 kHz clock.
To read data from the FIFO using an interrupt-based method,
use the following procedure:
1.
2.
2.
3.
4.
5.
6.
7.
Enable the 32 kHz oscillator by writing Register 0x18, Bit 7.
Enable the 32 MHz oscillator by writing Register 0x32,
Bit 3 and Bit 11.
Enable clock calibration by writing Register 0x30, Bit 5.
Read the calibration result from Register 0x0A, Bits[11:0].
Compare the calibration result. The calibration is complete
when the result read is as close as possible to the optimal
value of 2000. If it is not, increment the trim value if the
result is below 2000, or decrement if it is above 2000. Write
the new trim value and then write 1 to Register 0x30, Bit 5.
Note that typically two trim values produce calibration
results that straddle the optimal result. Choose the closest.
Write the new trim value in Register 0x1A, Bits[7:0].
Disable calibration by writing 0 to Register 0x30, Bit 5.
1.
3.
4.
5.
6.
READING DATA
The ADUX1020 provides multiple methods for accessing the
sample data. Interrupt signaling is available to simplify timely
data access. The FIFO is available to loosen the system timing
requirements for data accesses.
Reading Data Using the FIFO
The ADUX1020 includes a 64-byte FIFO memory buffer that
can store data from either sample/gesture mode or proximity
mode. Register 0x45, Bits[7:4] select the kind of data to be
Rev. A | Page 16 of 31
In standby mode, set the configuration of sample/gesture
or proximity mode as desired for operation.
Write to Register 0x45, Bits[7:4] with the desired data
format for each mode.
Set FIFO_TH in Register 0x1F, Bits[11:8] to the interrupt
threshold. A good value for this is the number of 16-bit
words in a data packet minus 1, which causes an interrupt
to generate when at least one complete packet is in the
FIFO.
Enable the FIFO interrupt by writing INT_MASK,
Register 0x48, Bits[7:0]. Also, configure the interrupt pin
(INT) by writing the appropriate value to Register 0x1C,
Bit 2.
Enter sample/gesture or proximity mode by setting
Register 0x45, Bits[3:0] to the desired value.
When an interrupt occurs, the following results:
a. Note that there is no requirement to read the FIFO_
STATUS register because the interrupt is generated only
if there is one or more full packets. Optionally, the
interrupt routine can check for the presence of more
than one available packet by reading this register.
b. Force the 32 MHz clock on by writing 0x0F4F to
Register 0x32.
c. Read a complete packet using one or more multiword
accesses using Register 0x60. Reading the FIFO
automatically frees the space for new samples.
d. Set the 32 MHz clock to be controlled by the internal
state machine by writing 0x40 to Register 0x32.
Data Sheet
ADUX1020
4.
The interrupt automatically clears when enough data is read
from the FIFO to bring the data level below the threshold.
To read data from the FIFO in a polling method, use the
following procedure:
1.
2.
3.
In standby mode, set the configuration of gesture/sample
mode or proximity mode as desired for operation.
Write Register 0x45, Bits[7:4] with the desired data format.
Enter proximity or sample/gesture mode by setting
Register 0x45, Bits[3:0] to the desired setting.
Next, begin the polling operations, by taking the following steps:
1.
2.
3.
4.
Wait for the polling interval to expire.
Read the FIFO_STATUS bits (Register 0x49, Bits[15:8]).
If FIFO_STATUS is greater than or equal to the packet size,
read a packet using the following steps:
a. Force the 32 MHz clock on by writing 0x0F4F to
Register 0x32.
b. Read a complete packet using one or more multiword
accesses using Register 0x60. Reading the FIFO
automatically frees the space for new samples.
c. Set the 32 MHz clock to be controlled by the internal
state machine by writing 0x0040 to Register 0x32.
When a mode change is required, or any other disruption
to normal sampling is necessary, clear the FIFO. Use the
following procedure to clear the state and empty the FIFO:
a. Enter idle mode by setting Register 0x45, Bits[3:0] to 0xF.
b. Force the 32 MHz clock on by writing 0x0F4F to
Register 0x32.
c. Write 1 to Register 0x49, Bit 15.
d. Write 0x40 to Register 0x32 to set the 32 MHz clock to
be controlled by the internal state machine.
Reading Data from Registers Using Interrupts
The latest sample data is always available in the data registers
and is updated simultaneously at the end of each time slot. The
data value for each photodiode channel is available as a 16-bit
value in Register 0x00 through Register 0x03 (READX1,
READX2, READY1, and READY2) for sample/gesture mode,
and Register 0x04 through Register 0x06 (SAMPLEI, SAMPLEX,
and SAMPLEY) for proximity mode. If allowed to reach their
maximum value, Register 0x00 through Register 0x06 clip.
Sample interrupts are available to indicate when the registers
are updated and can be read. To use the interrupt for a given
time slot, use the following procedure:
1.
2.
3.
The interrupt handler must perform the following:
a. Read Register 0x49 and observe Bits[7:0] to confirm
which interrupt has occurred. This step is not
required if only one interrupt is in use.
b. Read the data registers before the next sample can be
written. The system must have interrupt latency and
service time short enough to respond before the next
data update based on the output data rate.
c. Write 0x0 to Bits[7:0] in Register 0x49 to clear the
interrupt.
CALCULATING CURRENT CONSUMPTION
The current consumption of the ADUX1020 depends on the
user selected operating configuration, as described in the
Equation 7, Equation 8, and Equation 9.
Total Power Consumption
To calculate the total power consumption, use Equation 7.
Total Power = IVDD_AVG × VDD + ILED_AVG × VLED
(7)
where:
IVDD_AVG is the VDD average.
VDD is the ADUX1020 supply voltage.
ILED_AVG is the average LED current.
VLED is the LED supply voltage.
Average VDD Supply Current
To calculate the average VDD supply current, use Equation 8.
IVDD_AVG = DR × (IAFE × tMODE + IPROC) + IVDD_STANDBY
(8)
where:
DR is the data rate in Hz.
IAFE = 8.9 + (LEDPEAK − 25)/225, where LEDPEAK is the peak LED
current expressed in mA.
tMODE = LED_OFFSET_x + LED_PERIOD_x ×
PULSE_COUNT_x. Note that LED_OFFSET_x is the pulse
start time offset expressed, LED_PERIOD_x is the pulse period
expressed in seconds, PULSE_COUNT_x is the number of
pulses, and x is either PROX or GEST depending on the mode
of operation.
IPROC is an average current associated with the processing time.
For sample/gesture mode, IPROC = 0.64 × 10−3, and for proximity
mode, IPROC = 0.51 × 10−3.
IVDD_STANDBY = 3.5 × 10−3 mA.
Enable the sample interrupt by writing a 0 to the
appropriate bit in Register 0x48.
Configure the interrupt pin by writing the appropriate
value to the bits in Register 0x1C.
An interrupt generates when the data registers are updated.
Rev. A | Page 17 of 31
ADUX1020
Data Sheet
Average VLEDA Supply Current
To calculate the average VLED supply current, use Equation 9.
ILED_AVG = (LED_WIDTH/1 × 106) × LEDPEAK × DR ×
PULSE_COUNT
(9)
where:
LED_WIDTH is the on time for the LED pulse, in µs.
PULSE_COUNT is the number of LED pulses per sample.
Tuning the Pulse Count
After the LED peak current and TIA gain are optimized, increasing
the number of pulses per sample increases the SNR by the square
root of the number of pulses. There are two ways to increase the
pulse count. The pulse count registers (Register 0x21, Bits[13:8] for
sample/gesture mode, and Register 0x23, Bits[13:8] for proximity
mode) change the number of pulses per internal sample.
Register 0x46, Bits[6:4] for sample/gesture mode and Bits[2:0]
for proximity mode controls the number of internal samples that
are averaged together before the data is sent to the output.
Therefore, the number of pulses per sample is the pulse count
register multiplied by the number of subsequent samples being
averaged.
In general, the internal sampling rate increases as the number
of internal sample averages increase to maintain the desired output
data rate. The SNR/Watt is most optimal with pulse count values
of 16 or less. Above pulse count values of 16, the square root
relationship does not hold in the pulse count register. However,
this relationship continues to hold when averaged between
samples using Register 0x46.
Note that increasing LED peak current increases SNR almost
directly proportional to LED power, whereas increasing the
number of pulses by a factor of n results in only a nominal√(n)
increase in SNR.
When using the sample sum/average function (Register 0x46),
the output data rate decreases by the number of summed samples.
To maintain a static output data rate, increase the sample
frequency (Register 0x40, Bits[3:0] for sample/gesture mode,
Bits[7:4] for proximity mode) by the same factor as that selected
in Register 0x46. For example, for a 100 Hz output data rate and
a sample sum/average of four samples, set the sample frequency
to 400 Hz.
Rev. A | Page 18 of 31
Data Sheet
ADUX1020
RECOMMENDED SOLDERING PROFILE
Figure 12 and Table 12 provide details about the recommended soldering profile.
CRITICAL ZONE
TL TO TP
P
P
L
TSMAX
L
SMIN
11429-012
S
Figure 12. Recommended Soldering Profile
Table 12. Recommended Soldering Profile
Profile Feature
Average Ramp Rate (TL to TP)
Preheat
Minimum Temperature (TSMIN)
Maximum Temperature (TSMAX)
Time (TSMIN to TSMAX) (tS)
TSMAX to TL Ramp-Up Rate
Time Maintained Above Liquidous Temperature
Liquidous Temperature (TL)
Time (tL)
Peak Temperature (TP)
Time Within 5°C of Actual Peak Temperature (tP)
Ramp-Down Rate
Time from 25°C to Peak Temperature (t25°C TO PEAK)
Condition (Pb-Free)
3°C/sec maximum
150°C
200°C
60 sec to 180 sec
3°C/sec maximum
217°C
60 sec to 150 sec
+260 (+0/−5)°C