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:
#includeServo 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:
#includeServo 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.