Управление шаговым двигателем. 1/4 шага

forfrends
Offline
Зарегистрирован: 24.02.2015

Всем привет! Имеется Шаговый двигатель, 4 вывода, на него установлен драйвер для управления - LB1836M. Полный шаг делаю так:

void _steper()
{
    if(dl == 1){    
        digitalWrite( in1, HIGH );
        digitalWrite( in2, LOW );
        digitalWrite( in3, LOW );
        digitalWrite( in4, HIGH );
        dl = 3;
    }else if(dl == 3){ 
        digitalWrite( in1, HIGH );
        digitalWrite( in2, HIGH );
        digitalWrite( in3, LOW );
        digitalWrite( in4, LOW );
        dl = 5;
    }else if(dl == 5){
        digitalWrite( in1, LOW );
        digitalWrite( in2, HIGH );
        digitalWrite( in3, HIGH );
        digitalWrite( in4, LOW );
         dl = 7;
    }else if(dl == 7){
        
        digitalWrite( in1, LOW );
        digitalWrite( in2, LOW );
        digitalWrite( in3, HIGH );
        digitalWrite( in4, HIGH );
        dl = 1;
    }
}

1/2 шага делаю так:

void _steper2()
{
    if(dl == 1){    
        digitalWrite( in1, HIGH );
        digitalWrite( in2, LOW );
        digitalWrite( in3, LOW );
        digitalWrite( in4, HIGH );
        dl = 2;
    }else if(dl == 2){ 
        digitalWrite( in1, HIGH );
        digitalWrite( in2, HIGH );
        digitalWrite( in3, LOW );
        digitalWrite( in4, HIGH );
        dl = 3;
    }else if(dl == 3){ 
        digitalWrite( in1, HIGH );
        digitalWrite( in2, HIGH );
        digitalWrite( in3, LOW );
        digitalWrite( in4, LOW );
        dl = 4;
    }else if(dl == 4){
        digitalWrite( in1, HIGH );
        digitalWrite( in2, HIGH );
        digitalWrite( in3, HIGH );
        digitalWrite( in4, LOW );
         dl = 5;
    }else if(dl == 5){
        digitalWrite( in1, LOW );
        digitalWrite( in2, HIGH );
        digitalWrite( in3, HIGH );
        digitalWrite( in4, LOW );
        dl = 6;
    }else if(dl == 6){
        digitalWrite( in1, LOW );
        digitalWrite( in2, HIGH );
        digitalWrite( in3, HIGH );
        digitalWrite( in4, HIGH );
        dl = 7;
    }else if(dl == 7){
        digitalWrite( in1, LOW );
        digitalWrite( in2, LOW );
        digitalWrite( in3, HIGH );
        digitalWrite( in4, HIGH );
        dl = 8;
    }else if(dl == 8){
        digitalWrite( in1, HIGH );
        digitalWrite( in2, LOW );
        digitalWrite( in3, HIGH );
        digitalWrite( in4, HIGH );
        dl = 1;
    }
}

Подскажите, как сделать 1/4 шага? 

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Простыми LOW-HIGH  -    никак.....
Тут уже нужно ступеньчатые синус-косинус формировать.

https://www.zaber.com/technical-articles/microstepping-tutorial