Faça login para adicionar itens aos seus favoritos.

Franzininho WiFi: Servo Motor com Arduino

Introdução ao servo motor

O Servo Motor é um equipamento eletromecânico controlável por comandos gerados por um sinal PWM (Pulse Width Modulation). Internamente ao servo, há um encoder junto a um controlador responsáveis por interpretar e executar a movimentação de acordo com a posição e velocidade pretendida. Esse atuador possui modelos com eixo de 180° e outros modelos de 360°. A rotação do eixo varia entre 0 e o valor máximo (180° ou 360°). Caso esse limite seja ultrapassado por um esforço mecânico, pode danificar as engrenagens e acabar inutilizando o mesmo.

Os servos são compostos por três componentes: atuador, encoder e controlador. O atuador é um conjunto de engrenagens (plásticas ou metálicas) responsável por fornecer o torque e velocidade necessários. O encoder tem a função de identificar a posição do servo, geralmente com um minúsculo potenciômetro interno, onde cada valor da resistência elétrica é associado a diferentes posições do eixo do motor. O controlador é responsável por ler o sinal PWM e, através de uma malha fechada (realimentação e comparação), corrigir a posição e executar a movimentação.

O servo motor é um atuador fundamental em projetos de robótica, automação e controle. Ao final deste artigo, você estará apto a desenvolver mecanismos utilizando servos e dar vida às suas criações com a Franzininho WiFi.

Biblioteca ESP32Servo para controle do Servo motor com a Franzininho WiFi

Nesta sessão vamos apresentar os métodos mais comuns utilizados pela biblioteca ESP32Servo, derivada da biblioteca Servo, comumente utilizada em projeto com Arduino, permanecendo os mesmos métodos e exemplos de projetos (Knob e Sweep).

Embarcados Experience 2024: Evento Presencial

Participe do Embarcados Experience 2024 em São Paulo. Conhecimento técnico, palestras, workshops e oportunidade de networking com profissionais experientes.

Inscreva-se agora

attach()

Seleciona a GPIO para o motor servo. Para selecionar o pino é importante lembrar que a GPIO deve ter suporte para gerar o sinal PWM. Devido a sobrecarga do método temos duas opções de configurar, segue abaixo:

  • pin :  pino para o motor servo 
  • pin :  pino para o motor servo 
  • min :  configura o valor mínimo para rotação (valor em microsegundos)
  • max :  configura o valor máximo para rotação (valor em microsegundos)

Retorna o número do canal ou INVALID_SERVO caso não registrou a GPIO

write()

Seleciona o valor em graus do servo. 

  • value :  valor do ângulo desejado

writeMicroseconds()

Seleciona o valor em milissegundos do comprimento dos pulso do sinal modulador (PWM). 

  • value :  valor em milissegundos 

read()

Pega o último escrito para comprimento do pulso.

Retorna o valor em graus da posição atual do servo.(0 – 180).

readMicroseconds()

Pega o último escrito para comprimento do pulso.

Retorna o valor em microsegundos da posição atual do servo.

attached()

Verifica se a GPIO foi configurada.

Retorna true se o servo foi configurado caso contrário false

detach()

Para de utilizar a GPIO configura para o servo

Materiais necessários

Para desenvolver nossa aplicação os materiais utilizados foram:

  • Placa Franzininho WiFi
  • Servo Motor 9g
  • Potenciômetro
  • Jumpers (Opcional)
  • Arduino IDE 

Circuito para controle do Servo motor com a Franzininho WiFi

No circuito proposto utilizamos o motor servo 9g (GPIO 18) conectado ao 5V da placa Franzininho, abaixo segue uma imagem do circuito.   

Servo Motor

Código

O projeto proposto utilizou a comunicação serial para receber pelo Monitor Serial os valores de ângulos que o motor servo vai executar. Nesse projeto é necessário adicionar a biblioteca ESP32Servo.h, para isso acesse Ferramentas -> Gerenciador de Biblioteca (Tools -> Library Manager ), digite no campo de texto o nome da biblioteca, instale e já está pronta para utilizar. 

Simule esse exemplo no Wokwi: https://wokwi.com/projects/363626452192856065

 Explicação do Código

Nesta seção explicaremos cada trecho do código a fim de esclarecer como nosso programa funciona.

Inclusão da biblioteca ES32Servo.h

Declaração das variáveis, para receber os comandos da serial (cmd) e o valor do ângulo desejado (angle).

Cria o objeto do tipo servo:

Declara o pino onde está conectado o motor servo:

No setup(), temos a inicialização da comunicação serial e a seleção da velocidade de comunicação. Configuramos o pino que está conectado ao motor servo no método attach com os valores máximo e mínimo o quais são padrões. E por fim imprimimos uma mensagem para o usuário inserir os valores dos ângulos:

No loop, construímos nossa lógica propriamente dita para receber os comandos da Serial e realizar a execução dos movimentos no motor servo. Dentre os métodos apresentada nesse exemplo de projeto, o que pode ser que não esteja familiarizado é o readStringUntil(), bem esse método apenas pega todos os caracteres que entraram Serial e devolver até último caractere antes do ‘\n’ (fim de linha):

Conclusão

Nesse artigo abordamos sobre o motor servo e os métodos da biblioteca (ESP32Servo), esse atuador possui elevada precisão e é muito simples de realizar sua montagem no circuito. Devido a sua popularidade esse motor atende a uma vasta quantidade de aplicações: robótica, aeromodelismo, automação, Controle Eletromecânicos e diversas outras áreas. No exemplo de projeto apresentamos uma das possíveis formas de criar uma interface Serial para o controle de servos, mas encorajamos a procurar outros projetos para explorar mais esse atuador. 

Saiba mais

Franzininho WiFi: PWM (Pulse Width Modulation) com Arduino

Franzininho WiFi: PWM com CircuitPython

Controle de servomotores com Arduino e ESP8266

Franzininho WiFi – PWM com LEDC no ESP-IDF

Outros artigos da série

<< Franzininho WiFi: Comunicação Serial (UART) com ArduinoFranzininho WiFi: Web Server >>
Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.
Comentários:
Notificações
Notificar
0 Comentários
recentes
antigos mais votados
Inline Feedbacks
View all comments
Home » Software » Franzininho WiFi: Servo Motor com Arduino

EM DESTAQUE

WEBINARS

LEIA TAMBÉM

JUNTE-SE HOJE À COMUNIDADE EMBARCADOS

Talvez você goste: