康小印
級(jí)別: 探索解密
精華主題: 0
發(fā)帖數(shù)量: 14 個(gè)
工控威望: 105 點(diǎn)
下載積分: 601 分
在線時(shí)間: 4(小時(shí))
注冊(cè)時(shí)間: 2015-12-19
最后登錄: 2016-03-09
查看康小印的 主題 / 回貼
樓主  發(fā)表于: 2016-03-05 10:46
下面是我寫的步進(jìn)電機(jī)程序。我細(xì)分裝置設(shè)置的是4000,下面應(yīng)該會(huì)有3200個(gè)脈沖,也就是會(huì)旋轉(zhuǎn)0.8周,實(shí)際運(yùn)行后并沒有0.8周這么多;后來我將程序兩個(gè)循環(huán)a>=0,和i>=0;發(fā)現(xiàn)電機(jī)運(yùn)動(dòng)停不下來,我想知道是怎么回事?謝謝
#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
級(jí)別: 工控俠客
精華主題: 0
發(fā)帖數(shù)量: 303 個(gè)
工控威望: 2650 點(diǎn)
下載積分: 14769 分
在線時(shí)間: 605(小時(shí))
注冊(cè)時(shí)間: 2014-09-10
最后登錄: 2024-09-05
查看testfish的 主題 / 回貼
1樓  發(fā)表于: 2016-03-05 10:52
步進(jìn)不是按角度計(jì)算的嗎?
testfish
9554665@qq.com
級(jí)別: 工控俠客
精華主題: 0
發(fā)帖數(shù)量: 303 個(gè)
工控威望: 2650 點(diǎn)
下載積分: 14769 分
在線時(shí)間: 605(小時(shí))
注冊(cè)時(shí)間: 2014-09-10
最后登錄: 2024-09-05
查看testfish的 主題 / 回貼
2樓  發(fā)表于: 2016-03-05 12:05
引用
引用第3樓康小印于2016-03-05 10:58發(fā)表的  :

對(duì)啊,你看我程序應(yīng)該是3200個(gè)脈沖吧?一周是4000個(gè)細(xì)分,那就應(yīng)該轉(zhuǎn)0.8周,但是實(shí)際上比0.8小得多。將for循環(huán)中a和i的判定條件變一變,就會(huì)轉(zhuǎn)很長(zhǎng)時(shí)間,我想知道原因

勵(lì)磁方式呢?