- Materiais requisitados
- Motor de passo (28BYJ-48)
- ULN2003 Motor Driver IC
- Diagrama de circuito e conexões
- Motor de passo rotativo com STM32F103C8
- PROGRAMAÇÃO STM32 para motor de passo
O motor de passo é um motor DC sem escovas, que pode ser girado em pequenos ângulos, esses ângulos são chamados de etapas. Geralmente, o motor de passo usa 200 etapas para completar a rotação de 360 graus, o que significa que gira 1,8 graus por etapa. O motor de passo é usado em muitos dispositivos que precisam de movimento rotacional preciso, como robôs, antenas, discos rígidos, etc. Podemos girar o motor de passo para qualquer ângulo específico, dando-lhe as instruções adequadas. Principalmente dois tipos de motores de passo estão disponíveis, Unipolar e Bipolar. Unipolar é mais fácil de operar, controlar e também mais fácil de obter. Aqui neste tutorial, estamos fazendo a interface do motor de passo com a placa STM32F103C8 (comprimido azul).
Materiais requisitados
- STM32F103C8 (comprimido azul)
- Motor de passo (28BYJ-48)
- ULN2003 IC
- Potenciômetro 10k
- Tábua de pão
- Fios de ligação
Motor de passo (28BYJ-48)
28BYJ-48 é um motor de passo unipolar que requer alimentação de 5V. O motor tem um arranjo unipolar de 4 bobinas e cada bobina é classificada para + 5V, portanto, é relativamente fácil de controlar com qualquer microcontrolador como Arduino, Raspberry Pi e STM32. Mas precisamos de um Motor Drive IC como ULN2003 para acioná-lo, porque motores de passo consomem alta corrente e podem danificar os microcontroladores.
Outro dado importante a ser observado é o Ângulo de Passada: 5,625 ° / 64. Isso significa que o motor quando opera na sequência de 8 etapas se moverá 5,625 graus para cada etapa e levará 64 etapas (5,625 * 64 = 360) para completar uma rotação completa. Outras especificações são fornecidas na folha de dados abaixo:
Verifique também a interface com o motor de passo com outros microcontroladores:
- Interface do motor de passo com o Arduino Uno
- Controle de motor de passo com Raspberry Pi
- Interface de motor de passo com microcontrolador 8051
- Interface do motor de passo com o microcontrolador PIC
O motor de passo também pode ser controlado sem qualquer microcontrolador, consulte este Circuito do driver do motor de passo.
ULN2003 Motor Driver IC
É usado para acionar o motor de acordo com os pulsos recebidos do microcontrolador. Abaixo está o diagrama de imagem de ULN2003:
Os pinos (IN1 a IN7) são pinos de entrada e (OUT 1 a OUT 7) são pinos de saída correspondentes. COM recebe a tensão de fonte positiva necessária para os dispositivos de saída. Outras conexões para o motor de passo são fornecidas abaixo na seção do diagrama de circuito.
Diagrama de circuito e conexões
Abaixo está a explicação das conexões para o diagrama de circuito acima.
STM32F103C8 (Comprimido Azul)
Como podemos ver no diagrama abaixo, os pinos PWM são indicados em formato de onda (~), existem 15 desses pinos que podem ser usados para saída de pulso para motor de passo. Precisamos apenas de quatro pinos, usamos (PA0 aPA3).
STM32F103C8 com ULN2003 Motor Driver IC
Os pinos (PA0 a PA3) são considerados como pinos de saída que são conectados aos pinos de entrada (IN1-IN4) do IC ULN2003.
PINOS DE STM32F103C8 |
PINOS DE ULN2003 IC |
PA0 |
EM 1 |
PA1 |
EM 2 |
PA2 |
IN3 |
PA3 |
IN4 |
5V |
COM |
GND |
GND |
ULN2003 IC com motor de passo (28BYJ-48)
Os pinos de saída (OUT1-OUT4) do ULN2003 IC são conectados aos pinos do motor de passo (laranja, amarelo, rosa e azul).
PINOS DE ULN2003 IC |
PINOS DO MOTOR DE STEPPER |
OUT1 |
LARANJA |
OUT2 |
AMARELO |
OUT3 |
ROSA |
OUT4 |
AZUL |
COM |
VERMELHO |
STM32F103C8 com potenciômetro
Um potenciômetro é usado para definir a velocidade do motor de passo.
POTENCIÔMETRO |
STM32F103C8 |
ESQUERDA (ENTRADA) |
3,3 |
CENTRO (SAÍDA) |
PA4 |
DIREITO (GND) |
GND |
Motor de passo rotativo com STM32F103C8
Abaixo estão algumas etapas para operar o motor de passo:
- Defina a velocidade do motor de passo variando o potenciômetro.
- Em seguida, insira manualmente as etapas de rotação no sentido horário (+ valores) ou no sentido anti-horário (-valores) através do SERIAL MONITER presente no ARDUINO IDE (Ferramentas-> Monitor serial) ou CTRL + SHIFT + M.
- De acordo com o valor de entrada fornecido no monitor serial, certas etapas de rotação ocorrem no motor de passo.
Por exemplo
VALOR DADO NO MONITRO SERIAL |
ROTAÇÃO |
2048 |
(360) CLK WISE |
1024 |
(180) CLK WISE |
512 |
(90) CLK WISE |
-2048 |
(-360) ANTI CLK WISE |
-1024 |
(-180) ANTI CLK WISE |
-512 |
(-90) ANTI CLK WISE |
PROGRAMAÇÃO STM32 para motor de passo
Como no tutorial anterior, programamos o STM32F103C8 com Arduino IDE através da porta USB sem usar o programador FTDI. Para aprender a programar STM32 com Arduino IDE, siga o link. Podemos prosseguir com a programação como um Arduino. O código completo é fornecido no final do projeto.
Primeiro, temos que incluir os arquivos da biblioteca stepper #include
#incluir
Então, definimos não. de etapas a serem concluídas na rotação, aqui usamos 32 porque estamos usando Full-Step (sequência de 4 etapas), portanto (360/32 = 11,25 graus). Portanto, para uma etapa, o eixo se move 11,25 graus, que é o ângulo da passada. Na sequência de 4 etapas, 4 etapas são necessárias para uma rotação completa.
#define PASSOS 32
Também podemos usar o modo de meio passo, onde há um ângulo de passada de sequência de 8 passos (360/64 = 5,625).
Passos por revolução = 360 / ÂNGULO DE PASSO
Como estamos configurando a velocidade, devemos pegar o valor analógico do PA4 que está conectado ao potenciômetro. Portanto, devemos declarar o pin para isso
const int speedm = PA4
Em seguida, convertemos o valor analógico em digital, armazenando esses valores em uma variável do tipo inteiro, depois disso, temos que mapear os valores ADC para definir a velocidade para usar a instrução abaixo. Saiba mais sobre como usar ADC com STM32 aqui.
int adc = analogRead (speedm); resultado int = mapa (adc , 0, 4096, 1, 1023);
Para definir a velocidade, usamos stepper.setSpeed (result); Temos faixa de velocidade de (1-1023).
Devemos criar uma instância como abaixo para definir os pinos que estão conectados ao motor. Tenha cuidado nessas etapas, pois a maioria deles comete um erro aqui neste padrão. Eles dão um padrão errado e por causa disso as bobinas não podem ser energizadas.
Stepper stepper (STEPS, PA0, PA2, PA1, PA3);
A instrução abaixo é usada para obter o valor das etapas do monitor serial. Por exemplo, precisamos de 2048 valores para uma rotação completa (32 * 64 = 2048), ou seja, 64 será a relação de engrenagem e 32 será a sequência de meio passo para uma rotação.
girar = Serial.parseInt ();
O código abaixo é usado para chamar a instância e rodar o motor. Se o valor de rotação for 1, ele chama a função de passo uma vez e um movimento é feito.
stepper.step (girar);
O código completo com o vídeo de demonstração é fornecido abaixo. Verifique também todos os projetos relacionados a motores de passo aqui, com interface com vários outros microcontroladores