XIVN1987 发表于 2012-10-10 17:54:49

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


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

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

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

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


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


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

ccc 发表于 2012-10-10 18:04:02

个人觉得用软件更好。用定时器,基本不消耗CPU时间。

XIVN1987 发表于 2012-10-10 18:08:25

ccc 发表于 2012-10-10 18:04 static/image/common/back.gif
个人觉得用软件更好。用定时器,基本不消耗CPU时间。


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

tim0511 发表于 2012-10-10 18:09:39

软件好,定时器,一个电容的成本不低呀,小数怕长计

XIVN1987 发表于 2012-10-10 18:15:49

tim0511 发表于 2012-10-10 18:09 static/image/common/back.gif
软件好,定时器,一个电容的成本不低呀,小数怕长计


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

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

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


不知道我的想法对不对,,{:biggrin:}

spacefram 发表于 2012-10-10 18:18:00

触点时间长了,特别是在大气硫化物多的地方,加电容也无效的,必须要软件来搞。

ccc 发表于 2012-10-10 18:19:08

不管用软件还是硬件消抖,你都要花时间扫描按键状态吧。

yurinacn 发表于 2012-10-10 18:38:10

1. 一个电容也是钱啊,一个电容比一个电阻贵多了
2. 中断闲着也是闲着,合理规划好代码也不乱,逻辑也不会变复杂。再复杂的逻辑,拆分好,规划好,都可以条理清晰,一目了然。
3. 单片机机能闲着也是闲着,不如做点乱七八糟的,还能省点钱,多好。

x11223y 发表于 2012-10-10 18:44:13

楼主是个学生?,这个硬件消抖感觉可靠性更差,作为软件消抖都会觉得复杂那就只能做点流水灯那些了,在实际中的程序复杂度多了去了

ccc 发表于 2012-10-10 18:45:59

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

zhonggp 发表于 2012-10-10 18:49:58

认为不能100%依靠硬件消抖,这样究竟要选多大的电容合理,小了没有作用,大了反应慢,充电过程中可不可能存在临界状态.就是1,0的边沿

chaled 发表于 2012-10-10 18:50:52

现在的单片机还不至于那么缺乏资源吧,一个按键消抖能有多少指令?你单片机大部分时间都是在等待的吧,闲着也是闲着!

XIVN1987 发表于 2012-10-10 19:10:09


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

kenson 发表于 2012-10-10 19:15:49

我用硬件去抖的但不是电容而是CPLD是不是有点浪费呢?

zhikai_wu 发表于 2012-10-10 19:27:51

的确感觉不到硬的好处

hailing 发表于 2012-10-10 19:36:12

不加电容的话过不了群脉冲和静电。

snoopyzz 发表于 2012-10-10 21:15:35

XIVN1987 发表于 2012-10-10 18:15 static/image/common/back.gif
其一:一个电容都嫌贵??!!!

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


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

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

Flyback 发表于 2012-10-10 22:05:39

楼主不用纠结了,之前写fpga的程序已经验证过只用电容消抖是不行的了,即使加一级触发器还是不能保证

XIVN1987 发表于 2012-10-10 22:08:46

Flyback 发表于 2012-10-10 22:05 static/image/common/back.gif
楼主不用纠结了,之前写fpga的程序已经验证过只用电容消抖是不行的了,即使加一级触发器还是不能保证
...


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

Flyback 发表于 2012-10-10 22:11:31

XIVN1987 发表于 2012-10-10 22:08 static/image/common/back.gif
偶,,看来软件滤波真的是不可避免啊。。。

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

zhanan 发表于 2012-10-10 22:38:35

有些按键接法,如矩阵式、共享显示端口式,你还不能加电容。

NJ8888 发表于 2012-10-10 22:40:35

本帖最后由 NJ8888 于 2012-10-10 22:41 编辑

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

Etual 发表于 2012-10-11 13:53:05

其他行业不知道,至少家电行业没有硬件消抖。

qwind 发表于 2012-10-11 14:08:58

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

RUANJI 发表于 2012-10-11 14:16:36

好吧,学习大虾门的经验。

liang118038 发表于 2012-10-11 14:53:15

用硬件消抖先不说有没效,多几个电容挡在按键的位置,组装都够麻烦的了(按键一般都安排在最上面,一般电容都比按键高吧,放几个电容根本就是浪费资源,又占地方)。

dtlz 发表于 2012-10-11 18:22:11

最好就是硬件+软件防抖就比较理想了!

wangguanfu 发表于 2012-10-11 18:31:55

尼马 看这争论 和以前争论用库好还是直接寄存器操作好一样
有什么好争论的
抠成本的起码软件消抖是必须的!!!
不差钱的高可靠应用软硬兼施!
就这么样吧 自己看看产品应用定位做菜吧

thisisarquine 发表于 2013-4-12 13:51:08

一句骂声就结贴了。。。够狠

fqc168 发表于 2013-4-12 13:59:05

楼主应该是刚出校门不久的吧!也难怪

yuyu87 发表于 2013-4-12 14:01:24

我的设备里一直硬件消抖,比如按钮,上拉10K,10uF,某些按键1uF,你自己计算下常数,效果非常好
当然,如果你的MCU具有滞后输入功能一定要启用,比如我用的LPC1114,1788等,

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

电子爱好者_MCU 发表于 2013-4-12 15:46:24

XIVN1987 发表于 2012-10-10 18:15 static/image/common/back.gif
其一:一个电容都嫌贵??!!!

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


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

电子爱好者_MCU 发表于 2013-4-12 15:48:27

想用硬件消抖其实也很简单 加个施密特触发器就可以了 不过我个人比较倾向软件消抖 至于CPU效率 那得看你如何编写软件了

Lu.Shi 发表于 2013-4-12 16:09:15

给你提供个资料,有关按键不用消抖就完成状态判断的资料。
http://www.amobbs.com/thread-4308630-1-1.html

r166 发表于 2013-4-12 16:39:46

ccc 发表于 2012-10-10 18:45 static/image/common/back.gif
曾经在一个工业项目上用硬件消抖,别说一个电容,连RS触发器,施密特整形都用上了,一样不能保证100%可靠。 ...

有过同样的遭遇。

磊磊映画 发表于 2013-4-12 16:49:49

{:smile:}{:shocked:}{:victory:}{:handshake:}{:handshake:}{:handshake:}{:handshake:}{:handshake:}{:handshake:}{:handshake:}{:handshake:}

Hunter 发表于 2013-4-12 16:49:59

用MAX的专用按键消抖芯片,可靠三。

bearalan 发表于 2013-4-14 13:35:56

楼主没有成本概念啊。
问你一个问题,假如你是公司的老板,雇员A设计的产品比雇员B设计的产品多耗了1个电容以上的物料,且产品的可靠性没有雇员B的强,你会喜欢谁?

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

wmyan2010 发表于 2013-7-21 18:43:10

各种评论,围观学习了。

kenshudemayi 发表于 2013-7-21 19:09:12

看下马潮老师的程序吧,要学的还有很多,我也是新手

07071624 发表于 2013-7-21 20:49:38

学习了,长知识了

lmt50211 发表于 2013-7-24 14:53:38

各有各的好处吧,有些地方必须用硬件消抖的.....有些则不必...就一般小家电类的产品不会用硬件消抖.其它的嘛,暂时还没接触太多.

gamep 发表于 2013-7-24 15:36:40

还是赞成软件的多啊 我的思想和大众有出入了

dqt12 发表于 2013-7-26 13:31:56

最近做的也有硬件消抖,加电容,施密特触发器这两种。
但是,到最后,还是都得看人品了。

ultrawise 发表于 2014-2-26 21:19:59

如果一个按钮要长时间按(如30s后放),需要硬件消抖不?

YSYJ 发表于 2014-2-26 23:43:59

是否在软件消抖之后再加一个间隔延时效果会更好些

mbass51 发表于 2014-2-27 15:00:54

ultrawise 发表于 2014-2-26 21:19
如果一个按钮要长时间按(如30s后放),需要硬件消抖不?

沒有分別的

mbass51 发表于 2014-2-27 15:01:45

YSYJ 发表于 2014-2-26 23:43
是否在软件消抖之后再加一个间隔延时效果会更好些

不再需要了

情迷MJ比莉珍 发表于 2014-3-5 02:18:49

不一定, 看需要, 不需要很好的时候可以用软件也可以用硬件!!

prozmx 发表于 2014-3-5 11:24:51

XIVN1987 发表于 2012-10-10 22:08
偶,,看来软件滤波真的是不可避免啊。。。

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

68336016 发表于 2014-3-5 11:59:36

遇过质量差的按键开关,我现在都是判断4,5次以上才确认按键按下。

zlxd1990 发表于 2014-3-9 16:54:03

还是软件可靠

zxd08 发表于 2014-3-10 15:16:54

必须是软件滤波,硬件滤波不会长久的,各种干扰都有可能的

fuze2009 发表于 2014-3-19 02:58:11

问题虽然简单,看到大家的见解,有收效

wshtyr 发表于 2014-3-19 08:22:49

一直这么用:
开定时器,50毫秒间隔取样,一阶导为0而二阶导不为0的时刻即为按键按下或放开的时刻
几乎不费CPU时间,且方便移植,在OS里用软定时器或独占一个任务即可

jssd 发表于 2014-3-19 09:28:37

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

+1
字数补丁

etjason 发表于 2014-3-19 09:47:44

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

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

彪悍的飞翔 发表于 2015-1-30 10:01:39

量大的话主要也是基于成本考虑
页: [1]
查看完整版本: 机械按键硬件消抖是否绝对可靠???