用2803 驱动2个继电器实现同步电机正反转,不能正常工作,原因在哪里?

2019-03-24 17:37发布

void main()
{
    while(1)
    {
          right;
          start;
          delay_1ms(3000);     

          stop;
          delay_1ms(3000);         

          left;
          start;
          delay_1ms(3000);

          stop;
          delay_1ms(3000);
    }
}


     单片机at89s52 通过2803 驱动2个继电器,分别控制同步电机(交流220)火线和零线,实现电机正反转。见

程序和原理图。这是一个测试程序段,程序中的right left是电机转动方向,启动与停止均为3秒钟。

现象:

    程序运行几遍后,就不能正常运行了,出现电机一直运转或一直停止,就是说程序停止了。单片机手动复位有时一次复位成功有时需多次才能复位成功,复位后又重复以上结果。
   
    为了找到原因,采取了:2803和继电器单独供电、用带光耦的继电器模块、用三极管驱动继电器,但是一直如上结果。所说2083继电器单独供电,是说它们与单片机分别用两个电源供电,两个电源是不共用一个电源线的,是分开的稳压电源,但是共地。

    最后发现:只要继电器不接负载,程序就能正常运行,此时可听到继电器按程序动作的声音,程序的延时基本准确,io口(原理图中p1.4 p1.5):当用2803时高电平输出是2v而不是近5v,低电平=0;当用三极管驱动时,情况同上;当用带光耦的继电器模块时,io 口高电平=4v。

    怀疑是io口高电平所致,加上拉电阻,无效。怀疑继电器线圈反向电动势因素,线圈并联二极管,无效。将电机换成白炽灯泡(220v),程序能正常运行时间比电机的长很多,但最终还是发生同样结果:程序停止。

    电机是8w的同步电机,220v,交流。

    能想到的都做了,实在没有办法了,请高手大家们帮助解释:这是为什么?怎么解决?谢谢!
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
maychang
1楼-- · 2019-03-25 01:38
像是因为交流220V电路的干扰使得单片机程序跑飞。
其实,硬件非常简单,只占用两条I/O口线,而且口线动作频率很低。这种情况完全可以用手动操作两个继电器,单片机内烧程序后两条口线接两支LED(串联电阻),看看电机部分不动作时LED发光是否符合你的期望,电机部分动作时LED发光是否符合期望。
wh8010jky
2楼-- · 2019-03-25 03:56
 精彩回答 2  元偷偷看……
chunyang
3楼-- · 2019-03-25 03:57
wh8010jky 发表于 2016-6-3 22:06
先谢谢你的指导!其实我在前面已说到,只要不接电机程序运行很正常,继电器动作的声音都很清楚,至于用LE ...

在继电器触点上并联一个RC消火花回路,另外注意控制系统内各芯片的去耦,电源和PCB设计也有讲究,但不是初学者短期内能掌握设计的。
Li_Lei
4楼-- · 2019-03-25 04:36
这种面包板就不适合做200V,离远一点
maychang
5楼-- · 2019-03-25 10:24
 精彩回答 2  元偷偷看……
wh8010jky
6楼-- · 2019-03-25 13:28
maychang 发表于 2016-6-4 08:41
主要的干扰,可能是继电器触点处的火花引起的,解决方法见4楼chunyang回复。
从原理图中看,你的VCC与22 ...

先谢谢!原理图有误,其实220v与VCC不共地,两个继电器一个接220火线一个接220零线。我接RC消火花电路试试,请问RC值选多大?如何接?再次谢谢!

一周热门 更多>