Algumas partes deste site ainda não estão disponíveis no seu idioma. Estamos trabalhando para corrigir isso e pedimos desculpas por qualquer inconveniente.
Tutorial ESP32 17/55 - Controlando o Motor Servo usando ESP32 e Potenciômetro - Kit de Aprendizado IoT ESP32
Neste tutorial, vamos aprender como controlar um servo motor usando um microcontrolador ESP32 e um potenciômetro do kit de aprendizado IoT ESP32 da SunFounder. Ao final deste projeto, você será capaz de ajustar o ângulo do servo motor suavemente usando o potenciômetro, permitindo um controle preciso. Esta é uma ótima maneira de explorar as capacidades do ESP32 e como ele se conecta a motores.
À medida que mergulhamos nos detalhes, abordaremos os componentes de hardware necessários, as instruções de fiação e exemplos de código para colocar tudo em funcionamento. Para uma representação mais visual, não deixe de conferir o vídeo associado a este tutorial (no vídeo em 0:30).
Hardware Explicado
Os componentes principais para este projeto incluem o microcontrolador ESP32, um motor de passo (SG90) e um potenciômetro. O ESP32 é um microcontrolador poderoso que oferece Wi-Fi e Bluetooth integrados, tornando-o adequado para projetos de IoT. Ele é capaz de controlar vários dispositivos, incluindo motores, com alta precisão.
O motor servo SG90 é um componente amplamente utilizado que pode girar aproximadamente 270 graus. Ele opera com um sinal de modulação por largura de pulso (PWM), onde o ângulo de rotação é determinado pela largura do pulso enviado a ele. O potenciômetro atua como um resistor variável, permitindo ajustar a voltagem enviada ao ESP32, que por sua vez controla a posição do servo.
Detalhes da Ficha Técnica
Fabricante
SG
Número da peça
SG90
Tensão de lógica/IO
3,3 V (ESP32)
Tensão de alimentação
5 V
Corrente de saída (por canal)
1.2 A
Corrente de pico (por canal)
2,5 A
Orientação sobre a frequência de PWM
50 Hz
Limiares lógicos de entrada
0,2 V (baixo), 2,5 V (alto)
Queda de tensão / RDS(on)/ saturação
0,5 V
Limites térmicos
85 °C máx
Pacote
Plástico
Notas / variantes
Disponível em diferentes tipos de equipamentos
Certifique-se de que o servo esteja alimentado com uma tensão adequada (5V).
Conecte o terra do servo ao terra do ESP32 para uma referência comum.
Use sinais PWM apropriados para controlar a posição do servomotor.
Esteja ciente dos requisitos de corrente do servo; use uma fonte de alimentação externa, se necessário.
Verifique as designações de pinos corretas ao fazer a fiação para evitar reconfigurações incorretas.
Instruções de Fiação
ESP32-17-Sevo_motor-wiring
Para conectar o motor servo e o potenciômetro ao ESP32, comece ligando o fio de terra do servo (geralmente preto ou marrom) a um dos pinos de terra no ESP32. Em seguida, conecte o fio de potência (geralmente vermelho) do servo ao pino de 5V no ESP32. Por fim, conecte o fio de sinal (geralmente laranja ou branco) do servo ao pino25no ESP32.
Para o potenciômetro, conecte uma das extremidades ao pino de 3.3V no ESP32 e a outra extremidade ao terra. O pino do meio do potenciômetro deve ser conectado ao pino34no ESP32. Esta configuração permite que o ESP32 leia a saída de tensão variável do potenciômetro, que será usada para controlar a posição do servo.
Exemplos de Código e Passo a Passo
O seguinte trecho de código inicializa o servomotor e define os parâmetros para controlar seu movimento:
#include
Servo myServo;
const int servoPin = 25;
const int minPulseWidth = 500; // 0.5 ms
const int maxPulseWidth = 2500; // 2.5 ms
void setup() {
myServo.attach(servoPin, minPulseWidth, maxPulseWidth);
myServo.setPeriodHertz(50); // Standard 50Hz servo
}
Neste código, incluímos oESP32Servobiblioteca e crie uma instância do servo com o nomemyServoDefinimos o número do pino para o servo e configuramos as larguras de pulso mínima e máxima que correspondem aos limites de ângulo do servo.
ESP32_servo_lib
Em seguida, vamos dar uma olhada no loop que move continuamente o servo para frente e para trás:
Este loop altera gradualmente o ângulo de 0 a 180 graus e de volta.mapfunção para converter o ângulo na largura de pulso correspondente para o servomotor. Cada alteração é seguida por um curto atraso para permitir que o servomotor atinja sua nova posição suavemente.
Demonstração / O que Esperar
Uma vez que tudo esteja conectado e o código esteja carregado, você deve ver o motor de servo se movendo suavemente de 0 a 180 graus e de volta. Se você ajustar o potenciômetro, o servo deve refletir a nova posição com base na voltagem fornecida pelo potenciômetro. Tenha cuidado com a polaridade invertida ao conectar, pois isso pode danificar seus componentes (no vídeo às 3:45).
Marcação de Tempo do Vídeo
00:00 Início
1:56 O que é um motor servo
5:00 Página de documentos
6:33 Fiação para servo explicada
7:45 Selecionando a porta COMP para ESP32 no Arduino IDE
9:27 Código Arduino explicado
14:31 Demonstração de controle de servos utilizando ESP32
16:04 Alimentando servo diferente de 5V
18:47 Controlando o servo sem o loop
20:15 Controlando Servo com Potenciômetro
21:37 Servo com código Arduino explicado
Imagens
ESP32-17-Sevo_motor-schematic
ESP32-17-Sevo_motor-wiring
ESP32_servo_lib
ESP32-17-Sevo_motor-schematic
ESP32-17-Sevo_motor-wiring
ESP32_servo_lib
816-ESP32 Tutorial 17/55- Arduino code for controling servo motor