SRF04 adalah sensor ultrasonic yang berfungsi untuk mengukur jarak suatu benda dengan prinsip memancarkan gelombang ultrasonic kemudian menangkap pantulan nya. Sensor ini dapat mengukur jarak suatu benda dengan jarak maksimal 3m dan memiliki blank area 3cm (blank area yaitu sensor tidak dapat mengukur jarak jika jarak benda < 3cm).
Saya pernah menggunakan sensor ini ketika KRCI 2009 mewakili UGM di Divisi Senior Berkaki. Walaupun di datasheetnya sensor ini maksimal hanya dapat mengukur jarak maksimal 3m tapi saya pernah bisa mengukur jarak benda sampai 6m.
Sensor ini memiliki 5 pin, tetapi hanya 4 pin saja yang digunakan yaitu :
1. 5v supply
2. Echo pulse output
3. Trigger pulse input
4. 0v ground
Dari gambar diatas sudah jelas bahwa sensor ini membutuhkan tegangan supply 5VDC yang dihubungkan ke pin 5v Supply dan ground yang di hubungkan ke pin 0v ground. Pin echo pulse berfungsi sebagai pin output yang nantinya dihubungkan ke controller sehingga kontroler dapat membaca pulsa yang dihasilkan sensor dan pin trigger pulse adalah pin input yang nantinya dihubungkan ke kontroler untuk mendapatkan pulsa dari kontroler.
Coba perhatikan gambar diatas, Untuk memperoleh data yaitu pulsa (yang valid) dari sensor maka terlebih dahulu kita berikan sinyal pulsa ke sensor melalui pin trigger dengan Time ON selama 10 uS (bisa juga dengan frekuensi 100Khz), setelah kita berikan sinyal pulsa nantinya pin echo akan high (ini menandakan data valid), nah.. ketika pin echo high hitunglah lama nya, yaitu dengan menggunakan counter. Hasil dari counter ini lah jarak yang terukur dengan menggunakan sensor SRF04. (hasil counter adalah nilai yang mewakili jarak tetapi belum menunjukkan jarak yang sebenarnya)
Berikut ini adalah potongan / fungsi program yang saya buat dengan CodeVision AVR untuk mengakses sensor SRF04
void scan_us1(void)//fungsi scan ultrasonik
{
loop1:
us1=0;//us1 adalah variable counter
PORTA.7=0;//PORTA.7 berfungsi sebagai generator pulsa ke pin trigger
DDRA.7=0;
delay_us(10);//delay 10uS
PORTA.7=1;
DDRA.7=1;
delay_us(10);
PORTA.7=0;
DDRA.7=0;
delay_us(10);
if(PINA.6==0)goto loop1;//PINA.6 berfungsi sebagai input
else //untuk baca pulsa dari pin echo sensor
while(PINA.6==1) //ketika data valid yaitu echo high
{
us1++;//counter
delay_us(58);//kalibrasi supaya nilai counter langsung berupa
//jarak sebenarnya
if(us1==120)break;//(pembatasan pembacaan sampai 120cm)
//intruksi ini dapat dihapus atau batasnya
//diganti sesuai kebutuhan
}
}
Nilai delay ketika proses counter yaitu delay_us(58) berasal dari percobaan untuk memperoleh nilai us1 langsung sesuai dengan jarak yang sebenarnya.
Selamat mencoba…
mw tanya kk srf04 apa bisa dipasang pda atmega 16..?
BalasHapustruz konfigurasinya gimana..?
bintar.tunas@yahoo.com
sensor ini bisa dipakai dengan atmega16, dan potongan program (fungsi) diatas bisa juga digunakan untuk atmega16 dengan syarat pakai codevision, kalau tidak pakai codevision perlu penyesuian. untuk konfigurasi bisa dilihat dari fungsi program diatas : yaitu pin echo pulse srf04 di hubungkan ke PINA.6 dan pin triger pulse srf04 dihungkan ke PINA.7 . semoga bisa membantu
Hapusmisi gan, ane punya 3 srf04 tapi jumlah port terbatas. bisa dicombine ga 3 sensor itu biar bisa irit port?
BalasHapusthanks
pake IC multiplexer mungkin bisa...
Hapusbang,
BalasHapus" if(us1==120)break;//(pembatasan pembacaan sampai 120cm) "
kalau saya pakai if(us1>=120)break; // bagimana bang?
pak. nilai yang keluar di lcd kok tetep di nilai pembatas 120 ya? gak pernah naik turun meskipun didekatkan ke objek. tegangan mikro dari port cuma keluar 2 V, input malah gak ada tegangan. mungkin ada solusinya pak?
BalasHapusDDRA.6=0; yaa
Hapuswah iya pak. ternyata salah inialisasi port. hehe. terima kasih atas pencerahannya
Hapus