Controle de velocidade de motores com PWM: como funciona e por que é essencial na robótica

Se você já tentou controlar a velocidade de um motor em um projeto de robótica, provavelmente esbarrou com três letras muito importantes: PWM.

Nesse post, você vai aprender o que é PWM, como ele funciona e por que ele é tão usado no controle de motores em robótica.

O que é PWM?

PWM significa Pulse Width Modulation, ou modulação por largura de pulso. É uma técnica usada para simular uma saída analógica usando um sinal digital.

Como assim?

Em vez de enviar uma tensão analógica contínua, o PWM envia pulsos digitais (ligado/desligado) em alta velocidade. A proporção de tempo em que o sinal fica “ligado” em relação ao tempo total do ciclo é chamada de duty cycle. Quanto maior esse tempo ligado, maior será a tensão média percebida pelo componente.

Por exemplo:

  • 100% de duty cycle → o sinal fica sempre ligado (tensão total)
  • 50% de duty cycle → metade do tempo ligado, metade desligado (meia tensão)
  • 0% de duty cycle → sempre desligado (sem tensão)

Por que PWM é essencial na robótica?

Na robótica, precisamos de controle preciso sobre atuadores, especialmente motores. O PWM permite:

  • Controlar a velocidade de motores dc de forma eficiente
  • Diminuir o consumo de energia, já que o sinal digital é menos dissipativo que um controle resistivo
  • Gerar movimentos suaves em servos, enviando sinais de largura específica

Além disso, o PWM está presente em quase todos os microcontroladores modernos: Arduino, ESP32, Raspberry Pi Pico, STM32 e muitos outros oferecem suporte nativo.

Aplicações práticas: como usar PWM com Motor DC

Vamos ao que interessa: como aplicar PWM na prática para controlar um motor. Atente-se às especificações por porta:

Saída 5V a 20mA – 40mA (Máximo)

Saída 3.3V a 50mA(Máximo)

Sistema total ~200mA(Máximo)

Exemplo com Arduino

Imagine que você quer controlar a velocidade de um Motor DC com Arduino. Usando a função analogWrite(), você consegue gerar um sinal PWM com facilidade.

int motorPin = 9;

void setup() {

  pinMode(motorPin, OUTPUT);

}

void loop() {

  analogWrite(motorPin, 128); // 50% de duty cycle

  delay(1000);

  analogWrite(motorPin, 255); // 100% de duty cycle (máxima velocidade)

  delay(1000);

}

Exemplo com ESP32 (com precisão maior)

O ESP32 permite controle PWM com frequência e resolução personalizáveis, ideal para motores mais sensíveis:

const int pwmPin = 18;

const int freq = 5000;

const int pwmChannel = 0;

const int resolution = 8;

void setup(){

  ledcSetup(pwmChannel, freq, resolution);

  ledcAttachPin(pwmPin, pwmChannel);

  ledcWrite(pwmChannel, 128); // 50% de duty cycle

}

void loop() {}

Desafios comuns no uso de pwm

Apesar de ser poderoso, o PWM apresenta alguns desafios:

  • Ruído eletromagnético, especialmente em motores de alta corrente
  • Aquecimento de drivers, se o controle não for bem dimensionado
  • Resposta lenta, caso a frequência do PWM seja muito baixa

A dica é usar drivers apropriados para motores, com diodos de flyback e filtros quando necessário.

PWM também é usado em servos

Servomotores são um caso especial: eles usam pwm não para controlar potência, mas posição angular. A largura do pulso (geralmente entre 1 ms e 2 ms) define o ângulo do braço do servo.

#include <Servo.h>

Servo meuServo;

void setup() {

  meuServo.attach(9);

}

void loop() {

  meuServo.write(90);   // Vai para 90 graus

  delay(1000);

  meuServo.write(180);  // Vai para 180 graus

  delay(1000);

  meuServo.write(90);   // Volta para 90 graus

  delay(1000);

 meuServo.write(0);    // Vai para 0 grau

  delay(1000);

}

O PWM é uma ferramenta essencial para qualquer pessoa que trabalha com robótica. Entender como ele funciona é o primeiro passo para controlar motores com precisão, otimizar consumo de energia e criar sistemas robóticos mais eficientes.

Códigos revisados por Emanuel Sousa – Graduando em Engenharia Mecatrônica

Leitura complementar recomendada:


Se você gostou de aprender sobre PWM e controle de motores, vai curtir também nosso post sobre Automação para pequenos negócios com Arduino. Nele, mostramos como aplicar esses conceitos em soluções práticas e acessíveis para automatizar processos no dia a dia.

Quer compartilhar sua experiência com PWM?

Preencha o formulário abaixo e faça parte do nosso blog como autor voluntário. Vamos construir juntos uma comunidade maker cada vez mais forte!

Seja um SmartWriter

Post navigation

Deixe um comentário

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Boas práticas com placas de desenvolvimento

5 projetos feitos com o Kit Arduino UNO R3 Iniciante

PWM: saiba o que é e como utilizar esse recurso

Video loop na Raspberry Pi