Neste texto farei o controle de um servomotor utilizando um joystick retirado de sucata, ou seja, reciclado de um antigo controle de PS2.
O joystick que será utilizado foi obtido de um antigo controle de PS2 que estava guardado em minha bagunça particular, de onde pude escrever o texto "Reciclando Controle de PS2 [O Que Reaproveitar?]".
Meu objetivo neste texto é apresentar o controle do servomotor com joystick utilizando a biblioteca Servo.h do Arduino. Futuramente estas ideias serão utilizadas para implementar um pequeno protótipo de braço manipulador.
O Servomotor
O servomotor utilizado é o modelo SG90 da Tower Pro, um micro servomotor 9g. De fácil aquisição e baixo custo. A Figura 1 apresenta uma imagem do modelo e as dimensões do mesmo.
![]() |
Figura 1 - Imagem do servomotor e suas dimensões. Fonte: datasheet. |
O Joystick de PS2
O joystick que será utilizado foi reaproveitado de sucata, porém, seu funcionamento é bastante simples. Ele consiste basicamente em um eixo vertical acoplado a dois potenciômetros, onde tem-se a possibilidade de fazer uma varredura angular no plano 2D. Isso é possível graças a variação da resistência do potenciômetro para diferentes ângulos de entrada.
Você pode ler um pouco mais sobre o joystick no Wikipédia. O modelo que utilizado pode ser visto na Figura 2.
Perceba na Figura X que alguns cabinhos foram soldados para ajudar na ligação com o Arduino. Cabe destacar que a qualidade da placa de circuito impresso não é das melhores, por isso utilizei cola quente para ajudar a fixar os cabinhos, como podemos ver também na Figura 3.
Com o joystick pronto e preparado para os testes em bancada, podemos finalmente elaborar um esquema de montagem.
Materiais Necessários Para o Teste
Para realizar esta montagem, os seguintes materiais foram utilizados:
➤ Arduino Uno;
➤ 2 Servomotores SG90 de 9g;
➤ Fios e jumper's para as ligações;
➤ Joystick de PS2;
➤ Cabo USB A/B.
Os materiais utilizados podem ser adquiridos facilmente na internet, você também pode adquirir esses componentes com a Silvatrônics, loja parceira do blog Eletrônica de Garagem.
Esquema de Conexão da Montagem
Elaborei um esquema de montagem utilizando o software Fritzing, porém utilizei um modelo de joystick convencional, encontrado para aquisição no comércio online de componentes eletrônicos.
Para utilizar um joystick de PS2, basta com o multímetro identificar os terminais que possuem variação de resistência com o movimento do eixo.
Com o esquema de montagem apresentado na Figura 4, podemos agora prosseguir e elaborar o programa para controlar os servomotores.
Programa Desenvolvido para Controle da Posição do Servomotor com Joystick
O objetivo do programa é controlar a posição dos servomotores. Para isso, no programa é feito a leitura das entradas analógicas, que possuem informação do deslocamento do joystick. Com o valor obtido da leitura analógica os servomotores são posicionados no ângulo correspondente àquela da variação analógica do joystick.
Abaixo você pode conferir o programa. Perceba que o uso da biblioteca poupa muitas linhas de código.
O joystick que será utilizado foi reaproveitado de sucata, porém, seu funcionamento é bastante simples. Ele consiste basicamente em um eixo vertical acoplado a dois potenciômetros, onde tem-se a possibilidade de fazer uma varredura angular no plano 2D. Isso é possível graças a variação da resistência do potenciômetro para diferentes ângulos de entrada.
Você pode ler um pouco mais sobre o joystick no Wikipédia. O modelo que utilizado pode ser visto na Figura 2.
![]() |
Figura 2 - Foto tirada do joystick utilizado. |
![]() |
Figura 3 - Foto tirada apresentando detalhes do joystick utilizado. |
Materiais Necessários Para o Teste
Para realizar esta montagem, os seguintes materiais foram utilizados:
➤ Arduino Uno;
➤ 2 Servomotores SG90 de 9g;
➤ Fios e jumper's para as ligações;
➤ Joystick de PS2;
➤ Cabo USB A/B.
Os materiais utilizados podem ser adquiridos facilmente na internet, você também pode adquirir esses componentes com a Silvatrônics, loja parceira do blog Eletrônica de Garagem.
Esquema de Conexão da Montagem
Elaborei um esquema de montagem utilizando o software Fritzing, porém utilizei um modelo de joystick convencional, encontrado para aquisição no comércio online de componentes eletrônicos.
![]() |
Figura 4 - Esquema da montagem desenhado no software Fritzing. |
Com o esquema de montagem apresentado na Figura 4, podemos agora prosseguir e elaborar o programa para controlar os servomotores.
Programa Desenvolvido para Controle da Posição do Servomotor com Joystick
O objetivo do programa é controlar a posição dos servomotores. Para isso, no programa é feito a leitura das entradas analógicas, que possuem informação do deslocamento do joystick. Com o valor obtido da leitura analógica os servomotores são posicionados no ângulo correspondente àquela da variação analógica do joystick.
Abaixo você pode conferir o programa. Perceba que o uso da biblioteca poupa muitas linhas de código.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// TÍTULO: Programa Para Controlar Servomotores com Joystick de PS2 | |
// AUTOR: Ângelo Meneguini | |
// WEBSITE: https://eletronicagaragem.blogspot.com.br | |
#include <Servo.h> // inclusão da biblioteca sero.h | |
Servo servo1; // cria o objeto para o servo 1 | |
Servo servo2; // cria o objeto para o servo 2 | |
#define V_pin A0 // pino de conexão da posição vertical do joystick | |
#define H_pin A1 // pino de conexão da posição horizontal do joystick | |
int H_val = 0; // armazena o valor da leitura analógica da posição horizontal | |
int V_val = 0; // armazena o valor da leitura analógica da posição vertical | |
void setup() { | |
servo1.attach(9); // configura o pino digital 9 como saída para controle do servo 1 | |
servo2.attach(10); // configura o pino digital 10 como saída para controle do servo 2 | |
} // end void setup | |
void loop() { | |
H_val = analogRead(H_pin); // leitura do valor analógico do joystick na posição horizontal | |
V_val = analogRead(V_pin); // leitura do valor analógico do joystick na posição vertical | |
H_val = map(H_val, 0, 1023, 0, 180); // faz o mapeamento do valor para faixa de 0 a 180° para determinar a posição que o servo será colocado | |
V_val = map(V_val, 0, 1023, 0, 180); // faz o mapeamento do valor para faixa de 0 a 180° para determinar a posição que o servo será colocado | |
servo1.write(H_val); // aciona o servo 1 com o valor mapeado anteriormente entre 0 a 180° | |
servo2.write(V_val); // aciona o servo 2 com o valor mapeado anteriormente entre 0 a 180° | |
delay(15); // espera 15 ms para iniciar novamente o loop | |
} // end void loop |
Agora que temos um programa, verificado e compilado na placa Arduino, podemos testá-lo e verificar se o funcionamento corresponde ao que pretendemos. Você também pode baixar este programa diretamente do nosso GitHub.
Resultados Práticos da Montagem
Após montagem seguindo o esquemático elaborado e a gravação da placa Arduino, podemos testar o funcionamento do protótipo. A seguir você pode conferir algumas fotos da minha montagem.
![]() |
Figura 5 - Montagem do protótipo em bancada. |
![]() |
Figura 6 - Montagem do protótipo em bancada. |
![]() |
Figura 7 - Montagem do protótipo em bancada. |
Finalizando os resultados, gravei um pequeno vídeo da montagem e testes em bancada.
Considerações Finais
Neste texto apresentei uma forma simples de controlar dois micro servomotores utilizando o Arduino e a biblioteca Servo.h. No entanto, este é o primeiro programa de onde tenho interesse em construir futuramente um pequeno braço manipulador.
As melhorias que podem ser feitas neste programa base são inúmeras, desde armazenar um posição de referência, inserir um botão para setar um posição específica. Utilizar outros modos de controle, ao invés de joystick podemos utilizar simples potenciômetros ou botões.
De modo geral, as possibilidade são inúmeras. Porém, ao aumentar o leque de ação do manipulador, tenha em mente que o programa utilizará mais memória e talvez exija o uso de outra placa Arduino, como a MEGA por exemplo.
Este foi um texto base para o futuro projeto de um simples manipulador, em breve trarei um protótipo de estrutura do manipulador, e é claro de baixo custo.
Espero que tenha gostado deste texto, dúvidas ou sugestões deixe nos comentários que será respondido. Ajude-nos compartilhando este texto com seus amigos em suas redes sociais, curtindo nossa página no Facebook ou seguindo nosso Instagram.
Obrigado pela leitura e até a próxima!
1 comentários
muito bom ate add outro programa.
obrigado
EmoticonEmoticon