Controlando um servo com um potenciômetro usando o Arduino

Controlando um servo com um potenciômetro usando o Arduino

Neste tutorial, aprenderemos como controlar um servo motor usando um potenciômetro com um Arduino. O potenciômetro nos permite ajustar suavemente o ângulo do servo, nos dando controle em tempo real sobre sua posição. Ao final deste projeto, você terá uma montagem funcional que exibe o valor do potenciômetro e o ângulo correspondente do servo.

À medida que o potenciômetro é girado, o ângulo do servo motor muda de 0 a 180 graus. Usaremos a entrada analógica do Arduino para ler o valor do potenciômetro e então mapear esse valor para a faixa do servo usando uma fórmula simples. Este projeto é uma excelente forma de entender como funcionam as entradas analógicas e como controlar motores com elas (no vídeo em 01:45).

Hardware Explicado

Para este projeto, precisamos de uma placa Arduino, um servo motor e um potenciômetro. O potenciômetro atua como um resistor variável, fornecendo uma saída de tensão que corresponde à sua posição. Essa saída é lida pela entrada analógica do Arduino, permitindo-nos determinar o quanto girar o servo.

O servomotor é um tipo de motor que pode ser posicionado em um ângulo específico. Ele recebe um sinal de controle, que indica a posição desejada. O servo girará até esse ângulo com base no sinal de entrada que recebe do Arduino, tornando-o útil para várias aplicações, como robótica e dispositivos de controle remoto.

Detalhes da ficha técnica

FabricanteVários
Número da peçaServomotor padrão
Tensão lógica/E/S5 V
Tensão de alimentação4.8 - 6 V
Corrente de saída (por canal)Até 1 A
Corrente de pico (por canal)Até 2 A
Orientação sobre a frequência PWM50 Hz
limiares lógicos de entrada0.8 V (baixo) / 2.0 V (alto)
Queda de tensão / RDS(em condução)/ saturação0,5 V
Limites térmicos85 °C
PacoteTamanho padrão
Notas / variantesDisponível em diferentes tamanhos e faixas de torque

  • Certifique-se de que a fonte de alimentação esteja dentro dos limites (4.8 - 6 V).
  • Use um valor de resistência adequado para o potenciômetro (10 kΩ recomendado).
  • Verifique a polaridade das conexões para evitar funcionamento invertido.
  • Tenha cuidado com o calor; certifique-se de que o servo não esteja sobrecarregado.
  • Mantenha a fiação curta para reduzir a interferência.
  • Use capacitores de desacoplamento nas entradas de alimentação, se necessário.
  • Verifique se o potenciômetro está corretamente conectado ao pino analógico A0.

Instruções de Fiação

Arduino wiring or servo motor with pot
Arduino wiring or servo motor with pot

Para ligar os componentes, conecte primeiro o potenciômetro. O pino do meio do potenciômetro deve ser conectado ao pino analógico.A0no Arduino. O pino esquerdo deve ir ao pino 5V no Arduino, e o pino direito deve ser conectado ao terra (GND).

Em seguida, conecte o servo motor. O fio de terra (normalmente preto ou marrom) do servo deve ser conectado ao GND do Arduino. O fio de alimentação (geralmente vermelho) deve ser conectado ao pino 5V do Arduino. Por fim, o fio de controle (frequentemente amarelo ou branco) deve ser conectado ao pino digital9no Arduino. Esta configuração permitirá que o Arduino controle o servo com base na posição do potenciômetro.

Arduino Schemtic of wiring servo motor with pot

Exemplos de Código e Passo a Passo

Vamos dar uma olhada nas partes principais do código. Primeiro, incluímos a biblioteca Servo e criamos um objeto Servo:

#include 
Servo myservo;  // create servo object to control a servo

Este código inicializa o servo e o prepara para o controle. O próximo passo envolve ler o valor do potenciômetro:

int val = analogRead(potpin); // reads the value of the potentiometer

Aqui, o valor lido do potenciômetro é armazenado na variávelval. O valor estará entre 0 e 1023, correspondendo à posição do potenciômetro. Em seguida, mapeamos esse valor para a faixa do servo:

val = map(val, 0, 1023, 0, 180); // scale it to use it with the servo

Esta linha converte o valor do potenciômetro para uma faixa adequada ao servo motor. Finalmente, definimos o servo para a posição calculada:

myservo.write(val); // sets the servo position according to the scaled value

Este comando instrui o servo a mover-se para o ângulo especificado com base na posição do potenciômetro. Você pode encontrar o código completo carregado abaixo do artigo.

Demonstração / O que Esperar

Quando você executar o programa, girar o potenciômetro ajustará o ângulo do servo suavemente. Você deve ver os valores do ângulo sendo exibidos no monitor serial enquanto gira o botão. Se o servo se comportar de forma inesperada, verifique a fiação, especialmente as conexões ao potenciômetro e ao servo (no vídeo em 04:30).

O servo deve responder imediatamente às alterações na posição do potenciômetro. Se notar algum atraso ou movimentos bruscos, considere reduzir o tempo de espera no código para melhorar a capacidade de resposta.

Imagens

Arduino wiring or servo motor with pot
Arduino wiring or servo motor with pot
Arduino Schemtic of wiring servo motor with pot
Arduino Schemtic of wiring servo motor with pot
SG90_servo_motor-1
SG90_servo_motor-1
SG90_servo_motor-0
SG90_servo_motor-0
96-Controlling a servo position using a potentiometer
Idioma: C++
Copiado!

Coisas que você pode precisar

Recursos e referências

Arquivos📁

Nenhum arquivo disponível.