康小印
级别: 探索解密
精华主题: 0
发帖数量: 14 个
工控威望: 105 点
下载积分: 601 分
在线时间: 4(小时)
注册时间: 2015-12-19
最后登录: 2016-03-09
查看康小印的 主题 / 回贴
楼主  发表于: 2016-03-05 10:46
下面是我写的步进电机程序。我细分装置设置的是4000,下面应该会有3200个脉冲,也就是会旋转0.8周,实际运行后并没有0.8周这么多;后来我将程序两个循环a>=0,和i>=0;发现电机运动停不下来,我想知道是怎么回事?谢谢
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit zmc=P1^0;
sbit fmc=P1^1;
sbit zfx=P1^2;
sbit ffx=P1^3;
void delay5ws(uchar);
void main()
{

    uint i,a;
    i=0;
    a=0;
    zmc=0;
    fmc=0;
    zfx=0;
    ffx=0;
    delay5ws(5);
    zfx=1;
    for(a=80;a>0;a--)
    {
        for(i=40;i>0;i--)
        {
            
//            delay5ws(5);
            zmc=1;
//            delay5ws(2);
            zmc=0;
        }

    }
    while(1)
    {
        zmc=0;
        fmc=0;
        zfx=0;
        ffx=0;
    }
}
void delay5ws(uchar n)
{
    uint l,m;
    for(l=n;l>0;l--)
        for(m=2;m>0;m--);
}
testfish
9554665@qq.com
级别: 工控侠客
精华主题: 0
发帖数量: 303 个
工控威望: 2650 点
下载积分: 14769 分
在线时间: 606(小时)
注册时间: 2014-09-10
最后登录: 2024-11-21
查看testfish的 主题 / 回贴
1楼  发表于: 2016-03-05 10:52
步进不是按角度计算的吗?
testfish
9554665@qq.com
级别: 工控侠客
精华主题: 0
发帖数量: 303 个
工控威望: 2650 点
下载积分: 14769 分
在线时间: 606(小时)
注册时间: 2014-09-10
最后登录: 2024-11-21
查看testfish的 主题 / 回贴
2楼  发表于: 2016-03-05 12:05
引用
引用第3楼康小印于2016-03-05 10:58发表的  :

对啊,你看我程序应该是3200个脉冲吧?一周是4000个细分,那就应该转0.8周,但是实际上比0.8小得多。将for循环中a和i的判定条件变一变,就会转很长时间,我想知道原因

励磁方式呢?