Microcontrolador Stm32f103 que controla o motor de passo pelo módulo de driver de motor de passo A4988

Motores de passo, como o nome indica, se movem em etapas. Eles são populares na indústria devido à sua capacidade de girar seu eixo em um local preciso e produzir alto torque em movimentos angulares baixos. Também é possível controlar a velocidade e o ângulo do motor de passo com precisão, sem a necessidade de mecanismo de feedback. Embora consumam muita energia e suas configurações de software não sejam fáceis de entender, uma vez aprendidas profunda e adequadamente, todos os estereótipos sobre eles desaparecerão. Os motores de passo são motores CC que dão passos e movem seu eixo quando pulsos digitais são fornecidos através de seus pinos. Os motores de passo são usados ​​em operações que exigem precisão, como braços robóticos, impressoras 3D, scanners, rotadores de disco e máquinas CNC.
Os motores de passo são motores CC sem escovas. Eles têm bobinas e ímãs permanentes que giram o eixo. Geralmente, existem dois tipos de motores de passo categorizados em suas configurações de bobina unipolares e bipolares. Os motores unipolares possuem um fio de sinal comum cujo sinal permanece fixo o tempo todo. Os motores bipolares são independentes do fio comum. Não vou me aprofundar na diferença dos motores de passo. Acabei de escrever acima a principal diferença entre os dois motores de passo.

Projeto principal

Vou fazer a interface do motor de passo com o microcontrolador stm32. Minha principal tarefa é ensinar como fazer a interface, programar e controlar o motor de passo com o microcontrolador stm32f103 usando o configurador de código stm32cubemx.

Hardware do projeto

  • Motor de passo NEMA 17
  • Microcontrolador Stm32f103c8t6
  • Driver de motor de passo A4988

Motor de passo

Para este projeto vou usar motor de passo bipolar. O nome do motor é NEMA 17. É comumente usado em impressoras 3D e popular entre os fabricantes de circuitos DIY. É um motor de passo bifásico de 4 fios. Consome 1 amperes a 1,5 amperes de corrente. Os requisitos de tensão são de no mínimo 2,4 volts. O ângulo do passo é de 1,8 graus. Para uma rotação completa de 360 ​​graus são necessários (360/1,8=200) 200 passos.

Driver de motor de passo A4988

Os motores de passo absorvem 1 ampere de corrente durante a operação normal. Portanto, precisamos de uma fonte de alimentação que possa fornecer 1 ampere de corrente contínua. A técnica antiga é construir um circuito de ponte H usando transistores ou mosfets que podem fornecer quantidade suficiente de energia e acionar motores facilmente. Fazer um circuito de ponte H é demorado e exige muito esforço. Felizmente, hoje em dia, existem drivers de ponte H pré-montados disponíveis no mercado, que não são apenas baratos, mas também muito fáceis de controlar. Então decidi usar um circuito de ponte H pré-montado neste projeto. O driver de motor de passo bipolar A4988 é o mais adequado para o nosso projeto. O A4988 pode fornecer de 1 a 2 amperes de corrente contínua em tensões de 8 a 35 volts. Requer de 3 a 5 volts para seu funcionamento. A pinagem e o circuito equivalente do produto estão abaixo.

Circuito equivalente do driver do motor de passo A4988

Circuito equivalente do driver do motor de passo A4988
Aplique 3 a 5 volts nos pinos VDD e Gnd do driver do motor A4988. 1A, 1B, 2A e 2B são pinos de saída. Esses pinos devem estar conectados corretamente às 2 fases do motor de passo bipolar. VMOT e GND são pinos de alimentação que conectam sua fonte de alimentação a eles. Você pode fornecer de 8 a 35 volts entre VMOT e GND. Sempre que um sinal digital de onda quadrada é aplicado através do pino STEP, o motor de passo na saída dá um passo. O pino DIR controla a direção do motor de passo. O sinal alto em DIR gira o eixo do motor em uma direção e o sinal baixo em DIR inverte a direção. O pino SLEEP coloca o módulo no modo sleep e ele para de funcionar. O pino RESET traz o motor de volta à sua posição inicial. Habilitar pino ativa o módulo. MS1, MS2 e MS3 são pinos de seleção de modo de etapas. Através deste módulo podemos mover o eixo do motor em 5 modos. Os modos de resolução com configurações são fornecidos abaixo.

Lógica de controle de resolução do driver de motor de passo A4988

Lógica de controle de resolução do driver de motor de passo A4988

Circuito de projeto

Bateria de 9 volts é usada para fornecer energia ao motor de passo. Ele é conectado entre os pinos VMOT e GND do driver do motor de passo A4988. O capacitor de 100 micro farad é inserido entre os trilhos de alimentação para evitar picos de energia e CA. O motor de passo Nema 17 possui 4 pinos/fios de saída. Quatro fios significam 2 pares de bobinas. Cada fio tem uma cor diferente. Normalmente vermelho e azul são um par e verde e preto são outro par. Em alguns motores, o amarelo é usado em vez do azul e o cinza é usado em vez do preto. Portanto, certifique-se primeiro do enrolamento das bobinas antes de fazer qualquer conexão. O driver do motor de passo A4988 é alimentado com fonte de alimentação de saída de 3,3 volts do microcontrolador stm32. Stm32 também produz 5 volts. Portanto, se você deseja alimentar o driver do motor com 5 volts, basta alterar a conexão. 3,3 volts funcionou para mim. Os pinos Reset e Sleep estão interconectados. O pino de reinicialização é um pino flutuante e o pino de suspensão normalmente é puxado para cima (consulte o circuito equivalente do driver acima). Portanto, conectar o Reset com Sleep torna o pino Reset alto, agora o driver nunca será reiniciado. O pino de ativação fica aberto. Ele também é puxado internamente para baixo, o que significa que o driver do motor está sempre no modo habilitado.
Vou acionar o motor no modo Full Step. Para o modo de passo completo, você precisa deixar os pinos do modo do driver do motor de passo A4988 baixos. Os pinos do modo de acionamento do motor Ms1, Ms2 e Ms3 permanecem intactos. Eles permaneceram abertos e funcionam para mim. Embora tenha funcionado para mim, recomendo conectar Ms1, Ms2 e Ms3 ao terra para o modo full step. Em seguida, o pino Step do driver do motor é conectado ao pino nº 4 da Porta A do microcontrolador stm32f103. O pino de direção está conectado ao pino nº 3 da Porta A do microcontrolador stm32. O diagrama do circuito do projeto é fornecido abaixo.

motor de passo nema 17 controlado com microcontrolador stm32

motor de passo nema 17 controlado com microcontrolador stm32
O código do projeto é escrito e compilado em keil arm v5 ide. O configurador de código Stm32cubemx é usado para definir as configurações stm32f103c8t6. O oscilador hc interno de 8 Mhz é usado para fornecer a fonte de clock para o sistema microcontrolador, barramentos e outros periféricos do microcontrolador. Dois pinos stm32 Port-A são declarados como saída e recebem nomes. Se você é novo e não tem experiência anterior com Stm32cubemx, você deve seguir o tutorial de introdução. Depois de seguir o tutorial, você poderá entender facilmente as instruções do código abaixo. Clique no botão para fazer o tutorial.

Primeiros passos com stm32cubemx e keil arm ide

A lógica principal do código acima está na função while(1). Primeiro, o pino de direção é colocado em posição alta. Isso configurará o motor de passo para se mover no sentido horário.

HAL_GPIO_WritePin(GPIOA, DIR_Pin, GPIO_PIN_SET); //Rotação no sentido horário

Então um loop for move o motor. As etapas do loop for são fornecidas ao motor. Lembre-se de que o motor de passo nema 17 dá 200 passos para dar uma rotação completa de 360 ​​graus (ângulo de passo de 1,8 graus). Portanto, o loop for é executado 200 vezes para completar uma rotação. Em seguida, o pino de direção é colocado em nível baixo e agora o motor retrocederá alguns passos. Neste estado, o motor de passo também dá 200 passos. Ele volta à sua posição inicial.

Trabalho futuro

Este tutorial é uma lição básica sobre como operar um motor de passo com microcontroladores stm32 usando keil ide e stm32cubemx. Para o futuro você pode testar o motor de passo com micro passos. Altere os modos do A4988 e teste cada modo 1/4, 1/8 e 1/16. Você também pode alterar a frequência de rotação ou controlar a velocidade de rotação do eixo. Como este tutorial é baseado em motor de passo bipolar, você poderá testar o motor unipolar no futuro com pequenas modificações no circuito e no código.
Baixe o código do projeto. A pasta contém os arquivos stm32cubemx e keil arm. O código é de código aberto. Por favor, forneça-nos seu feedback sobre o projeto.
Código/Arquivos

Conteúdo Relacionado

Voltar para o blog

Deixe um comentário

Os comentários precisam ser aprovados antes da publicação.