I22 - Como Controlar 2 Micro Servos Motores 9g com Joystick e Arduino

Intermediário - Projeto 22

Controlando servo motores com o módulo Joystic KY-023 e Arduino

Objetivo

Neste tutorial, nosso objetivo é mostrar como controlar dois micros servos motores 9g utilizando um módulo de joystick KY-023 e programação através da plataforma Arduino. Vamos simular um sistema "pan tilt", onde o primeiro servo motor será responsável pelo movimento horizontal de 180º (pan) e o segundo servo motor controlará o movimento vertical de 180º (tilt).

Definições

1. Pan Til: O sistema "pan tilt" é amplamente utilizado em câmeras fotográficas e câmeras de vídeo para controlar os movimentos da lente. Ele consiste em:

1.1. Pan horizontal (Pan): Esse movimento permite que a câmera gire em torno de seu próprio eixo na horizontal.

1.2. Pan vertical (Tilt): Esse movimento permite que a câmera gire em torno de seu próprio eixo na vertical.

Obs.: (Pan) significa visão panorâmica.

2. Módulo Joystick 3 eixos (modelo KY-023): É um módulo eletrônico que trabalha como um direcional analógico para controlar diversos aparelhos, componentes e sistemas robóticos que operam com informações de posicionamento cartesiano nos eixos x e y, e ainda um botão de pressão no eixo z.

 3. Micro servo motor 9g: É um micro atuador eletromecânico que apresenta rotação do seu eixo proporcional ao comando emitido por um sinal digital, que pode ser por um microcontrolador, como pela placa Arduino, por exemplo. Portanto, com um micro servo motor é possível controlar a posição e a velocidade de rotação do seu eixo com precisão. Por estas características, os servos motores são muito utilizados em projetos de robótica e mecatrônica.

Referências

I18 - Como usar o micro servo motor 9g SG90 com Arduino
I21 - Como usar o módulo Joystick com Arduino
Relação entre o fluxo de radiação que incide numa superfície e o fluxo de radiação que é .refletido.

"refletância", in Dicionário Priberam da Língua Portuguesa [em linha], 2008-2020, https://dicionario.priberam.org/reflet%C3%A2ncia [consultado em 04-08-2020]. R
Relação entre o fluxo de radiação que incide numa superfície e o fluxo de radiação que é .refletido.

"refletância", in Dicionário Priberam da Língua Portuguesa [em linha], 2008-2020, https://dicionario.priberam.org/reflet%C3%A2ncia [consultado em 04-08-2020].
 Relação entre o fluxo de radiação que incide numa superfície e o fluxo de radiação que é .refletido.

"refletância", in Dicionário Priberam da Língua Portuguesa [em linha], 2008-2020, https://dicionario.priberam.org/reflet%C3%A2ncia [consultado em 04-08-2020].
 Relação entre o fluxo de radiação que incide numa superfície e o fluxo de radiação que é .refletido.

"refletância", in Dicionário Priberam da Língua Portuguesa [em linha], 2008-2020, https://dicionario.priberam.org/reflet%C3%A2ncia [consultado em 04-08-2020].

Aplicação

Para fins didáticos e uso com câmeras e projetos para sistemas robóticos.

Componentes necessários

Referência

Componente

Quantidade

Imagem

Observação

Protoboard Protoboard 830 pontos 1 Resultado de imagem para protoboard 830v

No mínimo utilizar protoboard com 400 pontos

Jumpers Kit cabos ligação macho / macho 1

 
 
Micro Servo Motor

Micro Servo 9g SG90

2

Voltagem de Operação 3,0 - 7,2V
Ângulo de rotação 180 graus
Velocidade 0,12 seg/60Graus (4,8V) sem carga
Torque 1,2 kg.cm (4,8V) e 1,6 kg.cm (6,0V)
Temperatura de Operação -30C ~ +60C
Tipo de Engrenagem Nylon
Tamanho cabo 245mm
Dimensões 32 x 30 x 12mm
Peso 9g

(datasheet)

Módulo Joystick 3 eixos Módulo JoystickKY-023 1
 

 - Tensão de Operação: 3,3-5V
- Modelo: KY-023
- Fácil instalação: 4 Furos
- Dimensões: 3.7 x 2.5 x 3.2cm
- Peso: 15g

Sinal de saída (Eixo X e Y): Saída analógica;
Sinal de saída (Eixo Z): Sinal digital (0 ou 5V);

Datasheet: Módulo Joystick 3 eixos

Suporte Pan Tilt (opcional)

Suporte Pan Tilt plástico (opcional)

1

Suporte plástico para sistema Pan Tilt
Deverão ser utilizados 2 micro servos motores 9G como atuadores

S1 - Montagem Suporte Pan Tilt

Arduino UNO Arduino UNO R3 1

Você poderá utilizar uma placa Arduino UNO original ou similar

Montagem do Circuito

Conecte os componentes no Protoboard como mostra a figura abaixo. Verifique cuidadosamente os cabos de ligação antes de ligar seu Arduino. Lembre-se que o Arduino deve estar totalmente desconectado da energia elétrica enquanto você monta o circuito.

Atenção

1. A montagem do módulo micro servo motor 9g SG90 deve seguir a configuração abaixo:

  • Cabo marrom (ou preto em algumas marcas) - Deve ser conectado ao pino GND do Arduino ou ao polo negativo de uma fonte de alimentação externa
  • Cabo vermelho - Deve ser conectado a um pino 5V do Arduino ou ao polo positivo de uma fonte de alimentação externa
  • Cabo laranja - Deve ser conectado a um pino digital do Arduino configurado como saída. No projeto, utilizamos o pino 9 do Arduino para o motor 1 (motor pan - horizontal) e o pino 10 para o motor 2 (motor tilt - vertical).

1.1. Utilize "jumpers" macho-macho para fazer as conexões com o Arduino.

1.2. No projeto usamos as seguintes conexões:

Micro Servo Motor Pino Digital Arduino
(Servo 1) base (pan) 9
(Servo 2) inclinação (tilt) 10

 2 2. Para a montagem do módulo JoystickKY-023 no circuito faça a conexão como mostra a figura abaixo:

 Pinos do Arduino utilizados no projeto

Joystick Descrição Arduino
GND Conexão com o GND GND
Vcc Conexão com o pino 5V Vcc (5V)
VRx Eixo x - porta analógica (INPUT) A0
VRy Eixo y - porta analógica (INPUT) A1
SW Push button - sinal digital (INPUT_PULLUP) 2

2.1. Veja abaixo a montagem do módulo Joystick no Arduino, conforme determinamos neste projeto:

 2.2. ATENÇÃO: A figura abaixo mostra o posicionamento dos eixos perpendiculares x, e y, cuja a posição de referência do joystick é com os pinos conexão para baixo. Observe que quando o joystick fica nesta posição de referência, o eixo y irá controlar o movimento horizontal do bastão e o eixo x irá controlar o movimento vertical do bastão.

3. Se desejar utilizar o suporte Pan Tilt para Arduino, acesse o link e veja como montá-lo: S1 - Montagem Suporte Pan Tilt controlado com Arduino e Micro Servos Motores.

4. A montagem do nosso projeto foi realizada em um protoboard 400 pontos:

Testando o módulo Joystick KY-023

1. Para verificarmos se a montagem do circuito está correta e o módulo joystick funcionando, rode o sketch abaixo e verifique:

1.1. Copie o código e cole no IDE do Arduino. Com o Arduino conectado no PC, rode o programa.

int joyX = A0;      // pino analógico do eixo X
int joyY = A1;      // pino analógico do eixo Y
int joyButton = 2;  // pino digital do botão de pressão
    
void setup() {
   Serial.begin(9600);                  // inicia comunicação serial
   pinMode(joyX, INPUT);                // entrada leitura eixo X joystick
   pinMode(joyY, INPUT);                // entrada leitura eixo y joystick
   pinMode(joyButton, INPUT_PULLUP);    // entrada resistor interno pull up pusch button
} 
   
void loop() {
   int x = analogRead(joyX);              // faz a leitura do eixo x (0 a 1023) - analógico 
   int y = analogRead(joyY);              // faz a leitura do eixo y (0 a 1023) - analógico
   int button = digitalRead(joyButton);   // faz a leitura do eixo z (0 ou 1) - digital 
   Serial.print("X: ");
   Serial.print(x);
   Serial.print(", Y: ");
   Serial.print(y);
   Serial.print(", Button: ");
   Serial.println(button);
   delay(100);
}

1.2. Abra o Monitor Serial do IDE do Arduino.

1.3. Movimente o bastão (botão) do joystick em várias posições: para cima, para baixo, para a esquerda, para a direita e nas diagonais, verificando os valores apresentados no monitor serial.

1.4. Compare os o valores com a imagem abaixo. ATENÇÃO: Tome como referência a posição dos pinos de conexão do módulo joystick.

Código do Projeto (Sketch)

1) Faça o dowload e abra o arquivo projetoI22.ino no IDE do Arduino: DOWNLOAD - projetoI22.ino

 Se preferir, copie e cole o código abaixo no IDE do Arduino:

/*******************************************************************************
*
*    I22: Controlando 2 micro-servos motores com joystick - Arduino
*    Autor: Angelo Luis Ferreira
*    Data: 25/05/2023
*    
*             http://squids.com.br/arduino             
*
*******************************************************************************/
#include <Servo.h>

Servo servo1;             // Cria um objeto servo1
Servo servo2;             // Cria um objeto servo2

int portPan;             // Cria uma variável para armazenar dados do Joystick
int portTilt;            // Cria uma variável para armazenar dados do Joystick
byte servo1Pin = 9;      // Pino digital 9 conectado no servo1 (base - pan)
byte servo2Pin = 10;     // Pino digital 10 conectado no servo2 (inclinação - tilt)

void setup(){
servo1.attach(servo1Pin);   // Inicializa servo1
servo1.write(90);           // Inicia o servo1 em 90 graus
servo2.attach(servo2Pin);   // Inicializa servo2
servo1.write(90);           // Inicia o servo2 em 90 graus
}

void loop(){
portPan = analogRead(A1);         // Pino y do Joystick para receber dados
portTilt = analogRead(A0);        // Pino x do Joystick para receber dados

// Faz um mapeamento dos dados recebidos
portPan = map(portPan, 0, 1023, 1, 180); 
portTilt = map(portTilt, 0, 1023, 1, 180);

// O servo se movimenta de acordo com a posição do Joystick
servo1.write(portPan);
servo2.write(portTilt);
delay(15); // Tempo leitura dos pinos analógicos A0 e A1
}

Vídeo

Como o projeto deve funcionar

1. Ao iniciar o programa, os 2 microcontroladores deverão ficar na posição de 90º.

2. Ao movimentar o eixo do joystick no sentido Y da figura abaixo, movimentaremos o servo motor 1 (base - pan).

2.1. Vamos tomar como referência o módulo joystick na posição em que os pinos de conexão fiquem para baixo (como mostra a imagem abaixo)

3. Ao movimentar o eixo do joystick no sentido X, movimentaremos o servo motor 2 (inclinação - tilt).

Desafios

O anúncio abaixo ajuda a manter o Squids Arduino funcionando

Comentários

×

Infomações do site / SEO








×

Adicionar Marcadores