-
2022-09-23 10:20:37
The Agilent ADNS-3040 is an ultra-low power mouse sensor
illustrate
The ADNS-3040 is an ultra-low power optical navigation sensor. It has a new, low-power architecture and automatic power management modes, making it ideal for battery and power-sensitive applications such as cordless input devices.
The ADNS-3040 is capable of high-speed motion detection - up to 20 IPs and 8G. Additionally, it has an on-chip oscillator and LED driver to minimize external components.
Together with the ADNS-3120-001 lens, ADNS-2220 clip and HLMP-ED80-PS000 LED, the ADNS-3040 forms a complete and compact mouse tracking system. There are no moving parts, which means high reliability and less maintenance for the end user. Additionally, precise optical alignment is not required, facilitating high volume assembly.
The sensor is programmed through registers through the four-wire serial port. It is packaged with a 20-pin dip.
theory of operation
The ADNS-3040 is based on optical navigation technology, which measures changes in position by optically acquiring successive surface images (frames) and mathematically determining the direction and magnitude of motion.
The ADNS-3040 contains an image acquisition system (IAS), digital signal processor (DSP), and a four-wire serial port.
IAS acquires images of microscopic surfaces through a lens and illumination system. These images are processed by a digital signal processor to determine the direction and distance of movement. The digital signal processor calculates the relative displacement values of ∏x and ∏y.
An external microcontroller reads the ∏x and ∏y information from the sensor serial port. The microcontroller then converts the data into PS2, USB or RF signals before sending them to the host PC or game console.
feature
Low power architecture; self-tuning power saving mode for longest battery life; high speed motion detection up to 20 ips and 8G; smart speed; motion detection pin out; internal oscillator - no clock input required; selectable 400 and 800 cpi resolutions ; Wide operating voltage: nominal 2.5V-3.6V; four-wire serial port; minimal passive components.
application
Optical mouse; optical trackball; integrated input device; battery powered input device.
notes:
1. Dimensions are in millimeters (inches).
2. Dimensional tolerance is ±0.1mm.
3. Wire coplanarity: 0.01mm.
4. Lead distance tolerance: ±0.15mm.
5. Cumulative pitch tolerance: ±0.15mm.
6. Angle tolerance: ±3.0 degrees.
7. Maximum flash +0.2mm.
8. Cut corners (25° x 2) on the tapered side of the wire.
9.*These dimensions are for reference only and should not be used for mechanical reference sensors.
Optical Mouse Sensor Assembly Overview
Agilent Technologies provides an IGES file graphic that describes the substrate molding features used for lens and PCB alignment.
When the components are mounted on defined features on the base plate, they interlock with each other.
The ADNS-3040 sensor is designed to be mounted on a through-hole PCB, top view. There is an aperture stop and lens alignment feature on the package.
The ADNS-3120-001 lens provides the optimum angle of optics for surface imaging and surface illumination. Features Alignment sensor on lens, baseplate and clip with LEDs.
The ADNS-2220 clamps the LEDs relative to the lens. The LEDs must be inserted into the clip and the leads of the LEDs are loaded into this clip to put the sensor to the lens and align the features on the base plate through the lens.
HLMP-ED80-PS000 LED is recommended for lighting.
PCB Assembly Considerations
1. Insert the sensor and all other electrical components into the PCB.
2. Insert the LED into the mounting clip and bend it 90 degrees.
3. Insert the LED/clip assembly into the PCB.
4. Using a solder jig, wave solder the entire assembly in a no-clean solder process. During the soldering process, a solder clamp is required to protect the sensor. It also sets the correct sensor-to-PCB distance as the wire shoulders are usually not on the PCB surface. The fixture should be designed to expose the sensor leads to the solder while protecting the optical aperture from direct solder contact.
5. Place the lens on the base plate.
6. Remove the protective capton strip from the aperture of the sensor. Care must be taken to prevent contaminants from entering the holes. It is recommended not to place the PCB facing up during the entire mouse assembly process.
It is recommended to hold the PCB vertically first during the Kapton removal process.
7. Insert the PCB assembly into the lens alignment post on the base plate to hold the PCB assembly. The sensor aperture should be its own - aligned with the lens.
8. The optical position sets the reference of the PCB against the base plate and the lens.
Note that PCB movement due to button presses must be minimized to maintain optical alignment.
9. Install the mouse top shell. There must be features in the uppermost box to be depressed on the clips to ensure the parts interlock to the correct vertical height.
Design Considerations to Improve ESD Performance To improve ESD performance, typical creepage and clearance distances are shown in the table below. Assumption: Substrate construction based on IGES documentation and ADNS-3120-001 lens provided by Agilent.
Notice
The lens material is polycarbonate, so cyanoacrylate based adhesives or other adhesives that could damage the lens should not be used.
Regulatory requirements
(1) Passes FCC B and similar worldwide emission limits when assembled into a mouse using shielded cables and following Agilent's recommendations.
(2) Passed the IEC-1000-4-3 radiation susceptibility level when assembled into a mouse with shielded cable and following Agilent recommendations.
(3), passed the EN61000-4-4/IEC801-4 EFT test, assembled into a mouse with shielded cable, and followed the recommendations of Agilent.
(4), UL flammable grade UL94 V-0.
(5) According to the above instructions for use, provide sufficient ESD creepage/clearance distance to avoid discharge up to 15kV when assembled into a mouse.
Absolute Maximum Ratings
Recommended Operating Conditions
Note that for the HSDL-4261 IR LED, the minimum power.
Typical performance characteristics
Typical Path Deviation: Maximum single-perpendicular deviation from a straight line at 45 degrees; path length = 4 inches; speed = 6 ips; resolution = 400 cpi.
power management mode
The ADNS-3040 has three power saving modes. Each mode has a different motion detection period that affects the response time to mouse motion (response time). The sensor automatically switches to the appropriate mode based on the time since the last reported movement (downshift time). The parameters of each mode are shown in the table below.
Movement pin timing
The motion pin is a level-sensitive output that sends a signal to the microcontroller when motion occurs. The motion pin is lowered whenever the motion bit is set; in other words, as long as there is data in the Delta_X or Delta_Y registers. Clearing the motion bit (by reading Delta_Y and Delta_X, or writing to the motion register) will make the motion pin high.
LED mode
To save power, the LEDs do not stay on continuously. The ADNS-3040 will flash the LEDs only when needed.
synchronous serial port
The synchronous serial port is used to set and read parameters in ADNS-3040, and read motion information.
The port is a four-wire serial port. The main microcontroller always initiates communication; the ADNS-3040 never initiates data transfer. SCLK, MOSI and NCS can be controlled by a microcontroller. Port pins can be shared with other SPI slave devices. When the NCS pin is high, the input is ignored and the output is tri-stated.
Make up the SPI port:
SCLK: Clock input. It is always generated by the main controller (microcontroller).
MOSI: Input data. (Master output/Slave input).
MISO: Output data. (Master Input/Slave Output).
NCS: Chip select input (active low). NCS needs to be low to activate the serial port; otherwise, MISO will be high-Z and MOSI and SCLK will be ignored. NCS can also be used to reset the serial port in the event of an error.
chip select operation
The serial port is activated after NCS goes low. If NCS is raised during a transaction, the entire transaction will be aborted and the serial port will reset. All transactions are like this. After a transaction is aborted, the normal data address or transaction-to-transaction delay is still required before starting the next transaction. To improve the reliability of communication, all serial transactions should consist of NCS. In other words, ports should not remain enabled during periods of non-use, as ESD and EFT/B events can be interpreted as serial communications and put the chip in an unknown state. Additionally, the NCS must be triggered after each burst mode transaction is completed to terminate the burst mode. The port cannot continue to be used until burst mode is terminated.
write operation
Write operations, defined as data from the microcontroller to the ADNS-3040, are always initiated by the microcontroller and consist of two bytes. The first byte contains the address (seven bits) and has a "1" as its MSB to indicate the data direction. The second byte contains data. The ADNS-3040 reads MOSI on the rising edge of SCLK.
read operation
A read operation, defined as data from the ADNS-3040 to the microcontroller, is always initiated by the microcontroller and consists of two bytes. The first byte contains the address and is sent by the microcontroller over MOSI with a '0' as its MSB to indicate the data direction. The second byte contains the data, driven by ADNS-3040 on MISO. The sensor outputs the MISO bit on the falling edge of SCLK and the sampled MOSI bit on the rising edge of SCLK.
Note: The 0.5/f minimum high state of SCLK is also the minimum MISO data hold time for the ADNS-3040. Since the falling edge of SCLK is actually the start of the next read or write command, the ADNS-3040 will hold the data state on MISO until the falling edge of SCLK.
Timing required between read and write commands
There are minimum timing requirements between read and write commands on the serial port.
The first write command may not complete correctly if the rising edge of SCLK for the last data bit of the second write command occurs before the desired delay (t).
If the rising edge of SCLK for the last address bit of the read command occurs before the required delay (t), the write command may not complete correctly.
During read operations, SCLK should be delayed at least t after the last address data bit to ensure that the ADNS-3040 has time to prepare the requested data. The falling SCLK edge of the first address bit of a read or write command must be at least t or t after the last rising SCLK edge of the last data bit of the previous read operation.
Burst Mode Operation
Burst Mode is a special serial port operating mode that can be used to reduce serial transaction times for motion reads. Speed improvements are achieved by continuously clocking data from multiple registers, eliminating the need to specify register addresses and the need for normal delay cycles between data bytes.
Pulse mode registration is activated by reading motion pulses. The ADNS-3040 will respond to the contents of the Motion, Delta_Y, Delta_X, QUAL, Shutter_Upper, Shutter_Uper and Maximum_Pixel registers in that order. A burst transaction can be terminated by raising the NCS pin after reading the first 3 bytes of the sequence. After sending the register address, the microcontroller must wait for t before starting to read the data. All data bits can drive SCLK at the normal rate and read with no delay between bytes. After the last address bit is received, the data is latched into the output buffer. After the burst transfer is complete, the microcontroller must raise the NCS line for at least t to terminate the burst mode. The serial port is not available until reset with NCS, even for the second burst transfer.
Power-on precautions
ADNS-3040 does not perform internal power-on self-reset power-on reset registers must be written every time the power is turned on. This proper sequence is followed by:
1. Apply power;
2. Drive NCS high and then low to reset the SPI port
3. Write 0x5a to register 0x3a;
4. Read from registers 0x02, 0x03, and 0x04 (or read the same 3-byte register 0x42 from burst motion) once, regardless of the state of the motion pins.
During power-up, after the supply voltage is high, there will be a period of time before the clock is available. The following table shows the state of the various pins during power-up and reset.
Signal pin status after VDD is valid
Notes on Shutdown and Mandatory Rest
The ADNS-3040 can be set in quiescent mode via the configuration bit register (0x11). This is for further power savings in applications where the sensor does not need to be on all the time.
The ADNS-3040 can be set to shutdown mode by asserting the SHTDWN pin. For proper operation, the SHTDWN pulse width must be at least t. Shorter pulse widths can put the chip into an undefined state. Also, the SPI port should not be accessed when SHTDWN is asserted. (As long as the sensor's NCS pin is not asserted, other ICs on the same SPI bus can be accessed.) The following table shows the state of the various pins during shutdown. After unloading SHTDWN assets, a full reset must be initiated.
Wait t before accessing the SPI port, then write 0x5A to the power-on reset register. Any register settings must then be reloaded.
*If the SPI bus is shared with other devices, the NCS pin must be held at 1 (high). If the sensor is the only device other than the microcontroller, it can be in either state.
NOTE: There is a long wake-up time from shutdown to forced rest. These features should not be used for power management during normal mouse movement.
register
The ADNS-3040 registers are accessible through the serial port. Registers are used to read motion data and status and to set device configuration.
Product ID Address: 0x00
access: read reset value: 0x0D
Data type: 8-bit unsigned integer
Usage: This register contains the unique identification assigned to the ADNS-3040. The value in this register does not change; it can be used to verify that the serial communication link is functioning properly.
Revision ID Address: 0x01
access: read reset value: 0x02
Data type: 8-bit unsigned integer
Usage: This register contains the IC version. It may change when new IC versions are released.
Sports address: 0x02
access: read/write reset value: 0x00
Data Type: Bit Field.
Usage: Register 0x02 allows the user to determine the time since the last read. If the MOT bit is set, the user should read registers 0x03 and 0x04 to obtain accumulated motion. Read this register before reading the Increment Y and Increment X registers.
Writing anything to this register clears the MOT and OVF bits, the Delta_Y and Delta_X registers. The written data bytes are not saved.
The internal buffer can accumulate more than 8 bits of motion for X or Y. If one of the internal buffers overflows, the absolute path data is lost and the OVF bit is set. This bit is cleared once a movement has been read from the Delta_X and Delta_Y registers and the buffer is not full scale. Since there is more data in the buffer, the cycle of reading the Motion, Increment X, and Increment Y registers should be repeated until the motion bit (MOT) is cleared. The Delta_X or Delta_Y registers will read positive or negative full scale before the MOT is cleared. If the motion register has not been read for a long time, at 400 cpi it can take 16 read cycles to clear the buffer, and at 800 cpi it can take up to 32 cycles. To clear overflow, write anything to this register.
The PIXRDY bit register is set whenever a valid byte of pixel data is available in the pixel dump. Check if this bit is set before reading from the pixel dump. To ensure that the Pixel_Grab pointer has been reset to Pixel 0,0 on the initial write to Pixel_Grab, check that PIXFIRST is set high.
Delta Y address: 0x03
access: read reset value: undefined
Data Type: 8-bit 2's complement.
Usage: Y movement is the count since the last report. The absolute value is determined by the resolution.
Read clear register.
Note: Agilent recommends reading registers 0x03 and 0x04 sequentially.
Delta X address: 0x04
access: read reset value: undefined
Data Type: 8-bit 2's complement.
Usage: X moves is the count since the last report. The absolute value is determined by the resolution.
Read clear register.
Note: Agilent recommends reading registers 0x03 and 0x04 sequentially.
SQUAL address: 0x05
access: read reset value: undefined
Data type: The upper 8 bits of a 9-bit unsigned integer.
Usage: QUAL (Surface Quality) is a measure of the number of valid features visible to the sensor in the current frame.
The maximum QUAL register value is TBD. Since small changes in the current frame cause changes in QUAL, changes in QUAL are expected when viewing surfaces. The image below shows 500 consecutively acquired QUAL values while the sensor is slowly moving across the white paper. If there is no surface under the sensor, squl is almost equal to zero. SQUAL is generally maximized when the navigation surface is at the optimum distance from the imaging lens (nominal Z height).
Shutter_Upper Address: 0x06
access: read reset value: undefined
Shutter_Lower Address: 0x07
access: read reset value: undefined
Data type: 16-bit unsigned integer.
Usage: The unit is clock cycles. Read the shutter up first, then the shutter down. They should be read consecutively. Adjust the shutter to keep the average and maximum pixel values within the normal working range. The shutter value is automatically adjusted.
Maximum pixel address: 0x08
access: read reset value: underprecision
Data type: 8 digits.
Usage: The maximum pixel value in the current frame. Min=0, Max=254. The maximum pixel value can change every frame.
Pixel sum address: 0x09
access: read reset value: undefined
Data type: The upper 8 bits of an unsigned 17-bit integer.
Usage: This register is used to find the average pixel value. It reports 7 bits of a 16-bit counter that sums all pixels in the current frame. It can be described as the total sum divided by 512. To find the average pixel value, use the following formula: average pixel = register value * 128/121 = register value * 1.06, the maximum register value is 240. The minimum value is 0. Pixels and values can be changed on every frame.
Minimum pixel address: 0x0a
access: read reset value: undefined
Data type: 8 digits.
Usage: The minimum pixel value in the current frame. Min=0, Max=254. The minimum pixel value can change every frame.
Pixel grab address: 0x0b
access: read/write reset value: undefined
Data type: 8-bit word.
Purpose: For testing, the sensor will read out the contents of the pixel array, one pixel per frame. To initiate a pixel grab, write anything to this register to reset the pointer to pixel 0,0. Then read the pixel bits in the motion register. When the PIXRDY bit is set, valid data is available in this register to read. After reading the data in this register, the pointer will automatically increment to the next pixel. Reading can continue indefinitely; once a full frame of pixel values has been read, PIXFIRST will be set high to indicate the start of the first pixel, and the address pointer will start again from the start position.
Pixel address map (viewed through ADNS-3120-001 lens)
CRC0 address: 0x0c
access: read reset value: undefined
Data type: 8 digits
Usage: Register 0x0c reports the first byte of the system self-test result. value=0xAF. See Self-Test Register 0x10.
CRC1 address: 0x0d
access: read reset value: undefined
Data type: 8 digits
Usage: Register 0x0c reports the second byte of the system self-test result. value=0x4E. See Self-Test Register 0x10.
CRC2 address: 0x0e
access: read reset value: undefined
Data type: 8 digits
Usage: Register 0x0e reports the third byte of the system self-test result. value=0x31. See Self-Test Register 0x10.
CRC3 address: 0x0f
access: read reset value: undefined
Data type: 8 digits
Usage: Register 0x0f reports the fourth byte of the system self-test result. value=0x22. See Self-Test Register 0x10.
Self-check address: 0x10
Access: Write Reset Value: NA
Data Type: Bit Field
Usage: Set the TESTEN bit in Register 0x10 to initiate a system self-test. The test takes 250ms. During this time, do not write or read through the SPI port. The result is available in the CRC0-3 registers. After self-test, reset the chip and start to work normally.
Configuration bit address: 0x11
access: read/write reset value: 0x03
Data Type: Bit Field
Usage: Register 0x11 allows the user to change the configuration of the sensor. Setting the RESTEN bit forces the sensor into Rest mode, as described in the power modes section above. The RES bits allow selection between 400 and 800 cpi resolution.
Note: Forced rest has long wake times and should not be used for power management during normal mouse movement.
Watch address: 0x2e
access: read/write reset value: undefined
Data Type: Bit Field
Usage: Register 0x2e provides bits that are set every frame. It can be used during EFTB testing to check that the chip is functioning properly. Writing anything to this register clears these bits.
Power-on reset address: 0x3a
access: write reset value: undefined
Data type: 8-bit integer
Usage: Write 0x5A to this register to reset the chip. All settings will be restored to default values.
Reverse revision number address: 0x3e
Access: Read Reset Value: 0xFD
Data type: Inverse 8-bit unsigned integer
Usage: This value is the opposite of the revision ID. It can be used to test the SPI port.
Inverse product address: 0x3f
Access: Read Reset Value: 0xF2
Data type: Inverse 8-bit unsigned integer
Usage: This value is the opposite of Product ID. Can be used to test the SPI port.
Movement Outbreak Address: 0x42
access: read reset value: any
Data Type: Various.
Usage: Read from this register to activate burst mode. The sensor will return the data in the motion registers Delta_Y, Delta_X, Squal, Shutter_Upper, Shutter_Lower and Maximum_Pixel. During a burst read, at least 3 bytes should be read. Reading the first 3 bytes will clear the motion data.