找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

帖子
查看: 5098|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī)連接A4988驅(qū)動(dòng)42步進(jìn)電機(jī)可以轉(zhuǎn)動(dòng),但是不平緩

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:193383 發(fā)表于 2019-11-29 16:59 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
本帖最后由 dww465757120 于 2019-11-29 17:00 編輯


參照論壇上的程序,寫(xiě)了個(gè)51單片機(jī)連接A4988驅(qū)動(dòng)42步進(jìn)電機(jī)的程序,程序如下,A4988上的電流已經(jīng)調(diào)到1.5A,線序?qū)Φ�,通電后,步進(jìn)電機(jī)轉(zhuǎn)動(dòng),但是抖動(dòng)的厲害,不平緩;上網(wǎng)查了一些資料,說(shuō)是A4988要接收周期脈沖信號(hào),不是方波信號(hào)?我的程序中STEP=~STEP  是不是產(chǎn)生的就是方波信號(hào)?麻煩大神們解答一下,如果是這個(gè)原因,那怎么改成周期性的脈沖信號(hào)?如果不是這個(gè)原因,麻煩大神幫忙解決下,謝謝!
PS:本人是學(xué)機(jī)械的,單片機(jī)只是業(yè)余愛(ài)好,所以水平有限。。。。。。


#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
        
sbit DIR=P2^2;         //方向
sbit STEP=P2^1;       //脈沖
sbit keyloop=P2^6;      //循環(huán)啟動(dòng)鍵
uint n;            
uint a;         


/*********************延時(shí)函數(shù)*********************************/
void Delay1ms()                //@12.000MHz
{
        unsigned char i, j;


        i = 2;
        j = 239;
        do
        {
                while (--j);
        } while (--i);
}


        


void ndelay(n)
{
        while(n)
        {
                n--;
                Delay1ms();
        }
}




/*********************定時(shí)器初始化函數(shù)*****************************/
void Timer0Init()
{
        TMOD=0X01;
        TH0=(65536-a)/256;
        TL0=(65536-a)%256;
        ET0=1;
        EA=1;
}


/*************************循環(huán)啟動(dòng)函數(shù)***************************/
void keyloopprint()
{
        if(keyloop==0)
        {
                ndelay(n);
                if(keyloop==0)
                {
                        TR0=~TR0;
                }
        }
}




void main()
{
        STEP=0;
        DIR=1;
        a=625;        /*用的4細(xì)分,按照60轉(zhuǎn)/min計(jì)算的,一秒就是1轉(zhuǎn),也就是200*4=800步,一步就是
                          1/800=0.00125秒,初始定時(shí)就是0.00125/2=0.000625,所以a=625微秒,不知道這樣算對(duì)不對(duì)?*/


        TR0=0;
        n=20;
        Timer0Init();
        while(1)
        {
                keyloopprint();
        }
}




void time0() interrupt 1
{
        TH0=(65536-a)/256;
        TL0=(65536-a)%256;
        STEP=~STEP;
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:94031 發(fā)表于 2019-11-30 10:24 | 只看該作者
步進(jìn)電機(jī)低速運(yùn)行有震動(dòng)很正常,需要通過(guò)細(xì)分技術(shù)來(lái)解決低速震動(dòng)問(wèn)題。

評(píng)分

參與人數(shù) 1黑幣 +30 收起 理由
dww465757120 + 30 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

板凳
ID:193383 發(fā)表于 2019-12-1 14:53 | 只看該作者
xuyaqi 發(fā)表于 2019-11-30 10:24
步進(jìn)電機(jī)低速運(yùn)行有震動(dòng)很正常,需要通過(guò)細(xì)分技術(shù)來(lái)解決低速震動(dòng)問(wèn)題。

但是我調(diào)到8細(xì)分,高速情況下還是這樣。。。。。
回復(fù)

使用道具 舉報(bào)

地板
ID:94031 發(fā)表于 2019-12-2 10:20 | 只看該作者
dww465757120 發(fā)表于 2019-12-1 14:53
但是我調(diào)到8細(xì)分,高速情況下還是這樣。。。。。

那就是細(xì)分級(jí)別還不夠,繼續(xù)提高細(xì)分?jǐn)?shù)。

評(píng)分

參與人數(shù) 1黑幣 +30 收起 理由
dww465757120 + 30 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表