Testimonials ( 32 )
(5,0/5)

Review By Sigit Yatmono,
Sigit Yatmono
Toko terpercaya utk belanja komponen dan part robotika
22-07-2024
Verified Purchase
Review By Ade,
Ade
pelayanan ramah
21-02-2024
Verified Purchase
Review By azkal,
azkal
masnya ramah sekali
21-02-2024
Verified Purchase

New products

Berita DigiWare

Cara Mudah Membaca Data Sensor Ultrasonik Maxbotix dengan Arduino

Sensor ultrasonik adalah salah satu sensor pengukuran jarak objek non kontak yang paling sering digunakan ketika membuat project berbasis arduino. Berbagai pilihan sensor ultrasonik tersedia di pasaran yang dapat disesuaikan dengan budget dan kebutuhan, mulai dari sensor ultrasonik low cost HC-SR04 yang populer digunakan untuk project arduino sederhana, hingga sensor MaxSonar Series dari MaxBotix dengan segudang fitur dan performa yang handal untuk kebutuhan industrial. Pada artikel ini kita akan sedikit membahas bagaimana cara mengintegrasikan sensor ultrasonik khususnya MaxSonar Series dari MaxBotix, mulai dari cara menghubungkan hardwarenya, coding, serta antarmuka apa yang digunakan. Namun sebelum itu mari kita bahas sejenak beberapa hal mendasar tentang sensor ultrasonik di bawah ini.

 

Apa Itu Sensor Ultrasonik dan Bagaimana Cara Kerjanya?

Sensor ultrasonik adalah sebuah sensor yang berfungsi untuk mengukur interval pantulan gelombang suara ultrasonik menjadi data jarak. Cara kerja sensor ini didasarkan pada prinsip dari pantulan gelombang suara, sehingga dapat dipakai untuk memperkirakan jarak sensor terhadap suatu benda dengan frekuensi tertentu. Sensor ini menggunakan gelombang ultrasonik yang berfrekuensi di atas 20.000 Hz / 2 KHz dan tidak dapat didengar oleh telinga manusia.

Secara umum, cara kerja sensor ultrasonik adalah sebagai berikut:

  • Sinyal dipancarkan oleh pemancar ultrasonik dengan frekuensi dan durasi waktu tertentu. Umumnya, frekuensi yang digunakan adalah sekitar 40 kHz.
  • Sinyal yang dipancarkan akan merambat sebagai gelombang bunyi dengan kecepatan kurang lebih 340 m/s.
  • Ketika sinyal menabrak permukaan suatu benda, maka sinyal tersebut akan dipantulkan kembali oleh benda tersebut ke reseptor sensor ultrasonik.
  • Setelah gelombang pantulan sampai di reseptor sensor ultrasonik, maka sinyal tersebut akan diproses untuk menghitung jarak benda tersebut berdasarkan rumus yang telah ada.

Rumus untuk menghitung jarak benda dengan sensor ultrasonik adalah:

S = 340 x t / 2

Dimana:

  • S = adalah jarak antara sensor dengan benda yang diukur (m).
  • t = adalah waktu yang dibutuhkan sinyal untuk kembali ke sensor (s).
  • 340 = adalah kecepatan dari gelombang suara (340 m/s)
  • 2 = adalah faktor pembagi jarak karena gelombang suara mengalami pemantulan

 

Data pembacaan sensor yang sudah dihitung menggunakan rumus tadi kemudian dapat digunakan untuk berbagai keperluan seperti sistem navigasi pada robot dan UAV, sistem palang pintu otomatis, pengukuran level cairan di dalam tangki, sistem pemetaan area, dan masih banyak lagi.

 

Berkenalan dengan Sensor MaxSonar dari Maxbotix

Ada beberapa faktor yang perlu dipertimbangkan saat memilih sensor ultrasonik, seperti rentang pengukuran, akurasi, kecepatan, ketahanan, dan harga. Salah satu merek sensor ultrasonik yang menawarkan solusi terbaik untuk berbagai kebutuhan adalah Maxbotix. Maxbotix adalah perusahaan yang bergerak di bidang teknologi sensor ultrasonik sejak tahun 2004. Maxbotix memiliki berbagai seri sensor ultrasonik yang dirancang sebagai solusi untuk membuat berbagai project yang berkaitan dengan pengukuran jarak secara non kontak . Beberapa seri sensor ultrasonik dari Maxbotix adalah:

  • LV-MaxSonar-EZ: Seri ini adalah seri sensor ultrasonik yang paling sederhana dan ekonomis dari Maxbotix. Sensor ini memiliki rentang pengukuran dari 0 sampai 645 cm dengan akurasi 1%. Sensor ini juga memiliki tiga jenis output: tegangan analog, lebar pulsa, dan serial digital. Sensor ini cocok untuk aplikasi yang membutuhkan pengukuran jarak sederhana dan murah.
  • XL-MaxSonar-EZ: Seri ini adalah seri sensor ultrasonik yang memiliki kinerja tinggi dan fitur tambahan dari seri LV-MaxSonar-EZ. Sensor ini memiliki rentang pengukuran dari 20 sampai 765 cm dengan akurasi 1%. Sensor ini juga memiliki output yang sama dengan seri LV-MaxSonar-EZ. Selain itu, sensor ini memiliki fitur noise filtering yang dapat mengurangi gangguan dari suara luar atau objek lain. Sensor ini juga memiliki fitur trigger mode yang dapat mengaktifkan sensor dengan tombol atau sinyal eksternal.
  • HRXL-MaxSonar-WR: Seri ini adalah seri sensor ultrasonik yang memiliki kemampuan weatherproof karena sudah memenuhi IP rating IP67. Sensor ini dapat digunakan untuk aplikasi di lingkungan indoor maupun outdoor. Sensor ini juga memiliki output tegangan analog dan serial digital. Sensor ini cocok untuk aplikasi yang membutuhkan pengukuran jarak di lingkungan industri.

Sensor maxsonar buatan Maxbotix adalah sensor ultrasonik yang handal dan terjangkau. Sensor ini dapat digunakan untuk berbagai aplikasi dan proyek yang membutuhkan pengukuran jarak, deteksi gerakan, atau penghindaran rintangan. Sensor ini juga mudah digunakan dan dapat diintegrasikan dengan berbagai platform, seperti Arduino, Raspberry Pi, atau mikrokontroler lainnya. Untuk dapat berinteraksi dengan mikrokontroler, tentunya sensor harus dibekali sebuah antarmuka atau protokol komunikasi. Kabar baiknya, sensor ultrasonik dari Maxbotix sudah dibekali pilihan antarmuka beragam yang dapat disesuaikan dengan kebutuhan teman - teman, antarmuka yang tersedia antara lain output tegangan analog, pulse width, dan serial. Berikut ini akan kita jabarkan secara singkat bagaimana cara kerja dari masing - masing antarmuka tersebut.:

 

  • Output Tegangan Analog

Mungkin ini adalah antarmuka yang paling mudah untuk dimengerti bahkan bagi para pemula sekalipun. Cara kerjanya sangat sederhana, ketika terdeteksi adanya objek di depan sensor maka sensor akan mengeluarkan output data berupa tegangan pada pin output analog. Rentang tegangan yang dikeluarkan yaitu antara 0 - 5 VDC, semakin jauh objek yang terdeteksi maka output tegangannya akan semakin tinggi pula. Output tegangan yang didapatkan ini selanjutnya dapat diproses oleh pin analog input mikrokontroler seperti Arduino untuk mengkalkulasi jarak ke objek. Kelemahan dari antarmuka ini umumnya resolusi pembacaan tidak setinggi ketika menggunakan antarmuka serial yang bisa mencapai 1 mm.

 

  • Pulse Width

Cara lain untuk mendapatkan data pembacaan sensor ultrasonik MaxBotix yaitu menggunakan metode pulse width. Pin pulse pada sensor akan mengeluarkan gelombang pulsa yang merepresentasikan jarak ke objek. Pada Arduino, teman - teman dapat menggunakan fungsi pulseIn() untuk membaca panjang pulsa dalam microsecond (µs), kemudian hasil yang didapat harus dikalikan dengan faktor skala konstan yang sudah dijabarkan pada datasheet dari masing - masing tipe sensor. Sebagai contoh pada MB7389 memiliki faktor skala konstan 1 µs/mm.

 

  • Serial (TTL & RS232)

Jenis komunikasi ini merupakan yang paling kompleks diantara yang telah dijabarkan di atas, namun memiliki keunggulan dari segi resolusi pembacaan sensornya yang tinggi yaitu mencapai 1 mm. Cara kerja komunikasi ini yaitu menghadirkan data jarak yang telah diolah (data jarak siap pakai), kemudian tugas mikrokontroler adalah membacanya menggunakan antarmuka serial. Khusus bagi sensor yang hanya mendukung antarmuka serial RS232, ketika akan menghubungkannya dengan mikrokontroler seperti Arduino, teman - teman perlu menambahkan hardware inverter yang akan mengkonversi output dari RS232 ke TTL.

 

Menghubungkan Sensor Ke Arduino Berdasarkan Antarmuka

 

  • Output Tegangan Analog

MaxBotix Sensor

Arduino Uno

V+

5V

GND

GND

AN

A0

 

/*
Contoh kode untuk MB7389, bisa digunakan untuk semua sensor Maxbotix,
harap perhatikan scaling factor tiap tipe sensor
*/
#define sensorPin A0 // Mendeklarasikan pin analog out sensor ke pin A0 Arduino int distance = 0; // Variabel untuk menyimpan jarak terukur void setup(){      Serial.begin(9600); // Memulai komunikasi serial pada 9600 bps } // Fungsi untuk membaca data sensor pada pin A0 void read_sensor(){      distance = analogRead(sensorPin) * 5;
//Jarak = hasil pembacaan nilai adc pin A0 (rentang 0 - 1023) dikali scaling factor sensor(silahkan cek datasheet masing - masing sensor)
} // Fungsi untuk menampilkan jarak terukur ke serial monitor dalam milimeter void print_data(){       Serial.print("distance = ");       Serial.print(distance);       Serial.println(" mm"); } // Memanggil fungsi read_sensor() dan print_data() dengan interval 1000 ms atau 1 detik void loop(){        read_sensor();        print_data();        delay(1000); }
 

  

  • Output Data Pulse Width

MaxBotix Sensor

Arduino Uno

V+

5V

GND

GND

PW

2

 

// Contoh kode untuk MB7389, bisa digunakan untuk semua sensor Maxbotix, harap perhatikan scaling factor tiap tipe sensor

#define sensorPin 2 // Mendeklarasikan pin pulse width sensor ke pin 2 Arduino

long distance = 0; // Variabel untuk menyimpan data jarak
long duration = 0; // Variabel untuk menyimpan data durasi


void setup() { 

       pinMode(sensorPin, INPUT); // Mendeklarasikan sensorPin sebagai input
       Serial.begin(9600); // Memulai komunikasi serial pada 9600 bps
}


// Fungsi untuk membaca data sensor pada pin 2 Arduino
void read_sensor(){

      duration = pulseIn(sensorPin, HIGH); 
      distance = duration;

      /* Data yang dibaca bukan lagi tegangan analog, melainkan panjang pulsa yang dikirimkan oleh sensor.
Disini kita menggunakan fungsi pulseIn, fungsi ini akan menunggu kondisi perpindahan dari LOW ke HIGH ketika akan memulai perhitungan durasi, dan berpindah ke LOW kembali untuk menghentikan perhitungan durasi.
Hasilnya akan didapatkan lebar pulsa dalam microseconds.
*/ } // Fungsi untuk menampilkan jarak terukur ke serial monitor dalam milimeter void print_data(){       Serial.print("distance = ");       Serial.print(distance);       Serial.println(" mm"); } // Memanggil fungsi read_sensor() dan print_data() dengan interval 1000 ms atau 1 detik void loop(){        read_sensor();        print_data();        delay(1000); }

 

  •  Serial TTL

MaxBotix Sensor

Arduino Uno

V+

5V

GND

GND

5

11

 

/*
  Kode contoh untuk tipe MB7066
  Kode software serial untuk mendapatkan data dari sensor MaxBotix..
  Diambil dari contoh yang dibuat oleh Tom Igoe dan Mikal Hart.
  Dimodifikasi oleh Cody Carlson dan diuji menggunakan arduino Uno.
  This example code is in the public domain!
*/

#include <SoftwareSerial.h>
// RX, TX, Invert Levels (true = RS232, false = TTL)
SoftwareSerial mySerial(10, 11, true); //Value harus bernilai TRUE
char c;
void setup() {
  // Membuka komunikasi serial dan menunggu port serial terbuka
  // Mengatur bitrate terminal ke 9600 bps
  Serial.begin(9600);
  while (!Serial) {
    ; // Menunggu terhubung ke port serial
  }
    // Mengatur kecepatan data serial dari sensor ke 9600 bps
  mySerial.begin(9600);
}

void loop() { //
  if (mySerial.available()) {
    c = mySerial.read();
    if (c == 13) {
      // Menampilkan nilai dari data sensor ke serial monitor
      Serial.println();
    }
    Serial.write(c);
  }
  }

 

Mengoperasikan Sensor dengan Mode Trigger

Semua sensor MaxSonar secara default akan beroperasi pada mode free-running, artinya sensor akan secara terus menerus mengukur jarak hingga catu daya pada sensor dimatikan. Sensor akan mengirimkan gelombang ultrasonik 42 KHz sebanyak 20 kali per 0.15 detik. Metode ini juga salah satu cara termudah untuk membaca data dari sensor karena anda dapat langsung mengambil output tegangan analog atau pulse width dari sensor.

Dalam beberapa aplikasi misalnya seperti ketika mengoperasikan sensor dengan baterai, maka mode trigger ini sangat disarankan, karena kita dapat mengatur kapan sensor harus mulai melakukan pengukuran dan kapan harus berhenti untuk menghemat konsumsi daya baterai.

Untuk mengoperasikan sensor dengan mode trigger, kita harus menggunakan pin 4 pada sensor, karena jika pin 4 tidak digunakan seperti contoh sebelumnya maka sensor akan terus menerus beroperasi sesuai spesifikasi refresh rate masing - masing. Untuk menggunakan mode ini kita harus memberikan pin 4 logic LOW ketika sedang tidak ingin digunakan, namun ketika kita ingin melakukan pengukuran maka kita dapat memberikan logic HIGH dengan durasi minimal 20 microseconds. Untuk memberikan logic HIGH / LOW kita bisa menggunakan push button. Berikut koneksi hardware antara sensor MaxSonar dengan Arduino menggunakan mode trigger.

Sensor MaxBotix

Arduino Uno

GND

GND

V+

5V

Pin 2

Pin 2

Pin 4

Pin 3

Button Pin 1

Pin 4

Button Pin 2

GND

 

// Contoh kode pembacaan jarak pulse width dengan metode trigger

#define readPin 2 // Mendeklarasikan pin 2 arduino sebagai penerima data sensor
#define triggerPin 3 // Mendeklarasikan pin 3 arduino sebagai trigger
#define buttonPin 4 // Mendeklarasikan pin 4 sebagai push button

long distance = 0; // Variabel untuk menyimpan data jarak
long duration = 0; // Variabel untuk menyimpan data durasi
int buttonState = HIGH; 
int previous = HIGH; 
long time = 0; 
long debounce = 200; // Variabel debounce, ubah nilainya menjadi lebih tinggi jika mengalami kesalahan trigger

void setup() { 

      pinMode(readPin, INPUT); // Mengatur readPin sebagai input
      pinMode(buttonPin, INPUT_PULLUP); // Mengatur buttonPin sebagai input pullup
      pinMode(triggerPin, OUTPUT); // Mengatur triggerPin sebagai output
      digitalWrite(triggerPin, LOW); // Menonaktifkan sementara fungsi baca sensor di awal
      Serial.begin(9600); // Memulai komunikasi serial 9600 bps
      delay(3000); // Memberi jeda 3000 ms atau 3 detik untuk perintah print
      Serial.println("Sensor is ready, waiting for button press!"); 
}

//Fungsi untuk membaca jarak sensor 
void read_sensor() { 

     digitalWrite(triggerPin, HIGH); // Nyalakan triggerPin selama 20 ms
     delayMicroseconds(20); 
     digitalWrite(triggerPin, LOW); // Matikan kembali pin trigger
     duration = pulseIn(readPin, HIGH); // Hitung durasi pulse width
     distance = duration; 
     delay(150); 
}

void loop() {
// Membaca status puah button
buttonState = digitalRead(buttonPin);

if (buttonState == LOW && previous == HIGH && millis() - time > debounce) {
// Jika fungsi if terpenuhi maka panggil fungsi di bawah

read_sensor();
print_data();
time = millis();
}
previous = buttonState; // Kembalikan status push button ke kondisi awal 
}

 

Dapatakan sensor ultrasonic MaxSonar dari MaxBotix hanya >> DI SINI <<

 

Semoga Bermanfaat!