Um servo é um motor com controle embutido
Esquece o conceito de "motor que gira". Um servo é um conjunto completo: motor CC, caixa redutora de engrenagens, circuito de controle e um sensor de posição (potenciômetro ou encoder). Tudo isso encolhido num invólucro padrão que cabe na palma da mão. A entrada é um sinal PWM e a saída é uma posição angular precisa, tipicamente entre 0 e 180 graus, ou contínua no caso dos servos sem ciclo fechado de posição. O sinal PWM que você manda pelo pino do microcontrolador não é sobre velocidade. É sobre posição. O pulso alto dura entre 1ms e 2ms, repetido a 50Hz. Um pulso de 1ms vai o servo para zero grau. 1.5ms fica no centro. 2ms vai até 180. Isso é o básico. O que a maioria dos tutoriais não conta é o que acontece quando o servo trava tentando ir a uma posição que já está atingida — o circuito interno continua aplicando corrente até o erro ser zero, e nesse intervalo ele esquenta e gasta energia sem mover nada.
O que é um servo na prática
Na prática, um servo é aquela peça barata de plástico que todo mundo usa em robótica iniciante e depois descarta quando o projeto vira coisa séria. SG90 custa cerca de R$8 no Mercado Livre. Serve para braços robóticos leves, juntas de drones, projetos escolares. Não serve para nada que exija precisão real ou durabilidade. Eu já precisei montar um braço robótico que operasse 8 horas por dia movendo cargas de 200g em repetição constante. Usei SG90s porque eram o que eu tinha disponível. Depois de duas semanas, dois servos tinham travado as engrenagens de plástico. O terceiro tinha começado a apresentar "jogo" no eixo — folga que fazia o braço tremer quando parava na posição. Troquei tudo por servos metálicos de 12V com encoder Hall effect e o problema sumiu. O custo triplicou. Valeu a pena.
O ponto que ninguém deixa claro na hora de comprar: a tensão nominal não é a mesma que a tensão de operação. Um MG996R é vendido como 6V, mas opera bem em 7.4V e alcança torque máximo perto de 8.4V. O datasheet fala em torque a 6V porque é o padrão da indústria para comparação. Na vida real, alimentar com 7.4V de uma bateria LiPo dupla aumenta o torque em cerca de 30%. Mas aumente demais e você queima o potenciômetro interno de posição em minutos.
Como controlar um servo corretamente
A primeira coisa errada que todo mundo faz é ligar o servo diretamente no pino de 5V do Arduino. O pino de regulagem do Uno entrega no máximo 800mA antes de entrar em proteção térmica. Um MG996R em carga puxa 2A em picos. O resultado é que o Arduino reinicia aleatoriamente quando o servo tenta mover algo pesado, e você passa três horas caçando bug de software que não existe. A solução é alimentar o servo separadamente. Fonte externa de 6 a 7.4V, terra comum com o microcontrolador, e sinal PWM pelo pino digital. Oterra comum é essencial — sem referência conjunta, o MCU não consegue interpretar o nível do sinal PWM corretamente.
👉 Clique no botão abaixo para saber mais sobre o assunto!
Para programar em Arduino, a biblioteca Servo já faz o trabalho sujo de gerar o sinal PWM nos pinos corretos. Você chama servo.write(90) e pronto. Mas se quiser controle mais fino — por exemplo, limitar a faixa de movimento para não travar o mecanismo, ou controlar velocidade aproximada interpolando posições — você precisa lidar com os pulsos manualmente. A função pulseWidth() retorna o valor atual em microssegundos, e escrever um pulso com digitalWrite() em um timer dedicado te dá precisão de 1µs, o que traduz em cerca de 0.1 grau de resolução prática em servos comuns. Um detalhe técnico que economiza tempo: se você precisa mover o servo várias vezes no loop principal, nunca chame servo.write() com o mesmo valor duas vezes consecutivas. O servo gasta energia e gera calor tentando manter a posição mesmo sem movimento. Condição if antes de escrever, e só atualize quando o alvo for diferente do estado atual. Isso reduz o aquecimento em até 40% em aplicações que ficam estáticas por longos períodos.
Limitações reais que os manuais não mencionam
Servos com engrenagens de plástico são descartáveis. Quando falham, não consertam. O custo de reposição é baixo, então a estratégia é simples: substituir. Já os servos com engrenagens metálicas suportam muito mais ciclos, mas introduzem backlash — folga mecânica que varia de 2 a 5 graus dependendo do desgaste. Se o seu projeto exige reposicionamento preciso sem retificação por sensor externo, o backlash mata a precisão. Servos de rotação contínua são outra armadilha. Eles parecem servos normais mas não têm sensor de posição interno. O sinal PWM controla velocidade e direção, não ângulo. Servem para rodas de robôs e esteiras. Não servem para braços. É fácil confundir os dois tipos porque o invólucro é idêntico. Verifique sempre o datasheet antes de montar.
Se o projeto exige alta precisão angular sob carga variável, servo comum não é a resposta. Motor passo a passo com driver A4988 ou TMC2209 resolve. Ou um servo digital com encoder absoluto, como a linha Castle Creations ou os servos industriais de automação. O custo sobe para R$150 a R$400 por unidade, mas a precisão cai para menos de 0.01 grau e o torque se mantém constante mesmo em posição travada. Servos também não respondem bem a interrupções bruscas no sinal de controle. Se o fio PWM soltar ou tiver ruído eletromagnético próximo a cabos de potência, o servo pode travar na última posição ou girar livremente sem controle. Fios blindados ou trajetórias curtas entre MCU e servo resolvem. Também ajuda colocar um capacitor de 100µF nos terminais de alimentação do servo para amortecer picos de corrente.
Para quem está começando, o caminho mais barato e funcional é: ARDUINO UNO, fonte externa 7.4V 3A, servo metálico MG996R, e programação com a biblioteca Servo padrão. Teste o torque máximo antes de montar a estrutura definitiva. Meça o consumo real com um multímetro em série. Se o pico passar de 1.5A, ajuste a carga ou troque o servo por um modelo de maior coppia. Isso evita dor de cabeça nos dois primeiros meses de projeto.