Existem muitas aplicações que requerem a configuração da posição angular da carga/objeto.
Por exemplo,
- É necessário definir a posição angular precisa do leme, do aileron e do profundor para voar a aeronave
- Num navio, definir a posição angular do leme definirá a direção da navegação
- 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
- 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
- Módulo codificador rotativo
- Placa Arduino NANO
- Chip ULN2003A
- 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: