×

阻性触摸屏的经典方法资料下载

消耗积分:2 | 格式:pdf | 大小:146.82KB | 2021-04-06

五斤麻辣油

分享资料个

  对于各种消费、医疗、汽车和工业设备,增强的低成本触控 式用户界面是一个极具价值的特性。在许多应用 中,设计师偏向使用容性触摸屏,而不愿使用阻性触摸技 术,原因是前者可以跟踪手指,似乎能够提供更友好的用户 交互体验。目前,低成本阻性技术的应用市场包括:只需要 单点触控、至关重要的极其精确的空间分辨率、利用触控笔 来实现特定功能(如亚洲语言符号识别等),或者用户必须 戴手套的场合。 虽然阻性技术传统上是用来检测屏幕上“单点触摸”的位 置,但本文提出了一个创新的“两点触摸”概念,它利用阻 性触摸屏控制器 AD7879 在廉价的阻性触摸屏上检测最常见 的双指手势(缩放、捏合和旋转)。     阻性触摸屏的经典方法     典型的阻性触摸屏包括两个平行的氧化铟锡(ITO)导电层,中 间的间隙将两层分开(图 1)。上层(Y)的边缘电极相对于下 层(X)的边缘电极旋转 90°。当对屏幕的一个小区域施加压 力,使这两层发生电气接触时,就发生了“触摸”现象。如 果在上层的两个电极之间施加一个直流电压,而下层悬空, 则触摸将使下层获得与触摸点相同的电压。判断上层方向触 摸坐标的方法是测量下层的电压,以便确定触摸点处的电阻 占总电阻的比值。然后交换两层的电气连接,获得触摸点在 另一个轴上的坐标。   连接直流电压的层称为“有源”层,电流与其阻抗成反比。 测量电压的层称为“无源”层,无相关电流流经该层。发生 单点触摸时,在有源层中形成一个分压器,无源层电压测量 通过一个模数转换器读取与触摸点和负电极之间的距离成比 例的电压1.   由于成本低廉,传统的 4 线阻性触摸屏深受单点触控应用的 欢迎。实现阻性多点触控的技术有多种,其中总是会用到一 个矩阵布局屏幕,但屏幕制造成本高得吓人。此外,控制器 需要许多输入和输出来测量和驱动各个屏幕带,导致控制器 成本和测量时间增加。   超越单点触控     虽然如此,但通过理解并模拟该过程背后的物理原理,我们 可以从阻性触摸屏提取更多信息。当发生两点触摸时,无源 屏幕中的一段电阻加上触点的电阻与有源屏幕的导电段并 联,因此电源的负载阻抗减小,电流增大。阻性控制器的经 典方法是假设有源层中的电流恒定不变,无源层为等电位。 两点触摸时,这些假设不再成立,为了提取所需的信息,需 要进行更多测量。   阻性屏幕中的两点触摸检测模型如图 2 所示。Rtouch为层间的 接触电阻;在现有的大多数屏幕中,其数量级一般与两层的 电阻相同。如果有一个恒定的电流I流经有源层的两端,则有 源层上的电压为:       手势识别     以“捏合”(pinch)作为范例可以更好地描述手势识别的工作 原理。捏合手势从两根分开较远的手指触摸开始,产生双重 接触,使得屏幕的阻抗降低,有源层两根电极之间的电压差 因此减小。随着两根手指越来越接近,并联面积减小,因而 屏幕的阻抗提高,有源层两根电极之间的电压差相应地增 大。   紧密捏合后,并联电阻趋于 0,Ru + Rd提高到总电阻,因此电 压增大到:   图 3 显示了一个沿着垂直(Y)轴捏合的例子。当手势开始时, 其中一层的两根电极之间的电压恒定不变,另一层则表现出 阶跃性降低,然后随着手指相互靠近而提高。       图 4 显示倾斜捏合时的电压测量结果。这种情况下,两个电 压均表现出阶跃性降低,然后缓慢恢复。两个恢复速率(利 用各层的电阻归一化)的比值可以用来检测手势的角度。       如果手势为缩放(手指分开),其行为可以从上述讨论推导 出来。图 5 显示了沿各轴及沿倾斜方向缩放时测得的两个有 源层电压趋势。       利用 AD7879检测手势     AD7879 触摸屏控制器设计用于与 4 线式阻性触摸屏接口。除 了检测触摸动作外,它还能测量温度和辅助输入端的电压。 所有四种触摸测量加上温度、电池、辅助电压测量,均可以 通过编程写入其片内序列器。   AD7879 结合一对低成本运算放大器,可以执行上述捏合和缩 放手势测量,如图 6所示。   下面的步骤说明了手势识别的过程:   在前半周期中,将一个直流电压施加于上层(有源 层),并测量X+引脚的电压(对应于VY+ – VY–),以提 供与Y方向上的运动(接近还是分开)相关的信息。   在后半周期中,将一个直流电压施加于下层(有源 层),并测量Y+引脚的电压(对应于VX+ – VX–),以提 供与X方向上的运动(接近还是分开)相关的信息。   图 6 所示的威廉希尔官方网站 需要为差分放大器提供保护,防止短接到 VDD。在前半周期中,下方放大器的输出短接到VDD。在后半 周期中,上方放大器的输出短接到VDD。为避免这种现象, AD7879的GPIO可以控制两个外部模拟开关,如图 7所示。     这种情况下,AD7879 设置为从机转换模式,并且仅测量半个 周期。当 AD7879 完成转换时,产生一个中断,主处理器重 新设置 AD7879 以测量第二个半周期,并且改变 AD7879 GPIO 的值。第二转换结束时,两层的测量结果均存储在器件 中。   旋转可以通过一个方向上的同时缩放和一个倾斜捏合来模 拟,因此检测旋转并不困难。挑战在于区别旋转是顺时针 (CW)还是逆时针(CCW),这无法通过上述过程来实现。为了 检测旋转及其方向,需要在两层(有源层和无源层)上进行测量,如图 8 所示。图 7 中的威廉希尔官方网站 无法满足之一要求,图 9 提出了一种新的拓扑结构。       图 9所示的拓扑结构实现了如下功能:   半周期 1:电压施加于Y层,同时测量(VY+ – VY–)、VX–和 VX+。每完成一个测量,AD7879 就会产生一个中断,以 便处理器改变GPIO配置。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !

'+ '

'+ '

'+ ''+ '
'+ ''+ ''+ '
'+ ''+ '' ); $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code ==5){ $(pop_this).attr('href',"/login/index.html"); return false } if(data.code == 2){ //跳转到VIP升级页面 window.location.href="//m.obk20.com/vip/index?aid=" + webid return false } //是会员 if (data.code > 0) { $('body').append(htmlSetNormalDownload); var getWidth=$("#poplayer").width(); $("#poplayer").css("margin-left","-"+getWidth/2+"px"); $('#tips').html(data.msg) $('.download_confirm').click(function(){ $('#dialog').remove(); }) } else { var down_url = $('#vipdownload').attr('data-url'); isBindAnalysisForm(pop_this, down_url, 1) } }); }); //是否开通VIP $.get('/article/vipdownload/aid/'+webid,function(data){ if(data.code == 2 || data.code ==5){ //跳转到VIP升级页面 $('#vipdownload>span').text("开通VIP 免费下载") return false }else{ // 待续费 if(data.code == 3) { vipExpiredInfo.ifVipExpired = true vipExpiredInfo.vipExpiredDate = data.data.endoftime } $('#vipdownload .icon-vip-tips').remove() $('#vipdownload>span').text("VIP免积分下载") } }); }).on("click",".download_cancel",function(){ $('#dialog').remove(); }) var setWeixinShare={};//定义默认的微信分享信息,页面如果要自定义分享,直接更改此变量即可 if(window.navigator.userAgent.toLowerCase().match(/MicroMessenger/i) == 'micromessenger'){ var d={ title:'阻性触摸屏的经典方法资料下载',//标题 desc:$('[name=description]').attr("content"), //描述 imgUrl:'https://'+location.host+'/static/images/ele-logo.png',// 分享图标,默认是logo link:'',//链接 type:'',// 分享类型,music、video或link,不填默认为link dataUrl:'',//如果type是music或video,则要提供数据链接,默认为空 success:'', // 用户确认分享后执行的回调函数 cancel:''// 用户取消分享后执行的回调函数 } setWeixinShare=$.extend(d,setWeixinShare); $.ajax({ url:"//www.obk20.com/app/wechat/index.php?s=Home/ShareConfig/index", data:"share_url="+encodeURIComponent(location.href)+"&format=jsonp&domain=m", type:'get', dataType:'jsonp', success:function(res){ if(res.status!="successed"){ return false; } $.getScript('https://res.wx.qq.com/open/js/jweixin-1.0.0.js',function(result,status){ if(status!="success"){ return false; } var getWxCfg=res.data; wx.config({ //debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。 appId:getWxCfg.appId, // 必填,公众号的唯一标识 timestamp:getWxCfg.timestamp, // 必填,生成签名的时间戳 nonceStr:getWxCfg.nonceStr, // 必填,生成签名的随机串 signature:getWxCfg.signature,// 必填,签名,见附录1 jsApiList:['onMenuShareTimeline','onMenuShareAppMessage','onMenuShareQQ','onMenuShareWeibo','onMenuShareQZone'] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2 }); wx.ready(function(){ //获取“分享到朋友圈”按钮点击状态及自定义分享内容接口 wx.onMenuShareTimeline({ title: setWeixinShare.title, // 分享标题 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享给朋友”按钮点击状态及自定义分享内容接口 wx.onMenuShareAppMessage({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 type: setWeixinShare.type, // 分享类型,music、video或link,不填默认为link dataUrl: setWeixinShare.dataUrl, // 如果type是music或video,则要提供数据链接,默认为空 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ”按钮点击状态及自定义分享内容接口 wx.onMenuShareQQ({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到腾讯微博”按钮点击状态及自定义分享内容接口 wx.onMenuShareWeibo({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); //获取“分享到QQ空间”按钮点击状态及自定义分享内容接口 wx.onMenuShareQZone({ title: setWeixinShare.title, // 分享标题 desc: setWeixinShare.desc, // 分享描述 link: setWeixinShare.link, // 分享链接 imgUrl: setWeixinShare.imgUrl, // 分享图标 success: function () { setWeixinShare.success; // 用户确认分享后执行的回调函数 }, cancel: function () { setWeixinShare.cancel; // 用户取消分享后执行的回调函数 } }); }); }); } }); } function openX_ad(posterid, htmlid, width, height) { if ($(htmlid).length > 0) { var randomnumber = Math.random(); var now_url = encodeURIComponent(window.location.href); var ga = document.createElement('iframe'); ga.src = 'https://www1.elecfans.com/www/delivery/myafr.php?target=_blank&cb=' + randomnumber + '&zoneid=' + posterid+'&prefer='+now_url; ga.width = width; ga.height = height; ga.frameBorder = 0; ga.scrolling = 'no'; var s = $(htmlid).append(ga); } } openX_ad(828, '#berry-300', 300, 250);