標(biāo)題: 51單片機(jī)通過步進(jìn)電機(jī)驅(qū)動器控制兩相步進(jìn)電機(jī)問題 [打印本頁]

作者: TtreasureE    時(shí)間: 2022-10-31 10:22
標(biāo)題: 51單片機(jī)通過步進(jìn)電機(jī)驅(qū)動器控制兩相步進(jìn)電機(jī)問題
請教一下各位大佬我現(xiàn)在目的是:步進(jìn)電機(jī)的軸上接的一個(gè)套筒用來擰螺栓頭,螺栓上帶有一個(gè)扭力彈簧,通過51單片機(jī)給脈沖給步進(jìn)電機(jī)驅(qū)動器,控制步進(jìn)電機(jī)轉(zhuǎn)動固定的角度,就給彈簧加了固定的扭力。(電機(jī)的力矩是13N*m,而我需要給彈簧預(yù)加的力矩是5N*m)

遇到的問題是:電機(jī)轉(zhuǎn)動時(shí)和完全停止后我感覺力矩是足夠用的,彈簧的力也不會使電機(jī)失步或者反轉(zhuǎn)。但是在電機(jī)轉(zhuǎn)動到設(shè)定的角度時(shí),停止的一瞬間,感覺力矩會丟失一瞬間。導(dǎo)致彈簧的力會使電機(jī)回轉(zhuǎn)1~2個(gè)步距角,就感覺電機(jī)的力矩不夠一樣,但是停止后就穩(wěn)定了。請教一下這是什么問題?感謝賜教。
另外:①開關(guān)電源的電流選型是夠了的,比電機(jī)的額定電流大。
                ②驅(qū)動器的電流開關(guān)是設(shè)置對了的,與電機(jī)匹配


作者: TtreasureE    時(shí)間: 2022-10-31 10:27
程序如下,因?yàn)槲医恿艘粋(gè)腳踏開關(guān),踩一下計(jì)數(shù),并且數(shù)碼管顯示,所以7219各位可以忽略,只關(guān)注電機(jī)部分就可以了。
#include<reg52.h>

sbit PUL = P1^0;
sbit DIR = P1^1;
sbit Max7219_pinCLK = P1^6;
sbit Max7219_pinCS  = P1^5;
sbit Max7219_pinDIN = P1^4;
sbit KEY = P1^3;

unsigned int puls;

void Delay_xms(unsigned int x)
{
unsigned int i,j;
for(i=0;i<x;i++)
  for(j=0;j<112;j++);
}

void Write_Max7219_byte(unsigned char DATA)         
{
            unsigned char i;   
                Max7219_pinCS=0;               
            for(i=8;i>=1;i--)
          {                  
            Max7219_pinCLK=0;
            Max7219_pinDIN=DATA&0x80;
            DATA=DATA<<1;
            Max7219_pinCLK=1;
           }                                 
}

void Write_Max7219(unsigned char address,unsigned char dat)
{
     Max7219_pinCS=0;
         Write_Max7219_byte(address);        
     Write_Max7219_byte(dat);               
         Max7219_pinCS=1;                        
}

void Init_MAX7219(void)
{
Write_Max7219(0x09, 0xFF);
Write_Max7219(0x0a, 0x03);      
Write_Max7219(0x0b, 0x07);      
Write_Max7219(0x0c, 0x01);      
Write_Max7219(0x0f, 0x00);      
}



void StepMotorRun();
void Delay200us();
void DesplayLed();

unsigned char LED[8] = {0,0,0,0,0,0,0,0};
unsigned char code LedChar[] = {  //數(shù)碼管顯示字符轉(zhuǎn)換表
    0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7,0x8,0x9
};

unsigned long sec=0;
bit flag = 1;

void main()
{
        DIR = 1;
        Delay_xms(50);
        Init_MAX7219();
        Delay_xms(2000);
        Write_Max7219(0x0f, 0x00);         //顯示測試:1;測試結(jié)束,正常顯示:0
        while(1)
        {
                DesplayLed();
                if(KEY != flag)
                {
                        flag = KEY;
                        Delay_xms(10);
                        if(KEY == 0)
                        {
                                sec++;
                                StepMotorRun();
                        }
                }       
        }
}

void StepMotorRun()
{
        puls = 1600;
        while(puls--)
        {
                PUL = 0;
                Delay200us();
                PUL = 1;
                Delay200us();
        }

}

void Delay200us()                //@12.000MHz
{
        unsigned char i, j;

        i = 3;
        j = 82;
        do
        {
                while (--j);
        } while (--i);
}



void DesplayLed()
{
        unsigned char j;
        LED[0] = LedChar[sec%10];
        LED[1] = LedChar[sec/10%10];
        LED[2] = LedChar[sec/100%10];
        LED[3] = LedChar[sec/1000%10];
        LED[4] = LedChar[sec/10000%10];
        LED[5] = LedChar[sec/100000%10];
        LED[6] = LedChar[sec/1000000%10];
        LED[7] = LedChar[sec/10000000%10];
        for(j=7;j>=1;j--)
        {
                if(LED[j] == 0)
                        LED[j] = 0xF;
                else
                        break;
        }
        Write_Max7219(1,LED[0]);
        Write_Max7219(2,LED[1]);
        Write_Max7219(3,LED[2]);
        Write_Max7219(4,LED[3]);
        Write_Max7219(5,LED[4]);
        Write_Max7219(6,LED[5]);
        Write_Max7219(7,LED[6]);
        Write_Max7219(8,LED[7]);
}

51hei圖片_20221031102312.jpg (252.98 KB, 下載次數(shù): 60)

驅(qū)動器

驅(qū)動器

51hei圖片_20221031102318.jpg (165.92 KB, 下載次數(shù): 59)

開關(guān)電源

開關(guān)電源

51hei圖片_20221031102322.jpg (169.29 KB, 下載次數(shù): 56)

整體圖片

整體圖片

作者: TtreasureE    時(shí)間: 2022-10-31 11:45
另外驅(qū)動器SW4打開了,設(shè)置的是停轉(zhuǎn)時(shí)全流
作者: TtreasureE    時(shí)間: 2022-10-31 11:46
另外驅(qū)動器SW4已經(jīng)打開,設(shè)置為停轉(zhuǎn)時(shí)全流
作者: Hephaestus    時(shí)間: 2022-10-31 12:03
代碼里面看不到ENA。

按說停止的時(shí)候不撤銷ENA,步進(jìn)電機(jī)還是有力量的。
作者: 冰火風(fēng)輪    時(shí)間: 2022-10-31 12:03
用了細(xì)分?細(xì)分是虛的
作者: TtreasureE    時(shí)間: 2022-10-31 13:15
Hephaestus 發(fā)表于 2022-10-31 12:03
代碼里面看不到ENA。

按說停止的時(shí)候不撤銷ENA,步進(jìn)電機(jī)還是有力量的。

我采用的共陽接法,ENA+接的5V,ENA-接的IO口,程序里面沒有動ENA+,接的IO口默認(rèn)是高電平。ENA一直沒有通,按理說不管任何時(shí)候電機(jī)的力矩應(yīng)該都滿足我需求了,但就是感覺停止的一瞬間好像力不夠了,會回轉(zhuǎn)幾個(gè)步距角一樣。
作者: TtreasureE    時(shí)間: 2022-10-31 13:32
冰火風(fēng)輪 發(fā)表于 2022-10-31 12:03
用了細(xì)分?細(xì)分是虛的

用的細(xì)分1600,但是最小的細(xì)分400也是這種情況。請問脈沖寬度對力矩有影響嗎?是不是脈沖200us的影響?
作者: Hephaestus    時(shí)間: 2022-10-31 14:17
細(xì)分只是噪音低,力矩是不如不細(xì)分的。
作者: yzwzfyz    時(shí)間: 2022-11-1 15:22
照你說的現(xiàn)象。
建議再多轉(zhuǎn)1~2步。
作者: TtreasureE    時(shí)間: 2022-11-2 16:40
Hephaestus 發(fā)表于 2022-10-31 14:17
細(xì)分只是噪音低,力矩是不如不細(xì)分的。

我把細(xì)分調(diào)到400,再試試看,謝謝
作者: TtreasureE    時(shí)間: 2022-11-2 16:41
yzwzfyz 發(fā)表于 2022-11-1 15:22
照你說的現(xiàn)象。
建議再多轉(zhuǎn)1~2步。

好的,多謝建議,我把細(xì)分調(diào)到最小,再把脈沖寬度加大,轉(zhuǎn)速降低試試看。
作者: ningsy    時(shí)間: 2022-11-2 18:00
你是不是一直沒用使能信號?根據(jù)我的經(jīng)驗(yàn),步進(jìn)電機(jī)使能時(shí)若無脈沖是鎖定狀態(tài),有脈沖就轉(zhuǎn),不使能就是自由狀態(tài),當(dāng)然沒力了。如果還不行建議考慮機(jī)構(gòu)自鎖,如蝸輪蝸桿機(jī)構(gòu)。
作者: glinfei    時(shí)間: 2022-11-3 09:27
弄好了嗎?我想問這個(gè)系統(tǒng)是不是對旋轉(zhuǎn)角度特別敏感。恳?yàn)槲艺J(rèn)為可能是機(jī)械原因:1、步進(jìn)電機(jī)每步轉(zhuǎn)的角度并不一樣;2、要考慮旋轉(zhuǎn)的角動量,所以我也建議多走兩步,如果軟件調(diào)不出來就要考慮加減速齒輪了。
作者: TtreasureE    時(shí)間: 2022-11-10 17:19
ningsy 發(fā)表于 2022-11-2 18:00
你是不是一直沒用使能信號?根據(jù)我的經(jīng)驗(yàn),步進(jìn)電機(jī)使能時(shí)若無脈沖是鎖定狀態(tài),有脈沖就轉(zhuǎn),不使能就是自由 ...

使能接口不進(jìn)行任何操作的時(shí)候就是電機(jī)不接收脈沖的時(shí)候仍然保持力矩,我現(xiàn)在就是這樣設(shè)定的。不然到最后彈簧的力肯定會使電機(jī)軸回轉(zhuǎn)的。
作者: TtreasureE    時(shí)間: 2022-11-10 17:22
glinfei 發(fā)表于 2022-11-3 09:27
弄好了嗎?我想問這個(gè)系統(tǒng)是不是對旋轉(zhuǎn)角度特別敏感啊?因?yàn)槲艺J(rèn)為可能是機(jī)械原因:1、步進(jìn)電機(jī)每步轉(zhuǎn)的角 ...

因?yàn)槲倚枰臓顟B(tài)是每次轉(zhuǎn)動固定的角度,這樣才能給彈簧預(yù)加相同的預(yù)緊力,最后產(chǎn)品才能一致。多走兩步倒容易實(shí)現(xiàn),多幾個(gè)脈沖就好了,但是停止的一瞬間還是會遇到這樣的問題。問題主要出現(xiàn)在脈沖停止的瞬間,仿佛電機(jī)的保持力矩不夠一樣,彈簧力會使軸回轉(zhuǎn)一兩步。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1