Como controlar servomotor com Arduino

Como Controlar Servomotor Com Arduino



Servo Motors é um tipo de dispositivo elétrico que pode mudar ou girar a posição de um objeto com grande precisão. No início, eles foram usados ​​para controlar asas de avião RC momentos depois, eles chegaram à robótica, robôs humanóides e muitos projetos de automação. Ao contrário dos motores de passo, seu movimento é limitado entre 0o e 180o.

Normalmente, os servomotores possuem braços que podem ser controlados usando o Arduino. Os servomotores consistem em um sistema de controle que fornece retorno sobre a posição atual do eixo do motor este feedback permite mover com grande precisão.

Pinagem do Servo Motor

Normalmente, a maioria dos servomotores tem três pinos:







  • Pino Vcc (Normalmente Vermelho 5V)
  • Pino GND (Normalmente Preto 0V)
  • Pino de sinal de entrada (receber sinal PWM do Arduino)



Funcionamento do Servomotor

Podemos controlar o servo motor conectando o pino Vcc a 5V e o pino GND a 0V. No terminal de cor amarela, fornecemos um PWM sinal que controla o ângulo de rotação do servo motor. A largura do sinal PWM nos dá o ângulo no qual o motor girará seu braço.



Se olharmos para a folha de dados dos servo motores, obtemos os seguintes parâmetros:





  • Período de tempo do sinal PWM
  • Largura mínima para PWM
  • Largura máxima para PWM

Todos esses parâmetros são predefinidos na biblioteca Arduino Servo.

Servomotores com Arduino

Os servomotores são super fáceis de controlar com o Arduino, graças ao Biblioteca de servos o que nos ajuda a personalizar nosso código de acordo com a necessidade e nos permite girar o braço do servo no ângulo desejado.



Todos os três parâmetros mencionados acima são fixados na biblioteca Servo. Usando esses parâmetros, podemos controlar o ângulo do servo motor da seguinte maneira:

  • Se a largura do sinal PWM = WIDTH_MAX, o servo irá girar para 180o
  • Se a largura do sinal PWM = WIDTH_MIIN, o servo irá girar para 0o
  • Se a largura do sinal PWM estiver entre WIDTH_MAX e WIDTH_MIN , o servo motor irá girar entre 0o e 180o

Podemos gerar um sinal PWM desejado em alguns dos pinos do Arduino. O sinal PWM será dado no pino de sinal de entrada do servo motor. Conectando os dois pinos restantes do servo a 5v e GND do Arduino.

Como controlar o servo motor usando Arduino

Aqui vou explicar como podemos conectar e programar nosso servo motor usando o Arduino. Tudo o que você precisa é:

  • Arduino UNO
  • Cabo USB B
  • Servomotor
  • Fios de ligação

Como programar servo com Arduino

Seguem alguns passos simples:

Passo 1: Incluir biblioteca servo predefinida:

# incluir < Servo.h >

Passo 2: Criar objeto servo:

Servo meuservo;

Dica: Caso você esteja controlando mais de um servomotor, você deve criar mais objetos servo:

Servo myservo1;
Servo myservo2;

Etapa 3: Defina o pino de controle (9) no Arduino Uno que envia o sinal PWM para a porta de sinal de entrada do servo:

myservo.attach ( 9 ) ;

Passo 4: Gire o ângulo do servo motor para o valor desejado, por exemplo, 90o:

myservo.write ( posição ) ;

Código Arduino

Abra o programa de exemplo de servo motor de Arquivo>Exemplo>Servo>Sweep , uma nova janela será aberta mostrando nosso esboço de servo:

#include

Servo meuservo; // objeto servo é criado por controle do servo motor
int pos = 0 ; // para armazenar a posição do servo uma nova variável é criada
configuração nula ( ) {
myservo.attach ( 9 ) ; // Isso vai definir pino do Arduino 9 por Saída PWM
}
loop vazio ( ) {
por ( posição = 0 ; posição = 0 ; posição -= 1 ) { // vai de 180 para 0 graus
myservo.write ( posição ) ; // diga ao servo para ir para a posição 'pos'
atraso ( 5 ) ; // espera por 5 ms para que o servo possa alcançar a posição
}
}

Uma vez que o programa é compilado e carregado, o servo motor começará a girar lentamente da posição inicial de 0 graus a 180 graus, um grau de cada vez, como nas etapas. Quando o motor tiver completado a rotação de 180 graus, ele iniciará sua rotação na direção oposta em direção ao seu ponto de partida, ou seja, 0 graus.

Esquemas

Como controlar o servo motor usando potenciômetro

Também podemos controlar a posição do servo motor manualmente. Para fazer isso precisamos de um Potenciômetro . O potenciômetro tem três pinos. Conecte os dois pinos externos a 5V Vcc e GND do Arduino e um do meio ao pino A0 na placa Arduino.

Como programar servo com potenciômetro

A maior parte do esboço do potenciômetro é igual ao exemplo anterior. A única diferença é uma nova variável valor e subpino é definido antes da seção de código de configuração e loop.

int pino = A0;
valor int;

Na seção de loop, o pino analógico A0 é usado para ler os valores do potenciômetro com função analogRead() . As placas Arduino contêm ADC (Analog to Digital Converter) de 10 bits, fornecendo valores entre 0 e 1023, dependendo da posição do potenciômetro:

val = analogRead ( subpino ) ;

Por último, usamos mapa() função para remapear números de 0 a 1023 de acordo com o ângulo do servo como sabemos que os servo motores só podem girar entre 00 e 1800.

val = mapa ( vale, 0 , 1023 , 0 , 180 ) ;

Código Arduino

Esboço de botão aberto disponível no Arduino IDE, vá para Arquivos>Exemplos>Servo>Botão . Uma nova janela será aberta, mostrando nosso esboço de botão para servo:

#include
Servo meuservo; // Criando um nome de objeto servo myservo
int pino = A0; // definindo pino analógico por potenciômetro
valor int; // variável que vai ler valores de pinos analógicos por potenciômetro

configuração nula ( ) {
myservo.attach ( 9 ) ; // pino definido 9 por Sinal de entrada PWM do servo no Arduino
}
loop vazio ( ) {
val = analogRead ( subpino ) ; // lê o valor do potenciômetro ( valor entre 0 e 1023 )
val = mapa ( vale, 0 , 1023 , 0 , 180 ) ; // dimensionar o valor a ser usado com o servo ( valor entre 0 e 180 )
myservo.write ( valor ) ; // define a posição do servo com valor escalonado
atraso ( quinze ) ; // espera por o servo para chegar à posição
}

O código acima nos ajudará a controlar o eixo do servo motor usando o potenciômetro, o eixo girará entre 0 e 180 graus. Também podemos manter a velocidade junto com a direção do servo usando-o.

Diagrama de circuito

Quantos servomotores posso conectar com o Arduino?

O número máximo de servo motores que o Arduino UNO pode manipular é de até 12 com a biblioteca Arduino para servo, e o máximo de 48 servos pode ser conectado com placas como Mega.

Dica: Podemos executar o servo diretamente usando a corrente do Arduino, mas lembre-se de que os servos motores consomem mais de 500mA então sua placa Arduino pode redefinir automaticamente e perder energia. Recomenda-se sempre usar uma fonte de alimentação dedicada para servomotores.

Conclusão

Neste tutorial, abordamos o mecanismo de controle de servo motores com Arduino. Cobrimos os conceitos básicos de controle de posição e velocidade do servo usando potenciômetro. Agora você tem uma ideia sobre servo e as possibilidades para sua robótica, projetos RC e automação usando servo são infinitas.