Esse exemplo de projeto é o mais simples para controle de um
motor de passo (stepper motor). Mesmo assim, não pode ser desprezado. O módulo de controle com o chip ULN2003 facilita muito a montagem em um projeto. Possui uma vantagem de ser controlado com precisão num sistema de circuito
aberto (nenhuma informação de
feedback sobre a posição é necessária). Ou seja, elimina a
necessidade de caros sistemas de detecção, como codificadores
ópticos. Sua posição é conhecida somente através do controle dos
impulsos de entrada. Esse motor possui uma caixa de redução embutida (motivo o eixo aparente do motor não estar no centro), daí sua lentidão, porém um grande torque em relação ao seu tamanho.
Detalhes do Motor 28YBJ-48 Stepper Motor :
- Ângulo de Passo (sequência de 8 Passos: Motor Interno sozinho): 5.625° (64 passos por revolução)
- Ângulo de Passo ( sequência de 4 Passos: Motor Interno sozinho): 11,25° (32 passos por revolução)
- Gear Relação de redução: 1/64 (Não é realmente exato: provavelmente 63.68395:1)
Então: leva (64 * 64 = 4096 passos por volta do eixo de saída. Em sequência de 8 passos.
Então: leva (32 * 64 = 2048 passos por volta do eixo de saída. Em sequência de 4 passos.
NOTA: Na biblioteca "Stepper Library" é executado em modo de 4 passos.
Então: leva (32 * 64 = 2048 passos por volta do eixo de saída. Em sequência de 4 passos.
NOTA: Na biblioteca "Stepper Library" é executado em modo de 4 passos.
Faça a conexão dos conforme a indicação abaixo:
IN1 --> Porta Digital 4 do Arduino
IN2 --> Porta Digital 6 do Arduino --> Porta Digital 5 para a Biblioteca CustomStepper.h
IN3 --> Porta Digital 5 do Arduino --> Porta Digital 6 para a Biblioteca CustomStepper.h
IN4 --> Porta Digital 7 do Arduino
IN2 --> Porta Digital 6 do Arduino --> Porta Digital 5 para a Biblioteca CustomStepper.h
IN3 --> Porta Digital 5 do Arduino --> Porta Digital 6 para a Biblioteca CustomStepper.h
IN4 --> Porta Digital 7 do Arduino
Alimente o motor de passo com +5V e o GND provenientes do Arduino.
Depois da ligação dos fios, carregue o código:
1
#include <Stepper.h>
2 #define
STEPS 32 // Taxa de variação de
velocidade "Stepper Library" é executado em modo de 4 passos
3
4 Stepper stepper(STEPS, 4, 5, 6, 7); // Define os parametros de ligação do motor de passo.
5
6 void setup()
7 {
8
9 }
10
11 void loop()
12 {
13 stepper.setSpeed(700); // Máxima
velocidade de rotação do eixo para esse
exemplo é 700 passos por minuto
14 stepper.step(2048); // 2048
passos para uma rotação de 360° ( 32 * 64 = 2048 passos por volta do eixo de saída.
Em sequência de 4 passos)
15 delay(1000);
16 stepper.setSpeed(400);
17 stepper.step(-1024); // Volta 1024 passos, ou seja, 180° no sentido contrário
18 delay(200);
19 }
Programa bem simples como pode-se observar, 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
#include <CustomStepper.h>
2
3 CustomStepper stepper(4, 5, 6, 7, (byte[])
4 {8, B1000, B1100, B0100, B0110, B0010, B0011, B0001,
5 B1001}, 4075.7728395, 12, CW);
6
7 boolean rotate1 = false;
8
9 void setup()
10 {
11 stepper.setRPM(12); // Define a velocidade do motor
12
13 stepper.setSPR(4075.7728395); // Define o numero de passos por rotacao
14
15 // (64 * 25792)/405 =
4075.7728395
16 // (32 * 25792)/405 =
2037.88642
17 }
18
19 void loop()
20 {
21 if (stepper.isDone() && rotate1 == false)
22 {
23
delay(1000);
24
stepper.setDirection(CW);
25 //stepper.rotateDegrees(360); // Define o ângulo que vai girar
26
stepper.rotate(2); // Define o numero de rotacoes
27
rotate1 = true;
28 }
29
30 if (stepper.isDone() && rotate1 == true)
31 {
32
delay(1000);
33
stepper.setDirection(CCW); // Define o
sentido de rotacao (CCW = Anti-horario)
34 //stepper.rotateDegrees(180); // Define o ângulo que vai girar
35
stepper.rotate(1); // Define o
numero de rotacoes
36
rotate1 = false;
37 }
38
39 stepper.run(); // Comando
obrigatorio para funcionamento da biblioteca
40 }
41
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.
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 foi colocado ao motor de passo um transferidor para auxiliar a observação da precisão desse motor a qual é bem razoável.
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 foi colocado ao motor de passo um transferidor para auxiliar a observação da precisão desse motor a qual é bem razoável.
Eis o código:
1
#include <CustomStepper.h>
2 CustomStepper stepper(4, 5, 6, 7, (byte[])
3 {8, B1000, B1100, B0100, B0110, B0010, B0011, B0001, B1001},
4 4075.7728395, 12, CW);
5 float veloc;
6 float ang;
7
8 void setup()
9 {
10 while (!Serial);
11 Serial.begin(9600);
12 stepper.setSPR(4075.7728395); // Define o numero de passos por rotacao
13 Serial.println("Entre com a
velocidade em RPM e Angulo em graus, respectivamente: ");
14 }
15
16 void loop()
17 {
18 if(Serial.available())
19 {
20
veloc = Serial.parseFloat();
21
ang = Serial.parseFloat();
22
23 if (stepper.isDone() && ang >= 0)
24 {
25
stepper.setRPM(veloc); // Define a velocidade do motor
26
stepper.setDirection(CW); // Define o sentido de rotacao (CW = Horario)
27
stepper.rotateDegrees(ang);// Define o
ânngulo que vai girar
28 }
29 if (stepper.isDone() && ang < 0)
30 {
31 stepper.setRPM(veloc); // Define a velocidade do motor
32
stepper.setDirection(CCW); // Define o sentido de rotacao (CCW = Anti-horário)
33
stepper.rotateDegrees(-ang);// Define o
ângulo que vai girar
34 }
35
Serial.print(ang);
36
Serial.print(" graus com
");
37
Serial.print(veloc);
38
Serial.print(" RPM de
velocidade ");
39
Serial.println(" ");
40 }
41 stepper.run();
42 }
print(ang);
41
Serial.print(" graus com
");
42
Serial.print(veloc);
43
Serial.print(" RPM de
velocidade ");
44
Serial.println(" ");
45 }
46 stepper.run();
47 }
Depois do código carregado, é possível observar a facilidade de controle de ângulo e velocidade pelo Monitor Serial.
Nenhum comentário:
Postar um comentário