打印

单片机干扰的问题

[复制链接]
2971|20
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
popeye021|  楼主 | 2013-9-12 17:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
C8051F340单片机,IO口要外接一个旋转编码器的AB相的电平信号。
当不接上编码器的时候,系统正常。
接上编码器,并不转动,单片机会死机,有时候则反复重启。
程序都是很成熟的,前一台一样的没有这种问题。
请教如何排除这种故障?从哪些方面以及如何下手?

相关帖子

沙发
lanqiao1026| | 2013-9-12 17:16 | 只看该作者
编码器接口直接相连MCU的IO吗?没图不好分析

使用特权

评论回复
板凳
chunyang| | 2013-9-12 17:20 | 只看该作者
这是长线耦合空间的电磁干扰所致,说明你的系统EMC设计不良。
改进方法:注意电源设计及去耦,PCB布局走线和去耦电容的放置、连线都是有讲究的。另外可以在编码器的供电端加电容去耦和磁珠抑噪,数据线上也可加磁珠抑噪声。

使用特权

评论回复
地板
popeye021|  楼主 | 2013-9-12 18:40 | 只看该作者
lanqiao1026 发表于 2013-9-12 17:16
编码器接口直接相连MCU的IO吗?没图不好分析

编码器输出的ttl信号,直接接单片机io口。因为是高电平计数,所以每个io口有一个2k的下拉电阻。

使用特权

评论回复
5
popeye021|  楼主 | 2013-9-12 18:48 | 只看该作者
chunyang 发表于 2013-9-12 17:20
这是长线耦合空间的电磁干扰所致,说明你的系统EMC设计不良。
改进方法:注意电源设计及去耦,PCB布局走线 ...

请教编码器供电端去藕电容用104外,还需不需要并一个大点的电解电容?供电端的磁珠是电源和地都需要嘛?信号线串磁珠的话,大小如何选择?单片机的io口有2k的下拉电阻。

使用特权

评论回复
6
gx_huang| | 2013-9-12 19:13 | 只看该作者
拆开编码器看看里面是什么。
或者检查一下编码器是怎么连接的,和其它干扰源离开一点。
检查接上编码器,GPIO的电平和波形。

使用特权

评论回复
7
popeye021|  楼主 | 2013-9-12 21:36 | 只看该作者
chunyang 发表于 2013-9-12 17:20
这是长线耦合空间的电磁干扰所致,说明你的系统EMC设计不良。
改进方法:注意电源设计及去耦,PCB布局走线 ...

顺便详细的说明一下:控制板上有两个单片机,另一个单片机控制液晶屏,当采集旋转编码器数据的单片机死机时,控制液晶屏的单片机仍在工作,通过液晶屏的显示实时时间能看出来。
旋转编码器的接口没有在控制板上,在另一块小板上,通过排线连接到控制板。
输入电源为7V,7V电源是接到编码器接口所在的小板上,然后通过排线接到控制板,再转为3.3V电压供应单片机。
旋转编码器直接使用的7V电压,输出信号是5V的电平输出。

使用特权

评论回复
8
泰山特曲123| | 2013-9-12 23:48 | 只看该作者
可以量一下电源的纹波

使用特权

评论回复
9
chunyang| | 2013-9-13 18:27 | 只看该作者
popeye021 发表于 2013-9-12 18:48
请教编码器供电端去藕电容用104外,还需不需要并一个大点的电解电容?供电端的磁珠是电源和地都需要嘛? ...

可以再并一个数微法的钽电解,磁珠通常串在电源回路里,信号线的磁珠有专用型号,常规条件下也可以用普通的。但注意,这些只是辅助措施,良好的电路及PCB设计才是关键。

使用特权

评论回复
10
chunyang| | 2013-9-13 18:28 | 只看该作者
另外,这里IO口上加下拉电阻没有意义,如果IO是弱上拉型的,你这么做反而会弄巧成拙。

使用特权

评论回复
11
popeye021|  楼主 | 2013-9-13 19:35 | 只看该作者
chunyang 发表于 2013-9-13 18:28
另外,这里IO口上加下拉电阻没有意义,如果IO是弱上拉型的,你这么做反而会弄巧成拙。 ...

C8051F340的IO口可以设置成漏极开路和推挽输出。当设置为漏极开路时,通过设置一个寄存器位来使弱上拉使能,默认状态是使能。
我的程序里是设置成了推挽输出。旋转编码器的信号对于单片机来说是输入,这样会有影响吗?
旋转编码器是欧姆龙的,输出信号类型是电压输出型。
我去买了些磁珠,是直插式的,方便做实验,封装像插件式的1N4007,圆柱形状,直径大概3.5mm,长大概4.5mm。用于信号线的磁珠一般阻值多少?请推荐一下。

使用特权

评论回复
12
chunyang| | 2013-9-13 21:48 | 只看该作者
设置成推挽模式仅在做输出时才有效,输入管脚应设置成弱上拉型。
磁珠电感没有直插式的,你买的应该是穿芯电感,那是用在高频电路中的,而你的电路中不会有那么高频率的噪声,这样的电感对你没有用。
常规数字电路的电源回路中最多使用的磁珠电感是阻抗(注意不是阻值,完全不同的概念)100欧姆左右的,也是市场上最常见、销售量最大的型号。信号回路的阻抗则要小些,数十欧姆,关键要看信号频率。磁珠电感的最重要参数不是电感量,而是频谱响应曲线,根据曲线和实际电路中需要抑制的噪声频谱进行匹配选择。

使用特权

评论回复
13
popeye021|  楼主 | 2013-9-13 22:18 | 只看该作者
chunyang 发表于 2013-9-13 21:48
设置成推挽模式仅在做输出时才有效,输入管脚应设置成弱上拉型。
磁珠电感没有直插式的,你买的应该是穿芯 ...

这个单片机设置io口模式只能是推挽或者漏极开路,设置成推挽输出后,弱上拉就被禁止了。只有设置成漏极开路才可选择弱上拉。
我的理解是推挽和漏极开路只能一个存在,因为单片机通过设置相关寄存器位为0表示漏极开路,为1表示推挽。
或者是我的理解有误?但是按照芯片手册,设置为推挽后,就没有弱上拉了。

使用特权

评论回复
14
chunyang| | 2013-9-13 22:28 | 只看该作者
所有MCU都支持弱上拉IO(反例我没见过),上电默认态就是。建议你再好好看看器件手册。

使用特权

评论回复
15
handlike| | 2013-9-14 11:00 | 只看该作者
建议重新焊接MCU,必要时先吹下来,它再重焊接。

使用特权

评论回复
16
popeye021|  楼主 | 2013-9-14 15:45 | 只看该作者
handlike 发表于 2013-9-14 11:00
建议重新焊接MCU,必要时先吹下来,它再重焊接。

单片机是机器焊的,焊接出问题的可能性不大吧?而且试了两块板都这样。

使用特权

评论回复
17
popeye021|  楼主 | 2013-9-14 20:14 | 只看该作者
chunyang 发表于 2013-9-13 22:28
所有MCU都支持弱上拉IO(反例我没见过),上电默认态就是。建议你再好好看看器件手册。 ...

下面是芯片手册上的话:I/O引脚的输出驱动器特性由端口输出方式寄存器PnMDOUT决定,每个端口输出驱动器都可被配置为漏极开路或推挽方式。不管交叉开关是否将端口引脚分配给某个数字外设,都需要对端口驱动器的输出方式进行设置。
当XBR1寄存器中的WEAKPUD位为‘0’时,输出方式为漏极开路的那些引脚的弱上拉被使能。WEAKPUD不影响被配置为推挽方式的端口I/O。当漏极开路输出被驱动为逻辑‘0’时,弱上拉被自动关断(禁止)以避免不必要的功率消耗。
下面是关于这个设置位的说明:
位7:
WEAKPUD:端口I/O弱上拉禁止位。
0:弱上拉使能(被配置为模拟输入或推挽输出的端口除外)。
1:弱上拉禁止。
系统上电默认的是弱上拉使能。

从第一段文字来看只是讲了弱上拉使能不影响推挽输出。而后面的寄存器位说明里“0:弱上拉使能(被配置为模拟输入或推挽输出的端口除外)”,我是看了这个以为推挽输出时就没有弱上拉了。

求解惑。

使用特权

评论回复
18
chunyang| | 2013-9-14 20:22 | 只看该作者
要配置成漏极开路模式,同时WEAKPUD置0,使能上拉电阻。默认的一定是弱上拉型IO。

使用特权

评论回复
19
popeye021|  楼主 | 2013-9-17 12:43 | 只看该作者
chunyang 发表于 2013-9-14 20:22
要配置成漏极开路模式,同时WEAKPUD置0,使能上拉电阻。默认的一定是弱上拉型IO。 ...

我只是把IO口重新配置成了漏极开路模式,其他都没变,昨天测试了三四个小时,今天到现在也开机测试了三四个小时了,没有出现死机或者重启现象。
在修改配置方式之前,我还特意上电测试了一下,果然一两分钟后就又重启了。
那为什么IO口在推挽输出模式时,会重启呢??

使用特权

评论回复
20
chunyang| | 2013-9-17 23:01 | 只看该作者
popeye021 发表于 2013-9-17 12:43
我只是把IO口重新配置成了漏极开路模式,其他都没变,昨天测试了三四个小时,今天到现在也开机测试了三四 ...

电平竞争的结果,这会导致电流激增,电源自然就会不稳定,严重时会烧毁芯片或传感器。

使用特权

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

本版积分规则

86

主题

455

帖子

4

粉丝