Projetos de circuito eletrônicoCircuitos CI 555Como controlar o servo motor usando o joystick

Como controlar o servo motor usando o joystick

Relacionados

Neste post vamos aprender a controlar servo motores usando um joystick e Arduino. Veremos uma visão geral sobre o joystick, seus pinos, sua construção e funcionamento. Estaremos extraindo dados úteis do joystick que será a base para o controle dos servo motores.

Introdução

O lema deste artigo não é apenas controlar os servomotores, mas aprender a usar um joystick para controlar muitos outros dispositivos periféricos.

Agora vamos dar uma olhada no joystick.

Um joystick é um dispositivo de entrada que consiste em uma alavanca, que pode se mover em várias direções nos eixos X e Y. O movimento da alavanca é usado para controlar um motor ou qualquer dispositivo eletrônico periférico.

Joysticks são usados ​​de brinquedos RC para aviões Boing e desempenham funções semelhantes. Além disso, os joysticks de jogo e menores têm um botão no eixo Z que pode ser programado para realizar muitas ações úteis.

Ilustração do joystick:

ILUSTRAÇÃO DO JOYSTICK:

Joysticks são dispositivos eletrônicos em geral, portanto, precisamos aplicar energia. O movimento da alavanca produz diferença de tensão nos pinos de saída. Os níveis de tensão são processados ​​por um microcontrolador para controlar o dispositivo de saída, como um motor.

O joystick ilustrado é semelhante, que pode ser encontrado nos controles do PlayStation e do Xbox. Você não precisa quebrar esses controladores para salvar um. Esses módulos estão prontamente disponíveis em lojas de eletrônicos locais e sites de comércio eletrônico.

Agora vamos ver a construção deste joystick.

Possui dois potenciômetros de 10 Kilo ohms posicionados nos eixos X e Y com molas para que, quando o usuário liberar a força da alavanca, retorne à sua posição original. Tem um botão push to ON no eixo Z.

Possui 5 pinos, 5 volts Vcc, GND, variável X, variável Y e SW (chave do eixo Z). Quando aplicamos tensão e deixamos o joystick na posição original da alavanca. Os pinos X e Y produzirão metade da tensão aplicada.

Quando movemos a alavanca a tensão varia nos pinos de saída X e Y. Agora vamos praticamente fazer a interface do joystick com o Arduino.

Diagrama esquemático:

CONTROLE DE SERVO MOTOR ARDUINO USANDO JOYSTICK

Os detalhes da conexão dos pinos são fornecidos ao lado do circuito. Conecte a configuração de hardware concluída e carregue o código.

Programa:

//---------------Program Developed by R.Girish--------------//
int X_axis = A0;
int Y_axis = A1;
int Z_axis = 2;
int x = 0;
int y = 0;
int z = 0;
void setup()
{
Serial.begin(9600);
pinMode(X_axis, INPUT);
pinMode(Y_axis, INPUT);
pinMode(Z_axis, INPUT);
digitalWrite(Z_axis, HIGH);
}
void loop()
{
x = analogRead(X_axis);
y = analogRead(Y_axis);
z = digitalRead(Z_axis);
Serial.print("X axis = ");
Serial.println(x);
Serial.print("Y axis = ");
Serial.println(y);
Serial.print("Z axis = ");
if(z == HIGH)
{
Serial.println("Button not Pressed");
}
else
{
Serial.println("Button Pressed");
}
Serial.println("----------------------------");
delay(500);
}
//---------------Program Developed by R.Girish--------------//

Abra o monitor serial, você pode ver o nível de tensão nos pinos dos eixos X e Y e o status do eixo Z, ou seja, o botão de pressão conforme ilustrado abaixo.

IMG 6244AC3E44320

Esses valores dos eixos X, Y, Z são usados ​​para interpretar a posição da alavanca. Como você pode ver os valores são de 0 a 1023.

Isso porque o Arduino construiu um conversor ADC que converte os valores de tensão 0V – 5V para 0 a 1023.

Você pode testemunhar no monitor serial que, quando a alavanca é deixada intocada, a alavanca permanece na posição média dos eixos X e Y e mostra metade do valor de 1023.

Você também pode ver que não é exatamente a metade do 1023 isso porque a fabricação desses joysticks nunca foi perfeita.

Até agora, você já deve ter algum conhecimento técnico sobre joysticks.

Agora vamos ver como controlar dois servo motores usando um joystick.

Diagrama de circuito:

IMG 6244AC3E73D38

Os dois servomotores são controlados por um joystick; quando você move o joystick ao longo do eixo X, o servo conectado no pino #7 se move no sentido horário e anti-horário, dependendo da posição da alavanca.

Você também pode segurar o servoatuador em uma posição, se você mantiver o nível do joystick em uma posição específica.

Semelhante ao servo motor conectado no pino 6, você pode mover a alavanca ao longo do eixo Y.

Quando você pressiona a alavanca ao longo do eixo Z, os dois motores realizarão uma varredura de 180 graus.

Você pode conectar o arduino à bateria de 9v ou ao computador. Se você conectar o Arduino ao computador, poderá abrir o monitor serial e ver o ângulo dos servoatuadores e os níveis de tensão.

Programa para controle do servo motor:

//---------------Program Developed by R.Girish--------------//
#include
Servo servo_X;
Servo servo_Y;
int X_angleValue = 0;
int Y_angleValue = 0;
int X_axis = A0;
int Y_axis = A1;
int Z_axis = 2;
int x = 0;
int y = 0;
int z = 0;
int pos = 0;
int check1 = 0;
int check2 = 0;
int threshold = 10;
void setup()
{
Serial.begin(9600);
servo_X.attach(7);
servo_Y.attach(6);
pinMode(X_axis, INPUT);
pinMode(Y_axis, INPUT);
pinMode(Z_axis, INPUT);
digitalWrite(Z_axis, HIGH);
}
void loop()
{
x = analogRead(X_axis);
y = analogRead(Y_axis);
z = digitalRead(Z_axis);
if(z == LOW)
{
Serial.print("Z axis status = ");
Serial.println("Button Pressed");
Serial.println("Sweeping servo actuators");
for (pos = 0; pos <= 180; pos += 1)
{
servo_X.write(pos);
delay(10);
}
for (pos = 180; pos >= 0; pos -= 1)
{
servo_X.write(pos);
delay(15);
}
for (pos = 0; pos <= 180; pos += 1)
{
servo_Y.write(pos);
delay(10);
}
for (pos = 180; pos >= 0; pos -= 1)
{
servo_Y.write(pos);
delay(15);
}
Serial.println("Done!!!");
}
if(x > check1 + threshold || x < check1 - threshold)
{
X_angleValue = map(x, 0, 1023, 0, 180);
servo_X.write(X_angleValue);
check1 = x;
Serial.print("X axis voltage level = ");
Serial.println(x);
Serial.print("X axis servo motor angle = ");
Serial.print(X_angleValue);
Serial.println(" degree");
Serial.println("------------------------------------------");
}
if(y > check2 + threshold || y < check2 - threshold)
{
Y_angleValue = map(y, 0, 1023, 0, 180);
servo_Y.write(Y_angleValue);
check2 = y;
Serial.print("Y axis voltage level = ");
Serial.println(y);
Serial.print("Y axis servo motor angle = ");
Serial.print(Y_angleValue);
Serial.println(" degree");
Serial.println("------------------------------------------");
}
}
//---------------Program Developed by R.Girish--------------//

Se você tiver alguma pergunta específica sobre este projeto, sinta-se à vontade para expressar na seção de comentários, você pode receber uma resposta rápida.

Hashtags: #Como #controlar #servo #motor #usando #joystick
 

FONTE


Nota: Este conteúdo foi traduzido do Inglês para português (auto)
Pode conter erros de tradução

Olá, se tiver algum erro de tradução (AUTO), falta de link para download etc…
Veja na FONTE até ser revisado o conteúdo.
Status (Ok Até agora)


Se tiver algum erro coloque nos comentários

Mas se gostou compartilhe!!!

Relacionados

Relacionados