Índice:
Vídeo: Controle posicional angular do motor de passo 28BYJ-48 com Arduino e joystick analógico: 3 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:37
Este é um esquema de controle para o motor de passo 28BYJ-48 que desenvolvi para usar como parte do meu projeto de dissertação do último ano. Nunca vi isso ser feito antes, então pensei em fazer o upload do que descobri. Espero que isso ajude alguém por aí!
O código basicamente permite que um motor de passo "copie" a posição angular de um joystick analógico, ou seja, se você empurrar o joystick para frente, o motor aponta para o "norte". empurre o joystick para o oeste, o motor gira para apontar na mesma direção.
Para minha implementação, exigi que se o joystick fosse solto, ou seja, não tivesse uma posição angular, o motor retornasse à direção "inicial". A direção inicial está voltada para o leste, e o motor (ou pelo menos qualquer ponteiro / dispositivo que você conectou ao eixo de saída!) Também deve estar voltado para esta direção quando ligado.
Suprimentos
Arduino Uno ou similar
placa de ensaio e seleção de fios de ligação (macho para macho, macho para fêmea)
Fonte de alimentação 5V
Módulo de joystick analógico (de preferência com um recurso de botão momentâneo, isso facilita o descanso da posição "inicial"
Motor de passo 28BYJ-48 e driver de passo ULN2003
Caneta, papel e blu-tac (ou qualquer outro dispositivo apontador para anexar ao motor!)
Etapa 1: Etapa 1: configuração
Conecte o motor de passo ao driver de passo e conecte os pinos da seguinte forma:
IN1 - Arduino pino 8
IN2 - Arduino pino 9
IN3 - Arduino pino 10
IN4 - Arduino pino 11
Conecte sua fonte de alimentação de 5 V aos trilhos de alimentação em sua placa de ensaio e conecte as entradas de 5 V ULN2003 aos trilhos de alimentação. conecte o trilho de aterramento ao solo em seu Arduino.
para o joystick, conecte da seguinte maneira:
Pino do interruptor - pino 2 do Arduino
Eixo X - Arduino A0 (analógico em 0)
Eixo Y - Arduino A1
+ 5V - saída Arduino 5V
GND - Arduino GND
Por fim, conecte o aterramento de sua placa de ensaio ao outro pino GND do Arduino
Etapa 2: Etapa 2: Explicar o Código
Incluí o código Arduino completo para você baixar e usar. Mas farei o meu melhor para explicar as partes pertinentes aqui.
A teoria por trás desse código é que o espaço ocupado pelo joystick é dividido em um gráfico, com 0, 0 no centro. no entanto, as entradas do joystick ficam em (aproximadamente) 512 no centro, então para superar essas duas funções são usadas para "zerar" o valor lido nos eixos X e Y. dependendo da fonte de alimentação que você usa, pode ser necessário alterar os valores nas funções ZeroX e ZeroY para que seu joystick forneça uma leitura confiável de 0 quando em repouso.
Quando os valores X, Y são lidos, eles são primeiro convertidos em radianos usando a função atan2 () na biblioteca math.h. Explicar esta função está fora do escopo deste instrutível, mas por favor, vá procurar - é um truque de geometria bastante simples!
Finalmente, para tornar a vida mais fácil para aqueles de nós que costumavam trabalhar em graus em vez de rads, o valor de rad calculado por atan2 () é convertido em graus.
No topo do loop está um pequeno trecho de código que permite clicar no botão momentâneo do joystick para mover a localização "inicial". Isso foi extremamente útil durante o teste do código, mas deixei-o como posso ver como pode ser útil em alguns casos.
Agora, para a parte principal do código! começamos lendo as coordenadas X, Y do joystick separadas por um atraso de 10 ms e, em seguida, verificando se elas são as mesmas - descobri que o joystick ocasionalmente produzia leituras esporádicas e este ligeiro atraso foi suficiente para parar o motor girando com base nelas. Também é um atraso curto o suficiente para não interferir nas entradas intencionais.
O resto do código é bastante autoexplicativo e fiz o meu melhor para documentá-lo; Uma série de declarações IF compara o ângulo atual do joystick com o ângulo do motor e move o motor para esse ângulo. O 28BYJ-48 tem 5,689 passos por grau, então é por isso que multiplicamos o movimento necessário por este número aparentemente ímpar!
A única parte do código que requer mais explicações é o que chamei de "caso envolvente". No caso em que o joystick e o motor estavam, por exemplo, + 175 °, e o joystick subseqüentemente movido para -175 ° (um movimento de apenas 10 ° no joystick, do norte do oeste para o sul do oeste), o motor se moveria NA DIREÇÃO ERRADA em 350 °! para dar conta disso, o caso especial foi escrito.
A caixa envolvente começa verificando se o motor e o joystick têm sinais opostos, ou seja, o motor é positivo e o joystick negativo, ou vice-versa. Ele também verifica se a soma dos absolutos (ou seja, valores positivos) do joystick e do motor estão acima de 180 °.
Se ambas as afirmações forem verdadeiras, a função verifica se o motor precisa se mover no sentido horário (o valor do motor é negativo) ou no sentido anti-horário (se o valor do motor for positivo).
Os valores absolutos do ângulo do motor e do ângulo do joystick são somados e subtraídos de 360 ° para determinar a distância a ser movida. Finalmente, o ângulo do motor (que agora reflete o ângulo do joystick) é atualizado como tal.
Etapa 3: CONCLUÍDO
Então, tudo o que resta a fazer é fazer o upload do código para o seu Arduino e executá-lo! Veja o vídeo acima para uma boa ideia de como o projeto funciona. Isso seria útil para gimbais de câmera, braços robóticos e muitos outros aplicativos!
Se você usar o código, por favor me avise, e se você vir algum onde o código pode ser melhorado, eu adoraria ouvir seus comentários.
Recomendado:
28BYJ-48 Motor de passo de 5 V e driver A4988: 4 etapas
28BYJ-48 Motor de passo de 5 V e driver A4988: Sempre quis que um robô girasse em um ângulo preciso, usando apenas algumas saídas de seu Arduino ou micro: bit? Tudo isso barato? Esse é o instrutível para você! Neste instrutível, veremos como conduzir um motor de passo muito barato usando apenas
Motor de passo controlado por motor de passo sem microcontrolador !: 6 etapas
Motor de passo controlado por motor de passo sem microcontrolador !: Neste instrutivo rápido, faremos um controlador de motor de passo simples usando um motor de passo. Este projeto não requer circuitos complexos ou um microcontrolador. Então, sem mais delongas, vamos começar
Motor de passo controlado por motor de passo sem microcontrolador (V2): 9 etapas (com imagens)
Motor de passo controlado por motor de passo sem microcontrolador (V2): Em um dos meus Instructables anteriores, mostrei como controlar um motor de passo usando um motor de passo sem um microcontrolador. Foi um projeto rápido e divertido, mas veio com dois problemas que serão resolvidos neste Instructable. Então, sagacidade
Locomotiva modelo com motor de passo controlado - Motor de passo como codificador giratório: 11 etapas (com imagens)
Locomotiva modelo com motor de passo controlado | Motor de passo como codificador giratório: Em um dos instrutíveis anteriores, aprendemos como usar um motor de passo como codificador giratório. Neste projeto, agora usaremos aquele motor de passo girado em codificador rotativo para controlar um modelo de locomotiva usando um microcontrolador Arduino. Então, sem fu
Motor de passo controlado por motor de passo - Motor de passo como codificador giratório: 11 etapas (com imagens)
Motor de passo controlado por motor de passo | Motor de passo como codificador rotativo: Você tem alguns motores de passo por aí e quer fazer alguma coisa? Neste Instructable, vamos usar um motor de passo como um codificador rotativo para controlar a posição de outro motor de passo usando um microcontrolador Arduino. Então, sem mais delongas, vamos