MASIGNALPHAS2101
6680671983845063762

Cara Membuat Stabilizer Kamera Gimbal dengan Arduino

Cara Membuat Stabilizer Kamera Gimbal dengan Arduino
Add Comments
12/11/2018
Stabilizer kamera ini dapat mempertahankan posisi pengambilan gambar tetap lurus walaupun posisi dari dasar tempat pemgambilan gambar tidak lurus.

Gyroscope

Gyroscope adalah suatu alat elektronik yang berfungsi untuk mengukur kecepatan sudut dengan satuan (°/s) yang dialami oleh suatu benda pada pitch, roll dan yaw. Sehingga dengan memanfaatkan data kecepatan sudut tersebut dapat diketahui sudut kemiringan suatu benda.

Gimbal
Presisi Gyroscope
MPU-6050

MPU-6050 Module adalah sebuah modul berinti MPU-6050 yang merupakan 6 axis Motion Processing Unit dengan penambahan regulator tegangan dan beberapa komponen pelengkap lainnya yang membuat modul ini siap dipakai dengan tegangan supply sebesar 3-5VDC.  Modul ini memiliki interface I2C yang dapat disambungkan langsung ke MCU yang memiliki fasilitas I2C.

Sensor MPU-6050  berisi sebuah MEMS Accelerometer dan sebuah MEMS Gyro yang saling terintegrasi. Sensor ini sangat akurat dengan fasilitas hardware internal 16 bit ADC untuk setiap kanalnya. Sensor ini akan menangkap nilai kanal axis  X, Y dan Z bersamaan dalam satu waktu.
Gimbal
Modul MPU-5060

Berikut adalah spesifikasi dari Modul ini :

Berbasis Chip MPU-6050
Supply tegangan berkisar 3-5V
Gyroscope range + 250 500 1000 2000 °/s
Acceleration range: ± 2 ± 4 ± 8 ± 16 g
Communication standard I2C
Chip built-in 16 bit AD converter, 16 bits data output
Jarak antara pin header 2.54 mm
Dimensi modul 20.3mm x 15.6mm
Untuk informasi lebih lanjut mengenai MPU-6050 dapat dilihat melalui url ini: TDK

Hardware

Selain MPU-5060, ada beberapa hardware pendukung untuk membuat Stabilizer Kamera Gimbal, yaitu:
  1. Arduino UNO. (opsi 1)
  2. Motor Servo, 2 buah.
  3. Baterai, 7,4 VDC. (opsi2)
Opsi 1: bisa menggunakan tipe arduino lain
Opsi 2: bisa menggunakan power supply lain (>7 volt)

Software

Seperti biasa, pada tutorial kali ini saya menggunakan software:
Frirtzing, untuk mendesain skematik.
Arduino IDE, untuk menulis dan mamasukkan program ke dalam arduino
Setelah membaca keterangan diatas dan mempersiapkan bahan-bahannya, selanjutnya ikuti langkah pembuatan dibawah ini. Ingat, Jangan sampai terlewat...!

Scan Alamat MPU-6050 (Flash Modul)

Rangkaian ini berfungsi untuk menjalankan Modul MPU-6050 agar dapat bekerja/berfungsi sesuai dengan kebutuhan. Sensor MPU-6050 ini terdiri dari 3 axis accelerometer (untuk mengukur percepatan linear sumbu x, y dan z) dan 3 axis gyroscope (untuk mengukur kecepatan putar terhadap sumbu x, y dan z). Rangkaian untuk flash adalah sebagai berikut:
Gimbal

Program Scan Alamat MPU6050

Library yang dibutuhkan untuk program scan alamat pada modul MPU-6050 ini adalah sebagai berikut:
Rangkailah komponen seperti diatas, kemudian upload program dibawah ini:
#include <Wire.h>
void setup()
{
  Wire.begin();
  Serial.begin(9600);
  Serial.println("\nI2C Scanner");
} 
void loop()
{
  byte error, address;
  int nDevices;
  Serial.println("Scanning...");
  nDevices = 0;
  for(address = 1; address < 127; address++ ) 
  {
    // The i2c_scanner uses the return value of
    // the Write.endTransmisstion to see if
    // a device did acknowledge to the address.
    Wire.beginTransmission(address);
    error = Wire.endTransmission();
    if (error == 0)
    {
      Serial.print("I2C device found at address 0x");
      if (address<16) 
        Serial.print("0");
      Serial.print(address,HEX);
      Serial.println("  !"); 
      nDevices++;
    }
    else if (error==4) 
    {
      Serial.print("Unknow error at address 0x");
      if (address<16) 
        Serial.print("0");
      Serial.println(address,HEX);
    }    
  }
  if (nDevices == 0)
    Serial.println("No I2C devices found\n");
  else
    Serial.println("done\n");
 
  delay(5000);           // wait 5 seconds for next scan
}
Setelah selesai, buka Serial Monitor akan menampilkan alamat modul MPU-6050 yang digunakan. Catat alamatnya dan tuliskan di program pencarian sudut dibawah.
Gimbal
Tampilan Port Scaning pada Serial Monitor

Program Mencari Sudut Gyroscope

Selanjutnya adalah mencari besarnya sudut gyroscope, accelerometer dan temperature dari modul MPU-6050 dengan memasukkan program berikut ke dalam mikrokontroller Arduino Mega2560.
// MPU-6050 Short Example Sketch
#include<Wire.h>
const int MPU=0x68;  // I2C address of the MPU-6050
int16_t AcX,AcY,AcZ,Tmp,GyX,GyY,GyZ;
void setup(){
  Wire.begin();
  Wire.beginTransmission(MPU);
  Wire.write(0x6B);  // PWR_MGMT_1 register
  Wire.write(0);     // set to zero (wakes up the MPU-6050)
  Wire.endTransmission(true);
  Serial.begin(9600);
}
void loop(){
  Wire.beginTransmission(MPU);
  Wire.write(0x3B);  // starting with register 0x3B (ACCEL_XOUT_H)
  Wire.endTransmission(false);
  Wire.requestFrom(MPU,14,true);  // request a total of 14 registers
  AcX=Wire.read()<<8|Wire.read();  // 0x3B (ACCEL_XOUT_H) & 0x3C (ACCEL_XOUT_L)     
  AcY=Wire.read()<<8|Wire.read();  // 0x3D (ACCEL_YOUT_H) & 0x3E (ACCEL_YOUT_L)
  AcZ=Wire.read()<<8|Wire.read();  // 0x3F (ACCEL_ZOUT_H) & 0x40 (ACCEL_ZOUT_L)
  Tmp=Wire.read()<<8|Wire.read();  // 0x41 (TEMP_OUT_H) & 0x42 (TEMP_OUT_L)
  GyX=Wire.read()<<8|Wire.read();  // 0x43 (GYRO_XOUT_H) & 0x44 (GYRO_XOUT_L)
  GyY=Wire.read()<<8|Wire.read();  // 0x45 (GYRO_YOUT_H) & 0x46 (GYRO_YOUT_L)
  GyZ=Wire.read()<<8|Wire.read();  // 0x47 (GYRO_ZOUT_H) & 0x48 (GYRO_ZOUT_L)
  
  Serial.print("Accelerometer: ");
  Serial.print("X = "); Serial.print(AcX);
  Serial.print(" | Y = "); Serial.print(AcY);
  Serial.print(" | Z = "); Serial.println(AcZ);
  //equation for temperature in degrees C from datasheet
  Serial.print("Temperature: "); Serial.print(Tmp/340.00+36.53); Serial.println(" C "); 
  
  Serial.print("Gyroscope: ");
  Serial.print("X = "); Serial.print(GyX);
  Serial.print(" | Y = "); Serial.print(GyY);
  Serial.print(" | Z = "); Serial.println(GyZ);
  Serial.println(" ");
  delay(333);
}
Kemudian buka serial monitor akan telihat besar sudut gyroscope, accelerometer dan temperature pada modul MPU-6050 seperti pada gambar berikut:
Gimbal
Tampilan Besar Sudut pada Serial Monitor
Setelah sesesai pada tahap diatas, selanjutnya kita akan membuat rangkaian Stabilizer Kamera. Rangkailah semua komponen seperti dibawah ini:
Skema Rangkaian
Rangkaian dia atas menggunakan catu daya +7,4 VDC untuk kebutuhan dari Arduino UNO, sementara motor servo dan modul MPU-5060 menggunakan +5 VDC. Setelah itu tata letak komponen dipasang di protoboard atau PCB agar komponen pendukung dapat berkomunikasi dengan baik.
Gimbal
Tata Letak Rangkaian Keseluruhan
Kemudian memasukkan program ke dalam Arduino dengan program dibawah:

Program Stabilizer Kamera

// MPU-6050 Short Example Sketch
#include<Wire.h>
const int MPU=0x68;  // I2C address of the MPU-6050
int16_t AcX,AcY,AcZ,Tmp,GyX,GyY,GyZ;
void setup(){
  Wire.begin();
  Wire.beginTransmission(MPU);
  Wire.write(0x6B);  // PWR_MGMT_1 register
  Wire.write(0);     // set to zero (wakes up the MPU-6050)
  Wire.endTransmission(true);
  Serial.begin(9600);
}
void loop(){
  Wire.beginTransmission(MPU);
  Wire.write(0x3B);  // starting with register 0x3B (ACCEL_XOUT_H)
  Wire.endTransmission(false);
  Wire.requestFrom(MPU,14,true);  // request a total of 14 registers
  AcX=Wire.read()<<8|Wire.read();  // 0x3B (ACCEL_XOUT_H) & 0x3C (ACCEL_XOUT_L)     
  AcY=Wire.read()<<8|Wire.read();  // 0x3D (ACCEL_YOUT_H) & 0x3E (ACCEL_YOUT_L)
  AcZ=Wire.read()<<8|Wire.read();  // 0x3F (ACCEL_ZOUT_H) & 0x40 (ACCEL_ZOUT_L)
  Tmp=Wire.read()<<8|Wire.read();  // 0x41 (TEMP_OUT_H) & 0x42 (TEMP_OUT_L)
  GyX=Wire.read()<<8|Wire.read();  // 0x43 (GYRO_XOUT_H) & 0x44 (GYRO_XOUT_L)
  GyY=Wire.read()<<8|Wire.read();  // 0x45 (GYRO_YOUT_H) & 0x46 (GYRO_YOUT_L)
  GyZ=Wire.read()<<8|Wire.read();  // 0x47 (GYRO_ZOUT_H) & 0x48 (GYRO_ZOUT_L)
  
  Serial.print("Accelerometer: ");
  Serial.print("X = "); Serial.print(AcX);
  Serial.print(" | Y = "); Serial.print(AcY);
  Serial.print(" | Z = "); Serial.println(AcZ);
  //equation for temperature in degrees C from datasheet
  Serial.print("Temperature: "); Serial.print(Tmp/340.00+36.53); Serial.println(" C "); 
  
  Serial.print("Gyroscope: ");
  Serial.print("X = "); Serial.print(GyX);
  Serial.print(" | Y = "); Serial.print(GyY);
  Serial.print(" | Z = "); Serial.println(GyZ);
  Serial.println(" ");
  delay(333);
}
Semoga bisa memberikan kontribusi dan referensi buat kamu yang ingin berkarya dengan arduino.
Gimbal
Contoh Pengaplikasian alat

SELAMAT BERKARYA

Bagi kamu yang ingin membuat kamera stabilizer dengan Arduino, bisa membuatnya sendiri. Silahkan tinggalkan komentar kalau ada pertanyaan.
Hestech Indonesia

Innovasi di bidang Teknologi, Listrik, Teknik Komputer dan gaya Hidup. Info lainnya tentang praktik konservasi berbasis Sains, inovasi, dan kearifan lokal

  1. Motor servonya yang dipakai tipe apa min?

    ReplyDelete
  2. bang kalo arduino pakai yang arduino nano apa bisa bang?terimakasih untuk jawabanya.

    ReplyDelete
  3. saya udh nemukan code buat stabilizernya, dan ini bukan stabilizer tp hanya pembacaan sumbu dgn output 2 servo

    ReplyDelete