Servomotores

Entre os atuadores temos um motor bem especial. Os servomotores são muito utilizados quando o assunto é robótica. De forma simplificada, um servomotor é um motor na qual podemos controlar sua posição angular através de um sinal PWM (Leia mais sobre PWM na postagem Grandezas digitais e analógicas e PWM.).

Exemplo de servomotor

Dessa forma, um servomotor é um atuador eletromecânico utilizado para posicionar e manter um objeto em uma determinada posição. Para isso, ele conta com um circuito que verifica o sinal de entrada e compara com a posição atual do eixo.

 

Como você pode ver na figura anterior, o ângulo do servo é proporcional ao Duty Cycle (tempo que o sinal é positivo) do sinal PWM.

Diferentemente dos motores CC ou motores de passo que podem girar indefinidamente, o eixo dos servomotores possui a liberdade de apenas 180º. Existem ainda alguns servos que são adaptados para girar indefinidamente, mas não entraremos nesse mérito aqui.

Servomotores geralmente possuem 3 pinos:

  • Alimentação positiva (vermelho) – 5V;
  • Terra (Preto ou Marrom) – GND;
  • (Amarelo, Laranja ou Branco) – Ligado a um pino digital de entrada e saída;

Atenção!!

Servomotores consomem uma corrente significativa ao se movimentarem. A utilização de uma fonte externa pode ser necessária e é recomendada. Lembre-se de conectar o pino GND da fonte externa ao GND do Arduino para que a referência seja a mesma.

Apesar de sua posição ser controlada através do duty cycle de um sinal PWM enviado ao pino de controle não é necessária a conexão do pino de controle a um pino que possua PWM, pois utilizaremos a biblioteca Servo.h.

A utilização de analogWrite produzirá um controle de menor precisão e poderá até danificar alguns servos por sua frequência (490 Hz) ser 10 vezes superior a frequência típica de controle de alguns servos.

Além de mais preciso e recomendado, o uso da biblioteca Servo.h faz com que o uso do servo seja mais fácil. Isso se dá pelo fato de você só precisar definir o ângulo que você deseja, não necessitando o uso dos valores de PWM (0 a 255).


Mãos à obra – Controlando Servomotores com Arduino

Componentes necessários

Montando o projeto

Agora vamos conectar os componentes do projeto. Para isso, desligue o cabo USB de seu Arduino e monte seu circuito conforme a figura a seguir.

O microservo tem três fios saindo dele. Um será vermelho e irá para os +5 V. Outro, preto ou marrom, irá para o GND. O terceiro, branco, amarelo ou laranja, será conectado ao pino digital 8.

Monte o potenciômetro com os seus pinos externos conectados um no +5 V e o outro no GND e o pino do meio ao pino analógico A0.

Conectando o Arduino ao computador

Conecte seu Arduino ao computador e abra a IDE Arduino.

Antes de carregar um programa, você precisa selecionar qual porta você deseja usar para fazer carregar o programa no Arduino (upload). Dentro do Arduino IDE, clique no menu Ferramentas (tools) e abra o submenu Porta(Port). Clique na porta que seu Arduino está conectado, tal como COM3 ou COM4. Geralmente aparece o nome da placa Arduino : “COM3 (Arduino/Genuino Uno)”.

Você também precisa garantir que o tipo de placa apropriado está selecionado em Ferramentas(Tools) no submenu Placa (Board).

Programando

Crie um programa (sketch) e salve com o nome de “programa_servo”.

Nesse exemplo utilizaremos a biblioteca Senvo.h que já é nativa da IDE Arduino e deve ser adicionada em: Sketch > Incluir Biblioteca > Servo.

Com o seu programa salvo, escreva nele o código conforme escrito abaixo.

Após escrever o código, salve e depois clique em Carregar (Upload) para que o programa seja transferido para seu Arduino.

Colocando para funcionar

Se tudo deu certo, conforme você variar a resistência do potenciômetro o servo irá se mover.


Entendendo a fundo

Entendendo o Software

Biblioteca Servo.h

Na elaboração do software utilizamos a biblioteca Servo.h. Esta biblioteca implementa as funcionalidades de um servomotor tornando sua utilização extremamente simples. Entretanto alguns cuidados devem ser tomados.

Importante:

A biblioteca suporta a ligação de até 12 servomotores na maioria das placas Arduino e 48 no Arduino Mega. O uso da biblioteca desabilita o uso da função analogWrite nos pinos 9 e 10  (*exceto no Arduino Mega). No Mega o uso de 12 a 23 servomotores desabilitará o a função analogWrite nos pinos 11 e 12.

Declarando um Servo

Ao usar essa biblioteca trataremos cada servo como um objeto, dessa forma precisamos declará-lo no início do código.

Depois de declarado, sempre que quisermos mexer em alguma função desse servo, devemos usar o nome da função precedida do nome do servo e ponto.

Você poderá declarar quantos servos for usar, levando em conta a limitação física de sua placa Arduino. Cada servo pode ter qualquer nome, mas é aconselhável que se use nomes intuitivos.

Declarando porta de controle do Servo

Agora é preciso definir em que porta esta conectado o fio de controle do servo, para isso usamos a função attach(pino).

Controlando a Posição do Servo

A função write define em um servo padrão o ângulo em graus na qual ele deve se posicionar.


Fechamento

Esperamos que tenham gostado, deixe seu comentário com duvidas, sugestões ou com a foto ou vídeo de seu projeto!! Compartilhe à vontade.

Estudante de Engenharia Elétrica da UFES e Fundador do Vida de Silício. Sonhador com uma única pretensão, fazer a diferença.
%d blogueiros gostam disto: