Penggunaan sensor ultrasonic

[ [ images & links ] ]

Sensor ultrasonic (ultrasonik) seperti srf04 dan srf05 dipergunakan untuk mengukur jarak suatu obyek.

SRF04Gambar 1. [sumber]

Gambar 2. [sumber]

 

Gambar 5. [sumber]

Ultrasonic ConeGambar 6. [sumber]Ojbects SameGambar 7. [sumber] Ultasonic FailGambar 8. [sumber]

Gambar 9. [sumber]

Gambar 10. [sumber]

Gambar 11. [sumber]

Working of HC-SR04 Ultrasonic SensorGambar 12. [sumber]

Gambar 13. [sumber]

Hubungan ke pin pada Gambar 13 dapat diubah sesuai keperluan, tidak mutlak harus menggunakan pin 12 dan pin 13. Perhatikan perbedaan pin antara SR04/SRF04 dengan SR05/SRF05 seperti pada Gambar 14.

Gambar 14. [sumber]

Sebelum melanjutkan ke tahap yang lebih detail, bisa dicoba kode program yang relatif sederhana sebagai bahan untuk memahami proses kerja sensor lebih lanjut. Kode untuk SRF05 (jika menudukung) dengan menggunakan satu pin bisa dilihat di qqtrading.com.my.

Pengaturan mengikuti Gambar 14 (dua pin sinyal), dengan kode sederhana sebagai berikut:

[code lang=”C”] #define TRIG_PIN 7
#define ECHO_PIN 6

const uint8_t BATAS_BAWAH = 4;
const uint16_t BATAS_ATAS = 300;

int sonar(void);

void setup()
{
Serial.begin(9600);
pinMode(ECHO_PIN, INPUT);
pinMode(TRIG_PIN, OUTPUT);
}

void loop()
{
int jarak = sonar();
Serial.print("Jarak dalam satuan cm: ");
// Serial.println( sonar() );
if(jarak<BATAS_BAWAH)
{
Serial.println("Obyek terlalu dekat");
}
else if(jarak>BATAS_ATAS)
{
Serial.println("Terlalu jauh");
}
else
{
Serial.println(jarak);
}

delay(1000);
}

int sonar(void)
{
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);

int jarak = pulseIn(ECHO_PIN, HIGH);

return (jarak = jarak / 58);
}
[/code]

Gambar 15.

 

Gambar 16. Hasil pengukuran jarak

SRF04 Specifications (eprolabs)

    • Operating Voltage:5V

 

    • Operating Frequency: 40Hz

 

    • Max Range: 4m

 

    • Min Range: 2cm

 

    • Measuring Angle: 15 degree

 

    • Trigger Input Signal: 10uS  TTL pulse

 

    • Echo Output Signal: TTL level signal, proportional to distance

 

The SRF04 Timing diagram is shown below. You only need to supply a short 10uS pulse to the trigger input to start the ranging. The SRF04 will send out an 8 cycle burst of ultrasound at 40khz and raise its echo line high. It then listens for an echo, and as soon as it detects one it lowers the echo line again. The echo line is therefore a pulse whose width is proportional to the distance to the object. By timing the pulse it is possible to calculate the range in inches/centimeters or anything else. If nothing is detected then the SRF04 will lower its echo line anyway after about 36mS.

Gambar 17.

In operation, the processor waits for an active low trigger pulse to come in. It then generates just eight cycles of 40khz. The echo line is then raised to signal the host processor to start timing. The raising of the echo line also shuts of the MAX232. After a while – no more than 10-12mS normally, the returning echo will be detected and the PIC will lower the echo line. The width of this pulse represents the flight time of the sonic burst. If no echo is detected then it will automatically time out after about 30mS (Its two times the WDT period of the PIC). Because the MAX232 is shut down during echo detection, you must wait at least 10mS between measurement cycles for the +/- 10v to recharge. Performance of this design is, I think, quite good. It will reliably measure down to 3cm and will continue detecting down to 1cm or less but after 2-3cm the pulse width doesn’t get any smaller. Maximum range is a little over 3m. As and example of the sensitivity of this design, it will detect a 1inch thick plastic broom handle at 2.4m. Average current consumption is reasonable at less than 50mA and typically about 30mA. Calculating the Distance The SRF04 provides an echo pulse proportional to distance. If the width of the pulse is measured in uS, then dividing by 58 will give you the distance in cm, or dividing by 148 will give the distance in inches. uS/58=cm or uS/148=inches.

Changing beam pattern and beam width You can’t! This is a question which crops up regularly, however there is no easy way to reduce or change the beam width that I’m aware of. The beam pattern of the SRF04 is conical with the width of the beam being a function of the surface area of the transducers and is fixed.  The beam pattern of the transducers used on the SRF04, taken from the manufacturers data sheet, is shown below.

 

Gambar 18.

SRF04 - Ultra-Sonic Ranger Technical Specification
SRF05  
At a quick glance there are only small differences between these two (www.f15ijp.com):

Untuk dapat lebih memahami dasar perhitungan, berikut ada beberapa sumber bacaan yang baik dan menarik. Dari beberapa artikel ini, misalnya, bisa diketahui dari mana angka (konstanta) 58 pada contoh kode sebelumnya didapat, dan apa maknanya.

Gambar 19. [sumber]

Gambar 20. [sumber]

Sebagai catatan, situs penyedia layanan (sengpielaudio.com) di halaman tersebut mencantumkan bahwa perhitungan hanya dijamin akurat sampai suhu 30° C saja. Nilai pada Gambar 20 hanya sebagai perbandingan. Jika suhu diturunkan menjadi 30° C maka berdasarkan perhitungan di halaman itu kecepatan suara menjadi 350.7 m/s.

Dari semua bahan di atas dapat disarikan beberapa perhitungan yang berguna untuk memahami dan mengerjakan sistem dengan sensor ultrasonik. Pertama, mencari pendekatan terhadap nilai kecepatan suara (speed of sound).  

   

c : Kecepatan suara (speed of sound) dalam satuan meter per second (m/S) 331.3 : Nilai speed of sound (dalam m/s) pada suhu 0° C dan 0% humidity T : Suhu (temperatur) dalam ° C H : % Humidity (relative humidity)

  Jika memiliki sensor suhu dan kelembapan di sistem/papan mikrokontroler maka nilai c ini dapat dihitung saat kode program dieksekusi.


Sebagai contoh untuk beberapa nilai suhu dan nilai persen kelembapan relatif, dibuat tabel berikut:

 

 


Berdasarkan tabel di atas jika nilai c diambil senilai   351.36 m/s   maka nilai ini sama artinya dengan

Untuk mencari berapa jarak yang ditempuh (menggunakan nilai c yang sama) selama 1 μS:

Untuk mencari berapa waktu yang diperlukan (menggunakan nilai c yang sama) untuk menempuh 1 cm:

 


Jika menggunakan nilai 28.46 uS/cm maka untuk jarak 100 cm  diperlukan waktu 2846 μS. Tetapi perlu diingat untuk penggunaan sensor ultrasonik, pengukuran dilakukan untuk waktu pengiriman dan waktu pantulan terdeteksi kembali. Jadi untuk obyek yang berjarak 100 cm, pengukuran dilakukan untuk 200 cm (100 cm untuk waktu pengiriman dan ditambah 100 cm untuk waktu pantulan). Perhitungannya menjadi:

 


Skenario berikutya adalah jika waktu tempuh yang diukur menggunakan sensor ultrasonik  diketahui. Misalnya terukur waktu tempuh sebesar 1138 μS, berapakah jarak obyek di depan sensor ultrasonik?

Waktu yang ditempuh adalah untuk jarak sekitar 40 cm, tetapi ini waktu untuk “berangkat + pulang” sinyal ultrasonik. Bisa dilihat dari perhitungan, jarak obyek adalah separuhnya yang artinya dalam hal ini adalah sekitar 20 cm.


Beberapa artikel dan kode menggunakan langkah yang nampak sedikit berbeda untuk menentukan jarak obyek di depan sensor ultrasonik, walaupun jika diperhatikan sebenarnya sama saja. Berikut keterangan untuk memudahkan:

 

 

 

 

Beberapa orang melakukan pembulatan untuk efisiensi perhitungan, misalnya:

  Jika menggunakan speed of sound yang berbeda, beberapa orang menuliskan persamaan sebagai berikut:

Untuk beberapa keperluan yang tidak membutuhkan nilai akurasi yang sangat tinggi (yang didukung oleh akurasi dan resolusi sensor dan mikrokontroler), pembulatan bisa dilakukan. Misalnya: (28.46 μS/cm x 2) = 56.92 μS/cm, dapat dibulatkan menjadi 29 μS/cm dan 57 μS/cm. Dengan cara yang sama di beberapa kode bisa ditemui pembulatan dengan nilai 29 μS/cm dan 58 μS/cm.
Jika diperhatikan umumnya perhitungan maupun kode program mempergunakan satuan microsecond, mengapa? Jawabannya adalah pada cara pengukuran waktu pada sensor ultrasonik. Sebagai contoh, pada sistem Arduino telah disediakan rutin pulseIn() yang mengukur dalam (dan mempergunakan) satuan microsecond.
Berikut ada beberapa contoh kode yang, untuk kemudahan dan cadangan, saya kumpulkan dari Internet. Silakan menuju situs asalnya untuk memperoleh keterangan lengkap dan untuk membaca kode pada bagian ini silakan klik pada kotak “tombol”.

Ada beberapa keunggulan ekosistem Arduino. Antara lain jumlah shield yang cukup banyak yang memudahkan pengguna untuk melakukan implementasi program untuk komponen pada shield ke dalam sistem. Komponen dan shield pun banyak yang sudah dilengkapi dengan pustaka (library). Ini mempercepat proses pengerjaan kode program.

Pustaka seperti ini bukanlah hal yang unik atau aneh. Cara semacam ini sudah lama dikenal dan juga dipakan di ekosistem lain. Misalnya di ekosistem bahasa pemrograman Java, ekosistem Python, ekosistem Perl, ekosistem C++ dan bahkan di ekosistem bahasa C. Dengan adanya pustaka, pemrogram tidak perlu menghabiskan waktu untuk mengulangi membuat kode program yang sama. Sumber dayanya bisa dialihkan untuk mengerjakan hal yang lain dalam penyelesaian masalah.

Untuk pemrograman ekosistem Arduino yang mempergunakan sensor ultrasonik terdapat satu pustaka yang diberi nama NewPing.

newping2.jpgGambar 21. [sumber]

Berikut adalah contoh-contoh kode yang disalin langsung dari situs arduino-new-ping/wiki/.

Gambar 22. Pengujian kode [ps2id url=’#SimpleNewPingSketch’ offset=’300′]Simple NewPing Sketch[/ps2id]

Gambar 23.

Mengenai risiko akurasi dan kestabilan pembacaan untuk peletakan obyek pada Gambar 22, bisa kembali melihat [ps2id url=’#gambar7′ offset=’300′]Gambar 7[/ps2id].

Berikut ini beberapa Gambar proses pengujian beberapa cara untuk melakukan pengukuran jarak obyek dengan sensor ultrasonik.

Gambar 24. Percobaan membandingkan hasil pengukuran alat-alat ukur dan cara pengukuran

Gambar 25. Hasil pengukuran dengan pulseIn (float)

Pada Gambar 25 terlihat bahwa pengukuran jarak obyek dengan menggunakan pulseIn dan pembagian (float), tidak memberikan hasil yang mendekati dua alat ukur lainnya. Hasil dari pengukuran dari alat laser distance meter sama dengan penunjukkan pada tape rule. Jarak terukur 1.2 m (120.5 cm), sedangakan pembacaan sensor ultrasonik oleh program Arduino menunjukkan 153.90 cm.

Adadua kemungkinan, sumber kesalahan ada pada sensor atau ada pada Arduino. Pada sensor bisa jadi resolusi dan/atau akurasi, sedang pada Arduino bisa jadi ada pada hardware atau pada software. Pada software bisa jadi ada pada fungsi/pustaka dari perangkat lunak Arduino atau bisa jadi dari kode program oleh pengguna.

Pengujuan pertama dengan mengganti sensor (Gambar 24), hasilnya sama, nilai kesalahan masih pada kisaran yang sama. Percobaan berikutnya adalah dengan mengganti cara pembacaan dan pengolahan data dari sensor. Perhitungan dilakukan di dalam pustaka, pengguna mendapatkan hasil pengukuran dalam cm.

Gambar 26.

Dengan menggunakan library NewPing, akurasi hasil pengukuran bisa lebih dapat dicapai. Pengukuran dengan sensor ultrasonik menggunakan pustaka NewPing sama dengan hasil pengukuran dua alat lainnya pada setup percobaan yang sama.

Gambar 27. Percobaan pembandingan untuk jarak dekat

[intense_tabs direction=”right” active_tab_background_color=”#000000″ active_tab_font_color=”#ffff00″ trigger=”click”] [intense_tab title=”Video01″ border=”3px solid #e8e8e8″ link_target=”_self”  content_background_color=”#000000″ content_font_color=”#ffffff” icon_size=”1″ icon_position=”left”]

[/intense_tab] [intense_tab title=”Video02″ border=”3px solid #e8e8e8″ link_target=”_self” icon_size=”1″  content_background_color=”#000000″ content_font_color=”#ffffff” icon_position=”left”]

[/intense_tab] [intense_tab title=”Video03″ border=”3px solid #e8e8e8″ link_target=”_self” icon_size=”1″ content_background_color=”#000000″ content_font_color=”#ffffff” icon_position=”left”]

[/intense_tab] [intense_tab title=”Video04″ border=”3px solid #e8e8e8″ link_target=”_self” icon_size=”1″ content_background_color=”#000000″ content_font_color=”#ffffff” icon_position=”left”]

[/intense_tab] [intense_tab title=”Video05″ border=”3px solid #e8e8e8″ link_target=”_self” icon_size=”1″ content_background_color=”#000000″ content_font_color=”#ffffff” icon_position=”left”]

[/intense_tab] [/intense_tabs]

 

 

Leave a Comment