標題: 求大神指點步進電機控制 [打印本頁]

作者: 恍恍A惚惚    時間: 2017-9-18 08:56
標題: 求大神指點步進電機控制
要求兩個步進電機同時運行,啟停,可正反轉,可加減速。

作者: zl2168    時間: 2017-9-18 19:32
本帖最后由 zl2168 于 2017-9-18 19:42 編輯

實例98  驅動四相步進電機
Proteus仿真一下,確認有效
實例98 四相步進電機.rar (35.83 KB, 下載次數(shù): 7)

。以上摘自張志良編著《80C51單片機仿真設計實例教程——基于Keil CProteus》清華大學出版社ISBN 978-7-302-41682-1,內有常用的單片機應用100案例,用于仿真實驗操作,電路與程序真實可靠可信可行。書中電路和程序設計有詳細說明,程序語句條條有注解。仿真電路和Hex文件能在清華出版社網(wǎng)站免費下載,程序源代碼只能到書上看了。到圖書館借,或到新華書店翻閱,或到網(wǎng)上書店打折購買。

作者: 張碭碭    時間: 2017-9-18 20:30
把兩個電機寫到同一個函數(shù)比如
作者: 張碭碭    時間: 2017-9-18 20:33
把兩個電機寫到同一個函數(shù)里
比如
void dianji ()
{
moto1=1
moto2=1
moto1=0
moto2=0
....
}
把脈沖寫進去
作者: 無量壽經(jīng)    時間: 2017-9-18 21:06
以下內容來源于《51單片機輕松入門 基于STC15W4K系列》,只要把這章內容搞懂后想怎么控制就怎么控制。
第15章  步進 電 機 測 試
15.1 步進電機特點
步進電機也稱為步進馬達,相比其它電機有以下特點:
① 步進電機旋轉角度和輸入脈沖成正比,通常市面所售步進電機說明書會說明其步進角(也就是一個脈沖所產(chǎn)生的旋轉角度),比如常見的小體積永磁式電機的步進角是7.5°,則送給它48個脈沖使步進電機正好轉動一圈。
② 步進電機誤差很小,沒有累積誤差,因此控制步進電機正反轉還是會回到原來的位置,不會因為誤差累積而使初始位置越來越遠。
③ 具有自保持特性,任何一相線圈加上電源后,電機本身具有自保持力矩,不送脈沖情況下會停止在一定位置,不會改變。
④ 步進電機空載最高啟動頻率一般能達到450Hz,使用頻率不能超過允許最高頻率,否則電機只能振動,無法運轉。
⑤ 常見步進電機供電電壓是5V、12V、24V,供電電壓允許誤差±10%,電機外殼上一般都會對供電電壓規(guī)格作相應標識。
常見步進電機外形與內部電路如圖15-1所示。




15.4 步進電機驅動實例
例15.1  步進電機正反轉測試,使用圖15-7或圖15-8的電路,采用1-2相勵磁,要求上電后順轉200步,然后反轉200步,如此循環(huán),完整實驗代碼如下。
// 使用P20、P21、P22、P23口驅動電機
#include "STC15W4K.H "
unsigned char codeBiaoGe[8]={0x08,0x0C,0x04,0x06,0x02,0x03,0x01,0x09};
                    //表格,換算成二進制 1000,1100,0100,0110 ,0010,0011, 0001 1001
                    //P2口輸出低4位驅動電機   A  B /A  /B     
                    //1——2相勵磁,發(fā)8次脈沖(順序輸出上面表格)轉動4步
void PROT_Init(void)
{   
    P2M1 =0x80;     // 1000 0000   P2.0、P2.1、P2.2、P2.3、接驅動功率管,推挽輸出
    P2M0 = 0x0f;     // 0000 1111   P2.7 接接霍爾傳感器信號輸入,高阻輸入
}
void shun200()                 // 順轉200步
{
    unsigned int i;
    unsigned charn;
    n=0;
    for(i=0;i<400;i++)         // 200步,i/2為實際步數(shù)
    {   
        P2=BiaoGe[n]|0xf0;     // 不影響P2口高4位     
        delay3ms();
        n=n+1;  
        if (n>7)
        {              
            n=0;
        }           
    }
    P2&=0xf0;                    // 保證電機繞組斷電
}
void fan200()                    // 反轉200步
{
    unsigned int i;
    unsigned charn;
    n=8;            
    for(i=0;i<400;i++)            // 200步,i/2為實際步數(shù)
    {   
        n=n-1;      
        P2=BiaoGe[n]|0xF0;        //不影響P2口高4位         
        delay3ms();
        if (n==0)
        {               
            n=8;
        }           
    }
    P2&=0xf0;                     // 保證電機繞組斷電   
}
void main(void)                    
{           
    PROT_Init();                 // 初始化端口
    while(1)
    {
        shun200();
        delay1s();
        fan200();
        delay1s();
    }   
}




作者: kaidxp66    時間: 2017-9-19 10:50
電路相同,時序相同。




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