标题: 有大神给我分析一下为什么我的步进电机不能转吗? [打印本页]

作者: lbewan    时间: 2018-10-8 20:31
标题: 有大神给我分析一下为什么我的步进电机不能转吗?
我有两个二相四线步进电机,两个电机额定电压都是5V,小的步进电机用这个程序可以正常运转,但是大的步进电机只有微微的颤动感,只接两条线的时候电机颤动比较明显(电机我用万用表测试过,所以接线应该没问题)。我问过淘宝卖家,他说电机测试正常才发过来的,

#include <reg52.h>

#define uint unsigned int
#define uchar unsigned char

#define Z 10                        //步进电机速度(我从2到100都有尝试)

sbit za=P1^0;
sbit za_=P1^1;
sbit zb=P1^2;
sbit zb_=P1^3;

void delayms(uint xms)        //延时约xms毫秒
{
    uint i,j;
    for(i=xms; i>0; i--)                  
        for(j=110; j>0; j--);
}

void zfor(uint i)                //z轴前进函数
{
    while(i--)
    {
                        za=1;zb=0;za_=0;zb_=0;delayms(Z);
                        za=0;zb=1;za_=0;zb_=0;delayms(Z);
                        za=0;zb=0;za_=1;zb_=0;delayms(Z);
                        za=0;zb=0;za_=0;zb_=1;delayms(Z);
                }
}

void zbac(uint i)                //z轴后退函数
{
    while(i--)
    {
                        za=0;zb=0;za_=0;zb_=1;delayms(Z);
                        za=0;zb=0;za_=1;zb_=0;delayms(Z);
                        za=0;zb=1;za_=0;zb_=0;delayms(Z);
                        za=1;zb=0;za_=0;zb_=0;delayms(Z);
                }
}

void main()
{
        while(1)
        {
                zfor(90);
                zbac(90);
        }
}

TIM截图20181008202058.png (123.5 KB, 下载次数: 82)

小的步进电机用这个程序可以来回运转

小的步进电机用这个程序可以来回运转

TIM截图20181008202118.png (318.79 KB, 下载次数: 91)

这个相对大一点的步进电机不能转(接两条线的时候会有震动感)

这个相对大一点的步进电机不能转(接两条线的时候会有震动感)

作者: zhanghyg    时间: 2018-10-9 11:34
你这个是不是大的丝杆卡住了
作者: EVOLVINGINS    时间: 2018-10-9 13:01
先测试空转,之后再带载
作者: EVOLVINGINS    时间: 2018-10-9 13:02
最好是先测试空转,之后再带负载。硬件和软件要配合
作者: lbewan    时间: 2018-10-9 14:03
zhanghyg 发表于 2018-10-9 11:34
你这个是不是大的丝杆卡住了

我用手可以轻松转动丝杆
作者: lbewan    时间: 2018-10-9 14:05
今天试了下aa和bb的电阻都为5.5Ω左右,电机每个引脚单独接脉冲都有震动感
作者: 七点的    时间: 2018-10-9 16:27
用一下空转
作者: ahshmj    时间: 2018-10-9 16:55
步进电机有多种,驱动程序也不同。
作者: csmingbaby    时间: 2018-10-9 17:28
换用八拍(A-AB-B-BC-C-CD-D-DA-A)的控制方式试一下
确认硬件接线(ab线圈要分开接入控制io)
空载单动测试
再是双动作

PS:
1、这种方式占用内存会一直卡着(一个一个马达动不能同时动作)建议将控制代码放入定时器中断去可以高效一点
2、这种方式无法很好控制速度,无法达到高速(因为你没有做加减速,所以速度提不上来)所以建议用定时器发脉冲的方式控制,用梯形加速就可以了!!!


作者: jiangkeqin_sy    时间: 2018-10-10 07:36
最好是先测试空转,之后再带负载。硬件和软件要配合
作者: lwl1996    时间: 2018-10-10 08:41
先测试空转,之后再带负载
作者: qq18270856527    时间: 2018-10-10 10:21

这个应该是大的丝杆卡住了
作者: qq18270856527    时间: 2018-10-10 10:29
是不是什么东西卡住了啊
作者: ashang1988    时间: 2018-10-10 10:44
是不是驱动电流不够, 电流不够就要换8拍试一下
作者: caiseshamo    时间: 2018-10-10 11:24
要把两个电机的参数发出来,不同的电机,减速比,驱动电流,步进角都不一样
作者: mackintoshi    时间: 2018-10-10 15:02
我能想到的:
1.电源电流太小,无法驱动电机;
2.程序问题,电机换相时间太短,导致线圈通电时间太短,电机还未转动,已经切换到下一个相位;




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1