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.
Presisi Gyroscope |
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.
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:
- Arduino UNO. (opsi 1)
- Motor Servo, 2 buah.
- 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:
Program Scan Alamat MPU6050
Library yang dibutuhkan untuk program scan alamat pada modul MPU-6050 ini adalah sebagai berikut:- OneWire.zip ( Download )
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.
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: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.
Tata Letak Rangkaian Keseluruhan |
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);
}
Sangat bermanfaa. izin share min
ReplyDeleteSilahkan, dengan senang hati.
ReplyDeletekak koding untuk stabilizer nya mana kak?
DeleteMotor servonya yang dipakai tipe apa min?
ReplyDeleteMg90
ReplyDeletecode programnya dimana ya min
ReplyDeletebang kalo arduino pakai yang arduino nano apa bisa bang?terimakasih untuk jawabanya.
ReplyDeletesaya udh nemukan code buat stabilizernya, dan ini bukan stabilizer tp hanya pembacaan sumbu dgn output 2 servo
ReplyDelete