Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Manufacturing Technology >> Processo de manufatura

Gimbal Arduino DIY | Plataforma auto-estabilizadora


Neste tutorial vamos aprender a construir um Arduino Gimbal ou uma plataforma auto-estabilizadora com servo motores. Este tutorial é na verdade uma extensão do tutorial anterior sobre o tutorial MPU6050.

Você pode assistir ao vídeo a seguir ou ler o tutorial escrito abaixo.

Visão geral


Eu projetei o gimbal usando um software de modelagem 3D. É composto por 3 servo motores MG996R para o controle de 3 eixos, e uma base na qual serão colocados o sensor MPU6050, o Arduino e a bateria.

Você pode encontrar e baixar este modelo 3D, bem como explorá-lo em seu navegador em Thangs.

Arquivos STL:

Usando minha impressora 3D Creality CR-10, imprimi em 3D todas as peças e elas ficaram perfeitas.

Montagem


A montagem do gimbal foi bastante fácil. Comecei com a instalação do servo Yaw. Usando parafusos e porcas M3, prendi-o à base.

Em seguida, usando o mesmo método, prendi o servo Roll. As peças são projetadas especificamente para encaixar facilmente nos servos MG996R.

Para conectar as peças umas às outras, usei os chifres redondos que vêm como acessórios com os servos.

Primeiro, precisamos prender o chifre redondo na base com dois parafusos e, em seguida, prendê-lo ao servo anterior usando outro parafuso.

Repeti este processo para montar o resto dos componentes, o servo Pitch e a plataforma superior.

Em seguida, passei os fios dos servos pelas aberturas dos suportes para mantê-los organizados. Em seguida, inseri o sensor MPU6050 e prendi-o na base com um parafuso e uma porca.

Para alimentar o projeto, usei 2 baterias Li-ion que coloquei neste suporte de bateria. Eu prendi o suporte da bateria na base usando dois parafusos e porcas.

As 2 baterias Li-ion produzirão cerca de 7,4V, mas precisamos de 5V para alimentar o Arduino e os servos.

É por isso que usei um conversor buck que converterá 7,4V para 5V.

Diagrama de circuito do cardan do Arduino


O que resta agora, é conectar tudo junto. Aqui está o diagrama de circuito deste projeto e como tudo precisa ser conectado.

Você pode obter os componentes necessários para este tutorial do Arduino nos links abaixo:
  • MPU6050 IMU ………………………………. AmazôniaBanggood / AliExpress
  • MG996R Servo ………………………………. AmazôniaBanggood / AliExpress
  • Conversor de moeda …………………………………
  • Placa Arduino ……………………………..…..
  • Breadboard e jump wires ………… 

No final, apertei os componentes eletrônicos e os fios na base e os cobri usando essa tampa na parte inferior.

Com isso, a plataforma de auto-balanceamento ou o gimbal Arduino é feito e funciona bem como esperado. O que resta é dar uma olhada no programa.

Código do Arduino


O código Arduino para este exemplo é uma modificação do exemplo MPU6050_DMP6 da biblioteca i2cdevlib de Jeff Rowberg.

Aqui você pode baixar o código:

Descrição do código: Então, estamos usando a guinada, inclinação e rotação legíveis de saída.
// Get Yaw, Pitch and Roll values
#ifdef OUTPUT_READABLE_YAWPITCHROLL
    mpu.dmpGetQuaternion(&q, fifoBuffer);
    mpu.dmpGetGravity(&gravity, &q);
    mpu.dmpGetYawPitchRoll(ypr, &q, &gravity);

    // Yaw, Pitch, Roll values - Radians to degrees
    ypr[0] = ypr[0] * 180 / M_PI;
    ypr[1] = ypr[1] * 180 / M_PI;
    ypr[2] = ypr[2] * 180 / M_PI;
    
    // Skip 300 readings (self-calibration process)
    if (j <= 300) {
      correct = ypr[0]; // Yaw starts at random value, so we capture last value after 300 readings
      j++;
    }
    // After 300 readings
    else {
      ypr[0] = ypr[0] - correct; // Set the Yaw to 0 deg - subtract  the last random Yaw value from the currrent value to make the Yaw 0 degrees
      // Map the values of the MPU6050 sensor from -90 to 90 to values suatable for the servo control from 0 to 180
      int servo0Value = map(ypr[0], -90, 90, 0, 180);
      int servo1Value = map(ypr[1], -90, 90, 0, 180);
      int servo2Value = map(ypr[2], -90, 90, 180, 0);
      
      // Control the servos according to the MPU6050 orientation
      servo0.write(servo0Value);
      servo1.write(servo1Value);
      servo2.write(servo2Value);
    }
#endifCode language: Arduino (arduino)

Depois de obter os valores, primeiro os convertemos de radianos para graus.
// Yaw, Pitch, Roll values - Radians to degrees
    ypr[0] = ypr[0] * 180 / M_PI;
    ypr[1] = ypr[1] * 180 / M_PI;
    ypr[2] = ypr[2] * 180 / M_PI;Code language: Arduino (arduino)

Então esperamos ou fazemos 300 leituras, pois o sensor ainda está em processo de autocalibração durante esse tempo. Além disso, capturamos o valor Yaw, que no início não é 0 como os valores Pitch and Roll, mas sempre um valor aleatório.
// Skip 300 readings (self-calibration process)
    if (j <= 300) {
      correct = ypr[0]; // Yaw starts at random value, so we capture last value after 300 readings
      j++;
    }Code language: Arduino (arduino)

Após as 300 leituras, primeiro definimos o Yaw para 0 subtraindo o valor aleatório capturado acima. Em seguida, mapeamos os valores de Yaw, Pitch and Roll, de – 90 a +90 graus, em valores de 0 a 180 que são usados ​​para acionar os servos.
// After 300 readings
    else {
      ypr[0] = ypr[0] - correct; // Set the Yaw to 0 deg - subtract  the last random Yaw value from the currrent value to make the Yaw 0 degrees
      // Map the values of the MPU6050 sensor from -90 to 90 to values suatable for the servo control from 0 to 180
      int servo0Value = map(ypr[0], -90, 90, 0, 180);
      int servo1Value = map(ypr[1], -90, 90, 0, 180);
      int servo2Value = map(ypr[2], -90, 90, 180, 0);
      
      // Control the servos according to the MPU6050 orientation
      servo0.write(servo0Value);
      servo1.write(servo1Value);
      servo2.write(servo2Value);
    }Code language: Arduino (arduino)

Finalmente, usando a função de escrita, enviamos esses valores para os servos como sinais de controle. Claro, você pode desativar o servo Yaw se quiser apenas estabilização para os eixos X e Y e usar esta plataforma como gimbal da câmera.

Observe que isso está longe de ser um bom gimbal de câmera. Os movimentos não são suaves porque esses servos não são feitos para tal propósito. Gimbals de câmera reais usam um tipo especial de motores BLDC para obter movimentos suaves. Portanto, considere este projeto apenas para fins educacionais.

Isso seria tudo para este tutorial, espero que tenham gostado e aprendido algo novo. Sinta-se à vontade para fazer qualquer pergunta na seção de comentários abaixo e não se esqueça de verificar minha coleção de projetos do Arduino.

Processo de manufatura

  1. DIY LUMAZOID Arduino Music Visualiser
  2. Faça você mesmo voltímetro usando Arduino e Smartphone
  3. Obstáculos para evitar o robô com servo motor
  4. Faça você mesmo skate de realidade virtual
  5. Plataforma de treinamento Arduino
  6. Faça você mesmo Arduino RADIONICS Tratamento MMachine
  7. Simulador de corrida de movimento 2D DIY
  8. Arduino Trash-Bot (abrir / fechar automaticamente a lixeira)
  9. Varredura Servo Solo
  10. Ideia DIY com RFID