Robótica

Estabilizador com Arduino

Eletrogate 6 de fevereiro de 20245min

O que é um estabilizador?

Os estabilizadores são dispositivos versáteis presentes em diversos equipamentos eletrônicos, destinados a minimizar movimentos indesejados e proporcionar maior estabilidade durante o uso. Sua aplicação abrange desde smartphones até câmeras de ação e drones. A principal função dos estabilizadores digitais é contrabalançar vibrações e tremores que podem ocorrer durante atividades em movimento, garantindo resultados mais suaves e consistentes. Esses dispositivos empregam tecnologia digital para detectar e corrigir automaticamente os deslocamentos.


Como funcionam os estabilizadores?

O funcionamento de um estabilizador, seja ele para câmeras, smartphones ou outros dispositivos eletrônicos, baseia-se no emprego de sensores e sistemas de controle   para contrabalançar movimentos indesejados, como detalha a seguir:

Sensores Giroscópios e Acelerômetros: O estabilizador possui sensores giroscópios e acelerômetros embutidos. Os giroscópios medem a taxa de rotação e os   acelerômetros detectam acelerações lineares. Juntos, esses sensores fornecem informações precisas sobre os movimentos e a orientação do dispositivo.

Cálculo de Movimento: O processador do estabilizador utiliza as informações dos sensores para calcular os movimentos indesejados que estão ocorrendo. Isso inclui   inclinações, rotações e deslocamentos em todas as direções.

Motores e Atuadores: Com base nos cálculos, o sistema determina as correções necessárias para manter o dispositivo nivelado e estável. O estabilizador possui   motores e atuadores responsáveis por realizar essas correções.

Feedback em Tempo Real: O sistema opera em tempo real, recebendo continuamente informações dos sensores, calculando correções necessárias e ajustando os       motores e contrapesos para manter a estabilidade.

O resultado desse processo é uma plataforma estável que contrabalança efetivamente os movimentos do operador, proporcionando vídeos e imagens suaves e  profissionais, mesmo em condições dinâmicas. Esse tipo de estabilização é amplamente utilizado em diversas situações em que a estabilidade é crucial.

A seguir, desenvolveremos um estabilizador baseado no princípio de contrabalanceamento no eixo do sensor MPU-6050. Para uma determinada angulação, o servo gira esse mesmo valor no sentido oposto ao do sensor, a fim de manter em 0, pois x°- x°= 0. Devemos levar em consideração de que este estabilizador não possui precisão angular, principalmente pelo uso de peças de baixa precisão, como o servo Sg-90 e o giroscópio MPU-6050.


Circuito

Montagem:


Código

#include <MPU6050_tockn.h>  // Inclui a biblioteca para o MPU6050
#include <Wire.h>           // Inclui a biblioteca para a comunicação I2C
#include <Servo.h>          // Inclui a biblioteca para controle do servo motor

MPU6050 mpu6050(Wire);      // Cria uma instância do objeto MPU6050
Servo servo;                 // Cria uma instância do objeto Servo

void setup() {
  Serial.begin(9600);       // Inicializa a comunicação serial com taxa de 9600 bps
  Wire.begin();             // Inicializa a comunicação I2C
  mpu6050.begin();          // Inicializa o sensor MPU6050
  mpu6050.calcGyroOffsets(true);  // Calcula e compensa automaticamente os offsets do giroscópio
  mpu6050.update();         // Atualiza os valores do sensor
  servo.attach(7);           // Anexa o servo motor ao pino digital 7
}

void loop() {
  mpu6050.update();                   // Atualiza os valores do sensor MPU6050
  Serial.println(mpu6050.getAngleX());  // Imprime o ângulo em torno do eixo X no console serial
  servo.write(map(mpu6050.getAngleX(), 0, 175, 175, 0));  // Mapeia o ângulo lido para o intervalo do servo e define a posição do servo motor

}

Entendendo o código

As três primeiras linhas de código, são incluídas as bibliotecas necessárias para o projeto. MPU6050_tockn.h é uma biblioteca para interagir com o sensor MPU6050, Wire.h é para comunicação I2C, e Servo.h é para controle do servo motor.

Nas linhas 5 e 6, são criadas as instâncias dos objetos mpu6050 e servo.mpu6050 é utilizado para interagir com o sensor MPU6050, enquanto servo é utilizado para controlar o servo motor.

No setup(), são realizadas as configurações iniciais:

  • Inicia a comunicação serial a 9600 bps para exibir informações no console.
  • Inicializa a comunicação I₂C para interagir com o MPU6050.
  • Inicializa o MPU6050.
  • Calcula e compensa automaticamente os offsets do giroscópio.
  • Atualiza os valores do sensor.
  • Anexa o servo motor ao pino digital 7.

No loop(), o código é executado continuamente:

  • Atualiza os valores do sensor MPU6050.
  • Imprime o ângulo em torno do eixo X no console serial.
  • Mapeia o ângulo lido para o intervalo do servo e define a posição do servo motor. O servo motor é controlado com base no ângulo medido pelo MPU6050.

Resumindo, este código lê a inclinação do sensor MPU6050 no eixo X e usa essa informação para controlar a posição de um servo motor no sentido contrário, assim criando um sistema de estabilização.

Digo novamente: Devemos levar em consideração de que este estabilizador não possui precisão angular, principalmente pelo uso de peças de baixa precisão, como o servo Sg-90 e o giroscópio MPU-6050, além do código que não possui lógicas e sistemas avançados de compensação.


Demonstração

Primeiramente, devemos prestar atenção à posição do sensor sobre o servo. A face das soldas (a face lisa, oposta à face dos chips) deve estar alinhada com a face adesivada do servo. Dessa forma, o eixo e os fios do servo devem ficar à direita do chip.

Devemos levar em consideração algumas limitações deste projeto, como a imprecisão, que já foi mencionada anteriormente, e o fato de que o servo utilizado tem um limite de aproximadamente 180°. Para obter mais graus de liberdade, é opte por servos 360° ou motores de passo.


Sobre o Autor


Daniel Vasconcelos

Tenho 14 anos, meu primeiro contato com eletrônica foi aos 5 anos, e com o Arduino aos 12. Desde então venho explorando mais desse mundo incrível.


Eletrogate

6 de fevereiro de 2024

A Eletrogate é uma loja virtual de componentes eletrônicos do Brasil e possui diversos produtos relacionados à Arduino, Automação, Robótica e Eletrônica em geral.

Tenha a Metodologia Eletrogate dentro da sua Escola! Conheça nosso Programa de Robótica nas Escolas!

Eletrogate Robô

Cadastre-se e fique por
dentro de novidades!