Rabu, 20 Maret 2019

membaca data IMU gy-25 dengan Arduino

Hallo Sobat Arduino, GY-25 merupakan IMU sensor dengan output yang berupa pitch, yaw, roll. Bedanya dengan IMU seri yang lainnya adalah gy25 mempunyai pemrosesan data tersendiri sehingga output langsung YPR, dan tidak memerlukan filter-filter lagi.


Pinout:
Pin1 VCC Power + (3v-5v)
Pin 2 RX Receiving data from serial
Pin 3 TX Serial data transmission
Pin 4 GND Power Ground
Pin 5 RST Internal use, no connection, vacant
Pin 6 B0 Internal use, no connection, vacant
Pin 7 SCL I2C clock
Pin 8 SDA I2C data

Spesifikasi:
Measuring range -180 ° 1 °
Resolution 0.01 °
measurement accuracy 1
Repeatability 1
Frequency response 100 HZ (115200bps)
Operating Voltage 35 V
Working current 15mA
Operating temperature -20 ° 8 °
Storage temperature -40 ° 1 °
size 11.5mm × 15.5mm

Komunikasi Serial UART
Baud rate: 115200 bps Parity bit: N Data bits: 8 Stop bits: 1 (DEFAULT)
Baud rate: 9600 bps Parity bit: N Data bits: 8 Stop bits: 1

ada beberapa perintah serial untuk melakukan konfigurasi dan pembacaan data dari sensor
  1. 0xA5 + 0x51: query mode, kirim data sensor ketika ada permintaan
  2. 0xA5 + 0x52: Automatic mode, kirim data sensor secara realtime dalam bentuk biner
  3. 0xA5 + 0x53: Automatic mode, kirim data sensor secara realtime dalam bentuk ASCII
  4. 0xA5 + 0x54: correction mode, Kalibrasi roll pitch. tahan beberapa detik sebelum melakukan kalibrasi
  5. 0xA5 + 0x55: correction mode, kalibrasi kompas. Kompas akan diset ke 0 ketika perintah ini dikirim
Untuk konfigurasi rangkaian, saat percobaan ini menggunakan arduino Mega, dengan memanfaatkan serial 3 di arduino mega

Susunan pin 
Mega - gy 25
5v  ---- vcc
gnd ---- gnd
TX3 --- RX
RX3 ---- TX

untuk coding programnya

void setup(){
 Serial.begin(115200); // Aktif Serial monitor
 Serial3.begin(115200); // Aktif Serial GY25
Serial.println("kalibrasi");
 delay(3000);

 // Kalibrasi Tilt
 Serial3.write(0xA5);
 Serial3.write(0x54);

 delay(1000);
 Serial.println("kalibrasi Tilt done");

 // Kalibrasi Heading
 Serial3.write(0xA5);
 Serial3.write(0x55);

 delay(100);
 Serial.println("kalibrasi Heading done");
 // Output ASCII
 Serial3.write(0xA5);
 Serial3.write(0x53);

 delay(100);
}

void loop(){
 // Baca data realtime
 Serial.println(Serial3.readStringUntil('\n'));
}

Hasil di serial monitor

Catatan :
Sensor akan kalibrasi ketika power di hidupkan, kurang lebih 3000ms, dan harus dalam keadaan diam (tidak bergerak).

4 komentar:

  1. Kalau datanya nggak muncul kenapa ya?

    BalasHapus
    Balasan
    1. kalo program sudah sesuai,kemungkinan elektrikal

      Hapus
    2. kalo program sudah sesuai,kemungkinan elektrikal

      Hapus
  2. i2c tidak terdeteksi ini apakah harus dijumper?

    BalasHapus