Controle de ângulo do motor de passo usando codificador rotativo

Existem muitas aplicações que requerem a configuração da posição angular da carga/objeto.

Por exemplo,

  1. É necessário definir a posição angular precisa do leme, do aileron e do profundor para voar a aeronave
  2. Num navio, definir a posição angular do leme definirá a direção da navegação
  3. Em um sistema de vigilância CCTV, pode ser necessário definir o ângulo da câmera para obter uma visão adequada e exata
  4. Em um canhão de obus, é necessário definir a posição angular do bico para que ele atinja o alvo

Assim, existem muitos exemplos em que temos que definir a posição angular adequada de qualquer objeto, como um leme, uma câmera, um bico de arma, uma antena parabólica, uma fonte de feixe de luz/som, etc.

Em todos esses sistemas, temos que construir um sistema de controle de malha aberta ou de malha fechada no qual haja uma entrada de controle (principalmente por um ser humano) que é dada ao sistema que controla posteriormente qualquer atuador que realmente defina a posição angular. do objeto usando algum mecanismo. A figura abaixo mostra um diagrama de blocos de um sistema de controle de malha aberta.

O projeto apresentado aqui é um desses tipos de sistema de controle em malha aberta. Ele usa um codificador rotativo como entrada e um motor de passo como atuador. Vamos ver primeiro o diagrama de blocos do sistema e depois discutirei como construir este sistema

Diagrama de blocos do sistema

Codificador rotativo – ele gera pulsos à medida que seu eixo é girado. Ele fornece esses pulsos como entrada para o microcontrolador.

Microcontrolador – recebe a saída de pulso do codificador – calcula a rotação angular de seu eixo – gira o motor de passo para a posição angular necessária.

Motorista de passo ele fornece a corrente necessária ao motor e aciona o motor.

Motor de passo – é usado para definir a posição angular de qualquer objeto preso a ele por qualquer mecanismo.

Agora vamos ver como construir este sistema. Começaremos coletando os itens necessários.

Lista de itens obrigatórios

  1. Módulo codificador rotativo
  2. Placa Arduino NANO
  3. Chip ULN2003A
  4. Motor de passo unipolar tipo 5V

O circuito é muito fácil de construir porque requer apenas três componentes. Ele pode ser facilmente construído usando placa de ensaio e fios de jumper. Aqui está o snap do circuito construído na placa de desenvolvimento Arduino nano.

Diagrama de circuito

Conforme mostrado na figura, o circuito é construído usando apenas três componentes 1) módulo codificador rotativo 2) placa de desenvolvimento Arduino NANO e 3) chip driver de motor ULN2003A

  • O módulo codificador rotativo possui 5 pinos de interface. Destes 5 pinos – 2 pinos são para Vcc e Gnd e estão conectados com saída de 5 V e Gnd da placa Arduino
  • Seus outros 2 pinos DI e CLK estão conectados aos pinos digitais D2 e ​​D3 da placa Arduino, respectivamente. Seu pino SW não é usado neste projeto
  • Os pinos D5 – D8 da placa Arduino são usados ​​para acionar o motor de passo usando o chip ULN2003A. Esses pinos são conectados aos pinos de entrada IN1 – IN4 conforme mostrado e os pinos de saída do chip OUT1 – OUT4 são conectados ao motor de passo
  • O terminal comum do motor de passo está conectado a uma fonte externa de 5 V
  • Placa Arduino, módulo codificador rotativo e chip ULN2003 também recebem a mesma alimentação de 5 V

Funcionamento e operação do circuito

O funcionamento do circuito é muito simples.

Em uma frase posso dizer que, como o codificador rotativo é girado no sentido horário ou anti-horário em uma posição angular específica – o motor de passo também gira e se move para a posição angular necessária.

A posição angular do encoder em qualquer direção (horário ou anti-horário) é mapeada com a posição angular do motor na mesma direção.

Isso significa que se o codificador for girado em 90ó Direção CW – o motor de passo também gira 90ó CW. E da mesma forma, se o codificador for girado 60ó Sentido anti-horário – o motor de passo gira a 60ó CCW.

O motor de passo usado aqui tem um ângulo de passo de 7,5ó por pulso. Portanto, este motor pode girar no mínimo a 30ó ângulo.

O codificador rotativo gera 12 pulsos/1 rotação. Isso significa que gera pulso a cada (1 rotação) = 360ó / 12 = 30ó rotação.

Assim, podemos mapear diretamente a rotação do codificador de 30ó (1 pulso) em 30ó rotação do motor de passo.

Para entender o funcionamento do circuito com mais detalhes, primeiro temos que passar pelo funcionamento do codificador rotativo.

Funcionamento do codificador rotativo

O codificador rotativo consiste em um disco com fenda conectado ao pino C de aterramento comum e dois pinos de contato A e B conforme mostrado na figura abaixo.

Ao girar o botão, A e B entram em contato com o pino de aterramento comum C, em uma ordem específica de acordo com a direção em que você está girando o botão.

Quando entram em contato com o terreno comum, produzem sinais. Esses sinais são deslocados 90° fora de fase entre si quando um pino entra em contato com o outro pino. Isso é chamado codificação de quadratura.

Quando você gira o botão no sentido horário, o pino A se conecta primeiro, seguido pelo pino B. Quando você gira o botão no sentido anti-horário, o pino B se conecta primeiro, seguido pelo pino A.

Ao rastrear quando cada pino se conecta e se desconecta do solo, podemos usar essas mudanças de sinal para determinar em que direção o botão está sendo girado. Você pode fazer isso simplesmente observando o estado de B quando A muda de estado.

Quando o A muda de estado:

  • se B e A não forem iguais, então o botão foi girado no sentido horário
  • se B e A forem iguais, então o botão foi girado no sentido anti-horário

Veja a figura abaixo

Portanto, essas saídas A e B são pinos DI e CLK do módulo codificador rotativo. O Arduino verifica a saída de pulso de ambos e determina que o codificador está girado no sentido horário ou anti-horário. O Arduino conta pulsos e com cada contagem de pulso na direção CW ou CCW, ele gira o motor para 30ó na mesma direção

O funcionamento completo e operação do circuito é baseado no programa baixado na memória FLASH interna do microcontrolador Arduino ATMega328. O programa é escrito em linguagem C usando Arduino IDE. O programa usa a biblioteca Uni_polar_Stepper para controlar e girar o motor de passo do tipo unipolar usado aqui. Consulte a documentação da biblioteca Uni_polar_Stepper para obter mais detalhes. Aqui está o código do programa:

https://www.youtube.com/watch?v=56luO2CLpP4

Conteúdo Relacionado

Voltar para o blog

Deixe um comentário

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