Maker 101: Servos Motores
Nova Série: Maker 101
Ponte H? Servo Motor? Microcontrolador? É muito fácil se perder no oceano de informações e termos técnicos do mundo maker. Mas a Autocore vai te ajudar a navegar nesse mar com a nova série Maker 101, em que iremos abordar os principais temas para os iniciantes e quem deseja se aprofundar no Movimento Maker. Pronto para zarpar? Então vamos lá!
Introdução – O que são servo motores?
Figura 01 – Servo Motores – O melhor jeito de movimentar seu projeto
Fonte: Sparkfun.
Primeiramente, o que são essas caixinhas colorias? Se o seu próximo projeto for um braço robótico ou uma Aranha-robô, servos motores podem ser uma mão na roda. Essas pequenas caixinhas são dispositivos motores que permitem controlar um eixo de forma simples usando um microcontrolador.
Ao contrário de motores DC ou motores-de-passo, servo motores dispensam drivers de controle, pois já possuem um integrado, tornando-os muito simples de serem integrados a um projeto. No entando, a grande maioria dos servos tem sua rotação limitada a 180º (já iremos explicar isso no próximo parágrafo.)
Mas, como funcionam?
Figura 02 – Corte inferior de um servo motor MG995.
Fonte: Autocore Robótica.
A figura acima retrara um servo MG995, um dos servo motores mais comuns para makers e modelistas. Ele é composto por quatro principais componentes: motor de corrente contínua, caixa de redução, circuito controlador, e potênciometro.
-Motor de Corrente Contínua
Figura 03 – Motor DC.
Fonte: Autocore Robótica.
Comumente referido como “motor DC”, este é o componente fundamental do servo, responsável por movimentar o eixo externo. Seu eixo principal é conectado à caixa de redução e seus terminais de energia são ligados ao circuito controlador.
– Caixa de Redução
Figura 04 – Caixa de Redução de um servo MG995
Fonte: Autocore Robótica.
Um motor DC pequeno como o encontrado nos servo motores não possue torque suficiente para mover grandes cargas. Desta forma, o eixo do motor é conectado a uma caiax de redução que reduzir sua velocidade de rotação, mas, consequentemente, aumenta seu torque.
Isto permite o grande torque oferecido pelos servo motores (no caso do MG995, 15 kg.cm). Por fim, a caixa de redução também conecta o eixo principal do motor ao eixo externo e ao potênciometro.
– Potenciômetro
Figura 05 – Potênciometro e Motor DC
Fonte: Engineers Garage.
Adicionalmente, o principal diferencial do servo motor é o fino controle da angulação do eixo externo. Esse controle é feito com base nas leituras do potênciometro acoplado à caixa de redução. Sendo assim, cada posição do eixo externo possui uma resistência característica que é lida pelo circuito controlador.
-Circuito Controlador
Figura 06 – Circuito Controlador
Fonte: Autocore Robótica
Por fim, as leituras do potênciometro e o controle do motor DC são gerenciados pelo circuito controlador do servo motor. Este circuito traduz as leituras e permite que se controle o servo motor utilizando pulsos PWM (Pulse Width Modulation, ou Modulação da Largura de Pulso em português). Por fim, o controle é feito utilizando uma saída tripla, em que você tem o GND (Negativo, ou terra), Vin (Positivo) e Signal (Sinal, por onde enviamos o sinal PWM).
Controlando um Servo motor!
-Circuito Com Arduino & Servo
Figura 07 – Circuito com Arduino
Fonte: Autocore Robótica
Por fim, vamos aprender a controlar um servo motor! Dado o público-alvo do artigo, iremos abordar o controle com base em um Arduino, devido sua praticidade e simplicidade.
Com relação ao circuito, a montagem é bem intuitiva. Basta conectar o GND à porta GND do Arduino, Vin à porta 5V do Arduino e o cabo Signal à uma porta digital do Arduino.
-Programação
Para controlarmos o servo motor com um Arduino, iremos utilizar a biblioteca nativa do Arduino chamada Servo. Tome conhecimento que é possível controlar o servo através da modulação do pulso utilizando interrupções (você pode aprender mais aqui). No entanto, dada a natureza introdutória desta série, iremos focar no controle utilizando a biblioteca.
#include "Servo.h" //Aqui adicionamos a biblioteca a ser utilizada para o controle Servo servo_1; //Após adicionar, você precisa criar o objeto com o comando "Servo" void setup(){ servo_1.attach(9); //O comando attach indica em que porta o servo está conectado } void loop(){ servo_1.write(0); /*O comando write envia os pulsos correspondentes à angulação até 180 graus, ou seja, pode receber valores de 0 a 180);*/ delay(1000); servo_1.write(180); delay(1000); }