2011年8月22日 星期一

DIY - PIC:PIC18F4550 步進馬達 Half Step 轉動程式 (一百一十一)

DIY - PICPIC18F4550 步進馬達 Half Step 轉動程式 (一百一十一)

單極步進馬達半步 (Half Step) 轉動程式也是變更線圈順序,順時針或逆時針轉動也可以做到,線圈順序會複雜了,由 RA1RA1RA3RA3RA3RA2RA2RA2RA4RA4 (A B -A -B) ,馬達便會順時針及半步轉動。

Teac單極步進馬達半步 (Half Step)  CW 轉動
  PIC18F4550 單極步進馬達半步 (Half Step)  CW 轉動程式:

void main(void)
{
    TRISA = 0b00000001;            // Setup PORTA RA1 - RA7 as Output

    while(1)
    {
    LATAbits.LATA1 = 1;                // RA0=1 LED=ON Scope=1 A+ White
    Delay10KTCYx(240);                  // 10,000 x 1 x (4 x 0.05us) = 2ms
                                                       // Scope = 2ms   
    LATAbits.LATA4 = 0;                // RA1=0 LED=OFF Scope=50ms
    Delay10KTCYx(240);                  // 10,000 x 1 x (4 x 0.05us) = 2ms
                                                       // Scope = 2ms

    LATAbits.LATA1 = 1;                // RA0=1 LED=ON Scope=1 A+ White
    LATAbits.LATA3 = 1;                // RA3=1 LED=ON Scope=1 B+ Blue
    Delay10KTCYx(240);                  // 10,000 x 1 x (4 x 0.05us) = 2ms
                                                       // Scope = 2ms
    LATAbits.LATA1 = 0;                // RA3=0 LED=OFF Scope=50ms
    Delay10KTCYx(240);                  // 10,000 x 1 x (4 x 0.05us) = 2ms
                                                       // Scope = 2ms

    LATAbits.LATA3 = 1;                // RA3=1 LED=ON Scope=1 B+ Blue
    LATAbits.LATA2 = 1;                // RA2=1 LED=ON Scope=1 A- Red
    Delay10KTCYx(240);                  // 10,000 x 1 x (4 x 0.05us) = 2ms
                                                       // Scope = 2ms
    LATAbits.LATA3 = 0;                // RA2=0 LED=OFF Scope=50ms
    Delay10KTCYx(240);                  // 10,000 x 1 x (4 x 0.05us) = 2ms
                                                       // Scope = 2ms

    LATAbits.LATA2 = 1;                // RA2=1 LED=ON Scope=1 A- Red
    LATAbits.LATA4 = 1;                // RA4=1 LED=ON Scope=1 B- Yellow
    Delay10KTCYx(240);                  // 10,000 x 1 x (4 x 0.05us) = 2ms
                                                       // Scope = 2ms
    LATAbits.LATA2 = 0;                // RA4=0 LED=OFF Scope=50ms
    Delay10KTCYx(240);                  // 10,000 x 1 x (4 x 0.05us) = 2ms
                                                       // Scope = 2ms  
    }
}

 Teac 單極步進馬達半步CW 轉動


Step
白色 (A)
藍色 (B)
紅色 (-A)
黃色 (-B)
1
X
0
0
0
2
X
X
0
0
3
0
X
0
0
4
0
X
X
0
5
0
0
X
0
6
0
0
X
X
7
0
0
0
X
8
X
0
0
X
 
這種序列方式要使用電流量1.5 Full-Step序列方式。它交替通電一個 /兩個線圈的時間和執行半步 (Half-stepping)。它是兩倍角移分辨率的兩倍,但記住,每2步較弱。(在每一步只有一個線圈通電)使用這個當你想更小的角移,並且可以容忍額外的功率消耗。
PIC18F4550 步進馬達半步(Half Step) CW 轉動程式運作中
2011   08 22 天氣報告 
氣溫:28.4 @ 22:00 
相對濕度:百分之 79% 
天氣:天色大致良好

沒有留言:

張貼留言