用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,交流。

    能想到的都做了,实在没有办法了,请高手大家们帮助解释:这是为什么?怎么解决?谢谢!
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。