找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 5055|回复: 15
收起左侧

有大神给我分析一下为什么我的步进电机不能转吗?

  [复制链接]
ID:404172 发表于 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);
        }
}

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

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

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

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

使用道具 举报

ID:330198 发表于 2018-10-9 11:34 | 显示全部楼层
你这个是不是大的丝杆卡住了
回复

使用道具 举报

ID:182821 发表于 2018-10-9 13:01 | 显示全部楼层
先测试空转,之后再带载
回复

使用道具 举报

ID:182821 发表于 2018-10-9 13:02 | 显示全部楼层
最好是先测试空转,之后再带负载。硬件和软件要配合
回复

使用道具 举报

ID:404172 发表于 2018-10-9 14:03 | 显示全部楼层
zhanghyg 发表于 2018-10-9 11:34
你这个是不是大的丝杆卡住了

我用手可以轻松转动丝杆
回复

使用道具 举报

ID:404172 发表于 2018-10-9 14:05 | 显示全部楼层
今天试了下aa和bb的电阻都为5.5Ω左右,电机每个引脚单独接脉冲都有震动感
回复

使用道具 举报

ID:407076 发表于 2018-10-9 16:27 | 显示全部楼层
用一下空转
回复

使用道具 举报

ID:7485 发表于 2018-10-9 16:55 | 显示全部楼层
步进电机有多种,驱动程序也不同。
回复

使用道具 举报

ID:346649 发表于 2018-10-9 17:28 | 显示全部楼层
换用八拍(A-AB-B-BC-C-CD-D-DA-A)的控制方式试一下
确认硬件接线(ab线圈要分开接入控制io)
空载单动测试
再是双动作

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

回复

使用道具 举报

ID:267330 发表于 2018-10-10 07:36 | 显示全部楼层
最好是先测试空转,之后再带负载。硬件和软件要配合
回复

使用道具 举报

ID:407346 发表于 2018-10-10 08:41 | 显示全部楼层
先测试空转,之后再带负载
回复

使用道具 举报

ID:407393 发表于 2018-10-10 10:21 | 显示全部楼层

这个应该是大的丝杆卡住了
回复

使用道具 举报

ID:407393 发表于 2018-10-10 10:29 | 显示全部楼层
是不是什么东西卡住了啊
回复

使用道具 举报

ID:406412 发表于 2018-10-10 10:44 | 显示全部楼层
是不是驱动电流不够, 电流不够就要换8拍试一下
回复

使用道具 举报

ID:119159 发表于 2018-10-10 11:24 | 显示全部楼层
要把两个电机的参数发出来,不同的电机,减速比,驱动电流,步进角都不一样
回复

使用道具 举报

ID:275894 发表于 2018-10-10 15:02 | 显示全部楼层
我能想到的:
1.电源电流太小,无法驱动电机;
2.程序问题,电机换相时间太短,导致线圈通电时间太短,电机还未转动,已经切换到下一个相位;
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表