Notice: Function _load_textdomain_just_in_time was called incorrectly. Translation loading for the ninja-forms domain was triggered too early. This is usually an indicator for some code in the plugin or theme running too early. Translations should be loaded at the init action or later. Please see Debugging in WordPress for more information. (This message was added in version 6.7.0.) in /home/ff4jg8asu0ua/public_html/wp-includes/functions.php on line 6114

Notice: A função _load_textdomain_just_in_time foi chamada incorretamente. O carregamento da tradução para o domínio twentyseventeen foi ativado muito cedo. Isso geralmente é um indicador de que algum código no plugin ou tema está sendo executado muito cedo. As traduções devem ser carregadas na ação init ou mais tarde. Leia como Depurar o WordPress para mais informações. (Esta mensagem foi adicionada na versão 6.7.0.) in /home/ff4jg8asu0ua/public_html/wp-includes/functions.php on line 6114
28BYJ-48 - Motor de Passo com Driver ULN2003 - VLADCONTROL

28BYJ-48 – Motor de Passo com Driver ULN2003

28BYJ-48 é um motor de passo pequeno, barato, com ótimo torque e de 5 volts. Muito empregado para controlar persianas automatizadas, atuadores de fluxo de ar em dutos, palhetas em unidades de ar condicionado, câmeras de movimento e outros. 

Detalhes do Motor de Passo 28YBJ-48

Ângulo de Passo (sequência de 8 Passos): 5.625° (64 passos por revolução).
Ângulo de Passo (sequência de 4 Passos): 11,25° (32 passos por revolução).
Gear Relação de redução: 1/64 (Não é realmente exato, em torno de 63.68395:1).
Com isso, então, percebemos que
o Motor de Passo 28YBJ-48 tem:
– Em sequência de 8 passos → 64 * 64 = 4096 passos por volta do eixo de saída.
– Em sequência de 4 passos → 32 * 64 = 2048 passos por volta do eixo de saída.

Módulo Driver ULN2003 

O módulo ULN2003 permite facilmente o controle do motor de passo 28BYJ-48 através de um microcontrolador, por exemplo, Arduino. Um lado da placa tem um soquete de 5 fios onde o cabo do motor se conecta e 4 LEDs para indicar qual bobina está atualmente ligada. Do outro lado do UNL2003, você tem um jumper liga/desliga do motor o qual se deve manter ligado para ativar a energia do motor de passo. As opções de energia do Motor de Passo (5V – 12V) são os pinos abaixo dos quatro resistores. O ideal é utilizar uma fonte externa para alimentar o motor, pois o motor pode drenar mais corrente do que o microcontrolador pode manipular e, consequentemente, ocasionar um dano. No meio da placa, temos o chip ULN2003. Na parte inferior estão as 4 entradas de controle que devem ser conectadas aos quatro pinos digitais do Arduino.

 Montagem

Este exemplo de projeto é o mais simples para controle de um motor de passo 28YBJ-48.
Então, faça as conexões conforme o esquema abaixo:

28BYJ-48 - ULN2003 - Esquema

Código de operação do 28YBJ-48

Finalmente, conecte o Arduino ao seu PC, carregue o código e veja o funcionamento do 28YBJ-48:

 1 // Projeto - Controle basico de um motor de passo 28YBJ-48 com CI ULN2003APG com Stepper board
 2  
 3      /*  Detalhes do Motor 28YBJ-48 Stepper Motor
 4  
 5          Angulo de Passo (sequencia de 8 Passos: Motor Interno sozinho): 5.625 graus (64 passos por revolucao)
 6          Angulo de Passo ( sequencia de 4 Passos: Motor Interno sozinho): 11,25 graus (32 passos por revolucao)
 7          Gear Relacao de reducao: 1/64 (Nao e realmente exato: provavelmente 63.68395:1)
 8          Entao: leva (64 * 64 = 4096 passos por volta do eixo de saida. Em seqüencia de 8 passos.
 9          Entao: leva (32 * 64 = 2048 passos por volta do eixo de saida. Em sequencia de 4 passos.
10         NOTA: Arduino "Stepper Library" e executado em modo de 4 passos */
11  
12      #include <Stepper.h>
13  
14      #define STEPS 32 // Taxa de variacao de velocidade "Stepper Library" e executado em modo de 4 passos
15  
16      Stepper stepper(STEPS, 4, 5, 6, 7);   // crie um objeto stepper nos pinos 4, 5, 6 e 7
17  
18       /*Define os parametros de ligacao do motor de passo
19       IN1 --> Porta Digital 4 do Arduino
20       IN2 --> Porta Digital 6 do Arduino  --> Porta Digital 5 para a Biblioteca CustomStepper.h
21       IN3 --> Porta Digital 5 do Arduino  --> Porta Digital 6 para a Biblioteca CustomStepper.h
22       IN4 --> Porta Digital 7 do Arduino
23       */
24  
25      void setup()
26        {
27  
28        }
29  
30      void loop()
31        {
32  
33             stepper.setSpeed(700); /*  Maxima velocidade de rotacao do eixo  para esse exemplo e 700 passos por minuto, ou seja,
34                                                              700/64  = 10.94 RPM. Para esse motor qualquer valor acima de 700 a precisao fica comprometida.
35                                                              Deve-se testar a velocidade para cada moto com a rotacao para se chagar a um valor
36                                                              maximo(Cada motor tem uma valor diferente: uns mais e outros menos em torno de 14RPM).*/
37  
38             stepper.step(2048);    // 2048 passos para uma rotacao de 360 ( 32 * 64 = 2048 passos por volta do eixo de saida. Em sequencia de 4 passos)
39             delay(1000);
40             stepper.setSpeed(400);
41             stepper.step(-1024);  // Volta 1024 passos, ou seja, 180 no sentido contrario
42             delay(200);
43  
44       }

Programa bem simples  que permite um giro completo em um sentido e meio giro no sentido contrário com velocidades distintas.
A seguir, é apresentado um outro código com a biblioteca  “CustomStepper.h“:

 1   // Programa - Controle basico motor de passo 28BYJ-48 com Biblioteca CustomStepper.h
 2  
 3      #include <CustomStepper.h>
 4  
 5      /*Define os parametros de ligacao do motor de passo
 6       IN1 --> Porta Digital 4 do Arduino
 7       IN2 --> Porta Digital 5 do Arduino  --> Porta Digital 6 para a Biblioteca Stepper.h
 8       IN3 --> Porta Digital 6 do Arduino  --> Porta Digital 5 para a Biblioteca Stepper.h
 9       IN4 --> Porta Digital 7 do Arduino
10       */
11  
12      CustomStepper stepper(4, 5, 6, 7, (byte[ ]){8, B1000, B1100, B0100,
13      B0110, B0010, B0011, B0001, B1001}, 4075.7728395, 12, CW);
14  
15      boolean rotate1 = false;
16  
17  
18      void setup()
19        {
20  
21            stepper.setRPM(12);     // Define a velocidade do motor
22  
23            stepper.setSPR(4075.7728395);  // Define o numero de passos por rotacao
24  
25            // (64 * 25792)/405 =  4075.7728395
26            // (32 * 25792)/405 =  2037.88642
27        }
28  
29      void loop()
30        {
31            if (stepper.isDone() && rotate1 == false)
32              {
33                  delay(1000);
34                  stepper.setDirection(CW);
35                  //stepper.rotateDegrees(360);    // Define o angulo que vai girar
36                  stepper.rotate(2);                       // Define o numero de rotacoes
37                  rotate1 = true;
38              }
39  
40            if (stepper.isDone() && rotate1 == true)
41              {
42                    delay(1000);
43                    stepper.setDirection(CCW);     //  Define o sentido de rotacao (CCW = Anti-horario)
44                    //stepper.rotateDegrees(180);      //  Define o Angulo que vai girar
45                    stepper.rotate(1);                         //  Define o numero de rotacoes
46                    rotate1 = false;
47              }
48  
49            stepper.run();                      //   Comando obrigatorio para funcionamento da biblioteca
50        }

Então, percebemos que a biblioteca  “CustomStepper.h” é um pouco mais rica em comandos em relação à “Stepper.h”. Isso permite mais facilidade no controle do motor de passo.
Então, para finalizar esse tópico de Motor de Passo com o Módulo ULN2003, é apresentado aqui um projeto alternativo de controle pelo Monitor Serial, onde a entrada é o ângulo desejado. Aconselha-se colocar um transferidor na base do motor para observar a precisão desse motor que é bem razoável.

 1    /* Programa - Controle basico motor de passo 28BYJ-48 com Biblioteca CustomStepper.h
 2  
 3        Este programa permite controlar  a velocidade(RPM) e Angulo(graus) de rotacao do motor de passos
 4        com entrada pelo Monitor Serial.   */
 5  
 6      #include <CustomStepper.h>
 7  
 8      /*Define os parametros de ligacao do motor de passo
 9       IN1 --> Porta Digital 4 do Arduino
10       IN2 --> Porta Digital 5 do Arduino  --> Porta Digital 6 para a Biblioteca Stepper.h
11       IN3 --> Porta Digital 6 do Arduino  --> Porta Digital 5 para a Biblioteca Stepper.h
12       IN4 --> Porta Digital 7 do Arduino
13       */
14  
15      CustomStepper stepper(4, 5, 6, 7, (byte[ ]){8, B1000, B1100, B0100, B0110,
16                                                    B0010, B0011, B0001, B1001}, 4075.7728395, 12, CW);
17  
18     float veloc;
19     float ang;
20  
21      void setup()
22        {
23            while (!Serial);         // aguarde pela porta serial para se conectar
24            Serial.begin(9600);
25  
26            stepper.setSPR(4075.7728395);  // Define o numero de passos por rotacao
27  
28            /* A caixa tem varias engrenagens ( 31 dentes, 32 dentes, 26 dentes, 22 dentes / 11 dentes, 10 dentes, e mais duas com 9 dentes).
29              Para determinar com maior precissao a reducao:
30              (31*32*26*22)/(11*10*9*9) = 283712/4455 = 25792/405 = 63,68395
31              Na especificacao do fabricante, ele aproximou o valor para 64.
32  
33              Para calcular o numero de passos do motor interno  para girar uma volta do eixo externo(com reducao):
34              (64 * 25792)/405 =  4075,7728395 */
35  
36            Serial.println("Entre com a velocidade em RPM e Angulo em graus, respectivamente:  ");
37        }
38  
39      void loop()
40        {
41  
42          if(Serial.available())
43              {
44                  veloc = Serial.parseFloat();    // Retorna o primeiro numero de ponto flutuante valido do buffer de serie
45                  ang   = Serial.parseFloat();
46  
47                  if (stepper.isDone() && ang >= 0)
48                      {
49  
50                          stepper.setRPM(veloc);             // Define a velocidade do motor
51                          stepper.setDirection(CW);         // Define o sentido de rotacao (CW = Horario)
52                          stepper.rotateDegrees(ang);     // Define o Angulo que vai girar
53                      }
54  
55                  if (stepper.isDone() && ang < 0)
56                    {
57                          stepper.setRPM(veloc);           //  Define a velocidade do motor
58                          stepper.setDirection(CCW);     //  Define o sentido de rotacao (CCW = Anti-horario)
59                          stepper.rotateDegrees(-ang);  //  Define o angulo que vai girar
60                    }
61  
62                  Serial.print(ang);
63                  Serial.print(" graus com ");
64                  Serial.print(veloc);
65                  Serial.print(" RPM de velocidade ");
66                  Serial.println(" ");
67              }
68  
69            stepper.run();                      //   Comando obrigatorio para funcionamento da biblioteca
70        }

Onde comprar?

 

LOJAS

 

 

Conheça também!