Controle de Motor Servo Arduino Usando um Potenciômetro

Controle de Motor Servo Arduino Usando um Potenciômetro

Neste tutorial, exploraremos como controlar um motor servo usando um potenciômetro com um Arduino. O objetivo é criar um circuito simples onde a posição do servo é ajustada com base na rotação do potenciômetro. Ao final deste projeto, você terá um modelo funcional que varia suavemente o ângulo do servo de 0 a 180 graus à medida que você gira o potenciômetro. Esta é uma ótima maneira de entender os fundamentos da entrada analógica e do controle de servos no Arduino.

Para alcançar isso, usaremos uma placa Arduino, um motor servo e um potenciômetro. O potenciômetro atua como um resistor variável, fornecendo uma entrada analógica para o Arduino, que então determinará a posição do motor servo de acordo. Este projeto é não apenas divertido, mas também educativo, pois demonstra conceitos-chave em eletrônica e programação. Para uma explicação mais detalhada, não deixe de conferir o vídeo (no vídeo em 00:00).

Hardware Explicado

Neste projeto, os principais componentes são a placa Arduino, o motor servo e o potenciômetro. O Arduino é o cérebro da operação, processando entradas e controlando saídas. O motor servo é o que se moverá fisicamente com base nos comandos que recebe do Arduino. O potenciômetro pode ser de 1k ohm a 1M ohm, permitindo que os usuários forneçam uma entrada variável que se traduz em movimento do servo.

O motor servo opera recebendo um sinal PWM (Modulação por Largura de Pulso) que indica a posição desejada. O potenciômetro, ao ser girado, altera sua resistência, que é lida pelo Arduino como uma tensão analógica. O motor servo opera com 5V. Não funciona com 3,3V. Essa tensão é então mapeada para a faixa de movimento do motor servo, permitindo um movimento suave de 0 graus a 180 graus.

Detalhes da Ficha Técnica para Motor Servo SG90

FabricanteParalaxe
Número da peçaSG90
Tensão de lógica/IO5 V
Tensão de alimentação4,8-6 V
Corrente de saída (por canal)~500 mA
Corrente de pico (por canal)1 A
Orientação sobre a frequência PWM50 Hz
Limiares de lógica de entrada0,5 V (baixo), 2,5 V (alto)
Queda de tensão / RDS(on)/ saturação0,5 V a 500 mA
Limites térmicos0°C a 60°C
PacoteServo padrão de 9g
Notas / variantesComumente usado em aplicações de RC

  • Certifique-se de que o servo não exceda sua classificação máxima de corrente.
  • Use um dissipador de calor se o servo operar continuamente sob altas cargas.
  • Conecte o potenciômetro a um pino analógico para leituras precisas.
  • Tenha cuidado com o tempo do sinal PWM para o controle do servo.
  • Verifique o alcance de movimento do servo para evitar obstruções físicas.

Instruções de Fiação

Arduino wiring for controlling Servo motor with Potentiometer
Arduino wiring for controlling Servo motor with Potentiometer
Arduino wiring for servo motor
Arduino wiring for servo motor

Para esta configuração, você precisará conectar os componentes da seguinte forma:

Conecte o pino do meio do potenciômetro (wiper) ao pino analógico do Arduino.A0. Os outros dois pinos do potenciômetro devem ser conectados a5VeGNDno Arduino. Para o motor servo, conecte o fio vermelho a5V, o fio preto paraGNDe o fio amarelo ou branco para o pino digital9no Arduino. Este arranjo permite que o potenciômetro forneça uma entrada analógica ao Arduino, que controlará a posição do motor servo com base nessa entrada.

Certifique-se de verificar todas as conexões e garantir que o servo não esteja obstruído em seu alcance de movimento. Se estiver usando um modelo diferente de Arduino, confirme se as atribuições de pinos para a entrada analógica e a saída do servo são compatíveis.

Exemplos de Código e Passo a Passo

Abaixo está um trecho do código que inicializa o servo e lê o valor do potenciômetro:


#include 

Servo myservo;  // create servo object to control a servo
int pos = 0;    // variable to store the servo position

void setup() {
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
}

Neste código, incluímos a biblioteca Servo e criamos um objeto servo chamadomyservoO servo está conectado ao pino9, que nos permite controlá-lo usando este pino.


void loop() {
  int sensorValue = analogRead(A0);  // read the potentiometer
  pos = map(sensorValue, 0, 1023, 0, 180);  // map to servo position
  myservo.write(pos);  // move servo to position
  delay(15);  // waits 15ms for the servo to reach the position
}

Na função loop, lemos o valor do potenciômetro do pinoA0e mapeie de sua faixa (0-1023) para a faixa do servo (0-180 graus). Omyservo.write(pos)o comando então move o servo para a posição desejada com base na rotação do potenciômetro.

Demonstração / O que Esperar

Quando você executar este programa, deverá ver o motor servo se mover suavemente de 0 a 180 graus à medida que você gira o potenciômetro. Se o servo não se mover como esperado, verifique a fiação e certifique-se de que o potenciômetro está funcionando corretamente. Além disso, verifique se o Arduino está devidamente alimentado e se o código foi carregado sem erros. Você pode esperar ver o servo refletindo a posição do potenciômetro em tempo real (no vídeo às 02:00).

Marcas de Tempo do Vídeo

  • 00:00- Introdução ao projeto
  • 01:30- Explicação da configuração de hardware
  • 03:45- Instruções de fiação
  • 05:00- Revisão de código
  • 07:30- Demonstração do projeto concluído

Imagens

Arduino wiring for controlling Servo motor with Potentiometer
Arduino wiring for controlling Servo motor with Potentiometer
Arduino wiring for servo motor
Arduino wiring for servo motor
11-Controlling a servo position using a potentiometer using Arduino
Idioma: C++
Copiado!

Recursos e referências

Ainda não há recursos.

Arquivos📁

Nenhum arquivo disponível.