單極步進馬達半步 (Half Step) 轉動程式也是變更線圈順序,順時針或逆時針轉動也可以做到,線圈順序會複雜了,由 RA1→RA1RA3→RA3→RA3RA2→RA2→RA2RA4→RA4 (A → B → -A → -B) ,馬達便會順時針及半步轉動。
▲ Teac單極步進馬達半步 (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 轉動程式運作中 |
氣溫:28.4 度 @ 22:00
相對濕度:百分之 79%
天氣:天色大致良好
沒有留言:
張貼留言