使用普通IO口实现电容触摸感应的解决方案

合集下载

浅谈电容触摸技术的各类解决方案

浅谈电容触摸技术的各类解决方案

浅谈电容触摸技术的各类解决方案摘要:各类家电的操作器普遍采用触摸按键的方式对设备进行控制,在抗干扰以及响应速度上有不错的表现,结构上不易损坏,而且也有整体性的外观亮点。

其中电容式触摸按键响应快被广泛使用,本文针对电容触摸方式探讨了各公司提出和设计的电容触摸按键解决方案以及设计所需注意事项。

关键词:电容;触摸按键;Brief discussion on various solutions of capacitive touch technology(TCL Air Conditioner(ZhongShan)Co.,Ltd, 528400)Abstract:The operators of all kinds of household appliances generally use touch keys to control the equipment, in the anti-interference and response speed has a good performance, the structure is not easy to damage, but also has the overall appearance of bright spots. Capacitive touch key response is widely used. This paper discusses the capacitive touch key solutions proposed and designed by various companies and the matters needing attention in design.Key words: capacitance; Touch key;引言电容传感器可以解决许多不同类型的传感和测量问题。

它们能够被集成到一个印刷电路板或一个微芯片中,并且具有非常优秀的精确性,对温度良好的稳定性,以及很少的耗电量。

电容触摸方案

电容触摸方案
4.实现成本效益最大化。
三、方案详述
1.合法合规性
(1)严格遵守国家关于电子信息产品的相关法规及标准;
(2)选用环保材料,确保产品对人体及环境无害;
(3)符合RoHS指令要求,降低有害物质含量;
(4)进行可靠性测试,确保产品在正常使用条件下的性能稳定。
2.技术选型与设计
(1)触摸技术:采用高性能、多点触控的电容触摸技术;
(2)采用高精度生产设备,提高生产效率;
(3)加强生产过程控制,降低不良率;
(4)成品检测:确保产品符合设计方案。
四、实施策略
1.组建专业的项目团队,明确各成员职责;
2.编制详细的设计文档,指导设计工作;
3.开展技术选型、设计优化、算法优化等工作;
4.组织生产制造,确保产品质量;
5.进行产品测试,验证方案效果;
6.持续优化,提升产品性能。
五、风险评估与应对措施
1.技术风险:关注行业动态,及时更新技术方案;
2.合规风险:与政府部门保持沟通,确保方案合法合规;
3.市场风险:深入了解市场需求,适时调整产品策略;
4.生产风险:加强生产过程控制,提高生产效率。
六、总结
本方案旨在为某电子产品提供一整套合法合规、性能优越的电触触摸解决方案,满足市场需求,提升用户体验。在实施过程中,需密切关注各方面风险,确保项目顺利进行。通过本方案的实施,将为产品带来更高的市场竞争力,满足用户需求。
1.确保电容触摸技术的合法合规性,遵循相关法规和标准;
2.提高触摸屏的灵敏度、准确性和稳定性;
3.提升用户体验,降低误触率;
4.优化触摸屏结构设计,降低成本。
三、方案内容
1.合法合规性
(1)遵循国家相关法规和标准,如《电子信息产品污染控制管理办法》等;

单片机高低电平实现电容触摸的原理

单片机高低电平实现电容触摸的原理

单片机高低电平实现电容触摸的原理
单片机实现电容触摸的原理可以简述为以下几个步骤:
1. 创建一个电容传感器电路:通过一个电容传感器电路将电容传感器与单片机连接起来。

该电路一般由一个电容触摸键与一个固定的参考电容组成。

2. 输出引脚设置为输出模式:将单片机的一个IO引脚设置为输出模式,将电容触摸键的控制电压输出到该引脚。

3. 创建一个短路:将输出引脚与接地进行短路,使得电容触摸键与参考电容形成一个带有电荷的电容电路。

4. 引脚设置为输入模式:将IO引脚设置为输入模式,停止输出控制电压。

5. 监测电压变化:开始监测IO引脚上的电压变化,由于电容触摸键的引脚与参考电容电路共享一个电容,当有物体触摸电容键时,电容的电荷将被改变,从而导致IO引脚上的电压变化。

6. 判断触摸:通过动态地监测IO引脚上电压的变化,可以判断是否有物体触摸了电容触摸键。

当监测到电压变化时,即可认为有物体触摸了电容触摸键,并进一步进行相应的处理。

总结来说,单片机实现电容触摸的原理是通过监测IO引脚上电压的变化,来判断是否有物体触摸了电容触摸键。

电容触摸方案

电容触摸方案

电容触摸方案电容触摸方案概述电容触摸方案(Capacitive touch solution)是一种近年来广泛应用于各类电子设备中的交互技术。

它通过感应人体电荷的变化,实现了简便、快速、灵敏的触摸操作。

本文将介绍电容触摸方案的工作原理、常见应用场景和优势。

工作原理电容触摸方案基于电容传感技术,利用人体的电荷来实现触摸操作的识别。

其工作原理是通过在触控面板上布置一组导电层,当用户接近触摸面板时,电容就在用户与导电层之间建立起了电荷复合的路径。

触摸面板一般由两层导电层构成,分别为导电玻璃(ITO)层和导电背板层。

导电玻璃层用于接收用户触摸的电荷信号,而导电背板层则用于补偿电容变化。

当用户触摸导电玻璃层时,导电层之间的电容值会发生变化,通过测量电容变化的大小和位置,可以准确地判断用户的触摸操作。

应用场景电容触摸方案广泛应用于各类电子设备中,以下是一些常见的应用场景:智能手机和平板电脑电容触摸方案在智能手机和平板电脑中被广泛采用。

通过触摸屏幕进行手势操作,用户可以轻松地切换应用、滑动屏幕、放大缩小等。

电容触摸方案具有快速响应、精准识别和高灵敏度等特点,提供了更加便捷的用户体验。

汽车导航系统电容触摸方案在汽车导航系统中的应用越来越普遍。

通过在中控屏幕上采用电容触摸屏,驾驶员可以轻松地控制导航、音响、通信等功能。

与传统的按钮操作相比,电容触摸方案更加直观、易于操作。

家电控制面板电容触摸方案也被应用于家电控制面板中,如空调遥控器、电灯开关等。

通过电容触摸屏,用户可以方便地调节温度、切换模式、打开关闭设备等操作。

电容触摸方案在家电领域的应用,提升了产品的外观设计和用户交互体验。

优势电容触摸方案相比其他触摸技术具有许多优势,包括:更好的用户体验电容触摸方案响应速度快,触摸灵敏度高,可以提供更好的用户体验。

用户可以通过轻触、滑动、缩放等手势进行操作,更加直观和便捷。

抗干扰能力强电容触摸方案在设计上考虑了抗干扰能力,能够有效地抵御外界的电磁干扰。

电容式触摸按键解决方案

电容式触摸按键解决方案

电容式触摸按键解决方案一、方案简介在便携式媒体播放器和移动手持终端等大容量、高可视性产品的应用中,触摸按键已被广泛采用.由于其具有方便易用,时尚和低成本的优势,越来越多的电子产品开始从传统机械按键转向触摸式按键.触摸按键方案优点:1、没有任何机械部件,不会磨损,无限寿命,减少后期维护成本.2、其感测部分可以放置到任何绝缘层〔通常为玻璃或塑料材料〕的后面,很容易制成与周围环境相密封的键盘.以起到防潮防水的作用.3、面板图案随心所欲,按键大小、形状任意设计,字符、商标、透视窗等任意搭配,外型美观、时尚,不褪色、不变形、经久耐用.从根本上解决了各种金属面板以与各种机械面板无法达到的效果.其可靠性和美观设计随意性,可以直接取代现有普通面板〔金属键盘、薄膜键盘、导电胶键盘〕,而且给您的产品倍增活力!4、触摸按键板可提供UART、IIC、SPI等多种接口,满足各种产品接口需求.二、原理概述如图1所示在PCB上构建的电容器,电容式触摸感应按键实际上只是PCB上的一小块"覆铜焊盘〞,触摸按键与周围的"地信号〞构成一个感应电容,当手指靠近电容上方区域时,它会干扰电场,从而引起电容相应变化.根据这个电容量的变化,可以检测是否有人体接近或接触该触摸按键.接地板通常放置在按键板的下方,用于屏蔽其它电子产品产生的干扰.此类设计受PCB 上的寄生电容和温度以与湿度等环境因素的影响,检测系统需持续监控和跟踪此变化并作出基准值调整.基准电容值由特定结构的PCB产生,介质变化时,电容大小亦发生变化.图1 PCB上构建开放式电容器示意图三、方案实现该系列电容式触摸按键方案,充分利用触摸按键芯片内的比较器特性,结合外部一个电容传感器,构造一个简单的振荡器,针对传感器上电容的变化,频率对应发生变化,然后利用内部的计时器来测量出该变化,从而达到响应触摸功能的实现.该芯片内部本身集成了电容式触摸传感模块,可以做到一个I/O口对应一个按键,外围电路简洁、无需外部组件的情况下即可通过片上振荡器和电容式触摸感应IO实现触摸按键接口;1.8-3.6V宽电压工作X围,支持电池供电.超低功耗触摸按键待机电流消耗可低至1uA、最大工作电流0.8mA;MCU内部的数控振荡器<DCO>,可提供高达16MHz的频率,能在1uS时间内激活并实现稳定工作.MCU上电启动自动校准,生产、测试过程简单;可支持按钮、滑块、滚轮以与近距离传感器;适用于5mm以内的任何绝缘材料、如玻璃、陶瓷、塑料等;灵敏度可调节,具有很高的调节性;具有先进的防干扰措施,防止按键误动作,全自动补偿,不受环境温湿度影响.通讯接口多样性:提供IIC、SPI、UART等接口.图2 方案示意图四、触摸按键原理图图3 子机21键触摸按键方案原理图五、实物图片图4 无绳子机21键PCB六、电路板布局注意事项:1.将电路连接到触摸板由于电线会增加基准电容,因此应尽量缩短触摸板的连接线.由于弯曲可能影响整个电容变化,连接线应尽可能保持稳定的形状,这点同样非常重要.由于触摸板驱动电路本身具有高阻抗,因此应避免将高速或大电流驱动电线靠近触摸板电线.1.触摸板的形状和大小可使用标准实体填充的圆形或方形按键板. 可在按键板上钻孔以便提供背光,这不会影响电容性能. 按键板周围通常是接地区域. 可以使用网状和实体填充. 与接地区域的间隙通常为按键板尺寸的1/20. 如果使用10mm的按键板,则适合使用0.5mm的间隙〔请参见图5〕.图5 触摸板的大小和形状在滚动条应用中,按键板应紧密地封装在一起. 在此情况下,未使用的相邻按键板将通过器件接地.这将在活动按键板周围形成动态接地平面.通常,按键板尺寸越大,其敏感度就越高.该限制是当手指无法覆盖按键板区域时,增加按键板尺寸并不会产生更好的效果.按键板与接地平面之间的间隙也会影响其敏感度.在滚动条应用中,按键板不能太大,这一点很重要. 普通手指应能覆盖一个半大小的触摸板.2.PCB厚度与非活动表面接地由于电容器传感器板通常放置在其它电子器件的顶部,这有助于将地线排在PCB的下侧,使传感器能够屏蔽下方电子器件产生的辐射噪声.如果采用FR4材料,PCB的厚度对传感器影响不大. 若采用柔性PCB材料,如聚酰亚胺薄膜<Kapton>,那么材料越薄,下方的接地板就更靠近传感器按键的表面,且可能干扰其电容性能. 通过使用40%或更小的网状接地可以减小耦合区域,从而能够降低此影响.七、覆盖1.覆盖材料选择覆盖材料时须考虑两大因素:电容耦合性能〔介电常数〕静态击穿特性表1显示了一些常用材料的介电常数:材料的介电常数越高,手指与传感器板之间的电容耦合性能就越佳.除空气和某些木头外,上述材料非常适合用作覆盖材料.由于空气具有较低的电容耦合特征,因此应尽量不要在传感器板与覆盖材料之间留有空隙.空隙还可能聚集水分,当温度突然改变时这些水分可能凝聚到传感器表面. 请参阅8.3 Section了解有关粘合和填充复合材料的信息.表2显示通过覆盖一些常用材料,可避免出现12kV损坏的最小厚度:要增强ESD保护,可添加一层聚酰亚胺薄膜,这可以大幅提高覆盖层的击穿容限.2. 覆盖层厚度与敏感度对比覆盖层厚度通常与敏感度成反比,也成反向指数关系.诸多因素可能影响电容传感板的敏感度:按键板尺寸覆盖层材料与其厚度感应方法增益〔包括IIR滤波器增益和时钟速度〕3.粘合和其它填充复合材料在大多数应用中,传感器电极与覆盖层材料之间应密封耦合.设计人员可以在填充表中选择以机械方式还是粘合方式将覆盖层材料按压在PCB板上.选择粘合剂时须考虑两大因素:材料不得携带电荷并且不得影响电容性能〔因此,它应当为绝缘体〕.材料不会吸收水分.3M™ 467MP和468MP高性能丙烯酸双面胶带具有4.2mil 58磅涂有聚乙烯的牛皮卡纸,是此应用的理想选择.技术支持:胡立忠:0752-*******转816 :0752-*******:402290722八、通讯协议描述:3.通讯总线:a.工业标准NXP I2C 总线协议.b.本部件工作在SLA VE模式.c.可支持最大速率:400Kbps.d.本部件I2C地址〔7位〕0x6E.*MASTER读数据指时序:Start->发写命令〔0xDC〕->等待应答->写字节偏移地址<0x00>< 本方案直接从0X00开始读数据>->等待应答-> Stop->Start->发读命令<0xDD>->等待应答->读数据->非应答->Stop其它指令请参考标准I2C协议,不再详述.2.中断Pin置低:检测到按键,从0x00地址开始读4个字节按键数据.置高:无任何按键被检查到.3.I2C寄存器定义所有寄存器初始值:0x00Bit置1:对应按键按下.Bit置0:对应按键释放.DECT彩屏子机触摸按键图片数字无绳子机21键键值对应表:V oIP+DECT+MID方案触摸按键图片VoIP座机按键丝印板图座机按键键值对应表:。

YS801A电容式感应触摸芯片应用设计解决方案

YS801A电容式感应触摸芯片应用设计解决方案

电容式触摸感应检测按键是近年来迅速发展起来的一种新型按键。

它可以穿透绝缘材料外壳(玻璃、塑料等),它没有传统金属触摸人体直接接触金属片而带来的安全隐患,也没有传统轻触按键的机械触点寿命缺陷。

电容式感应按键做出来的产品防水,防尘,可靠耐用,美观时尚,便于生产安装以及维护。

原理触控焊盘自身存在一个分布电容。

当手指或者其它物体接近触控焊盘时,触控焊盘周围的环境(地)改变,导致其分布电容发生变化。

这种变化由触控芯片内部的专用电路转换成频率信号后,交给芯片内部软件处理,而后作出相应的控制动作。

特性支持 1 个感应按键支持 I/O 口开漏输出指示按键触发状态高效的 RF 噪音抑制能够防水自动基线跟踪和自校准简单的灵敏度调节,只需调整一个外部电容(CR)即可低功耗电源电压 2.8-5.5V封装为 SOT23-6L应用:用于替代按键数量少的机械按键的方案。

管脚定义及说明管脚图管脚说明电气特性极限参数供电电压............................V SS -0.3V~V SS +6.0V 端口输入电压........................V SS -0.3V~V DD +0.3V 存储温度..................................-50˚C~125˚C工作温度...................................-40˚C~85˚CIOL 总电流..................................80mAIOH 总电流..................................80mA总功耗......................................500mW注:这里只强调额定功率,超过极限参数所规定的范围将对芯片造成损害,无法预期芯片在上述标示范围外的工作状态,而且若长期在标示范围外的条件下工作,可能影响芯片的可靠性。

电容式触摸感应按键技术及常见问题解决办法

电容式触摸感应按键技术及常见问题解决办法

电容式触摸感应按键技术及常见问题解决办法浅谈电容式触摸感应按键技术及常见问题解决办法市场上的消费电子产品已经开始逐步采用触摸感应按键,以取代传统的机械式按键。

针对此趋势,Silicon Labs公司推出了内置微控制器(MCU)功能的电容式触摸感应按键(Capa citive Touch Sense)方案。

电容式触摸感应按键开关,内部是一个以电容器为基础的开关。

以传导性物体(例如手指)触摸电容器可改变电容,此改变会被内置于微控制器内的电路所侦测。

图1:电容式触摸感应按键的基本原理一种可侦测因触摸而改变的电容的方法电容式触摸感应按键的基本原理就是一个不断地充电和放电的张弛振荡器。

如果不触摸开关,张弛振荡器有一个固定的充电放电周期,频率是可以测量的。

如果我们用手指或者触摸笔接触开关,就会增加电容器的介电常数,充电放电周期就变长,频率就会相应减少。

所以,我们测量周期的变化,就可以侦测触摸动作。

具体测量的方式有二种:(一)可以测量频率,计算固定时间内张弛振荡器的周期数。

如果在固定时间内测到的周期数较原先校准的为少,则此开关便被视作为被按压。

(二)也可以测量周期,即在固定次数的张弛周期间计算系统时钟周期的总数。

如果开关被按压,则张弛振荡器的频率会减少,则在相同次数周期会测量到更多的系统时钟周期。

Silicon Labs推出的C8051F9xx微控制器(MCU)系列,可通过使用芯片上比较器和定时器实现触摸感应按键功能,连接最多23个感应按键。

而且无须外部器件,通过PCB走线/开关作为电容部分,由内部触摸感应按键电路进行测量以得知电容值的变化。

图2:Silicon Labs推出的C8051F9xx微控制器(MCU)系列以Silicon Labs的MCU实现触摸感应按键利用Silicon Labs其它MCU系列,仅需搭配无源器件,即可实现电容式触摸感应按键方案。

与C8051F93x-F92x方案相比,唯一所需的外部器件是(3+N)电阻器,其中N是开关的数目,以及3个提供反馈的额外端口接点。

电容式触控技术及方案

电容式触控技术及方案

电容式触控技术主要是应用人力的电流感应技术进行工作。

当手指触摸到金属层上时,人体电场、用户和触控屏表面形成一个耦合电容,对于高频电流来说,电容是直接导体,于是手指从接触点吸走一个很小的电流,这个电流从触控屏四角上的电极中流出,经过四个电极的电流与手指到四角的距离成正比,控制器通过对这四个电流比例的精确计算,得出触摸点的位置信息。

目录∙电容式触控技术优点∙电容式触控技术缺点∙电容式触控技术的工作原理∙ADI的电容式触摸技术解决方案∙电容式触控技术的发展动力及趋势电容式触控技术优点∙与电阻式触控屏和电磁式感应板相比,电容式触控屏表现出了更加良好的性能。

由于轻触就能感应,使用方便。

而且手指与触控屏的接触几乎没有磨损,性能稳定,经机械测试使用寿命长达30年。

另外,电容式触控屏原理整个产品主要由一块只有一个高集成度芯片的PCB组成,元件少,产品一致性好、成品率高。

电容式触控技术缺点∙代表流行风向标的iPhONe上使用电容式触控屏无疑进一步印证了其拥有的各项优势。

然而,瑕不掩瑜,电容电容式触控屏原理式触控屏也面临着以下一些挑战:由于人体成为线路的一部分,因而漂移现象比较严重:电容式感应输入技术在中小尺寸平板显示器上输入或控制点状目标(如点击软键盘上的电话号码或输入中英文字)时的性能有待改进:温度和湿度剧烈变化时性能不够稳定,需经常校准:不适用于金属机柜:当外界有电感和磁感的时候,可能会使触控屏失灵。

电容式触控技术的工作原理∙电容式触控面板的应用需由触控面板(Touch Panel)、控制器(Touch CONtroller)及软件驱动程序(Utility)等3部分分别说明。

∙触控面板∙一般电容式触控面板是在透明玻璃表面镀上一层氧化锑锡薄膜(ATO Layer)及保护膜(Hard Coat Layer)而与液晶银幕(LCD Monitor)间则需作防电子讯号干扰处理(Shielded Layer)。

下图为电容式触控面板的侧面结构。

PSoC电容式触摸感应技术

PSoC电容式触摸感应技术

PSoC电容式触摸感应技术PSoC是由Cypress半导体公司推出的具有数字和模拟混合处理能力的可编程片上系统芯片,某些系列的PSoC(如CY8C21X34系列),由于其内部配备的特殊资源,使得它可以很容易地实现电容式触摸感应功能,仅需少量的几个外置分立元件,可以将每一个通用的I/O都配置为电容感应输入。

电容式触摸感应原理如图1所示,电路板上两块相邻的覆铜之间存在一个固有的寄生电容Cp,当手指(或其他导体)靠近时,手指和两块覆铜之间又产生新的电容,这些电容相当于并联到原来的Cp之上,当我们把其中一块覆铜连接到PSoC的模拟I/O上,另一块连接到地上,就可以通过测量电容的变化来判断手指的存在。

我们把连接到PSoC上的覆铜称之为电容传感器(Capacitive Sensor),电容传感器上需覆盖绝缘材料(产品外壳)。

通过在PSoC内部搭建电路并用内建8位处理器的程序来控制电路的运作,就可以把电容的变化转化成计数值的变化,进而转化成按键动作所需要的开关量。

PSoC内部有几种预先设计好的电容感应用户模块,用户模块可以看作是硬件电路配置与软件库函数(API)的集合,用户所需要做的就是在PSoC开发环境(PSoC designer)中将用户模块配置到数字/模拟阵列中,开发环境会自动生成硬件寄存器配置及库函数,剩下的工作就是一些用户模块参数的调整,以及应用代码的编写。

整个开发过程非常直观、流畅,对于有嵌入式系统开发经验的工程师来说,很快就会得心应手。

电容式感应技术为工业设计提供新的思路有了电容式感应技术,工业设计师首先能想到的就是把传统的机械按键换成电容式的感应开关。

这增加了工业设计的灵活性,因为电容式开关可以隐藏在一块完整的表面下边,不需要像机械按键那样需要预留机械部件运动的空间。

在有些便携式产品上,设计师希望能在产品上赋予自然的灵性,比如像贝壳一样的MP3播放器、像卵石一样的手机,用电容式开关取代机械按键可以在最大程度上还原设计师的构思,让产品外观有浑然天成的效果。

电容触摸感应原理与应用

电容触摸感应原理与应用

电容触摸感应原理与应用1.电容触摸感应基本知识首先,人体是具有一定电容的。

当我们把PCB上的铜画成如下形式的时候,就完成了一个最基本的触摸感应按键。

上图左边,是一个基本的触摸按键,中间圆形绿色的为铜(我们可以称之为“按键”),在这些按键中会引出一根导线与MCU相连,MCU通过这些导线来检测是否有按键“按下”(检测的方法多种多样,这将在后面章节中谈到);外围的绿色也是铜,不过外围的这些铜是与GND大地相连的。

在“按键”和外围的铜之间是空隙(我们可以称为空隙d)。

上图右边是左图的截面图,当没有手指接触时,只有一个电容Cp ,当有手指接触时,“按键”通过手指就形成了电容Cf 。

由于两个电容是并联的,所以手指接触“按键”前后,总电容的变化率为C% = ((Cp+Cf)-Cp)/Cp = Cf/Cp ………………公式1下图更简单的说明了上述原理。

2.电容感应触摸器件的参数选择弄清楚了上述原理后很自然的就会想到下面两个问题:①空隙d的大小应该为多少呢?即“按键”与地之间的距离为多少?d 的大小会不会影响“按键”的性能?②“按键”的大小应该为多少呢?它的形状、大小会不会影响“按键”的性能呢?为了弄清楚这两个问题,我们首先介绍公式2:在这个公式中d就是我们所说的空隙的间距,A表示的“按键”面积的大小,C表示没有手指接触按键时电容的大小Cp。

显然,空隙间距d越大,Cp越小;面积A越大,Cp越大。

已知手指触摸产生的电容范围为5~15pf,这是一个非常小的容值。

当Cp非常小时,公式1中的C%将会比较大,也就是说MCU更加容易检测到这个电容值的变化。

基于这种考虑,对于FR4 材料的PCB(1~1.5mm 厚度)板来说我们一般选取d=0.5mm,按键的面积A一般选取成人手指大小即可。

3.电路板底层的覆铜处理前面我们说的都是在电路板的顶层如何绘制触摸按键。

下面我们来看看电路板的底层如何覆铜。

首先,在电路板底层覆铜是很有必要的,这些接地的覆铜能够最大限度的降低触摸按键的噪声以及外部环境对触摸按键的影响。

轻轻松松实现电容感应按键

轻轻松松实现电容感应按键

RC充放电原理电容感应按键看过PIC的电容按键方案,实际上仅仅是一个充放电过程,可以不用比较器吗? 答案是肯定的。

一般双向I/O单片机都可以做RC电容感应按键。

这里我们用M48的端口PD0来做一个RC的电容感应按键。

C1是分布电容,C2这里作为按键感应电容。

工作过程:1:首先要禁止上拉电阻。

2:PD0输出高电平,向C1,C2充电。

3:PD0设置为输入,判断C1.C2向R1放电完毕的时间。

4:对比有C2和没有C2的放电时间,判断是否有键感应。

如图在只有C1的时候放电波形,放电时间测量为4.1us如图在有C2感应的时候放电波形,放电时间测量为5.58us(可见有按键感应比无按键感应的放电时间要多1.48us。

面关键的是怎样测量放电时间:通常我们设置一个变量d,通过循环等待判断PD0是否=0来使变量d递增。

判断完毕后,放电时间的短d 最终值就小(无按键感应),放电时间长的d最终值就大(有按键感应)。

判断代码:while(PIND_0==0)d++;对应汇编代码:main_0:SBIC 0x09, 0x00RJMP main_1INC R18RJMP main_0main_1:通过汇编代码发现运行判断一次要5T时钟,当时钟频率为1M时候,运行判断一次要5T时钟5us。

1.48/5=0.296 不足1个字。

判断不出来。

当时钟频率为8M时候,运行判断一次要5T时钟0.625us。

1.48/0.625=2.368 约2-3个字。

这个差值还是太小当然这里的感应电容是1p,如果感应电容值变大也许能够识别出来。

这也许就是PIC的方案为什么采用比较器的缘故,硬件判别嘛,肯定要小于5T时钟。

我们可以采用定时器来代替变量d,这样运行判断一次就只需要3T时钟了(每次判断前开启定时器,每次判断完成后读取定时器值),判断代码如下://开定时器while(PIND_0==0);//读定时器值对应汇编代码:main_0:SBIS 0x09, 0x00RJMP main_1main_1:通过汇编代码发现运行判断一次要3T时钟,当时钟频率为1M时候,运行判断一次要3T时钟3us。

使用普通IO口实现电容触摸感应方案

使用普通IO口实现电容触摸感应方案

使用普通I/O口实现电容触摸感应方案浏览4992次技术背景现在电子产品中,触摸感应技术日益受到更多关注和应用,不仅美观耐用,而且较传统机械按键具有更大的灵敏度、稳定性、可靠性,同时可以大幅提高产品的品质。

触摸感应解决方案受到越来越多的IC设计厂家的关注,不断有新的技术和IC面世,国内的公司也纷纷上马类似方案。

Cpress公司的CapSense™技术可以说是感应技术的先驱,走在了这一领域的前列,在高端产品中有广泛应用,MCP推出了mTouch™,AT也推出了QTouch™技术,FSL推出的电场感应技术与MCP的电感触摸也别具特色,甚至ST也有QST产品。

但是目前所有的触摸解决方案都使用专用IC,因而开发成本高,难度大,而本文介绍的基于RC充电检测(RC Acquisition)的方案可以在任何MCU上实现,是触摸感应技术领域革命性的突破。

首先介绍了RC充电基础原理,以及充电时间的测试及改进方法,然后详细讨论了基于STM8S单片机实现的硬件、软件设计步骤,注意要点等。

一、RC充电检测基本原理RC充电检测基本原理是对使用如PCB的电极式电容的充电放电时间进行测量,通过比较在人体接触时产生的微小变化来检测是否有‘按下’动作产生,可选用于任何单独或多按键、滚轮、滑条。

如图1(a)所示,在RC网络施加周期性充电电压Vin,测量Vout会得到如(b)的时序,通过检测充电开始到Vout到达某一门限值的时间tc的变化,就可以判断出是否有人体接触。

图2显示出有人体接触时充电时间会变长。

实现电路如图3,使用一个I/O口对PCB构成的电容充电,另一个I/O口测量电压,对于多个按键时使用同一个I/O口充电。

R1通常为几百K到几M,人体与PCB构成的电极电容一般只有几个pF,R2用于降低噪声干扰,通常为10K。

二、充电时间测量方法对充电时间的测量可以使用MCU中定时器的捕捉功能,对于多个按键一般MCU没有足够的定时器为每个按键分配一个,也可以使用软件计时的方法,这要求能对MCU的时钟精确计数,并且保证每个周期的时钟个数保持一定。

用MCU普通IO口实现触摸壁灯

用MCU普通IO口实现触摸壁灯

用MCU普通IO口实现触摸壁灯一、基本要求:1)整机为6节AA电池供电,触摸IC供电:3.0V;2)4段触摸开关,5W(全开通), 3W(开通70%),2W(开通50%),1W(开通20%),OFF;3)拨动延时开关,off, 10s, 60s, on四个档位;4)墙壁灯大面积金属触摸面;5)举例说明:拨动开关处于10S档位时,触摸第一次,开通20%(如不再次触摸,延时10S自动OFF),触摸第二次,50%开通((如不再次触摸,延时10S自动OFF),触摸第三次,开通70%(如不再次触摸,延时10S自动OFF),触摸第四次,全开通(如不再次触摸,延时10S自动OFF),触摸第五次,OFF。

二、程序实现本例子使用MDT的10P509实现触摸过程,主要工作原理参看我的文库中“IO口实现电容触摸感应”。

10P509是一颗8位最低端的MCU,只有2层堆栈,无中断功能,资源仅仅只有一个定时器,所以输出PWM必须在主程序中精确计算。

;寄存器定义INDF EQU 00HRTCC EQU 01HPCL EQU 02HSTATUS EQU 03HC EQU 0HC EQU 1Z EQU 2PF EQU 3TF EQU 4PAGE EQU 5PCWUF EQU 7FSR EQU 04HBANK EQU 5OSCCON EQU 05HPORTA EQU 06HCAP0 EQU 0CAP1 EQU 1MS EQU 2DS EQU 4LED EQU 5;常量定义W EQU 0F EQU 1;---------------------------------------------------------------------------------------- ;变量定义;---------------------------------------------------------------------------------------- BASE EQU 08HF_STS EQU BASE+0; ---------------------------------------;| B7 | B6 | B5 | B4 | B3 | B2 | B1 | B0 |; ---------------------------------------;B7=1;B6=1 触摸有效;B5=1 LED延时关闭;B4=1 延时1秒DIFF更新检测;B3=1 自动关闭;B2=1 在超时检测;B1B0 =00 关闭模式(断电),01(模式1,10秒自动关闭),; 10(模式2,60秒自动关闭),11(模式3,常亮,需手动关闭)FS_KD_VALID EQU 6FS_ON_DELAY EQU 5FS_DIFF_DELAY EQU 4FS_AUTO_OFF EQU 3FS_TIMEOUT EQU 2FS_DS EQU 1FS_MS EQU 0MODE EQU BASE+1FLG_1 EQU BASE+2FLG_2 EQU BASE+3CAP_CNT EQU BASE+4 ;电容充电计数CAP_BASE EQU BASE+5 ;电容基数CAP_H EQU BASE+6 ;更新门限电容累加和高位CAP_L EQU BASE+7 ;更新门限电容累加和高位DIFF_CNT EQU BASE+8 ;更新门限计数次数CAP_MAX EQU BASE+9 ;检测18次的最大值CAP_MIN EQU BASE+10 ;检测18次的最小值CHK_VALID EQU BASE+11 ;有触摸次数CHK_INVALID EQU BASE+12 ;无触摸次数T_OFF_1 EQU BASE+13T_OFF_2 EQU BASE+14T_DELAY EQU BASE+15CAP_BK EQU BASE+16CNT_DELAY EQU BASE+17CNT_DELAY_END EQU BASE+18RTCC_END EQU BASE+19 ;1BHDIFF_BK EQU BASE+20;MCU:MDT10P509,4M;----------------------------------------------------------------------------------------ORG 00HNOPLJUMP INIT;----------------------------------------------------------------------------------------M_REMAIN:LDWI 200 ;200*32*1=6400SUBWR RTCC,WBTSS STATUS,CLJUMP M_REMAINCLRR RTCC;----------------------------------------------------------------------------------------MAIN:CLRWT ;主程序每个循环的时间是6.4msLDR MODE,W ;0(20%),1(50%),2(70%),3(100%),4(关闭) ADDWR PCL,FLJUMP M_20 ;0LJUMP M_50 ;1LJUMP M_70 ;2LJUMP M_100 ;3BCR PORTA,LED ;4BTSS F_STS,FS_KD_VALIDLJUMP M_OFF_1 ;S_SLEEPLDWI 90STWR RTCC_ENDLCALL CHK_CAPLDWI DIFF ;有触摸时电容更大,充电更快,所以值会更小ADDWR CAP_CNT,WSUBWR CAP_BASE,WBTSS STATUS,C ;无触摸值-触摸值>=设定的DIFF值LJUMP M_OFFCLRR CHK_INVALIDCLRR DIFF_CNTCLRR CAP_HCLRR CAP_LM_DECR_BASE:CLRR CHK_VALIDADDWR DIFF_BK,WADDWR CAP_CNT,WSUBWR CAP_BASE,WBTSS STATUS,CLJUMP M_REMAINDECR CAP_BASE,F ;基础值大于当前电容值+5+DIFF,时要减少 LJUMP M_REMAINM_OFF:INCR CHK_INVALID,FCLRR CHK_VALIDLCALL CAL_DIFFLDWI 5SUBWR CHK_INVALID,WBTSS STATUS,CLJUMP M_REMAINCLRR CHK_INVALIDBCR F_STS,FS_KD_VALIDM_OFF_1:CLRR MODELJUMP S_SLEEPM_20:BSR PORTA,LEDLCALL CHK_DSMSLCALL CHK_AUTO_OFFBTSC F_STS,FS_AUTO_OFFLJUMP S_SLEEPM_20_WAIT:LDWI 40 ;亮6.4*20%=1.28msSUBWR RTCC,W ;40*32*1=1280usBTSS STATUS,CLJUMP M_20_WAITBCR PORTA,LEDLDWI DIFF ;有触摸时电容更大,充电更快,所以值会更小 ADDWR CAP_CNT,WSUBWR CAP_BASE,WBTSS STATUS,C ;无触摸值-触摸值>=设定的DIFF值LJUMP M_20ACLRR CHK_INVALIDINCR CHK_VALID,FCLRR DIFF_CNTCLRR CAP_HCLRR CAP_LBTSC F_STS,FS_KD_VALID ;必须等到触摸无效后,再次触摸才有效LJUMP M_DECR_BASELDWI 3SUBWR CHK_VALID,WBTSS STATUS,CLJUMP M_REMAIN ;等待剩余时间结束CLRR CHK_VALIDLDWI 1 ;亮度50%STWR MODEBSR F_STS,FS_KD_VALIDCLRR T_OFF_1CLRR T_OFF_2LJUMP M_REMAINM_20A:INCR CHK_INVALID,FCLRR CHK_VALIDLCALL CAL_DIFFLDWI 5SUBWR CHK_INVALID,WBTSS STATUS,CLJUMP M_REMAINCLRR CHK_INVALIDM_50:BSR PORTA,LEDLCALL CHK_DSMSLCALL CHK_AUTO_OFFBTSC F_STS,FS_AUTO_OFFLJUMP S_SLEEPM_50_WAIT:LDWI 100 ;亮6.4*50%=3.2msSUBWR RTCC,W ;100*32*1=3200 usBTSS STATUS,CLJUMP M_50_WAITBCR PORTA,LEDLDWI 190STWR RTCC_ENDLCALL CHK_CAPLDWI DIFF ;1 1 有触摸时电容更大,充电更快,所以值会更小 ADDWR CAP_CNT,W ;1 2SUBWR CAP_BASE,W ;1 3BTSS STATUS,C ;1/2 4 无触摸值-触摸值>=设定的DIFF值LJUMP M_50A ;2 6CLRR CHK_INVALID ;1INCR CHK_VALID,F ;1CLRR DIFF_CNT ;1CLRR CAP_H ;1CLRR CAP_L ;1BTSC F_STS,FS_KD_VALID ;1/2 必须等到触摸无效后,再次触摸才有效LJUMP M_DECR_BASE ;2LDWI 3 ;1SUBWR CHK_VALID,W ;1BTSS STATUS,C ;1/2LJUMP M_REMAIN ;2 等待剩余时间结束CLRR CHK_VALIDLDWI 2 ;1 亮度70%STWR MODE ;1CLRR T_OFF_2 ;1LJUMP M_REMAIN ;2M_50A:INCR CHK_INVALID,F ;1 7CLRR CHK_VALID ;1 8LCALL CAL_DIFF ;67 75LDWI 5 ;1 76SUBWR CHK_INVALID,W ;1 77BTSS STATUS,C ;1/2 78LJUMP M_REMAIN ;2CLRR CHK_INVALID ;1 79BCR F_STS,FS_KD_VALID ;1 80LJUMP M_REMAIN ;2 82M_70:BSR PORTA,LEDLDWI 90STWR RTCC_ENDLCALL CHK_CAPLDWI DIFF ;有触摸时电容更大,充电更快,所以值会更小 ADDWR CAP_CNT,WSUBWR CAP_BASE,WBTSS STATUS,C ;无触摸值-触摸值>=设定的DIFF值LJUMP M_70ACLRR CHK_INVALIDINCR CHK_VALID,FCLRR DIFF_CNTCLRR CAP_HCLRR CAP_LBTSC F_STS,FS_KD_VALID ;必须等到触摸无效后,再次触摸才有效LJUMP M_70CLDWI 3SUBWR CHK_VALID,WBTSS STATUS,CLJUMP M_70B ;等待剩余时间结束LDWI 3 ;亮度100% STWR MODEBSR F_STS,FS_KD_VALIDCLRR T_OFF_1CLRR T_OFF_2LJUMP M_70BM_70C:CLRR CHK_VALIDLDWI 5STWR DIFF_BKLDWI DIFFADDWR DIFF_BK,WADDWR CAP_CNT,WSUBWR CAP_BASE,WBTSS STATUS,CLJUMP M_70BDECR CAP_BASE,FLJUMP M_70BM_70A:INCR CHK_INVALID,FCLRR CHK_VALIDLCALL CAL_DIFFLDWI 5SUBWR CHK_INVALID,WBTSS STATUS,CLJUMP M_70BCLRR CHK_INVALIDBCR F_STS,FS_KD_VALIDM_70B:LDWI 140SUBWR RTCC,WBTSS STATUS,CLJUMP M_70BBCR PORTA,LEDLCALL CHK_AUTO_OFFBTSS F_STS,FS_AUTO_OFFLJUMP M_REMAINNOPLJUMP S_SLEEPM_100:BSR PORTA,LEDLDWI 90STWR RTCC_ENDLCALL CHK_CAPLCALL CHK_DSMSLCALL CHK_AUTO_OFFBTSC F_STS,FS_AUTO_OFFLJUMP S_SLEEPLDWI DIFF ;有触摸时电容更大,充电更快,所以值会更小 ADDWR CAP_CNT,WSUBWR CAP_BASE,WBTSS STATUS,C ;无触摸值-触摸值>=设定的DIFF值LJUMP M_100ACLRR CHK_INVALIDINCR CHK_VALID,FCLRR DIFF_CNTCLRR CAP_HCLRR CAP_LBTSC F_STS,FS_KD_VALID ;必须等到触摸无效后,再次触摸才有效LJUMP M_DECR_BASELDWI 3SUBWR CHK_VALID,WBTSS STATUS,CLJUMP M_REMAIN ;等待剩余时间结束CLRR CHK_VALIDBSR F_STS,FS_KD_VALIDBTSC F_STS,FS_ON_DELAYLJUMP M_100BSTWR MODELJUMP M_REMAINM_100B:CLRR MODE ;10秒自动关闭CLRR T_OFF_1CLRR T_OFF_2LJUMP M_REMAINM_100A:INCR CHK_INVALID,FCLRR CHK_VALIDLCALL CAL_DIFFLDWI 5SUBWR CHK_INVALID,WBTSS STATUS,CLJUMP M_REMAINCLRR CHK_INVALIDBCR F_STS,FS_KD_VALIDLJUMP M_REMAIN;----------------------------------------------------------------------------------------;初始化部分,此部分主要是关灯后,要进入睡眠,睡眠唤醒后初始化;---------------------------------------------------------------------------------------- INIT:CLRR PORTALDWI 11000100B ;关唤醒使能,关0,1,3上拉,定时器1:32 TMODELDWI 01110101BSTWR OSCCONLDWI 01110101B ;PB1,2,3,4,5上拉使能CPIO OSCCONLDWI 00001000B ;PWM(PB5),DS(PB4)CPIO PORTALDWI 55HXORWR FLG_1,WBTSS STATUS,ZLDWI 0AAHXORWR FLG_2,WBTSS STATUS,ZLJUMP STARTLDWI 90STWR RTCC_ENDCLRR CHK_VALIDW_CHKCAP:CLRWTCLRR RTCCLCALL CHK_CAPCLRR PORTALDWI DIFF ;有触摸时电容更大,充电更快,所以值会更小 ADDWR CAP_CNT,WSUBWR CAP_BASE,WBTSS STATUS,C ;无触摸值-触摸值>=设定的DIFF值LJUMP W_DIFFCLRR CHK_INVALIDCLRR DIFF_CNT ;唤醒有效,不修改DIFFCLRR CAP_HCLRR CAP_LLDWI 10STWR RTCC_BKLDR RTCC,WADDWR RTCC_BK,FWCC_WAIT:LDR RTCC_BK,WSUBWR RTCC,WBTSS STATUS,CLJUMP WCC_WAITINCR CHK_VALID,F ;消抖LDWI 10SUBWR CHK_VALID,WBTSS STATUS,CLJUMP W_CHKCAPBSR F_STS,FS_KD_VALID ;必须等待触摸无效后才能再次有效CLRR T_OFF_1CLRR T_OFF_2LCALL CHK_DSMSCLRR RTCCBSR PORTA,LEDLJUMP MAIN;---------------------------------------------------------------------------------------- ;上电初始化,并先读一下电容值;---------------------------------------------------------------------------------------- START:CLRWTLDWI 55HSTWR FLG_1LDWI 0AAHSTWR FLG_2CLRR F_STSCLRR MODECLRR DIFF_CNTCLRR CAP_HCLRR CAP_LLDWI 90STWR RTCC_ENDCLRR CHK_VALIDS_CHKCAP:CLRWTCLRR RTCCLCALL CHK_CAPLCALL CAL_DIFF_8CLRR CHK_INVALIDSCC_WAIT:LDWI 120SUBWR RTCC,WBTSS STATUS,CINCR CHK_VALID,FLDWI 22SUBWR CHK_VALID,WBTSS STATUS,CLJUMP S_CHKCAPCLRR CHK_VALIDCLRR DIFF_CNTCLRR CAP_HCLRR CAP_LLDWI 55HSTWR FLG_1LDWI 0AAHSTWR FLG_2CLRR MODELCALL CHK_DSMSLJUMP S_SLEEP;---------------------------------------------------------------------------------------- W_DIFF:CLRR CHK_VALIDLCALL CAL_DIFFS_SLEEP:CLRR PORTALDWI 00001000B ;PWM(PB5),DS(PB4)CPIO PORTALDWI 11001010B ;1:4TMODELDWI 01110000BCPIO OSCCONCLRWTSLEEP ;睡眠唤醒是靠WATCHDOG,唤醒后复位NOPNOPNOP;---------------------------------------------------------------------------------------- ;延时21us;---------------------------------------------------------------------------------------- DELAY_xUS:LJUMP $+1 ;2LJUMP $+1 ;2LJUMP $+1 ;2LJUMP $+1 ;2LJUMP $+1 ;2LJUMP $+1 ;2LJUMP $+1 ;2LJUMP $+1 ;2LJUMP $+1 ;2NOP ;1RTIW 0 ;2;---------------------------------------------------------------------------------------- ;计算DIFF值;---------------------------------------------------------------------------------------- CAL_DIFF:BTSS F_STS,FS_DIFF_DELAY ;是否是0.96s延时更新中LJUMP CD_AINCR T_DELAY,FLDR CNT_DELAY_END,WSUBWR T_DELAY,WBTSS STATUS,CRTIW 0CLRR T_DELAYLDWI 7STWR CNT_DELAY_END ;320ms检测LDR CAP_CNT,WSUBWR CAP_BK,WBTSC STATUS,CLJUMP CD_BCLRR CNT_DELAYLDR CAP_CNT,WSTWR CAP_BKRTIW 0CD_B:INCR CNT_DELAY,FBTSS STATUS,CRTIW 0BCR F_STS,FS_DIFF_DELAYRTIW 0CD_A:LDWI DIFFADDWR CAP_BK,WSUBWR CAP_CNT,WBTSS STATUS,CLJUMP CD_NEXTCLRR CAP_HCLRR CAP_LCLRR DIFF_CNTLDR CAP_CNT,WSTWR CAP_BKCLRR CNT_DELAYLDWI 20STWR CNT_DELAY_END ;停0.96s再检测BSR F_STS,FS_DIFF_DELAYCLRR T_DELAYRTIW 0CD_NEXT:LDR CAP_CNT,WADDWR CAP_L,FBTSC STATUS,CINCR CAP_H,FLDR DIFF_CNT,WBTSS STATUS,ZLJUMP CD_1LDR CAP_CNT,WSTWR CAP_MAXSTWR CAP_MINLJUMP CD_2CD_1:LDR CAP_CNT,WSUBWR CAP_MAX,WLDR CAP_CNT,WSTWR CAP_MAXCD_1A:LDR CAP_MIN,WSUBWR CAP_CNT,WBTSC STATUS,CLJUMP CD_2LDR CAP_CNT,WSTWR CAP_MINCD_2:INCR DIFF_CNT,FLDWI 10SUBWR DIFF_CNT,WBTSS STATUS,CRTIW 0CLRR DIFF_CNTLDR CAP_MAX,W ;去掉最大值 SUBWR CAP_L,FBTSS STATUS,CDECR CAP_H,FLDR CAP_MIN,W ;去掉最小值 SUBWR CAP_L,FBTSS STATUS,CDECR CAP_H,FRRR CAP_H,F ;/2RRR CAP_L,FRRR CAP_H,F ;/4RRR CAP_L,FRRR CAP_H,F ;/8RRR CAP_L,FLDWI 3ADDWR CAP_L,WSUBWR CAP_BASE,WBTSC STATUS,CLJUMP CD_3CLRR CAP_HCLRR CAP_LCLRR DIFF_CNTRTIW 0CD_3:DECR CAP_BASE,F ;差异大的时候慢慢逼近LDR CAP_BASE,WSTWR CAP_BKCLRR CAP_HCLRR CAP_LCLRR DIFF_CNTRTIW 0;---------------------------------------------------------------------------------------- ;计算DIFF值,因计算次数不同,所以跟上述计算DIFF值的子程序分开;---------------------------------------------------------------------------------------- CAL_DIFF_8:LDR CAP_CNT,WADDWR CAP_L,FBTSC STATUS,CINCR CAP_H,FLDR DIFF_CNT,WBTSS STATUS,ZLJUMP CD8_1LDR CAP_CNT,WSTWR CAP_MAXSTWR CAP_MINLJUMP CD8_2CD8_1:LDR CAP_CNT,WSUBWR CAP_MAX,WBTSC STATUS,CLJUMP CD8_1ALDR CAP_CNT,WSTWR CAP_MAXBTSC STATUS,CLJUMP CD8_2LDR CAP_CNT,WSTWR CAP_MINCD8_2:INCR DIFF_CNT,FLDWI 10SUBWR DIFF_CNT,WBTSS STATUS,CRTIW 0CLRR DIFF_CNTLDR CAP_MAX,W ;去掉最大值 SUBWR CAP_L,FBTSS STATUS,CDECR CAP_H,FLDR CAP_MIN,W ;去掉最小值 SUBWR CAP_L,FBTSS STATUS,CDECR CAP_H,FRRR CAP_H,FRRR CAP_L,FRRR CAP_H,FRRR CAP_L,FRRR CAP_H,FRRR CAP_L,FLDR CAP_L,WSTWR CAP_BASESTWR CAP_BKCLRR CAP_HCLRR CAP_LCLRR DIFF_CNTRTIW 0;检查开关位置;---------------------------------------------------------------------------------------- CHK_DSMS:LDWI 00011100B ;PWM(PB5),DS(PB4)CPIO PORTALCALL DELAY_xUSLCALL DELAY_xUSLCALL DELAY_xUSBTSS PORTA,MSLJUMP CKD_1BTSS PORTA,DSLJUMP CKD_2BSR F_STS,FS_MSBSR F_STS,FS_DSLDWI 00001000BCPIO PORTABCR F_STS,FS_ON_DELAYRTIW 0CKD_1:BSR F_STS,FS_MSBCR F_STS,FS_DSLDWI 00001000BCPIO PORTABSR F_STS,FS_ON_DELAYRTIW 0CKD_2:BCR F_STS,FS_MSBSR F_STS,FS_DSLDWI 00001000BCPIO PORTABSR F_STS,FS_ON_DELAYRTIW 0;检测电容值,通过对电容充放电来实现;----------------------------------------------------------------------------------------CHK_CAP:LDWI 00001011BCPIO PORTANOPBCR PORTA,CAP0BSR PORTA,CAP1CLRR CAP_CNTCC_1:LDWI 00001001B ;1 1CPIO PORTA ;1 2INCR CAP_CNT,F ;1 3LDWI 00001010B ;1 4CPIO PORTA ;1 5LDR RTCC_END,W ;1 6 剩下20*32=640us用于执行余下得指令 SUBWR RTCC,W ;1 7BTSC STATUS,C ;1/2 8/9LJUMP CC_2 ;2BTSS PORTA,CAP1 ;1/2 10/11LJUMP CC_1 ;2 12LDWI 00001000BCPIO PORTABCR PORTA,CAP0BCR PORTA,CAP1RTIW 0CC_2:LDR CAP_BASE,WSTWR CAP_CNT ;超时时给基准值LDWI 00001000BCPIO PORTABCR PORTA,CAP0BCR PORTA,CAP1RTIW 0;---------------------------------------------------------------------------------------- ;检测关闭;---------------------------------------------------------------------------------------- CHK_AUTO_OFF:BCR F_STS,FS_AUTO_OFFBTSS F_STS,FS_MSLJUMP CAO_60S ;60S自动关闭BTSC F_STS,FS_DSRTIW 0BTSC F_STS,FS_KD_VALIDRTIW 0INCR T_OFF_1,F ;10秒自动关闭LDWI 156SUBWR T_OFF_1,WBTSS STATUS,CRTIW 0CLRR T_OFF_1INCR T_OFF_2,FLDWI 10SUBWR T_OFF_2,WBTSS STATUS,CRTIW 0CLRR T_OFF_2BCR PORTA,LEDBSR F_STS,FS_AUTO_OFFRTIW 0CAO_60S:BTSC F_STS,FS_KD_VALIDRTIW 0INCR T_OFF_1,F ;60秒自动关闭LDWI 125SUBWR T_OFF_1,WBTSS STATUS,CRTIW 0CLRR T_OFF_1INCR T_OFF_2,FLDWI 75SUBWR T_OFF_2,WBTSS STATUS,CRTIW 0CLRR T_OFF_2BCR PORTA,LEDBSR F_STS,FS_AUTO_OFFRTIW 0;---------------------------------------------------------------------------------------- END。

电容式触控技术应用技巧

电容式触控技术应用技巧

电容式触控技术原理: 电容式触控技术在厨房设备中的应用已经有几年了,例如在烤箱和煎锅的不透明玻璃面板 后面采用分离按键实现。

这些触摸控制键逐渐替代了机械按键, 因为后者具有使用寿命短、 不够卫生等方面的问题,而且还有在 面板上开孔安装按键的相关成本,图 1是电容式感应技术原理示意图。

电容式感应技术由于具有耐用、较易 于低成本实现等特点,而逐渐成为触 摸控制的首选技术。

此外,由于具有 可扩展性,该技术还可以提供其它技 术所不能实现的用户功能。

在显示屏 上以软按键方式提供用户界面,这通 常被称为触摸屏。

图 1: 技术原理示意图。

触摸输入滚动/指示功能器件,例如 iPod 音乐播放器上的点击式转盘,这类器件在消费市 场已经获得广泛的认可,正在逐渐出现在更多的消费设备市场。

有两种基本类型的滚动器 件:第一种是绝对报告类型,提供直接位置输出报告;另外一种是相对类型,这类器件提 供用来增加或减少某个值的直接报告。

使用电容式感应的 IC 设计感应开关电路板与其它电路的开发流程略有不同, 因为电容式开 关的设计上会受到机构与其它电路设计上的影响,会有比较多的调整程序,所以需要一个 比较复杂的开发流程,现就以出道较早且具有代表性的“Quantum ”产品的开发流程及要 点介绍给大家,希望对需要的朋友有所帮助。

下图是开发流程图: 1. Step 1:机构设 计:a. b.面板的材质必须是塑料,玻璃,等非导电物质。

在机构设计阶段同时也必需设计操作流程,以选择合适的产品,如果是按键的产 品,要考虑是否有复合按键的设计,或是综合滑动操作及按键操作等,如果是以滑 动操作的产品,就必须考虑是否需要切割出按键。

由于感应电极与面板接触点之间不能有空隙,所以机构设计上必须考虑将感应验 路板直接黏贴在外壳面板的内侧,以及考虑面板的组装方式。

c.d.同样的,感应电极与手指之间不能有金属层夹在中间,所以面板上不可以有金属 电镀及含金属超过 15%的喷漆等会形成导电层的设计。

触摸感应开关改装方案

触摸感应开关改装方案

触摸感应开关改装方案1. 引言触摸感应开关是一种智能化的开关设备,它基于电容感应技术,能够实现通过触摸操作来控制电器开关的功能。

在日常生活中,触摸感应开关广泛应用于家庭照明、办公设备、智能家居等领域。

然而,市面上现有的触摸感应开关种类繁多,功能不尽相同。

本文将介绍一种触摸感应开关改装方案,通过改装普通开关,实现互联网控制、定时、遥控等功能。

2. 改装方案2.1 材料准备•一台普通的开关•触摸感应模块•继电器模块•电阻、电容等基础电子元件•面包板•杜邦线等连接线材2.2 硬件改装过程1.打开普通开关外壳,拆卸原有的开关模块。

2.将触摸感应模块固定到开关外壳内,确保触摸区域与开关位置一致。

3.连接触摸感应模块的输出引脚到继电器模块的控制引脚,通过继电器控制开关的开关量信号。

2.3 软件改装过程1.在电脑上选择开发平台,如Arduino,进行代码编写和烧录。

2.编写触摸感应模块的驱动程序,包括初始化、触摸检测和触摸事件处理等功能。

3.编写继电器模块的驱动程序,实现继电器的开关控制功能。

4.编写其他功能模块的代码,如互联网连接模块、定时模块和遥控模块等,根据需求选择对应的库进行开发。

3. 功能扩展3.1 互联网控制通过添加互联网连接模块,如Wi-Fi模块或蓝牙模块,可以实现触摸感应开关与智能家居控制中心的连接。

用户可以通过手机APP或电脑浏览器远程操控触摸感应开关,实现远程控制功能。

3.2 定时功能通过添加实时时钟模块和定时开关模块,可以实现触摸开关的定时功能。

用户可以在设定的时间段内自动开启或关闭触摸感应开关,实现自动化控制。

3.3 遥控功能通过添加红外遥控模块,可以实现触摸感应开关的遥控功能。

用户可以使用配套的遥控器,通过红外信号控制触摸感应开关的开关状态。

4. 总结通过本文介绍的触摸感应开关改装方案,我们可以将普通的开关改装为具有互联网控制、定时和遥控等功能的智能化开关设备。

这种改装方案可以应用于各种场景中,为用户带来更加便捷和智能的生活体验。

单片机io nmos cmos电容触摸检测电路

单片机io nmos cmos电容触摸检测电路

单片机io nmos cmos电容触摸检测电路电容触摸检测电路通常使用单片机(Microcontroller)与传感器电路相结合。

在这里,我将提供一个基本的电容触摸检测电路示意图,其中包括NMOS(N-Channel Metal-Oxide-Semiconductor)和CMOS(Complementary Metal-Oxide-Semiconductor)元件,以及单片机的输入输出(IO)引脚。

电容触摸检测电路示意图:Vcc|R1||+----+-----+| |+---+ ||NMOS| |+---+ || || |+----+-----+|C1|+----+-----+| |+---+ ||CMOS| |+---+ || || |+----+-----+|R2|||VGNDMicrocontrollerIO Pin (configured as input) 元件说明:Vcc:供电电压。

R1:上拉电阻,连接到 NMOS 的 Gate。

NMOS: N-Channel MOSFET,用于形成电容触摸传感器的一部分。

C1:电容,构成触摸传感器。

CMOS:用于将电容的变化转换为数字信号。

R2:上拉电阻,连接到 CMOS 输出引脚。

GND:接地。

工作原理:当没有触摸时,电容 C1 的电荷被 NMOS 上拉电阻 R1 充电。

当有物体靠近触摸区域时,电容 C1 的电荷发生变化,导致 NMOS 的 Gate 电压变化。

NMOS 导通,允许电流通过,使 CMOS 输出引脚电压变化。

单片机通过配置的IO 引脚读取CMOS 输出引脚的状态,从而检测触摸事件。

请注意,实际的设计可能会涉及更复杂的电路,以满足特定应用的要求。

同时,软件算法也需要用于解释从传感器得到的数据,并作出相应的触摸检测决策。

电容式触摸感应按键解决方案

电容式触摸感应按键解决方案

电容式触摸感应按键解决方案方案简介在便携式媒体播放器和移动手持终端等大容量、高可视性产品的应用中,触摸式按键作为一种接口技术已被广泛采用。

由于具有方便易用,时尚和低成本的优势,越来越多的电子产品开始从传统的机械按键转向触摸式按键。

基于LPC1100 系列Cortex-M0 微控制器的电容式触摸感应按键方案,采用LPC1100 的GPIO 口和两个内部定时器,即可实现多达24 个独立按键或滑条式电容触摸按键的应用。

本方案采用外围RC 电路加软件检测技术,集成FIR 滤波算法,拥有良好的抗干扰性能,可通过EFT(脉冲群抗干扰度测试)4KV 的指标,非常适合由交流电驱动的电子设备。

原理概述电容式触摸感应按键的基本原理如图1 所示,当人体(手指)接触金属感应片的时候,由于人体相当于一个接大地的电容,因此会在感应片和大地之间形成一个电容,感应电容量通常有几pF 到几十pF。

利用这个最基本的原理,在外部搭建相关电路,就可以根据这个电容量的变化,检测是否有人体接触金属感应片。

图1 电容式触摸感应原理基于LPC1100 系列Cortex-M0 微控制器电容式触摸感应按键原理如图2 所示,利用LPC1100 的GPIO 中断功能加上内部定时器,可很方便的测量外部电容量变化。

处理流程如下:初始化KEY n 为GPIO 口,必须关闭内部上拉功能,配置为既不上拉也不下拉的模式;使能并配置KEY n 的高电平中断;将KEY n 设置为输出,并输出低电平,此时电容放电;开启定时器,将KEY n 配置为输入,并开启高电平中断,此时电容开始充电,在KEY n 的中断服务函数中读取定时器的时间;根据这个充电时间的变化量就可以判断出是否有按键按下。

图2 基于LPC1100 触摸按键原理注:图2 中只是示意了2 个独立按键连接方案,利用LPC1100 内部的GPIO 输入可以连接多达24 个独立按键或滑条。

RC 电路充放电在有无人体触摸时的充放电波形图如图3所示。

IO口实现电容触摸感应解决方案

IO口实现电容触摸感应解决方案

使用普通I/O口实现电容触摸感应方案武汉空军雷达学院科研部(430019)讲师孙树印摘要本文介绍了基于ST公司STM8S单片机的使用普通I/O口实现电容式触摸感应解决方案,包括技术原理、实现方法、硬件及软件设计注意事项。

关键字电容式触摸感应 I/O口充电检测 TSL技术背景现在电子产品中,触摸感应技术日益受到更多关注和应用,不仅美观耐用,而且较传统机械按键具有更大的灵敏度、稳定性、可靠性,同时可以大幅提高产品的品质。

触摸感应解决方案受到越来越多的IC设计厂家的关注,不断有新的技术和IC面世,国内的公司也纷纷上马类似方案。

Cpress公司的CapSense™技术可以说是感应技术的先驱,走在了这一领域的前列,在高端产品中有广泛应用,MCP推出了mTouch™,AT也推出了QTouch™技术,FSL推出的电场感应技术与MCP的电感触摸也别具特色,甚至ST也有QST产品。

但是目前所有的触摸解决方案都使用专用IC,因而开发成本高,难度大,而本文介绍的基于RC充电检测(RC Acquisition)的方案可以在任何MCU上实现,是触摸感应技术领域革命性的突破。

首先介绍了RC充电基础原理,以及充电时间的测试及改进方法,然后详细讨论了基于STM8S单片机实现的硬件、软件设计步骤,注意要点等。

一、RC充电检测基本原理RC充电检测基本原理是对使用如PCB的电极式电容的充电放电时间进行测量,通过比较在人体接触时产生的微小变化来检测是否有‘按下’动作产生,可选用于任何单独或多按键、滚轮、滑条。

如图1(a)所示,在RC网络施加周期性充电电压Vin,测量Vout会得到如(b)的时序,通过检测充电开始到Vout到达某一门限值的时间tc的变化,就可以判断出是否有人体接触。

图2显示出有人体接触时充电时间会变长。

(a )(b) 图1 电容充电的电路(a) 及充电时序(b)实现电路如图3,使用一个I/O 口对PCB 构成的电容充电,另一个I/O 口测量电压,对于多个按键时使用同一个I/O 口充电。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

技术背景
现在电子产品中,触摸感应技术日益受到更多关注和应用,不仅美观耐用,而且较传统机械按键具有更大的灵敏度、稳定性、可靠性,同时可以大幅提高产品的品质。

触摸感应解决方案受到越来越多的IC设计厂家的关注,不断有新的技术和IC面世,国内的公司也纷纷上马类似方案。

Cpress公司的CapSense™技术可以说是感应技术的先驱,走在了这一领域的前列,在高端产品中有广泛应用,MCP推出了mTouch™,AT也推出了QTouch™技术,FSL推出的电场感应技术与MCP 的电感触摸也别具特色,甚至ST也有QST产品。

但是目前所有的触摸解决方案都使用专用IC,因而开发成本高,难度大,而本文介绍的基于RC充电检测(RC Acquisition)的方案可以在任何MCU上实现,是触摸感应技术领域革命性的突破。

首先介绍了RC充电基础原理,以及充电时间的测试及改进方法,然后详细讨论了基于STM8S单片机实现的硬件、软件设计步骤,注意要点等。

一、RC充电检测基本原理
RC充电检测基本原理是对使用如PCB的电极式电容的充电放电时间进行测量,通过比较在人体接触时产生的微小变化来检测是否有‘按下’动作产生,可选用于任何单独或多按键、滚轮、滑条。

如图1(a)所示,在RC网络施加周期性充电电压Vin,测量Vout会得到如(b)的时序,通过检测充电开始到Vout到达某一门限值的时间tc的变化,就可以判断出是否有人体接触。

图2显示出有人体接触时充电时间会变长。

实现电路如图3,使用一个I/O口对PCB构成的电容充电,另一个I/O口测量电压,对于多个按键时使用同一个I/O口充电。

R1通常为几百K到几M,人体与PCB构成的电极电容一般只有几个pF,R2用于降低噪声干扰,通常为10K。

二、充电时间测量方法
对充电时间的测量可以使用MCU中定时器的捕捉功能,对于多个按键一般MCU没有足够的定时器为每个按键分配一个,也可以使用软件计时的方法,这要求能对MCU的时钟精确计数,并且保证每个周期的时钟个数保持一定。

这种情况通常要求对按键使用一个独立的MCU,以保证不被其他任务中断。

为了提高系统的可靠性和稳定性,改进的测量方法是对Vout进行高和低两个门限进行测量。

如图4所示,通过对t1和t2的测量,从而达到更可靠的效果。

另外,多次测量也是有效的降低高频干扰的有效方法。

实际应用中可以使用数字信号的方式直接测量t1和t2,因为数字信号的‘1’和‘0’也都有最高与最低输入门限。

使用软件查询方式测量,通过固定频率检测输入脚,其中‘0’的个数就是t1,‘1’的个数就是t2,实际上就是输入信号上升到VIHmin和下降到VILmax的时间。

技术背景
现在电子产品中,触摸感应技术日益受到更多关注和应用,不仅美观耐用,而且较传统机械按键具有更大的灵敏度、稳定性、可靠性,同时可以大幅提高产品的品质。

触摸感应解决方案受到越来越多的IC设计厂家的关注,不断有新的技术和IC面世,国内的公司也纷纷上马类似方案。

Cpress公司的CapSense?
技术可以说是感应技术的先驱,走在了这一领域的前列,在高端产品中有广泛应用,MCP推出了mTouch?,AT也推出了QTouch?技术,FSL推出的电场感应技术与MCP的电感触摸也别具特色,甚至ST也有QST产品。

但是目前所有的触摸解决方案都使用专用IC,因而开发成本高,难度大,而本文介绍的基于RC充电检测(RC Acquisition)的方案可以在任何MCU上实现,是触摸感应技术领域革命性的突破。

首先介绍了RC充电基础原理,以及充电时间的测试及改进方法,然后详细讨论了基于STM8S单片机实现的硬件、软件设计步骤,注意要点等。

一、RC充电检测基本原理
RC充电检测基本原理是对使用如PCB的电极式电容的充电放电时间进行测量,通过比较在人体接触时产生的微小变化来检测是否有‘按下’动作产生,可选用于任何单独或多按键、滚轮、滑条。

如图1(a)所示,在RC网络施加周期性充电电压Vin,测量Vout会得到如(b)的时序,通过检测充电开始到Vout到达某一门限值的时间tc的变化,就可以判断出是否有人体接触。

图2显示出有人体接触时充电时间会变长。

实现电路如图3,使用一个I/O口对PCB构成的电容充电,另一个I/O口测量电压,对于多个按键时使用同一个I/O口充电。

R1通常为几百K到几M,人体与PCB构成的电极电容一般只有几个pF,R2用于降低噪声干扰,通常为10K。

二、充电时间测量方法
对充电时间的测量可以使用MCU中定时器的捕捉功能,对于多个按键一般MCU没有足够的定时器为每个按键分配一个,也可以使用软件计时的方法,这要求能对MCU的时钟精确计数,并且保证每个周期的时钟个数保持一定。

这种情况通常要求对按键使用一个独立的MCU,以保证不被其他任务中断。

为了提高系统的可靠性和稳定性,改进的测量方法是对Vout进行高和低两个门限进行测量。

如图4所示,通过对t1和t2的测量,从而达到更可靠的效果。

另外,多次测量也是有效的降低高频干扰的有效方法。

实际应用中可以使用数字信号的方式直接测量t1和t2,因为数字信号的‘1’和‘0’也都有最高与最低输入门限。

使用软件查询方式测量,通过固定频率检测输入脚,其中‘0’的个数就是t1,‘1’的个数就是t2,实际上就是输入信号上升到VIHmin和下降到VILmax的时间。

三、PCB设计注意事项
不论是单按键、多按键、滑条、滚轮设计,还是混合应用,都可以使用一个I/O进行充电,即可减少资源应用,又可以因使用同一定时标准从而简化软件设计。

用于传递按键信号的线一定要足够的细,以降低线路造成的电容的影响,信号线间距为两倍线宽,不同组的信号间距应保证3mm~5mm。

同组的信号线长度应尽量保持一致,不同组的信号线不可以交叉。

独立按键的形状可设计为、圆、三角或正多边形,尺寸以10mm~15mm为宜。

滑条的形状可以是长方形或锯齿形,滚轮可以设计为幅射的扇形或环形,也可以是交错的齿轮,每个部分之间应保持0.2~0.5mm。

按键PCB层不应该覆铜,否则会影响感觉的灵敏度,而反面可以覆铜,可以减少干扰。

按键除设计为单通道模式,还可以设计为多通道模式,通过对附近按键的感应信号强度判断手指的位置,甚至可设计出‘连续’的滑动效果。

LED经常在感应设计中用来指示按键是否有效按下,注意按键的地或电源线就尽量短,线路较长时宜增加1nF的滤波电容。

另外,建议电源电路使用线性电源而不是开关电源,这对提高感应灵敏度很重要。

四、软件设计流程
ST公司设计了完整的基于RC充电检测的电容式感应触摸方案的完整设计,包括PCB和完整的源程序,以及基于STM8S的标准触摸感应库(Touch Sense Library:TSL)和应用API接口,采用易于移植的C设计,用户可以方便地应用于其他任何MCU系统中。

因为RC充电理论涉及的专利已经对公众开放,所以完全没有专利的限制。

图7是ST的触摸感应设计库TSL的架构示意。

ST的TSL内容包括滤波和校正算法,环境变化系统,自动根据环境温度、湿度、电压、灰尘等因素调整配置参数。

提供了包括单通道和多通道的感应设计API函数,层次驱动的项目工程。

基于STM8Sxxx-TS1-EVAL演示板的软件在STVD开发平台下设计,使用COSMIC-C语言编译器,包括完整的源代码,篇幅有限,不能详述。

结论:通过实验,我们使用STM8S的触摸感觉按键与CY的CAPSENSE触摸按键的效果进行了对比,结果证明二者在灵敏度与可靠性方面不相上下,在水浸、增加覆盖物情况下,本方案适应性更佳。

相关文档
最新文档