Se nos cruzarmos com algum projeto no Hackaday ou no portal Instructables, é bem provável que um dos componentes utilizados seja um servomotor. A grande vantagem dos servomotores sobre os motores clássicos é que eles podem adotar uma posição específica e mantê-la, o que (geralmente) se traduz em um alto nível de precisão. A pergunta é: como eles fazem isso?
O funcionamento dos servomotores
Existe uma ampla variedade de servomotores no mercado, e alguns modelos são tão avançados que se tornam proibitivos, mas os designs comuns são mais do que suficientes para estudar o mecanismo básico, composto por um circuito eletrônico, um motor de corrente contínua, uma caixa de engrenagens que “liga” o motor a um “eixo de saída”, e um potenciômetro na parte inferior do eixo, que ao mesmo tempo se conecta ao circuito.
O trabalho do potenciômetro é realimentar a posição do eixo, enquanto as engrenagens são responsáveis por reduzir a quantidade de rotações (60 RPM é um valor típico) e aumentar o torque (sei que a RAE não gosta muito, mas peço que me acompanhem).
Um servomotor convencional pode girar até 180 graus, mas essa não é uma limitação que afete suas aplicações mais populares, como sistemas de direção em aeromodelismo e pequenos robôs. O servomotor é controlado através de um sinal modulado por largura de pulso (PWM).
A maioria dos modelos utiliza sinais com frequência de 50 Hz, limitando o tempo entre um pulso e outro a 20 milissegundos. A duração do pulso é o que determina a posição angular do servo, com intervalos extremamente curtos.
Os números finais podem variar entre um modelo e outro, mas em geral se fala em 1 milissegundo (ou 0,5) para um ângulo de 0 graus, 1,5 milissegundos para 90 graus e 2 milissegundos (ou 2,5) para 180 graus.
O circuito de controle compara a voltagem do potenciômetro com a voltagem do sinal e, se necessário, ativa uma ponte H integrada para modificar a direção de rotação, até que a diferença entre os dois sinais seja zero. A segunda parte do vídeo que nos acompanha foca no controle de servomotores com a ajuda de um módulo Arduino, e quais são as principais restrições, começando por uma fonte de alimentação externa (o Arduino não tem potência suficiente para alimentar o servomotor no exemplo). O resto se resume a carregar o código (disponível na fonte abaixo) especificando o pino de controle que será conectado ao servo.