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
| Fabricante | Paralaxe |
|---|---|
| Número da peça | SG90 |
| Tensão de lógica/IO | 5 V |
| Tensão de alimentação | 4,8-6 V |
| Corrente de saída (por canal) | ~500 mA |
| Corrente de pico (por canal) | 1 A |
| Orientação sobre a frequência PWM | 50 Hz |
| Limiares de lógica de entrada | 0,5 V (baixo), 2,5 V (alto) |
| Queda de tensão / RDS(on)/ saturação | 0,5 V a 500 mA |
| Limites térmicos | 0°C a 60°C |
| Pacote | Servo padrão de 9g |
| Notas / variantes | Comumente 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


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
Recursos e referências
Ainda não há recursos.
Arquivos📁
Nenhum arquivo disponível.