基于I2C总线的高分辨率红外式触摸屏设计
扫描二维码
随时随地手机看文章
引言
随着平面显示器的大规模应用和大屏幕平板显示器的出现,红外触摸屏的应用已十分广泛。同时,分辨率的进一步提高成为红外触摸屏应用于大屏幕的关键,本文提出了一种提高红外式触摸屏分辨率的方法。
系统结构及工作原理
系统工作原理
红外触摸屏基本原理是光束阻断技术,它不需要在原来的显示器表面覆盖任何材料,只需在显示屏幕的四周安放一个框架。框架两个对边上,一边安装红外发光二极管(LED),另一边安装红外线探测器,在显示屏幕的表面形成一个由红外线组成的栅格。当有任何物体进入这个栅格的时候,就会阻挡一些光线,光电转换电路就会收到变化的信号,由ADC转换后,MCU将计算的触摸位置坐标传递给操作系统。
早期红外触摸屏分辨率直接由红外管对数决定,触摸分辨率就等于屏的物理分辨率。如果采用模拟信号处理方式对接收的信号强度进行分级,对于接收的信号,不仅要判断其是否被阻挡,还要判断出被阻挡的程度。如图1所示,触摸物的不同位置将导致接收信号的强度差异,因此,触摸物的位置与接收的红外信号强度有直接的对应关系,即使触摸物移动非常小的距离,也会导致信号强度发生改变,即利用模拟信号的处理方式可以得到极高的分辨率。
采用模拟信号处理方式的触摸屏分辨率主要由红外管对数和模数转换精度决定,即触摸屏分辨率=红外管对数×单对红外管能实现的分辨率。触摸屏坐标由红外管的物理坐标和触摸点在相应管中的坐标共同决定。
系统结构
该系统主要红外光信号发射电路、光电转换电路和信号处理电路组成。结构组成框图如图2所示。
硬件设计
红外发射信号电路设计
红外信号发射电路主要由MAX6966构成,MAX6966是10端口、恒流LED驱动器,能驱动多支红外发光管,且管子发光强度一致性很好。MAX6966串口外设可为微处理器提供10个额定电压为7V的I/O端口。
如图3所示,MAX6966/MAX6967为通用输入/输出(GPIO)外设,可提供P0~P9共10个I/O端口,通过高速SPI兼容串口控制。这10个I/O端口可配置为逻辑输入、开漏逻辑输出和恒流吸人的任意组合,无论作为逻辑输入、开漏逻辑输出,还是恒流吸入,端口都可承受独立于MAX6966或MAX6967电源的7V电压。配置为恒流吸入的输出端口,可设为吸入10mA或20mA的恒流。静态端口电流可为静态,也可以是占空比为3/256~254/256的PWM波形,以减小平均电流。
端口配置为开漏逻辑输出时,其吸入电流能力相对较弱,但仍能满足正常逻辑电平输出的要求。开漏逻辑输出通常需要上拉电阻连接到适当的正电源,以提供逻辑高电平参考。弱驱动能力意味着短路电流较低,即使不慎由配置为逻辑输出的端口驱动LED,也不会对LED造成损坏。
MAX6966应用于红外发射管驱动电路的另一个极大优势是它可以采用两种方式进行多片级联。一种是多CS连接,并联DIN、SCLK,并对每个MAX6966器件提供单独的CS。另一种是将一个器件的DOUT连到下一个器件的DIN,并联SCI。K和CS,实现多个MAX6966的菊花链连接。
红外接收处理信号电路
考虑到红外触摸屏的使用环境和红外接收管的数量,红外信号接收电路须满足体积小、接线简单、探测灵敏度高、信号稳定易于处理等要求。据此,本文光电转换电路设计如图4所示。这里,场效应管与偏置电阻组成的恒流源为光电三极管提供几微安至上百微安的电流,调节偏置电阻的阻值可改变。Q点表明了电流源两端的等效直流电阻和等效交流电阻是两条不同斜率的直线。可以看出,交流电阻远大于直流电阻。利用电流源的直流电阻小、交流电阻大的特点,可将BJT放大管的集电极负载改为电流源电路。为保证静态电流方向一致,采用N沟道JFET构成电流源。将NJFET电流源的伏安特性与BJT输出特性绘在一起,可得图5。[!--empirenews.page--]
由图5可见,过BJT工作点Q的直流负载线斜率由NJFET电流源的等效直流电阻决定,交流负载线的斜率由NJFET电流源的等效交流电阻决定。由于电流源的交流电阻远大于直流电阻,所以电压增益大大提高。这种放大电路称为有源负载放大器。输出脉冲电压信号经过隔直电容后,滤除外界红外光带来的直流分量,经ADS7830转换后送入MCU处理。
ADS7830是采用I2C接口的8位、8通道采样ADC,支持三种I2C数据传输模式。该芯片I2C总线占用的空间非常小,需要的MCU接口少,易于设计。ADS7830接口及外围连接电路如图6所示。
软件设计
软件设计主要实现MCU的I2C总线模拟,以及MCU与ADS7830间I2C总线数据的传送。
CPU发出的控制信号分为地址码和控制量两部分。地址码用来选址,即接通需要控制的电路,确定控制的种类。控制量决定该调整的类别,如对比度、亮度,以及需要调整的量。这样,各控制电路虽然挂在同一条总线上,却彼此独立,互不相关。
系统统主程序流程图如图7所示。当MCU要读取ADS7830数据时,先发送读地址字节,若ADS7830发出应答信号,则应答信号之后为MCU接收的8位数据为D7~D0。接收结束后,MCU向被控器ADS7830发送一位非应答信号N(保持SDA位为高电平),然后MCU发送结束信号P。
结语
本文介绍了基于I2C总线的高分辨率红外触摸屏的软硬件设计及实现方法,整个系统结构简单,性能稳定。试验测试中有微小误差和遮挡距离L只测到4.5mm,其主要原因是输出电压下降到100mV以下时,受外界光干扰及仪器精度的影响,示波器输出图像不稳定。采用ADS7830后其转换数据精度可大大提高,同时可以考虑对多次转换值计算平均值,以减小坐标的不稳定。