Passo completo 1 (Full-step) -Somente uma bobina é energizada a cada passo; -Menor torque; -Pouco consumo de energia; -Maior velocidade. | |
Passo completo 2 (Full-step) -Duas bobinas são energizadas a cada passo; -Maior torque; -Consome mais energia que o Passo completo 1; -Maior velocidade. | |
Meio passo (Half-step) -A combinação do passo completo1 e do passo completo 2 gera um efeito de meio passo; -Consome mais energia que os passo anteriores; -É muito mais preciso que os passos anteriores; -O torque é próximo ao do Passo completo 2; -A velocidade é menor que as dos passos anteriores. |
Ou seja, apresenta a seguinte sequência para os passos:
Step C0 C1 C2 C3
1 1 0 1 0
2 0 1 1 0
3 0 1 0 1
4 1 0 0 1
Fonte: Biblioteca Stepper Motor do Arduino
Neste caso temos sempre 2 bobinas acionadas, o que consome mais energia durante o funcionamento. Para evitar este consumo é preciso reduzir os passos ao passo completo 1:
Step C0 C1 C2 C3
1 1 0 0 0
2 0 1 0 0
3 0 0 1 0
4 0 0 0 1
Mas para isso se faz necessário a criação de um programa de passos para acionamento do motor, conforme modelo abaixo:
/* Este código permite o passo de 1 motor - PASSO 1*/
//motor direito
int motorPin1 = 7;
int motorPin2 = 8;
int motorPin3 = 3;
int motorPin4 = 4;
int tempopasso = 3000;
void setup() {
//configura os pinos digitais do motor direito
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
}
void loop() {
//motor direito
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay (tempopasso);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay (tempopasso);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay (tempopasso);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay (tempopasso);
}
O problema está no cálculo do tempo de passo, que não pode ser menor que 10ms. Sabendo os valores máximos de RPM e step do motor, que podem ser obtidos usando o programa stepper_oneStepAtATime (examples - stepper) basta usar a fórmula abaixo para o cálculo:
Exemplo:
RPM = 100
Passos = 48 (Step 7,5º)
Para tanto pode-se construir uma função:
int rpm = 100;
int passos = 48;
int tempo;
tempo passo = rpm/(passos*60)
Com essa função podemos usar todos os tipos de passo (passo 1, 2 e meio passo, basta modificar os HIGH e LOW dos pinos abaixo. O código final fica assim:
/* Este código permite o passo de 1 motor - PASSO 1*/
//motor direito
int motorPin1 = 7;
int motorPin2 = 8;
int motorPin3 = 3;
int motorPin4 = 4;
void setup() {
//configura os pinos digitais do motor direito
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(motorPin3, OUTPUT);
pinMode(motorPin4, OUTPUT);
}
void loop() {
//insere a função
int rpm = 100;
int passos = 48;
int tempopasso = rpm/(passos*60);
//motor direito
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay (tempopasso);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, HIGH);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, LOW);
delay (tempopasso);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, HIGH);
digitalWrite(motorPin4, LOW);
delay (tempopasso);
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(motorPin3, LOW);
digitalWrite(motorPin4, HIGH);
delay (tempopasso);
}
Voltei a escola ao 58 anos de idade ,fiz varios cursos ao 63 anos me formei Técnico Mecatrônica. Ao 64 anos terminei a Faculdade Cursos de Tecnologia de Fabricação Mecanica. Imagine depois de 40 anos cem frequentar escola , o que eu deixei de aprender, quantas coisas ficou para traz. Procurando este assunto no dia 21/01/2021 muito interessante
ResponderExcluire era o que preciso para eu aprender mais algumas sobre motor de passo e arduino. EU Teria muito coisas a dizer mas terminarei agradecendo por ter deixado ate hoje na Internet .
MEU MUITO OBRIGADO