Skip to content
RFrftools.io
Motor Control27 de fevereiro de 202610 min de leitura

Controle de motor DC: PWM, drivers e codificadores explicados

Guia completo para controlar motores DC com PWM: selecionar o driver de ponte H correto, dimensionar o MOSFET e fechar o circuito com um codificador.

Conteúdo

Introdução

Variar a tensão para alterar a velocidade do motor DC parece simples no papel. Na prática, você está lidando com corrente de irrupção que pode atingir um pico 10 vezes maior do que a classificação nominal, EMF traseiro que combate sua tensão de alimentação, limites térmicos que surgem sorrateiramente durante cargas sustentadas e requisitos de precisão de posição que exigem ciclos de feedback. Este guia detalha cada parte da pilha de controle para que você realmente entenda o que está acontecendo nos bastidores.


O modelo de motor DC

Um motor DC escovado não é apenas um resistor — ele tem resistência de armadura, indutância e uma fonte de tensão (EMF traseiro) trabalhando juntos. O modelo do circuito tem a seguinte aparência:

Vsupply=IaRa+LadIadt+VemfV_{supply} = I_a R_a + L_a \frac{dI_a}{dt} + V_{emf}

O EMF traseiro é proporcional à velocidade do eixo: Vemf=Ke⋅ωV_{emf} = K_e \cdot \omega. O torque vem da corrente: T=Kt⋅IaT = K_t \cdot I_a. Essas constantes KeK_e e KtK_t geralmente estão enterradas em algum lugar da folha de dados, geralmente em unidades mistas que fazem você querer gritar.

Quando o motor atinge o estado estacionário e o indutor para de lutar contra você, a equação simplifica:

ω=Vsupply−IaRaKe\omega = \frac{V_{supply} - I_a R_a}{K_e}

Isso explica por que os motores carregados diminuem a velocidade — o termo IaRaI_a R_a consome sua voltagem efetiva. Um motor que puxa 5A até 0.5Ω perde 2,5 V ali mesmo, o que se traduz diretamente em perda de velocidade.

Experimente essas relações usando a calculadora de velocidade do motor DC para ver como a resistência da armadura e a corrente de carga afetam sua RPM final.


Fundamentos do PWM

PWM (modulação por largura de pulso) é como você controla a tensão do motor sem queimar energia em um resistor em série como se fosse 1985. Você está ligando e desligando rapidamente a fonte — a indutância do motor suaviza os pulsos em uma tensão DC efetiva:

Veff=D×VsupplyV_{eff} = D \times V_{supply}

onde DD é seu ciclo de trabalho de 0 a 1. Executar 75% de serviço a 12 V fornece 9 V efetivos. Matemática simples, mas a escolha da frequência é mais importante do que a maioria das pessoas imagina.

FrequênciaPrósContras
1–5 kHzBaixas perdas de comutação, fáceis de implementarUm gemido audível deixa você louco
20–50 kHzOperação silenciosa, boa eficiênciaPerdas moderadas de troca
> 100 kHzResposta transitória ultrarrápidaEMI se torna um pesadelo, as perdas de comutação aumentam
Regra prática: Use 20—25 kHz para motores DC escovados típicos. Está acima da faixa audível (sem gemidos irritantes), as perdas de comutação permanecem razoáveis e a maioria dos temporizadores de microcontroladores lida com isso facilmente. Já vi engenheiros chegarem a 100 kHz pensando que mais rápido é sempre melhor, depois passarem semanas depurando EMI irradiado e lidando com o toque do motorista do portão.

A calculadora do ciclo de trabalho PWM permite calcular a tensão efetiva e estimar a aparência da corrente de parada antes de explodir o motorista.


Motoristas da H-Bridge

O controle bidirecional requer uma ponte H — quatro interruptores dispostos para que você possa inverter a polaridade entre os terminais do motor. O nome vem da topologia do circuito, que literalmente se parece com um H.

Discreto versus integrado

Drivers integrados como o DRV8833, TB6612 ou L298N são a melhor opção, a menos que você tenha um motivo específico para não fazê-lo. Eles lidam com inserção em tempo morto (para que você não encurte o fornecimento por meio de MOSFETs do lado alto e do lado baixo), desligamento térmico e proteção contra sobrecorrente. O L298N é antigo e ineficiente, mas praticamente indestrutível — ótimo para aprender, péssimo para projetos movidos a bateria. MOSFETs discretos fazem sentido quando você precisa pressionar uma corrente forte ou deseja a máxima eficiência. Você precisará de drivers de porta (circuitos de bootstrap de alto nível são divertidos de depurar), um layout de PCB cuidadoso para evitar disparos e um gerenciamento adequado do tempo morto em seu código de controle. No entanto, o ganho de eficiência é real — designs discretos podem atingir mais de 95%, enquanto o L298N se esforça para ultrapassar 70%.

Seleção de MOSFET

Quando você escolhe MOSFETs para uma ponte H, quatro especificações são importantes:

  1. VDSV_{DS} — Deve exceder sua tensão de alimentação com margem. Use VDS≥1.5×VsupplyV_{DS} \geq 1.5 \times V_{supply} como ponto de partida. Transientes e pontas indutivas o morderão de outra forma.
  2. IDI_D — Deve lidar com a corrente de pico de irrupção, não apenas a corrente nominal. Aplique, no mínimo, ID≥1.5×IinrushI_D \geq 1.5 \times I_{inrush}. Essa corrente de irrupção pode ser 10 vezes o valor do estado estacionário.
  3. RDS(on)R_{DS(on)} — Menor é sempre melhor. Isso determina suas perdas de condução. Um MOSFET com 10 mΩ vs. 50 mΩ faz uma grande diferença em altas correntes.
  4. QgQ_g — A carga do portão determina a rapidez com que você pode alternar e quanta energia o motorista do portão consome. Menor é melhor para PWM de alta frequência.

A perda de condução por MOSFET resulta em:

Pcond=I2×RDS(on)×DP_{cond} = I^2 \times R_{DS(on)} \times D

onde DD é o ciclo de trabalho para o qual um determinado interruptor está ligado. As perdas no lado alto e no lado baixo são diferentes porque ocorrem em ciclos de trabalho complementares.

A calculadora de seleção H-Bridge ajuda você a descobrir os requisitos de pico de corrente e as classificações mínimas de MOSFET. Use a calculadora de potência do driver do motor para estimar a dissipação total de energia e ver se você precisa de um dissipador de calor.


Inrush e corrente de partida

Aqui está o que chama a atenção das pessoas: quando você aplica tensão pela primeira vez a um motor estacionário, o EMF traseiro é zero. Não há nada que se oponha à tensão aplicada, exceto a pequena resistência da armadura. A corrente inicial se torna:

Iinrush=VsupplyRaI_{inrush} = \frac{V_{supply}}{R_a}

Digamos que você tenha um motor com resistência 0.5Ω R funcionando em 12V. A corrente de partida é de 24 A, embora a placa de identificação do motor indique 2 A contínuos. Isso é um multiplicador de 12 ×. Seu motorista precisa lidar com isso sem deixar a fumaça mágica sair.

Estratégias de mitigação que realmente funcionam:
  • Inicie suavemente o ciclo de trabalho do PWM — aumente de 0% para o alvo em 100—500 ms. Simples, eficaz, não custa nada além de algumas linhas de código.
  • Use um controlador limitador de corrente — Peças como o DRV8434 têm um corte de corrente embutido que limita automaticamente o pico de corrente.
  • Dimensione a ponte H para irrupção, sem corrente nominal — Isso não é negociável. Um motor de 2A precisa de um driver com capacidade de 20—30A se você quiser confiabilidade.

A maioria dos engenheiros ignora a partida suave e se pergunta por que seus motoristas continuam morrendo. Não seja esse engenheiro.


Codificadores para controle de circuito fechado

O controle PWM de circuito aberto funciona bem para ventiladores, bombas e outras aplicações nas quais você não se importa com a velocidade ou a posição exatas. No momento em que você precisa de precisão — robótica, CNC, qualquer coisa com controle de posição — você precisa de feedback de um codificador.

Tipos de codificadores

Codificadores ópticos incrementais usam um disco com fenda e fotointerruptores para gerar pulsos de quadratura AB. Eles são o tipo mais comum, disponíveis de 100 a 10.000 pulsos por revolução (PPR). Sinais limpos, boa resolução, mas eles não gostam de poeira ou vibração. Codificadores magnéticos usam sensores de efeito Hall e um anel magnetizado. Muito mais robusto à contaminação e ao choque. Você os encontrará em motores industriais e aplicações automotivas. A resolução geralmente é menor do que a óptica, mas eles sobreviverão a ambientes que matariam instantaneamente um codificador óptico. Codificadores absolutos exibem a posição real do eixo como uma palavra digital — sem necessidade de contagem, sem necessidade de sequência de localização após a inicialização. Eles são caros e exagerados para a maioria dos projetos, mas essenciais para o rastreamento de posições em várias curvas em coisas como suportes de telescópio ou robôs industriais.

Decodificação em quadratura

Dois canais A e B funcionam 90° fora de fase. Ao observar as bordas ascendentes e descendentes em ambos os canais, você obtém 4 vezes a resolução do PPR básico:

CPR=4×PPR\text{CPR} = 4 \times \text{PPR}

Um codificador de 1000 PPR oferece 4000 contagens por revolução, o que resulta em uma resolução angular de 0,09°. A direção de rotação vem de qual canal conduz — se A conduz B você está indo para frente, se B conduz A você está indo para trás.

A maioria dos microcontroladores tem periféricos decodificadores de quadratura de hardware que lidam com isso automaticamente. Se você tentar fazer isso em um software com interrupções, começará a perder contagens acima de alguns milhares de RPM.

Use a Calculadora de resolução do codificador para descobrir sua RCP real, resolução angular e frequência máxima de pulso que seu contador precisa suportar.


Controle de velocidade PID

Depois de receber o feedback do codificador informando a velocidade real do eixo, você pode fechar o circuito com um controlador PID. A equação clássica do PID:

u(t)=Kpe(t)+Ki∫e(t) dt+Kdde(t)dtu(t) = K_p e(t) + K_i \int e(t)\,dt + K_d \frac{de(t)}{dt}

onde e(t)=ωsetpoint−ωmeasurede(t) = \omega_{setpoint} - \omega_{measured} é seu erro de velocidade.

O termo proporcional KpK_p fornece uma resposta imediata proporcional ao erro. O termo integral KiK_i elimina o erro de estado estacionário ao acumular erros ao longo do tempo. O termo derivado KdK_d amortece as oscilações ao responder à taxa de variação. Fazer com que os três joguem bem juntos é mais arte do que ciência.

Ajuste de Ziegler-Nichols

O Ziegler-Nichols oferece um ponto de partida prático com base na resposta à etapa de circuito aberto. Não será perfeito, mas é melhor do que adivinhar aleatoriamente:

  1. Aplique uma entrada de passo (digamos, pule de 0% para 50% PWM) e meça a resposta de velocidade do motor
  2. Extraia três parâmetros: ganho de processo KK, tempo morto LL e constante de tempo τ\tau
  3. Calcule os ganhos iniciais de PID:
- Kp=1.2τ/(K⋅L)K_p = 1.2\tau / (K \cdot L) - Ki=Kp/(2L)K_i = K_p / (2L) - Kd=Kp×0.5LK_d = K_p \times 0.5L

Não serão ideais, mas levarão você ao estádio. A partir daí, você ajusta empiricamente — aumenta o KpK_p até obter oscilações, recua 50% e, em seguida, ajusta o KiK_i e o KdK_d a gosto.

A calculadora de ajuste PID calcula os ganhos iniciais a partir dos parâmetros de resposta da etapa medida. Isso evita que você faça as contas manualmente e cometa erros aritméticos às 2 da manhã.


Gerenciamento térmico

Os motores geram calor nos enrolamentos a partir de perdas resistivas: P=I2RaP = I^2 R_a. Seu motorista gera calor a partir de perdas de condução nos MOSFETs: P=I2RDS(on)P = I^2 R_{DS(on)}. Se ficar muito quente por muito tempo, você terá uma redução térmica ou uma falha total.

A temperatura de operação funciona para:

Tmotor=Tambient+Ploss×RθT_{motor} = T_{ambient} + P_{loss} \times R_{\theta}

onde RθR_{\theta} é a resistência térmica da caixa do motor ao ambiente. As folhas de dados geralmente fornecem esse número, ou você pode medi-lo empiricamente acionando o motor na potência conhecida e verificando o aumento da temperatura com um termopar.

Aqui está o que irrita as pessoas: a resistência do enrolamento de cobre aumenta com a temperatura em cerca de 0,39% por °C. Um motor 50°C mais quente que o ambiente tem aproximadamente 20% maior resistência ao enrolamento. Isso significa menos torque para a mesma corrente, o que significa que você precisa de mais corrente para manter o torque, o que gera mais calor. É um ciclo vicioso se você estiver correndo perto do limite térmico.

Verifique a curva de redução térmica do seu motor na ficha técnica. A maioria dos motores começa a reduzir a temperatura da caixa em torno de 100° C e é completamente reduzida em 150° C. Se você planeja operar em serviço contínuo com alta carga, precisa de resfriamento de ar forçado ou de um motor maior.


Resumo

Obter o controle correto do motor DC significa entender o sistema completo:

  1. Modele o motor adequadamente — Use o V=IR+KeωV = IR + K_e\omega para prever velocidade e corrente sob carga, não apenas especificações sem carga
  2. Dimensione o driver de acordo com a realidade — Design para corrente de irrupção (5—10 × corrente nominal), não para a classificação da placa de identificação
  3. Escolha sua frequência PWM com cuidado — 20—25 kHz atinge o ponto ideal para silêncio e eficiência na maioria das aplicações
  4. Adicione feedback quando precisar de precisão — Os codificadores de quadratura oferecem resolução de 4 vezes e detecção de direção
  5. Ajuste seu controlador PID — Comece com Ziegler-Nichols e depois refine com base na resposta real do sistema
  6. Não ignore os limites térmicos — Calcule a temperatura do motor e do acionador na carga máxima contínua, não na carga máxima

A diferença entre um sistema de controle de motor que funciona e um que funciona de forma confiável se resume ao manuseio adequado desses detalhes. Dimensione tudo para as piores condições, adicione margem e teste em temperaturas extremas antes de se comprometer com a produção.

Perguntas Frequentes

Use 20-25 kHz para motores DC escovados típicos. Essa frequência está acima da faixa audível para evitar ruídos, mantém as perdas de comutação razoáveis e é facilmente manipulada pela maioria dos temporizadores de microcontroladores.
Os motores carregados diminuem a velocidade porque a resistência da armadura causa queda de tensão (I_a × R_a) , que reduz a tensão efetiva disponível para velocidade. Por exemplo, um motor que puxa 5A através do 0.5Ω perde 2,5 V, reduzindo diretamente a RPM.
O EMF traseiro é uma tensão gerada proporcionalmente à velocidade do eixo (V_emf = K_e × ω) que se opõe à tensão de alimentação. Faz parte do modelo de circuito do motor junto com a resistência da armadura e a indutância.
A tensão efetiva do motor é igual ao ciclo de trabalho multiplicado pela tensão de alimentação (V_eff = D × V_supply). Um ciclo de trabalho de 75% na alimentação de 12V fornece 9V efetivos ao motor.

Artigos Relacionados