首页 手持式触摸屏应用程序设计成接近传感器

手持式触摸屏应用程序设计成接近传感器

举报
开通vip

手持式触摸屏应用程序设计成接近传感器 Maxim > Design Support > Technical Documents > Application Notes > Amplifier and Comparator Circuits > APP 5030 Keywords: proximity touchscreen, touch sensor, ambient light, handheld, portable, mobile, smartphone Nov 30, 2011 APPLICATION NOTE 5030 Designin...

手持式触摸屏应用程序设计成接近传感器
Maxim > Design Support > Technical Documents > Application Notes > Amplifier and Comparator Circuits > APP 5030 Keywords: proximity touchscreen, touch sensor, ambient light, handheld, portable, mobile, smartphone Nov 30, 2011 APPLICATION NOTE 5030 Designing a Proximity Sensor into a Handheld Touch- Screen Application By: Ilya Veygman, Strategic Applications Engineer Nov 30, 2011 Abstract: This application note discusses the advantages of using the Maxim MAX44000 proximity sensors in handheld touch-screen applications. It then addresses a few application considerations. These include reducing crosstalk, improving noise immunity, and reducing the load on the application processor in the system. Sample C code for threshold hysteresis is available in the appendix. Why Use Proximity Sensors? Touch screens can be found in various handheld electronic devices, not the least of which are smartphones. While touch screens greatly improve a device's functionality, they present several new challenges. This includes knowing how and when to interpret interaction with the touch screen. For example, the screen must interpret how to react when the phone is against a user's face; inadvertent contact with the ear or cheek can be wrongly interpreted as desired user input. The most popular way to get around this problem—and simultaneously add to the device's capabilities—is to integrate a proximity sensor into the phone. This sensor can turn off the touch screen when the proximity reading is sufficiently large and the user is on the phone. Devices containing infrared-based proximity sensors with digital outputs, such as the MAX44000, make this task relatively simple, compared to discrete solutions. Key Benefits of Maxim's Proximity Sensors Maxim's proximity sensors offer several advantages. For one, the infrared emitter is set up in a current-sinking rather than a current- sourcing configuration. Thus the user can select, within reason, the supply voltage used on the LED, allowing for optimization between LED performance and power usage (Figure 1). Figure 1. The MAX44000 with an LED. Because the MAX44000 family is I²C-capable, it is extremely easy to integrate the sensors into most embedded systems via this versatile bus. In addition, the devices support a hardware interrupt line. These two features ensure that the sensor can be seamlessly placed into most handheld devices, while minimizing the amount of processor resources needed to service information from the sensor. Furthermore, Maxim's proximity sensors have additional functionality built in. For example, the MAX44000 integrates an ambient light sensor and proximity into a single 6-pin IC. Solutions such as these eliminate the need for multiple sensors to accomplish all light- sensor tasks. Page 1 of 5 Application Considerations The MAX44000 comes in a tiny, 2mm x 2mm x 0.6mm UDFN-Opto package, allowing the user to save room in space-sensitive applications. Additionally, the sensor provides circuitry to drive an LED, but the end user must ultimately supply the emitter diode. This circuit can drive from 0mA to 110mA through the emitter diode in a sinking configuration, which saves the need for external circuitry to perform this task. Figure 2. The MAX44000 with a bypassed emitter. Care should be taken with this feature, especially at higher drive currents. Specifically, these short, high-current pulses may generate some noise around the MAX44000, due to current spikes in the power supply line. There are two ways to get around this: either use a decoupling capacitor with the emitter diode or completely isolate the power supply of the MAX44000 from that of the emitter diode. The decoupling capacitor has the advantage of being cheaper, but the disadvantage of having to be located very close to the MAX44000 and emitter diode. The end user should try this solution first before moving on to the alternative, as it generally works sufficiently well. Figure 2 shows both solutions simultaneously, though this may prove to be overkill. One must also take into careful consideration the effects of glass on the proximity sensor. Most, if not all, smartphones have glass covering the front of the phone. In some phones, this glass is black. This glass has two key effects on the light sensor. First, the intensity of incident light onto the ambient light sensor section of the IC is attenuated, which should be taken into account. Second, some crosstalk may be introduced, by way of emitted light from the LED being partially reflected from the glass and back to the sensor (Figure 3). Figure 3. Illustration of crosstalk—no baffle. Figure 4. Example of a simple optical baffle. This can be mitigated in several ways. One option is to place an optical baffle between the emitter and receiver (Figure 4), which will greatly reduce the amount of optical power that can reach the sensor. Another is to keep both the emitter and receiver as close to the glass as possible, and to ensure that the circuit board is nonreflective. Page 2 of 5 Considerations with the On/Off Threshold A common challenge with integrating the proximity sensor into the system is correctly selecting the proximity threshold at which the screen is turned on or off during a call. The "trigger point" must be set to ensure that it will not have many false positives while maximizing the number of use cases that it can support. For example, users with light-colored hair who hold the phone in such a way that the proximity sensor faces their hair will reflect far more signal than a user with dark-colored hair. The MAX44000's proximity sensor has excellent sensitivity (2.7nW/cm²/LSB) for a standard, 850nm IR emitter. This means the MAX44000 can not only perform well behind black glass but also detect users with dark hair. In addition to this, the MAX44000's proximity sensor rejects up to 100,000 lux of DC sunlight, improving its performance in outdoor conditions. One last thing to consider is the application of hysteresis to this sensor. The reason one would want to do this is the same reason one would add hysteresis to a comparator circuit. Namely, if the input signal is hovering around the threshold, any noise can cause undesired, random switching of the output signal. The same applies to a proximity sensor. Consider the simple (and power-inefficient) case where we periodically poll the sensor in software. If the counts are above some value and the screen is on, then the screen is turned off. Otherwise, if the screen was already off, then it is turned back on. This might seem acceptable at first glance, but the user may hold the device in such a way that the counts will hover around this threshold, causing the screen to turn on and off undesirably. One way around this is to set the hysteresis in software. For example, if the transition of the touch screen from "on" to "off" occurs at or above 150 counts (assuming the proximity sensor is being run in 8-bit mode), then the transition from "off" back to "on" should occur only after the counts fall to or below 135. In addition, it is useful to ensure that these respective levels persist for a certain amount of time. This further reduces the chances of noise triggering undesired behavior by acting as a sort of crude lowpass filter. The MAX44000 supports such a scheme in its internal registers: REGISTER B7 B6 B5 B4 B3 B2 B1 B0 REGISTERADDRESS POWER- ON RESET STATE R/W Threshold Persist Timer PRXPST[1:0] ALSPST[1:0] 0x0A 0x00 R/W PROX Threshold— High Byte ABOVE PRXTHR[13:8] 0x0B 0x00 R/W PROX Threshold— Low Byte PRXTHR[7:0] 0x0C 0x00 R/W If interrupts are enabled (register 0x01, bits 1:0 for proximity and ALS), then these registers can set the chip so it can run without the need to constantly poll the sensor over I²C. Use bits 2 and 3 from register 0x0A to set the delay before an interrupt, as described earlier. This delay can be 1, 4, 8, or 16 consecutive samples past the threshold. Registers 0x0B and 0x0C set the threshold, as well as whether the interrupt is triggered by the counts being above or below the threshold. Some sample code that implements the hysteresis scheme and this interrupt approach is available in the appendix. When doing reads or writes over the I²C bus, it should be noted that this particular part does not autoincrement register addresses in the case of multiple read/write. This should be done manually in software, although this is generally a trivial implementation. It is critical that care is taken when reading data across multiple registers in an I²C-compatible device, so that errors do not occur. For more information, see application note 5033, "The Importance of Being Earnest (About Reading from an ADC on the I²C Interface." Appendix A: Sample Code for Threshold Hysteresis #define MAX44000_ADDR 0x94 #define INT_STATUS_REG 0x00 Page 3 of 5 #define OFF_THRESHOLD 4600 #define OFF_DELAY 1 #define ON_THRESHOLD 4000 #define ON_DELAY 3 uint8 screenStatus; // 0 means off, 1 means on /* i2cWriteBytes() Arguments: uint8 address - device address uint8 start_reg - register where the first byte is written uint8 *data - data to write uint8 nbytes - number of bytes to write Consecutively writes several bytes to some i2c device starting at some specified address -- implemented elsewhere */ void i2cWriteBytes(uint8 address,uint8 start_reg,uint8 *data,uint8 nbytes); /* MAX44000InterruptHandler() The example code below implements an interrupt handler when the INT pin of the MAX44000, assuming that the MAX44000's proximity sensor is set up for 14-bit mode and interrupts have been enabled. Furthermore, assume that screenStatus was initialized at some point to 1 or 0. Please consult the data sheet's register descriptions for more details. */ void MAX44000InterruptHandler() { uint8 i2cData[3]; i2cRead1Byte(MAX44000_ADDR,INT_STATUS_REG,&i2cData); if (i2cData&0x01 != 0) return; // check to make sure interrupt really fired // this simultaneously clears the interrupt flag if (screenStatus) { i2cData[0] = ON_DELAY; i2cData[1] = ON_THRESHOLD >> 8 & 0xBF; // set ABOVE = 0 i2cData[2] = ON_THRESHOLD & 0xFF; } else { i2cData[0] = OFF_DELAY; i2cData[1] = OFF_THRESHOLD >> 8 | 0x40; // set ABOVE = 1 i2cData[2] = OFF_THRESHOLD & 0xFF; } // set the new threshold depending on what the screen status was // set the delay and threshold after each interrupt i2cWriteBytes(MAX44000_ADDR,0x0A,i2cData,3); return; } // MAX44000InterruptHandler Related Parts MAX44000 Ambient and Infrared Proximity Sensor Next Steps EE-Mail Subscribe to EE-Mail and receive automatic notice of new documents in your areas of interest. Share Other Channels E-Mail this page to an associate or friend. More Information For Technical Support: http://www.maxim-ic.com/support For Samples: http://www.maxim-ic.com/samples Other Questions and Comments: http://www.maxim-ic.com/contact Application Note 5030: http://www.maxim-ic.com/an5030 Page 4 of 5 APPLICATION NOTE 5030, AN5030, AN 5030, APP5030, Appnote5030, Appnote 5030 Copyright © by Maxim Integrated Products Additional Legal Notices: http://www.maxim-ic.com/legal Page 5 of 5 maxim-ic.com Designing a Proximity Sensor into a Handheld Touch-Screen Application - Maxim
本文档为【手持式触摸屏应用程序设计成接近传感器】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_601580
暂无简介~
格式:pdf
大小:64KB
软件:PDF阅读器
页数:5
分类:互联网
上传时间:2011-12-08
浏览量:9