Índice:

Arduino: Lib de precisão para motor de passo: 19 etapas
Arduino: Lib de precisão para motor de passo: 19 etapas

Vídeo: Arduino: Lib de precisão para motor de passo: 19 etapas

Vídeo: Arduino: Lib de precisão para motor de passo: 19 etapas
Vídeo: Controlando Motor de Passo com Arduino - Curso de Arduino #31 2024, Novembro
Anonim
Image
Image
Variáveis globais
Variáveis globais

Hoje, vou mostrar a vocês uma biblioteca para um driver de motor passo a passo completo com interruptores de limite e movimento do motor com aceleração e micro passo. Esta Lib, que funciona tanto no Arduino Uno quanto no Arduino Mega, permite mover os motores com base não apenas no número de passos, mas também em milímetros. E é muito preciso também.

Uma característica importante desta biblioteca é que ela permite que você construa sua própria máquina CNC, que não é necessariamente apenas o X, Y, mas também um switch de seção, por exemplo, porque não é um GRBL pronto, mas sim a programação que permite que você faça a máquina ideal para você.

No entanto, a declaração a seguir é um detalhe importante! Este vídeo é apenas para quem já está acostumado a programar. Se você não está familiarizado com a programação do Arduino, deve primeiro assistir a outros vídeos introdutórios em meu canal. Isso ocorre porque estou discutindo um assunto avançado neste vídeo específico e explicando com mais detalhes a Lib usada no vídeo: Motor de passo com aceleração e fim de curso.

Etapa 1: Biblioteca StepDriver

Esta biblioteca cobre os três tipos de driver mais comuns no mercado: A4988, DRV8825 e TB6600. Ele configura os pinos dos drivers, permitindo que eles façam o reset e colocação no modo Dormir, além de ativar e desativar as saídas do motor atuando no pino Habilitar. Ele também define as entradas dos pinos de micro-etapa do driver e limita os interruptores e seu nível de ativação (alto ou baixo). Também possui código de movimento do motor com aceleração contínua em mm / s², velocidade máxima em mm / s e velocidade mínima em mm / s.

Para quem assistiu às partes 1 e 2 do vídeo Step Motor with Acceleration e End of Stroke, baixe esta nova biblioteca disponível hoje, pois fiz algumas alterações naquele primeiro arquivo para facilitar o seu uso.

Etapa 2: Variáveis Globais

Eu mostro exatamente para que serve cada uma das variáveis globais.

Etapa 3: Funções - Configurando os pinos do driver

Funções - Configurando os pinos do driver
Funções - Configurando os pinos do driver

Aqui, descrevo alguns métodos.

Eu defino a configuração Pinout e os pinos do Arduino como saída.

Etapa 4: Funções - Funções básicas do driver

Funções - Funções básicas do driver
Funções - Funções básicas do driver

Nesta parte, trabalhamos com a configuração do driver e suas funções básicas.

Etapa 5: Funções - Configuração da etapa do motor

Funções - Configuração da etapa do motor
Funções - Configuração da etapa do motor
Funções - Configuração da etapa do motor
Funções - Configuração da etapa do motor

Nesta etapa do código, configuramos a quantidade de etapas por milímetro que o motor deve executar.

Etapa 6: Funções - Configurando o Modo de Etapa do Motor

Funções - Configurando o Modo de Etapa do Motor
Funções - Configurando o Modo de Etapa do Motor
Funções - Configurando o Modo de Etapa do Motor
Funções - Configurando o Modo de Etapa do Motor
Funções - Configurando o Modo de Etapa do Motor
Funções - Configurando o Modo de Etapa do Motor

Esta tabela mostra as configurações para o modo de passo do motor. Aqui estão alguns exemplos.

Etapa 7: Funções - Definir as chaves limite

Funções - Configurando os interruptores de limite
Funções - Configurando os interruptores de limite

Aqui, eu tenho que ler os valores inteiros e booleanos. É necessário definir se a chave ativa está para cima ou para baixo, enquanto define o endpin de limite máximo e mínimo.

Etapa 8: Funções - Leitura das Chaves Limite

Funções - Leitura de Chaves Limite
Funções - Leitura de Chaves Limite
Funções - Leitura de Chaves Limite
Funções - Leitura de Chaves Limite
Funções - Leitura de Chaves Limite
Funções - Leitura de Chaves Limite

Essa parte é diferente daquela no Lib que disponibilizei na semana passada. Por que eu mudei? Bem, criei o eRead para substituir alguns outros. Aqui, o eRead lerá o LVL, o digitalRead (pino) e retornará TRUE. Tudo isso precisa ser executado em alta. O seguinte trabalho com a chave ativa será de nível baixo. Vou usá-lo aqui para mostrar a tabela "Verdade".

Na imagem do código, coloquei um diagrama que vai ajudar no entendimento de que, nesta parte do código-fonte, estou caminhando para Ascendente e ainda não acertei a tecla de fim de curso.

Agora, nesta imagem do código bool DRV8825, mostro o motor ainda se movendo na direção do crescimento. No entanto, o interruptor de limite máximo ativado. O mecanismo, então, deve parar o movimento.

Por último, mostro o mesmo movimento, mas na direção oposta.

Aqui, você já tem o botão de fim de curso ativado.

Etapa 9: Funções - Configuração de movimento

Funções - Configuração de movimento
Funções - Configuração de movimento

A principal utilidade do método motionConfig é converter milímetros por segundo (uma medida usada em máquinas CNC) em passos, a fim de atender o controlador de um motor de passo. É nesta parte, portanto, que instanciamos as variáveis para entender os passos e não os milímetros.

Etapa 10: Funções - Função de movimento

Funções - Função de movimento
Funções - Função de movimento

Nesta etapa, tratamos o comando que move uma etapa na direção desejada em um período em microssegundos. Também definimos o pino de direção do driver, o tempo de atraso e a direção dos interruptores de limite.

Etapa 11: Funções - Função de movimento - Variáveis

Funções - Função de movimento - Variáveis
Funções - Função de movimento - Variáveis

Nesta parte, configuramos todas as variáveis que envolvem períodos de velocidade máxima e mínima, distância da trajetória e passos necessários para interromper a trajetória, entre outras.

Etapa 12: Funções - Função de movimento - Aceleração

Funções - Função de movimento - Aceleração
Funções - Função de movimento - Aceleração
Funções - Função de movimento - Aceleração
Funções - Função de movimento - Aceleração

Apresento aqui alguns detalhes de como chegamos aos dados de aceleração, que foram calculados através da equação de Torricelli, pois leva em consideração os espaços para trabalhar a aceleração e não o tempo. Mas, é importante aqui entender que toda essa equação é apenas sobre uma linha de código.

Identificamos um trapézio na imagem acima, porque os RPMs iniciais são ruins para a maioria dos motores de passo. O mesmo acontece com a desaceleração. Por isso, visualizamos um trapézio no período entre a aceleração e a desaceleração.

Etapa 13: Funções - Função de movimento - Velocidade contínua

Funções - Função de movimento - Velocidade contínua
Funções - Função de movimento - Velocidade contínua
Funções - Função de movimento - Velocidade contínua
Funções - Função de movimento - Velocidade contínua

Aqui mantemos o número de passos usados na aceleração, continuamos em velocidade contínua, e mantemos com a velocidade máxima, que pode ser vista na imagem abaixo.

Etapa 14: Funções - Função de movimento - Desaceleração

Funções - Função de movimento - Desaceleração
Funções - Função de movimento - Desaceleração
Funções - Função de movimento - Desaceleração
Funções - Função de movimento - Desaceleração

Aqui temos outra equação, desta vez com um valor de aceleração negativo. Também é exibido em uma linha de código, que representa, na imagem abaixo, o retângulo denominado Desaceleração.

Etapa 15: Funções - Função de movimento - Velocidade contínua

Funções - Função de movimento - Velocidade contínua
Funções - Função de movimento - Velocidade contínua
Funções - Função de movimento - Velocidade contínua
Funções - Função de movimento - Velocidade contínua

Retornamos à velocidade contínua para trabalhar a segunda metade da trajetória, conforme visto a seguir.

Etapa 16: Funções - Função Mover - Virar Viradas

Funções - Função de movimento - Movimentação de voltas
Funções - Função de movimento - Movimentação de voltas

Nesta parte, movemos o motor em um determinado número de voltas na direção desejada, convertendo o número de voltas em milímetros. Finalmente, movemos o motor na direção solicitada.

Etapa 17: Gráfico de movimento - Velocidade de posição

Gráfico de movimento - velocidade da posição
Gráfico de movimento - velocidade da posição

Neste gráfico, tenho dados que foram extraídos da equação que usamos na parte de Aceleração. Peguei os valores e joguei no serial do Arduino, e fui disso para o Excel, o que resultou nesta tabela. Esta tabela mostra o andamento da etapa.

Etapa 18: Gráfico de movimento - posição vs. Posição

Gráfico de movimento - posição vs. Posição
Gráfico de movimento - posição vs. Posição

Aqui, pegamos a posição, em etapas, e a velocidade e a convertemos em período, em microssegundos. Notamos nesta etapa que o período é inversamente proporcional à velocidade.

Etapa 19: Gráfico de movimento - Velocidade vs. Momento

Gráfico de movimento - velocidade vs. Momento
Gráfico de movimento - velocidade vs. Momento

Por fim, temos a velocidade em função do instante e, por isso, temos uma linha reta, pois é a velocidade em função do tempo.

Recomendado: