산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Manufacturing Technology >> 제조공정

DIY Arduino 짐벌 | 자체 안정화 플랫폼

<메인 클래스="사이트 메인" id="메인">

이 튜토리얼에서는 Arduino Gimbal 또는 서보 모터가 있는 자체 안정화 플랫폼을 구축하는 방법을 배웁니다. 이 튜토리얼은 실제로 MPU6050 튜토리얼에 대한 이전 튜토리얼의 확장입니다.

다음 비디오를 보거나 아래에 작성된 튜토리얼을 읽을 수 있습니다.

개요

3D 모델링 소프트웨어를 사용하여 짐벌을 설계했습니다. 3축 제어를 위한 3개의 MG996R 서보 모터와 MPU6050 센서, 아두이노, 배터리를 놓을 베이스로 구성되어 있습니다.

이 3D 모델을 찾아 다운로드할 수 있을 뿐만 아니라 브라우저에서 Thangs를 탐색할 수도 있습니다.

STL 파일:

내 Creality CR-10 3D 프린터를 사용하여 모든 부품을 3D로 인쇄했는데 완벽했습니다.

조립

짐벌 조립은 아주 쉬웠습니다. Yaw 서보 설치부터 시작했습니다. M3 볼트와 너트를 사용하여 베이스에 고정했습니다.

다음으로 같은 방법으로 롤 서보를 고정했습니다. 부품은 MG996R 서보에 쉽게 맞도록 특별히 설계되었습니다.

부품을 서로 연결하기 위해 서보와 함께 액세서리로 제공되는 둥근 뿔을 사용했습니다.

먼저 둥근 혼을 두 개의 볼트로 베이스에 고정한 다음 다른 볼트를 사용하여 이전 서보에 부착해야 합니다.

나머지 구성 요소, Pitch 서보 및 상단 플랫폼을 조립하기 위해 이 과정을 반복했습니다.

다음으로, 정리를 유지하기 위해 홀더 구멍을 통해 서보 와이어를 통과시켰습니다. 그런 다음 MPU6050 센서를 삽입하고 볼트와 너트로 베이스에 고정했습니다.

프로젝트에 전원을 공급하기 위해 이 배터리 홀더에 넣은 2개의 리튬 이온 배터리를 사용했습니다. 두 개의 볼트와 너트를 사용하여 배터리 홀더를 베이스에 고정했습니다.

2개의 리튬 이온 배터리는 약 7.4V를 생성하지만 Arduino와 서보에 전원을 공급하려면 5V가 필요합니다.

그래서 7.4V를 5V로 변환하는 벅 컨버터를 사용했습니다.

Arduino 짐벌 회로도

이제 남은 것은 모든 것을 하나로 연결하는 것입니다. 다음은 이 프로젝트의 회로도와 모든 것이 연결되어야 하는 방법입니다.

아래 링크에서 이 Arduino 튜토리얼에 필요한 구성요소를 얻을 수 있습니다.

마지막에는 전자 부품과 전선을 베이스에 짜넣고 바닥에 있는 이 덮개를 사용하여 덮었습니다.

이것으로 자체 균형 플랫폼 또는 Arduino 짐벌이 완료되고 예상대로 잘 작동합니다. 이제 프로그램을 살펴보는 일만 남았습니다.

Arduino 코드

이 예제의 Arduino 코드는 Jeff Rowberg의 i2cdevlib 라이브러리에서 MPU6050_DMP6 예제를 수정한 것입니다.

여기에서 코드를 다운로드할 수 있습니다.

코드 설명: 그래서 우리는 판독 가능한 요, 피치 및 롤 출력을 사용하고 있습니다.

// 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)

값을 얻으면 먼저 라디안에서 각도로 변환합니다.

// 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)

그런 다음 이 시간 동안 센서가 여전히 자체 보정 프로세스에 있기 때문에 기다리거나 300번 판독합니다. 또한 처음에는 Pitch 및 Roll 값과 같이 0이 아니라 항상 임의의 값인 Yaw 값을 캡처합니다.

// 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)

300회 판독 후, 먼저 위에서 캡처한 임의 값을 빼서 Yaw를 0으로 설정합니다. 그런 다음 -90도에서 +90도까지의 Yaw, Pitch 및 Roll 값을 서보를 구동하는 데 사용되는 0에서 180까지의 값으로 매핑합니다.

// 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)

마지막으로 쓰기 기능을 사용하여 이 값을 제어 신호로 서보에 보냅니다. 물론 X, Y축에 대한 안정화만 원하면 Yaw 서보를 비활성화하고 이 플랫폼을 카메라 짐벌로 사용할 수 있습니다.

이것은 좋은 카메라 짐벌과는 거리가 멀다는 점에 유의하십시오. 이러한 서보는 그러한 목적을 위한 것이 아니기 때문에 움직임이 매끄럽지 않습니다. 실제 카메라 짐벌은 부드러운 움직임을 위해 특수한 유형의 BLDC 모터를 사용합니다. 따라서 이 프로젝트를 교육 목적으로만 고려하십시오.

이것이 이 튜토리얼의 전부입니다. 이 튜토리얼을 즐기고 새로운 것을 배우셨기를 바랍니다. 아래 댓글 섹션에서 언제든지 질문을 하고 내 Arduino 프로젝트 컬렉션을 확인하는 것을 잊지 마세요.


제조공정

  1. DIY LUMAZOID Arduino 뮤직 비주얼라이저
  2. Arduino와 스마트폰을 사용한 DIY 전압계
  3. 서보 모터로 로봇을 피하는 장애물
  4. DIY 가상 현실 스케이트보드
  5. Arduino 교육 플랫폼
  6. DIY Arduino RADIONICS 치료 기계
  7. DIY 2D 모션 레이싱 시뮬레이터
  8. Arduino Trash-Bot(휴지통 자동 열기/닫기)
  9. 솔로 서보 스윕
  10. RFID를 사용한 DIY 아이디어