Controle de Servo Motor usando Arduino

Tempo de leitura: 4 minutes

Neste tutorial, vamos controlar um servo motor por ARDUINO UNO. Servomotores são usados ​​onde há necessidade de movimento ou posição precisa do eixo. Estes não são propostos para aplicações de alta velocidade. Estes são propostos para baixa velocidade, torque médio e aplicação de posição precisa. Esses motores são usados ​​em máquinas de braço robótico, controles de vôo e sistemas de controle.

Servo motores estão disponíveis em diferentes formas e tamanhos. Um servo motor terá principalmente fios lá, um é para tensão positiva, outro é para terra e o último é para ajuste de posição. O fio VERMELHO está conectado à energia, o fio preto está conectado ao terra e o fio AMARELO está conectado ao sinal.

Guia-De-Configuração-Programação-Arduino-LCD-1


Um servo motor é uma combinação de motor DC, sistema de controle de posição e engrenagens. A posição do eixo do motor CC é ajustada pela eletrônica de controle no servo, com base na taxa de serviço do sinal PWM do pino SIGNAL.

Simplesmente falando, a eletrônica de controle ajusta a posição do eixo controlando o motor DC. Estes dados sobre a posição do eixo são enviados através do pino SIGNAL. Os dados de posição para o controle devem ser enviados na forma de sinal PWM através do pino de sinal do servo motor.

A frequência do sinal PWM (Pulse Width Modulated) pode variar com base no tipo de servo motor. O importante aqui é a relação de deveres do sinal PWM. Com base nesta DUTY RATION, a eletrônica de controle ajusta o eixo.

Como mostrado na figura abaixo, para que o eixo seja movido para as 9 horas, a TURN ON RATION deve ser 1/18. 1ms de tempo ON e 17ms de tempo OFF em um sinal de 18ms.

Guia-De-Configuração-Programação-Arduino-LCD-1

Para que o eixo seja movido para o relógio de 12 horas, o tempo LIGADO do sinal deve ser 1,5ms e o tempo DESLIGADO deve ser 16,5ms. Essa relação é decodificada pelo sistema de controle em servo e ajusta a posição com base nele. Este PWM aqui é gerado usando ARDUINO UNO.

Componentes do circuito

Hardware: Arduino Uno, fonte de alimentação (5v), capacitor 100uF, botões (duas peças), resistor de 1KΩ (duas peças), servo motor (que precisava ser testado).

Software: Arduino IDE (Arduino noturno).

Diagrama e explicação do circuito do servo motor Arduino

Guia-De-Configuração-Programação-Arduino-LCD-1

Em casos normais, precisamos ir aos registros do controlador para ajustar a frequência e obter a taxa de serviço necessária para o controle preciso da posição do servo, no ARDUINO não precisamos fazer essas coisas.

No ARDUINO, temos bibliotecas predefinidas, que definirão as taxas de frequências e deveres de acordo com a solicitação ou inclusão do arquivo de cabeçalho. No ARDUINO, basta declarar a posição do servo necessária e o PWM é automaticamente ajustado pelo UNO.

As coisas que precisamos fazer para obter uma posição precisa do servo são:

    #include <Servo.h>
    Servo sg90servo;
    Sg90.attach(servo_signal_pin_attached_to);
    Sg90.write(needed_position_angle);

Primeiro precisamos definir a frequência do sinal PWM e, para isso, devemos chamar o arquivo de cabeçalho “#include “. Ao incluir esse arquivo de cabeçalho no programa, a frequência é definida automaticamente e usamos algumas condições especiais, que permite ao usuário entrar na posição necessária do servo diretamente, sem distorção.

Agora, precisamos definir um nome para o servo “Servo sg90sevo”, aqui ‘sg90servo’ é o nome escolhido. Portanto, enquanto escrevemos para poção, vamos usar esse nome, esse recurso é útil quando temos muitos servos para controlar, podemos controlar até oito servo por isso.

Agora dizemos à Uno onde o pino de sinal do servo está conectado ou onde ele precisa gerar o sinal PWM. Para fazer isso, temos “Sg90.attach(3);”, aqui estamos informando à Uno que conectamos o pino de sinal do servo no PIN3.

Tudo o que resta é definir a posição, vamos definir a posição do servo usando “Sg90.write(30);”, com este comando o ponteiro do servo se move 30 graus, então é isso. Depois disso, sempre que precisarmos mudar a posição do servo, precisamos chamar o comando ”Sg90.write(proxima_posicao_angulo);”. Neste circuito, teremos dois botões, um botão aumenta a posição do servo e o outro é para diminuir a posição do servo.

O tutorial de controle do servomotor do Arduino é explicado passo a passo do código C fornecido abaixo.

Código

volatile int i=0;// inicializando um número inteiro para aumentar e diminuir a taxa de serviço.

#include <Servo.h>// arquivo de cabeçalho para controlar servo

Servo servo;// definindo o uso do nome como o próprio servo

void setup()
{
 pinMode(3, OUTPUT); // define o pin3 como saída
 pinMode(0, INPUT);  // define o pin0 como saída
 pinMode(1, INPUT);  // define o pin1 como saída
}

void loop()
{
    servo.write(i);//definir servo 'i' graus
 
 if (digitalRead(0)==LOW)
 {
  if (i<180)
  {
   i++;//se pin0 for pressionado e graus forem menores que 180
   delay(30);
  }
 }

 if (digitalRead(1)==LOW)
 {
  if (i>0)
  {
   i--;//se pin1 for pressionado e graus forem maiores que 0
   delay(30);
  }
 }
}
Visits: 1 Visits: 1200547