搜索
bottom↓
回复: 59

机械按键硬件消抖是否绝对可靠???

[复制链接]

出0入25汤圆

发表于 2012-10-10 17:54:49 | 显示全部楼层 |阅读模式

首先说明:我说的硬件消抖就是简单的电容滤波。。。

单片机书上基本上都会讲软件消抖,所以之前做实验玩的时候也一直用的软件消抖来消除按键的机械抖动,,,还是挺可靠的。。。

但是,软件消抖总归是要消耗CPU时间的。。。

所以我就想到:硬件消抖是不是能够绝对消除机械按键的抖动,达到软件消抖的可靠程度???


如果可以的话,,仅仅多出一个电容的成本就可以省去软件上的许多麻烦,那么是不是硬件消抖比软件消抖更适合真正产品上的机械按键消抖处理呢???


另外:真正的电子产品上大都是使用硬件滤波呢还是软件滤波呢?????希望有经验的前辈讲解一下,非常感谢!!!!

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2012-10-10 18:04:02 | 显示全部楼层
个人觉得用软件更好。用定时器,基本不消耗CPU时间。

出0入25汤圆

 楼主| 发表于 2012-10-10 18:08:25 | 显示全部楼层
ccc 发表于 2012-10-10 18:04
个人觉得用软件更好。用定时器,基本不消耗CPU时间。


基本不消耗和不消耗不是一回事儿!!!

出0入0汤圆

发表于 2012-10-10 18:09:39 来自手机 | 显示全部楼层
软件好,定时器,一个电容的成本不低呀,小数怕长计

出0入25汤圆

 楼主| 发表于 2012-10-10 18:15:49 | 显示全部楼层
tim0511 发表于 2012-10-10 18:09
软件好,定时器,一个电容的成本不低呀,小数怕长计


其一:一个电容都嫌贵??!!!

其二:我始终认为,程序里面不要有太多中断,会使逻辑复杂!!!

其三:我始终觉得,按键消抖这种机械性重复劳动不应该让智能的CPU去做!!!


不知道我的想法对不对,,

出0入0汤圆

发表于 2012-10-10 18:18:00 | 显示全部楼层
触点时间长了,特别是在大气硫化物多的地方,加电容也无效的,必须要软件来搞。

出0入0汤圆

发表于 2012-10-10 18:19:08 | 显示全部楼层
不管用软件还是硬件消抖,你都要花时间扫描按键状态吧。

出0入0汤圆

发表于 2012-10-10 18:38:10 | 显示全部楼层
1. 一个电容也是钱啊,一个电容比一个电阻贵多了
2. 中断闲着也是闲着,合理规划好代码也不乱,逻辑也不会变复杂。再复杂的逻辑,拆分好,规划好,都可以条理清晰,一目了然。
3. 单片机机能闲着也是闲着,不如做点乱七八糟的,还能省点钱,多好。

出0入0汤圆

发表于 2012-10-10 18:44:13 来自手机 | 显示全部楼层
楼主是个学生?,这个硬件消抖感觉可靠性更差,作为软件消抖都会觉得复杂那就只能做点流水灯那些了,在实际中的程序复杂度多了去了

出0入0汤圆

发表于 2012-10-10 18:45:59 | 显示全部楼层
曾经在一个工业项目上用硬件消抖,别说一个电容,连RS触发器,施密特整形都用上了,一样不能保证100%可靠。按键这玩意儿,只要出现一次不可靠,人家就会认为你做的整个东西不可靠。

出0入0汤圆

发表于 2012-10-10 18:49:58 | 显示全部楼层
认为不能100%依靠硬件消抖,这样究竟要选多大的电容合理,小了没有作用,大了反应慢,充电过程中可不可能存在临界状态.就是1,0的边沿

出0入0汤圆

发表于 2012-10-10 18:50:52 来自手机 | 显示全部楼层
现在的单片机还不至于那么缺乏资源吧,一个按键消抖能有多少指令?你单片机大部分时间都是在等待的吧,闲着也是闲着!

出0入25汤圆

 楼主| 发表于 2012-10-10 19:10:09 | 显示全部楼层

看来大家都觉得硬件消抖不可靠,更倾向于软件消抖啊!!!

出0入0汤圆

发表于 2012-10-10 19:15:49 | 显示全部楼层
我用硬件去抖的但不是电容而是CPLD是不是有点浪费呢?

出0入0汤圆

发表于 2012-10-10 19:27:51 | 显示全部楼层
的确感觉不到硬的好处

出70入145汤圆

发表于 2012-10-10 19:36:12 来自手机 | 显示全部楼层
不加电容的话过不了群脉冲和静电。

出0入0汤圆

发表于 2012-10-10 21:15:35 | 显示全部楼层
XIVN1987 发表于 2012-10-10 18:15
其一:一个电容都嫌贵??!!!

其二:我始终认为,程序里面不要有太多中断,会使逻辑复杂!!!

用定时器,不代表需要用中断....也不是死循环延时...

请用状态机,按键消抖消耗的CPU时间完全可以忽略不计...
一般的应用中CPU大部分时间都是空闲的...
我做过的项目中, CPU占用率最高的平均也才70%左右(stm32@72Mhz)(SPI FLASH,UART通讯,ADC按键,TFT屏),
占用率低的才10%多点(stm8@2Mhz)(几个按键扫描,LED扫描,控制输出之类)

出110入0汤圆

发表于 2012-10-10 22:05:39 | 显示全部楼层
楼主不用纠结了,之前写fpga的程序已经验证过只用电容消抖是不行的了,即使加一级触发器还是不能保证

出0入25汤圆

 楼主| 发表于 2012-10-10 22:08:46 | 显示全部楼层
Flyback 发表于 2012-10-10 22:05
楼主不用纠结了,之前写fpga的程序已经验证过只用电容消抖是不行的了,即使加一级触发器还是不能保证
...


偶,,看来软件滤波真的是不可避免啊。。。

出110入0汤圆

发表于 2012-10-10 22:11:31 | 显示全部楼层
XIVN1987 发表于 2012-10-10 22:08
偶,,看来软件滤波真的是不可避免啊。。。

可以用专用的按键芯片,我记得am说在三文鱼上就用的专用芯片,估计是iic接口的

出0入0汤圆

发表于 2012-10-10 22:38:35 | 显示全部楼层
有些按键接法,如矩阵式、共享显示端口式,你还不能加电容。

出0入0汤圆

发表于 2012-10-10 22:40:35 | 显示全部楼层
本帖最后由 NJ8888 于 2012-10-10 22:41 编辑

只要是人按的都不绝对可靠,你消抖比如50ms,我乱按总可能抖出两个

出0入0汤圆

发表于 2012-10-11 13:53:05 | 显示全部楼层
其他行业不知道,至少家电行业没有硬件消抖。

出0入0汤圆

发表于 2012-10-11 14:08:58 | 显示全部楼层
前一阵子刚碰到的问题,10K的上拉,104电容消抖。一共6个按钮,就是有那么两三个按钮不好识别,和旁边的按钮调换一下,就旁边的那个不容易识别。用镊子短接按钮,识别灵敏好用。得出结论按钮质量不好,用万用表量按下的阻值是没有问题的。也没有其它的办法了,换个按钮吧,当时好用了。过了几天又出问题了,想着不是软件去抖的问题吧,看了一下程序确实没有软件去抖,加入10MS的软件延时,好了。当时真郁闷,以前都是用软件去抖的。

出0入0汤圆

发表于 2012-10-11 14:16:36 | 显示全部楼层
好吧,学习大虾门的经验。

出0入0汤圆

发表于 2012-10-11 14:53:15 | 显示全部楼层
用硬件消抖先不说有没效,多几个电容挡在按键的位置,组装都够麻烦的了(按键一般都安排在最上面,一般电容都比按键高吧,放几个电容根本就是浪费资源,又占地方)。

出0入0汤圆

发表于 2012-10-11 18:22:11 | 显示全部楼层
最好就是硬件+软件防抖就比较理想了!

出0入0汤圆

发表于 2012-10-11 18:31:55 | 显示全部楼层
尼马 看这争论 和以前争论用库好还是直接寄存器操作好一样
有什么好争论的
抠成本的起码软件消抖是必须的!!!
不差钱的高可靠应用软硬兼施!
就这么样吧 自己看看产品应用定位做菜吧

出0入0汤圆

发表于 2013-4-12 13:51:08 | 显示全部楼层
一句骂声就结贴了。。。够狠

出0入0汤圆

发表于 2013-4-12 13:59:05 | 显示全部楼层
楼主应该是刚出校门不久的吧!也难怪

出20入186汤圆

发表于 2013-4-12 14:01:24 | 显示全部楼层
我的设备里一直硬件消抖,比如按钮,上拉10K,10uF,某些按键1uF,你自己计算下常数,效果非常好
当然,如果你的MCU具有滞后输入功能一定要启用,比如我用的LPC1114,1788等,

强烈建议硬件消抖,简单,

出0入0汤圆

发表于 2013-4-12 15:46:24 | 显示全部楼层
XIVN1987 发表于 2012-10-10 18:15
其一:一个电容都嫌贵??!!!

其二:我始终认为,程序里面不要有太多中断,会使逻辑复杂!!!

软件开发 是最廉价的 尽量将单片机的资源发挥的最大

出0入0汤圆

发表于 2013-4-12 15:48:27 | 显示全部楼层
想用硬件消抖其实也很简单 加个施密特触发器就可以了 不过我个人比较倾向软件消抖 至于CPU效率 那得看你如何编写软件了

出0入0汤圆

发表于 2013-4-12 16:09:15 | 显示全部楼层
给你提供个资料,有关按键不用消抖就完成状态判断的资料。
http://www.amobbs.com/thread-4308630-1-1.html

出0入0汤圆

发表于 2013-4-12 16:39:46 | 显示全部楼层
ccc 发表于 2012-10-10 18:45
曾经在一个工业项目上用硬件消抖,别说一个电容,连RS触发器,施密特整形都用上了,一样不能保证100%可靠。 ...

有过同样的遭遇。

出0入0汤圆

发表于 2013-4-12 16:49:49 | 显示全部楼层

出0入0汤圆

发表于 2013-4-12 16:49:59 | 显示全部楼层
用MAX的专用按键消抖芯片,可靠三。

出0入0汤圆

发表于 2013-4-14 13:35:56 | 显示全部楼层
楼主没有成本概念啊。
问你一个问题,假如你是公司的老板,雇员A设计的产品比雇员B设计的产品多耗了1个电容以上的物料,且产品的可靠性没有雇员B的强,你会喜欢谁?

不要凭自己的主观想法去想事情,那样会死的,而且既然搞软件,那么请相信软件是万能的,只有你想不到没有实现不了的。

出0入0汤圆

发表于 2013-7-21 18:43:10 | 显示全部楼层
各种评论,围观学习了。

出0入0汤圆

发表于 2013-7-21 19:09:12 来自手机 | 显示全部楼层
看下马潮老师的程序吧,要学的还有很多,我也是新手

出0入0汤圆

发表于 2013-7-21 20:49:38 | 显示全部楼层
学习了,长知识了

出0入0汤圆

发表于 2013-7-24 14:53:38 | 显示全部楼层
各有各的好处吧,有些地方必须用硬件消抖的.....有些则不必...就一般小家电类的产品不会用硬件消抖.其它的嘛,暂时还没接触太多.

出0入0汤圆

发表于 2013-7-24 15:36:40 | 显示全部楼层
还是赞成软件的多啊 我的思想和大众有出入了

出0入0汤圆

发表于 2013-7-26 13:31:56 | 显示全部楼层
最近做的也有硬件消抖,加电容,施密特触发器这两种。
但是,到最后,还是都得看人品了。

出0入0汤圆

发表于 2014-2-26 21:19:59 | 显示全部楼层
如果一个按钮要长时间按(如30s后放),需要硬件消抖不?

出0入0汤圆

发表于 2014-2-26 23:43:59 | 显示全部楼层
是否在软件消抖之后再加一个间隔延时效果会更好些

出0入0汤圆

发表于 2014-2-27 15:00:54 | 显示全部楼层
ultrawise 发表于 2014-2-26 21:19
如果一个按钮要长时间按(如30s后放),需要硬件消抖不?

沒有分別的

出0入0汤圆

发表于 2014-2-27 15:01:45 | 显示全部楼层
YSYJ 发表于 2014-2-26 23:43
是否在软件消抖之后再加一个间隔延时效果会更好些

不再需要了

出0入0汤圆

发表于 2014-3-5 02:18:49 | 显示全部楼层
不一定, 看需要, 不需要很好的时候可以用软件也可以用硬件!!

出0入0汤圆

发表于 2014-3-5 11:24:51 | 显示全部楼层
XIVN1987 发表于 2012-10-10 22:08
偶,,看来软件滤波真的是不可避免啊。。。

其实我想问一下LZ为什么不想软件去抖,就单纯想增加CPU的速度?如果是这样,我想问一下你从事设计几年了(没有看不起你的意思,就觉得一般设计过产品的应该都会知道使用一个定时器去做出N个软定时器的方法的),如果产品的利润比较大,可以用硬件+软件的方法,做产品最主要是可靠,只用硬件去抖,按了一千次出现1次误触发或者多次触发,那就是用户体验不好了,当时也不能保证软件去抖没有问题,所以做产品么,如果有钱做冗余尽量做,做到后面你就会觉得了,节约成本真的很重要,10个按键就10个电容,一个月1W套就10w个电容,钱差很多的

出130入129汤圆

发表于 2014-3-5 11:59:36 来自手机 | 显示全部楼层
遇过质量差的按键开关,我现在都是判断4,5次以上才确认按键按下。

出0入0汤圆

发表于 2014-3-9 16:54:03 | 显示全部楼层
还是软件可靠

出0入0汤圆

发表于 2014-3-10 15:16:54 | 显示全部楼层
必须是软件滤波,硬件滤波不会长久的,各种干扰都有可能的

出0入0汤圆

发表于 2014-3-19 02:58:11 来自手机 | 显示全部楼层
问题虽然简单,看到大家的见解,有收效

出0入42汤圆

发表于 2014-3-19 08:22:49 来自手机 | 显示全部楼层
一直这么用:
开定时器,50毫秒间隔取样,一阶导为0而二阶导不为0的时刻即为按键按下或放开的时刻
几乎不费CPU时间,且方便移植,在OS里用软定时器或独占一个任务即可

出0入55汤圆

发表于 2014-3-19 09:28:37 | 显示全部楼层
wshtyr 发表于 2014-3-19 08:22
一直这么用:
开定时器,50毫秒间隔取样,一阶导为0而二阶导不为0的时刻即为按键按下或放开的时刻
几乎不费C ...

+1
字数补丁

出0入0汤圆

发表于 2014-3-19 09:47:44 | 显示全部楼层
ccc 发表于 2012-10-10 18:45
曾经在一个工业项目上用硬件消抖,别说一个电容,连RS触发器,施密特整形都用上了,一样不能保证100%可靠。 ...

没错,可靠地话软件也加上

出0入0汤圆

发表于 2015-1-30 10:01:39 | 显示全部楼层
量大的话主要也是基于成本考虑
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-22 22:14

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表