• «
  • 1
  • 2
  • »
  • Pages: 1/2     Go
康小印
级别: 探索解密
精华主题: 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--);
}
康小印
级别: 探索解密
精华主题: 0
发帖数量: 14 个
工控威望: 105 点
下载积分: 601 分
在线时间: 4(小时)
注册时间: 2015-12-19
最后登录: 2016-03-09
查看康小印的 主题 / 回贴
1楼  发表于: 2016-03-05 10:51
实际运行后要比0.8周小得多
testfish
9554665@qq.com
级别: 工控侠客
精华主题: 0
发帖数量: 303 个
工控威望: 2650 点
下载积分: 14769 分
在线时间: 607(小时)
注册时间: 2014-09-10
最后登录: 2024-12-20
查看testfish的 主题 / 回贴
2楼  发表于: 2016-03-05 10:52
步进不是按角度计算的吗?
康小印
级别: 探索解密
精华主题: 0
发帖数量: 14 个
工控威望: 105 点
下载积分: 601 分
在线时间: 4(小时)
注册时间: 2015-12-19
最后登录: 2016-03-09
查看康小印的 主题 / 回贴
3楼  发表于: 2016-03-05 10:58
引用
引用第2楼testfish于2016-03-05 10:52发表的  :
步进不是按角度计算的吗?

对啊,你看我程序应该是3200个脉冲吧?一周是4000个细分,那就应该转0.8周,但是实际上比0.8小得多。将for循环中a和i的判定条件变一变,就会转很长时间,我想知道原因
testfish
9554665@qq.com
级别: 工控侠客
精华主题: 0
发帖数量: 303 个
工控威望: 2650 点
下载积分: 14769 分
在线时间: 607(小时)
注册时间: 2014-09-10
最后登录: 2024-12-20
查看testfish的 主题 / 回贴
4楼  发表于: 2016-03-05 12:05
引用
引用第3楼康小印于2016-03-05 10:58发表的  :

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

励磁方式呢?
liuliangdt
liuliangdt
级别: 家园常客
精华主题: 0
发帖数量: 443 个
工控威望: 682 点
下载积分: 66148 分
在线时间: 989(小时)
注册时间: 2010-09-05
最后登录: 2024-12-11
查看liuliangdt的 主题 / 回贴
5楼  发表于: 2016-03-05 14:14
虽然我不会,但感觉步进电机驱动不正确。
康小印
级别: 探索解密
精华主题: 0
发帖数量: 14 个
工控威望: 105 点
下载积分: 601 分
在线时间: 4(小时)
注册时间: 2015-12-19
最后登录: 2016-03-09
查看康小印的 主题 / 回贴
6楼  发表于: 2016-03-05 14:33
引用
引用第4楼testfish于2016-03-05 12:05发表的  :

励磁方式呢?

我使用驱动器驱动的,不涉及由于励磁方式方式带来的影响吧?设置好了就是4000个脉冲步进电机转一周
康小印
级别: 探索解密
精华主题: 0
发帖数量: 14 个
工控威望: 105 点
下载积分: 601 分
在线时间: 4(小时)
注册时间: 2015-12-19
最后登录: 2016-03-09
查看康小印的 主题 / 回贴
7楼  发表于: 2016-03-05 14:34
引用
引用第5楼liuliangdt于2016-03-05 14:14发表的  :
虽然我不会,但感觉步进电机驱动不正确。

不就是给脉冲么?
wwusq
级别: 略有小成
精华主题: 0
发帖数量: 77 个
工控威望: 225 点
下载积分: 8339 分
在线时间: 81(小时)
注册时间: 2008-01-04
最后登录: 2024-12-21
查看wwusq的 主题 / 回贴
8楼  发表于: 2016-03-05 16:38
细分4000,转一圈应该脉冲数该是80000,0.8全就是64000个脉冲
康小印
级别: 探索解密
精华主题: 0
发帖数量: 14 个
工控威望: 105 点
下载积分: 601 分
在线时间: 4(小时)
注册时间: 2015-12-19
最后登录: 2016-03-09
查看康小印的 主题 / 回贴
9楼  发表于: 2016-03-06 13:46
引用
引用第8楼wwusq于2016-03-05 16:38发表的  :
细分4000,转一圈应该脉冲数该是80000,0.8全就是64000个脉冲

1、这个是怎么算的?
2、为什么如果我将for循环中a和i的判定条件按一楼的情况修改后他就会转好多圈呢?远远多于1圈
康小印
级别: 探索解密
精华主题: 0
发帖数量: 14 个
工控威望: 105 点
下载积分: 601 分
在线时间: 4(小时)
注册时间: 2015-12-19
最后登录: 2016-03-09
查看康小印的 主题 / 回贴
10楼  发表于: 2016-03-06 13:53
我刚刚确认一下,细分4000就是一周4000份,步进角度是0.09°。而且我这个就是低速运行,每次只让他转十几度就行。不涉及速度控制问题。
康小印
级别: 探索解密
精华主题: 0
发帖数量: 14 个
工控威望: 105 点
下载积分: 601 分
在线时间: 4(小时)
注册时间: 2015-12-19
最后登录: 2016-03-09
查看康小印的 主题 / 回贴
11楼  发表于: 2016-03-07 13:44
自己顶自己一下,没有人帮忙解释一下吗
  • «
  • 1
  • 2
  • »
  • Pages: 1/2     Go