求助:单片机计数器被干扰

[复制链接]
5423|23
 楼主| hanweng 发表于 2010-5-27 11:45 | 显示全部楼层 |阅读模式
本帖最后由 hanweng 于 2010-5-27 11:47 编辑

我用单片机控制一个直流24V电机的起停,电源是分开的。用槽型光耦读电机转速,Time1作为外部计数器,计算输入槽型光耦产生的脉冲个数。Time1设置为模式3.从0xff开始计数,每来一个脉冲中断一次,变量X+1.
变量A为我用键盘输入的值。在X=A的时候,电机停转。实际测试中,在直流电机反转的时候,X<A直流电机就停转了,用示波器测试光耦产生的脉冲,确实没有达到A的个数。在电机正转的时候,就不会有这情况啊!

直流电机有串一个IN4007的二极管作为续流二极管啊!
非常郁闷!

这是单片机被直流电机干扰了吗?
chunyang 发表于 2010-5-27 14:31 | 显示全部楼层
是你电路结构或软件处理的问题,贴出你的电路。
 楼主| hanweng 发表于 2010-5-28 11:11 | 显示全部楼层
昨天试了老半天,只要把槽型光耦到单片机主板的引线放在电机旁边,就会有干扰!离远一点就不会
acute1110 发表于 2010-5-28 11:21 | 显示全部楼层
典型的电机的辐射干扰耦合到了信号引线上,解决办法1,这根线加屏蔽 2,这根线上加滤波
huanghuac 发表于 2010-5-28 13:42 | 显示全部楼层
布线的问题
chunyang 发表于 2010-5-28 13:54 | 显示全部楼层
干扰跟转向有关,还是由电路结构导致的。加抗干扰措施是一种解决办法,但如果是做产品的话,还是要在本质上解决问题。
 楼主| hanweng 发表于 2010-5-29 09:24 | 显示全部楼层
to 5 楼:
PCB布线的问题?在单片机大板上面,就这个信号频率最高了,粗略估计这个信号不会大于2Khz。这根信号线也是以最短的距离连接到单片机。板上还有个ZLG7290,但与这根信号线有点距离。
 楼主| hanweng 发表于 2010-5-29 09:26 | 显示全部楼层
to 4 楼:
我尝试过在槽型光耦的输出端加过低通滤波器,但没有效果。加上屏蔽线把屏蔽线接到机壳效果非常好。
可诚如“chunyang”所言,还没有找到问题的本质。
 楼主| hanweng 发表于 2010-5-29 09:48 | 显示全部楼层
to 6 楼:
电路结构是指槽型光耦小板还是单片机大板?大板上的就槽型光耦输出的这根信号线速率最高。而且远离ZLG7290。其余的都是低速开关信号,如LED灯,电机驱动信号。电机的驱动做在另一块板上,通过PC817光耦隔离。
在槽型光耦小板上,以一个358做为比较器后输出到单片机。图如下
晕倒…………我还没学会上图啊
 楼主| hanweng 发表于 2010-5-29 09:51 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| hanweng 发表于 2010-5-29 09:52 | 显示全部楼层
忘记说了,LM358是5V单电源供电
 楼主| hanweng 发表于 2010-5-29 10:23 | 显示全部楼层
chunyang:
我的软件思路是:键盘输入预设值,设置一个变量,打开电机开始计数------------每一个脉冲加1-------------变量值等于键盘输入预设值时候停止电机。
软件上需要对上述的“变量”做处理吗?
 楼主| hanweng 发表于 2010-5-29 10:57 | 显示全部楼层
还有,我的机箱带有3V多的交流电。极其无语
awmc_m 发表于 2010-5-29 13:02 | 显示全部楼层
25592
hanweng 发表于 2010-5-29 09:51


R1和R4是什么作用?可以不用。
另一个运放可以利用起来做射随器,提供一个较为稳定的参考电压。参考电压端加一个足够大的电容。最好还是用电压比较器。
光藕输出端的电源可以与运放同一个。
在电机两端并一个去藕电容,在光藕输出端加阻容滤波。
如果单片机检测到了干扰,你也一定可以用示波器在output端观察到信号的。
先把干扰信号捕捉到,再调整滤波参数。
 楼主| hanweng 发表于 2010-5-29 13:50 | 显示全部楼层
R1和R4可以不用。
突然想起来,示波器上都没有观察到output干扰波形啊。不会是示波器太烂了吧?
玩示波器2年了,要是有干扰没看到那真的要去撞墙。

在output加过RC滤波,但没效果。
 楼主| hanweng 发表于 2010-5-29 13:58 | 显示全部楼层
:$怀念力科示波器啊
ll_sd 发表于 2010-5-29 18:03 | 显示全部楼层
请教一下,用示波器怎么能测出a的个数?还是把a设的很小?
gx_huang 发表于 2010-5-29 20:50 | 显示全部楼层
运放电路如果没有其它作用,可以全部去掉。
接线时注意抗干扰,软件对计数脉冲滤波就可以了。
 楼主| hanweng 发表于 2010-5-30 20:22 | 显示全部楼层
to:17楼。
用示波器抓波形,以电机的起停为触发信号,在电机起停时间窗内计算脉冲个数。
我的示波器没有统计功能,所以着重尝试设A=5、A=9两个值,其他值也试过。
如果示波器有统计功能,依据示波器的存储深度抓个几K的脉冲个数是没问题的。
 楼主| hanweng 发表于 2010-5-30 20:25 | 显示全部楼层
to :18楼
我用time1的外部计数器功能,如何做软件滤波?
思路上还不大转的过来,请指点一二。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

182

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部