Índice:

Robô de auto-equilíbrio - Algoritmo de controle PID: 3 etapas
Robô de auto-equilíbrio - Algoritmo de controle PID: 3 etapas

Vídeo: Robô de auto-equilíbrio - Algoritmo de controle PID: 3 etapas

Vídeo: Robô de auto-equilíbrio - Algoritmo de controle PID: 3 etapas
Vídeo: 34 - Controle PID aplicado em robô móvel de rodas (parte 01) 2024, Novembro
Anonim
Robô de Auto Balanceamento - Algoritmo de Controle PID
Robô de Auto Balanceamento - Algoritmo de Controle PID

Este projeto foi concebido porque eu estava interessado em aprender mais sobre Algoritmos de Controle e como implementar efetivamente loops PID funcionais. O projeto ainda está em fase de desenvolvimento, pois um módulo Bluetooth ainda não foi adicionado, o que permitirá o controle do robô a partir de um smartphone habilitado para Bluetooth.

Os motores N20 DC usados eram relativamente baratos e, portanto, têm uma quantidade considerável de jogo neles. Isso leva a um pequeno solavanco quando os motores superam a 'folga' ao aplicar torque nas rodas. Conseqüentemente, é quase impossível alcançar um movimento perfeitamente suave. O código que escrevi é razoavelmente simples, mas demonstra efetivamente os recursos do algoritmo PID.

Resumo do projeto:

O chassi do robô é impresso em 3D usando uma impressora Ender 3 e é projetado para ser encaixado sob pressão.

O robô é controlado por um Arduino Uno que pega os dados do sensor do MPU6050 e controla os motores DC através de um driver de motor externo. Ele funciona com uma bateria de 7,4 V, 1500mAh. O driver do motor regula para 5 V para alimentar o Arduino e fornece 7,4 V para os motores.

O software foi escrito do zero com a ajuda das bibliotecas 'Arduino-KalmanFilter-master' e 'Arduino-MPU6050-master' do gitHub.

Suprimentos:

  • Peças impressas em 3D
  • Arduino UNO
  • Sensor MPU6050 de 6 eixos
  • Motor DC
  • Motores N20 D. C (x2)
  • Bateria 9V

Etapa 1: construção do robô

Robô
Robô
Robô
Robô
Robô
Robô

Impressão e montagem

A construção inteira deve ser ajustada à pressão, mas usei supercola para prender os componentes e garantir que o robô fique totalmente rígido durante o balanceamento.

Eu projetei as peças no Fusion 360 e otimizei cada peça para imprimir sem suportes para permitir tolerâncias mais estreitas e um acabamento de superfície mais limpo.

As configurações usadas na impressora Ender 3 foram: Layer Heights de 0,16 mm com preenchimento de 40% para todas as peças.

Etapa 2: Robô de impressão 3D

Robô de impressão 3D
Robô de impressão 3D

Chassi (x1)

Roda Esquerda (x2)

Carcaça do motor esquerdo (x2)

Capa Arduino (x1)

Etapa 3: Algoritmo de Controle PID

Algoritmo de controle PID
Algoritmo de controle PID

Escrevi um algoritmo de controle PID do zero usando as bibliotecas 'Arduino-KalmanFilter-master' e 'Arduino-MPU6050-master' do gitHub.

A premissa do Algoritmo é a seguinte:

  • Leia os dados brutos do MPU6050
  • Use o filtro Kalman para analisar os dados do giroscópio e do acelerômetro para cancelar as imprecisões nas leituras do giroscópio devido à aceleração do sensor. Isso retorna um valor relativamente suavizado para a inclinação do sensor em graus para duas casas decimais.
  • Calcule o E rror no ângulo, ou seja: O ângulo entre o sensor e o ponto de ajuste.
  • Calcule o erro proporcional como (Constante de proporcionalidade x erro).
  • Calcule o erro integral como a soma parcial de (Constante de integração x erro).
  • Calcule o erro derivado como constante como [(Constante de diferenciação) x (Mudança no erro / Mudança no tempo)]
  • Some todos os erros para fornecer a saída de velocidade a ser enviada aos motores.
  • Calcule em qual direção girar os motores com base no sinal do ângulo de erro.
  • O loop será executado indefinidamente e se baseará na saída conforme a entrada varia. É um loop de feedback, usando os valores de saída como os novos valores de entrada para a próxima iteração.

A etapa final é ajustar os parâmetros Kp, Ki e Kd do loop PID.

  1. Um bom ponto de partida é aumentar lentamente o Kp até que o robô oscile em torno do ponto de equilíbrio e possa cair.
  2. Em seguida, inicie Kd em cerca de 1% do valor de Kp e aumente lentamente até que as oscilações desapareçam e o robô deslize suavemente quando empurrado.
  3. Finalmente, comece com Ki em torno de 20% do Kp e varie até que o robô "ultrapasse" o ponto de ajuste para pegar ativamente uma queda e retornar à vertical.

Recomendado: