Manual

do

Maker

.

com

Motor de passo 5 fios com driver ULN2003

Motor de passo 5 fios com driver ULN2003

Esse modelo de motor de passo 5 fios é barato e comum. Trrata-se de um motor de passo unipolar e pode ser encontrado com facilidade no dealextreme ou no mercado livre. Utilizando-o dessa maneira, não há muito o que falar a respeito. O motor funciona com tensão  variável entre 5V e 12V, mas independemente disto, você pode (e provavelmente deva) alimentá-lo com uma fonte externa, ligado aos pinos do circuito controlador, de modo a fornecer a corrente apropriada.

Maiores detalhes sobre o driver ULN2003 podem ser vistos nesse outro post, onde faço um exemplo de utilização com LEDs para demonstrar como economizar pinos PWM , por exemplo.

Se você está procurando um tutorial para outro tipo de motor de passo, veja esse outro post onde introduzo diversas informações importantes a respeito de motor de passo bipolar.

A pinagem é bem simples; 8,9,10 e 11 para IN1,IN2,IN3 e IN4 respectivamente.

Escrevi um pequeno código para girar esse motor para esquerda e direita e o disponibilizo:

int left  = 0;
int right = 1;
int stop  = 9;

int pins[4];
int estados[4][8];

void Steps(int steps, int direction)
{

if (direction == left){
    for (int j=0;j<steps;j++){
        for (int i=0; i<8;i++){
            delay(5);
            digitalWrite(pins[0],estados[0][i]);
            digitalWrite(pins[1],estados[1][i]);
            digitalWrite(pins[2],estados[2][i]);
            digitalWrite(pins[3],estados[3][i]);
        } 
    }
}
else if (direction == right){
    for (int j=0;j<steps;j++){
        for (int i=8; i>-1;i--){
            delay(5);
            digitalWrite(pins[0],estados[0][i]);
            digitalWrite(pins[1],estados[1][i]);
            digitalWrite(pins[2],estados[2][i]);
            digitalWrite(pins[3],estados[3][i]);
        }
    }
}
else{
    digitalWrite(pins[0],0);
    digitalWrite(pins[1],0);
    digitalWrite(pins[2],0);
    digitalWrite(pins[3],0);
}
}

void setup(){
    for (int i=8;i<12;i++){
        pinMode(i,OUTPUT);
        pins[i-8] = i;
    }
    //4 pins, 8 states
    //PIN 0
    int j = 0;
    estados[j][0] = 0;
    estados[j][1] = 0;
    estados[j][2] = 0;
    estados[j][3] = 0;
    estados[j][4] = 0;
    estados[j][5] = 1;
    estados[j][6] = 1;
    estados[j][7] = 1;

    //PIN1
    j = 1;
    estados[j][0] = 0;
    estados[j][1] = 0;
    estados[j][2] = 0;
    estados[j][3] = 1;
    estados[j][4] = 1;
    estados[j][5] = 1;
    estados[j][6] = 0;
    estados[j][7] = 0;

    //PIN2
    j = 2;
    estados[j][0] = 0;
    estados[j][1] = 1;
    estados[j][2] = 1;
    estados[j][3] = 1;
    estados[j][4] = 0;
    estados[j][5] = 0;
    estados[j][6] = 0;
    estados[j][7] = 0;

    //PIN3
    j = 3;
    estados[j][0] = 1;
    estados[j][1] = 1;
    estados[j][2] = 0;
    estados[j][3] = 0;
    estados[j][4] = 0;
    estados[j][5] = 0;
    estados[j][6] = 0;
    estados[j][7] = 1;
}

void loop()
{
    Steps(500,left);
    Steps(0,stop);
    delay(300);
    Steps(500,right);
    Steps(0,stop);
    delay(300);
}

Um video de seu funcionamento.

Um artigo onde utilizo esse motor de passo unipolar é esse do robô seguidor de linha. Acredito que vale a pena dar uma conferida. E em breve teremos também outro projeto bastante  interessante, já em andamento. Não se espante com a diferença de datas desse artigo em relação ao do robô seguidor de linha, eu sempre mantenho os artigos atualizados, por isso, independente da época da sua leitura, sempre estará lendo algo atual!

Se gostou, não deixe de compartilhar; dê seu like no video e inscreva-se no nosso canal Manual do Maker Brasil no YouTube.

Próximo post a caminho!

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.