打印

求教 中断消抖的方法// 最新实验结果(见跟贴)

[复制链接]
楼主: szshawn2010
手机看帖
扫描二维码
随时随地手机跟帖
41
szshawn2010|  楼主 | 2010-4-9 14:23 | 只看该作者 回帖奖励 |倒序浏览
************************************
此贴为最新实验结果
************************************

把上升边沿 触发中断,更改为 电平变化 触发中断 后,情况明显好转。但是存在一个问题,即在低电平期间,其毛刺,有的会触发 中断,在高电平期间不会有影响。

因此,在实验中,测量MCU计算的数据时,发现:大多数都是 10ms,即半个交流周期。偶尔会出现5个ms,即1/4个周期(从波形上看,应该是低电平期间,其交流峰值时刻,出现的毛刺。因此MCU偶尔出现的时间为5ms,正好是1/4周期)


请教高手,如何调整一下电路,可以在不影响波形的情况下,减轻毛刺的幅度。

使用特权

评论回复
42
highgear| | 2010-4-9 21:51 | 只看该作者
给你讲了一堆话, 你还是不明白.
1)你首先得弄清楚毛刺从哪里来的, 如果是dc电源, 调整一下电路没有用
2)"调整一下电路", 什么电路?

使用特权

评论回复
43
huangqi412| | 2010-4-9 22:26 | 只看该作者
晕,,,这些毛刺先解决...

有点奇怪,毛刺幅度应该很大才会误触发吧,貌似幅度很小啊.

使用特权

评论回复
44
gaohq| | 2010-4-10 13:11 | 只看该作者
加大滤波电路的电容试试看,
奉劝LZ别想着软件解决了。

使用特权

评论回复
45
gaohq| | 2010-4-10 13:14 | 只看该作者
对highgear大师的“51 定时器有一个特殊功能, 就是外部信号重装定时器:口线信号不断复位timer, 直至没有脉冲才会 timeout. ”

很感兴趣,期待能有个实际应用例子。

使用特权

评论回复
46
szshawn2010|  楼主 | 2010-4-10 21:22 | 只看该作者
42# highgear


毛刺 是220V /50HZ的交流电引来的啊。

从波形图上看,当交流峰值时刻,就会产生这些毛刺。

电路接法: 2M电阻的一端接到交流电的一个支路上,2m电阻另一端接I/O,做为中断信号 。

使用特权

评论回复
47
xiaomifan| | 2010-4-10 22:20 | 只看该作者
围观

使用特权

评论回复
48
highgear| | 2010-4-11 09:32 | 只看该作者
gaohq: 不好意思,不是51, 是8052的定时器2有此功能,不过51实现这点也不难。

szshawn2010:加一个光藕,一个二极管(防止反向及川), 即可。

使用特权

评论回复
49
ShakaLeo| | 2010-4-11 10:30 | 只看该作者
楼主貌似是用220V交流电直接给单片机系统供电,并且220V过零检测也是把220V未经电气隔离就接到了单片机系统中,这样应该不太好吧,个人认为用个交流变压器隔离一下比较好,比如220V经变压器得到12V交流,给单片机供电,然后检测12V的过零点就行了。
那个220V上的那个降压电阻1K貌似太小了,这样220V的功耗会很大。
过零检测的电路貌似也有问题,在交流电由高转为低的过程,实际是一个渐进的过程,三极管由饱和导通到完全截止可能会有一个过程,这个过程可能是那些毛刺的产生原因。建议用施密特触发器整形一下。

使用特权

评论回复
50
ShakaLeo| | 2010-4-11 12:32 | 只看该作者
再补充一下:34楼的图,三极管的基极电阻有点小,220V交流达到峰值的时候电压可达到220*1.414=311V,此时的基极电流为6.6mA,太大了,可能会影响三极管的工作状态造成集电极有毛刺。
三极管的基极电压在交流220V的负半周是不确定的,所以应该在D3的后端用一个比较大的电阻下拉到地,使三极管的基极在交流220V的负半周有确定的低电平。

使用特权

评论回复
51
algr| | 2010-4-11 12:33 | 只看该作者
首先硬件要改善

软件上去抖是延时,我的软件里就是这么做的。

使用特权

评论回复
52
szshawn2010|  楼主 | 2010-4-11 23:13 | 只看该作者
感谢各位同学的帮助。

经过这几天的潜心思考推测(注:本人理论知道很欠缺,因此只是瞎推测)。现得出的结论是:容阻降压的那个高压电容的容值太大了。在multisim上模拟,如果该电容的容值降低,其峰值时刻的噪 声明显降低,与容值成简单的倍数关系。

因此,明天回去修正一下这个高压电容的容值,应该可以满足到我的需要。感谢大家

使用特权

评论回复
53
szshawn2010|  楼主 | 2010-4-12 07:16 | 只看该作者
这些天被折磨的--闷!

得出一个结论,就是不要乱改电路图。搭手板就要按成熟的原理图来。 不过,犯了错误后,可以得到一些结论,也不是什么不好事儿。本次教训的结论是:“阻容降压电路中,滤波用的电解电容其容量大小为降压电容容量的1000倍为佳”

使用特权

评论回复
54
szshawn2010|  楼主 | 2010-4-12 10:31 | 只看该作者
满怀希望滴来实验,结果很失望。调整了高压电容,与滤波电容,其结果基本还是没变化,还是很大的噪声干扰。闷!!

盼高手指点~~~~

使用特权

评论回复
55
szshawn2010|  楼主 | 2010-4-12 10:57 | 只看该作者
本帖最后由 szshawn2010 于 2010-4-12 11:01 编辑

电路部分如图:

  INT中断,使用的2M电阻接高压后,另一端直接接MCU

  其中,INT中断也用过其他电路图(本贴中,我已经发过图纸)。

  据实验表明,这两种接法,其波形基本无差异。(有朋友警告安全问题,我测试了一下很安全,可以放心滴使用)

  --------
  两种接法,其波形都是毛刺很多。


---------------

个人认为,这种干扰绝对是由电源引入的。

如果,我使用干电池做电源,来检测交流电频率,我想肯定没有这么多干扰。
我查检了电源的波形。电源不是理论上的波形。电源杂波就很多,特别在峰值时刻

1.JPG (253.39 KB )

1.JPG

使用特权

评论回复
56
程序匠人| | 2010-4-12 11:09 | 只看该作者
能不能加个小电容(在单片机端口),去掉一些杂波,或者降低杂波的幅度。

使用特权

评论回复
57
playmcu| | 2010-4-12 11:18 | 只看该作者
请问你检测交流过零点是来做什么用的?是来触发可控硅来控制功率吗?还是控制别的东西?精度要求怎么样?

使用特权

评论回复
58
szshawn2010|  楼主 | 2010-4-12 11:50 | 只看该作者
57# playmcu

检测 过零点,然后来控制 可控硅 开启 电机的。

因为,电机速度是可调的。因此,要检测出过零点,然后 再控制需要给出的速度。精度要求不算很好。500us以内都可以接受

使用特权

评论回复
59
szshawn2010|  楼主 | 2010-4-12 11:51 | 只看该作者
56# 程序匠人

尝试过。但是不理想。

刚才还玩爆炸了。不注意,104直接接到火线又接地线了。把一个PCB都炸黑了。晕,又要再焊板了

使用特权

评论回复
60
szshawn2010|  楼主 | 2010-4-12 11:54 | 只看该作者
本帖最后由 szshawn2010 于 2010-4-12 12:07 编辑

我想这样操作。因为,波形在高电平期间不受影响。因此我想放弃低电平部分。
即软件检测出交流的3/2个周期,而不是半个周期。(在网上看到有人支言破碎的说,过零检测,也需要一定的软件技巧。或许硬件的无法调的更纯洁了。)

用MCU计时器计一下,3/2个周期的长度。然后,乘以2再除以3。计为N值

--------------

这样,当I/O电平从高转为低时,为一个过零点,同时启动计时器计时,当达到N值时,我们认为是到了本周期 的第二个过零点。



这样不知可行否?

-------------------


弱弱的问下,我的这种情况会不会与元件的质量有关系?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则