judul
Breaking News
Loading...
Minggu, 01 Februari 2015

Mengakses Ultrasonic HC-SR04 (Sensor Jarak)

Minggu, Februari 01, 2015

Ultrasonic modul umunya berbentuk papan elektronik ukuran kecil dengan beberapa rangkaian elektronik dan 2 buah transducer. Dari 2 buah transducer ini, salah satu berfungsi sebagai transmitter dan satu lagi sebagai receiver. Ada juga modul yang hanya mempunyai 1 buah transducer, berfungsi sebagai transmitter dan receiver sekaligus. Tersedia pin VCC, TRIG, ECHO dan GND.  Ultrasonic modul ini bekerja dengan cara menghasilkan gelombang suara pada frekuensi tinggi, yang kemudian dipancarkan oleh bagian transmitter. Pantulan gelombang suara yang mengenai benda di depannya akan ditangkap oleh bagian receiver. Dengan mengetahui lamanya waktu antara dipancarkannya gelombang suara sampai ditangkap kembali, kita dapat menghitung jarak benda yang ada di depan modul tersebut. Kita mengetahui kecepatan suara adalah 340m/detik. Lamanya waktu tempuh gelombang suara dikalikan kecepatan suara, kemudian dibagi 2 akan menghasilkan jarak antara ultrasonic modul dengan benda didepannya.

Spesifikasi Sensor HC-SR04
  • Catu Daya: 5V DC
  • Arus pada moda siaga: < 2mA
  • Konsumsi arus saat deteksi: 15 mA
  • Lebar sudut deteksi: ±15°
  • Jarak deteksi: akurat hingga 1 meter, dapat mendeteksi (namun kurang presisi) hingga jarak 4 meter
  • Resolusi : 3 mm (perhitungan dari faktor kecepatan rambat suara dan kecepatan MCU pada 16 MHz)
  • Dimensi: 45 x 20 x 15 mm

Cara Akses dengan antarmuka Mikrokontroler AVR (ATmegaXX), antara lain:
1. Hubungkan TRIG pada ATmega dan atur DDR sebagai output.
2. Hubungkan ECHO pada ATmega dan atur DDR sebagai input.

Berikut diagram waktu dari penggunaan sensor ini:


TRIG Bangkitkan pulsa pendek sepanjang 10µS sebagi sinyal pemicu ke pin picu masukan dari modul ini untuk mulai pendeteksian (catat waktu saat ini), HC-SR04 akan memancarkan 8 siklus gelombang ultrasonik pada frekuensi 40 kHz. Saat gelombang suara ini menabrak objek (benda atau dinding di depannya), gelombang akan dipantulkan balik dan diterima oleh detektor yang kemudian membangkitkan sinyal deteksi di pin keluaran modul. Lama selang waktu antara pengiriman signal hingga pendeteksian sinyal pantulan adalah waktu yang ditempuh gelombang suara, yaitu sepanjang dua kali jarak antara sensor dan objek yang terdeteksi karena signal berjalan pulang-pergi. Dengan mengetahui selang waktu ini dan kecepatan rambat suara di udara (340 meter/detik pada udara kering, atau 3,4x108µs), jarak dapat dihitung sesuai rumus jarak = kecepatan x waktu.

Rumus matematika yang disederhanakan untuk menghitung jarak tersebut dalam sentimeter adalah lama selang waktu dalam mikrodetik (sepersejuta detik) dibagi 58,2.

Berikut ini adalah contoh syntax yang ditulis menggunakan codevisionAVR, yaitu:

//------------------------------------------------------------------------
void HCSR04Trigger()
{    
    Trigger=1;          //high
    delay_us(10);       //wait 10uS
    Trigger=0;          //low
}


fungsi pemanggilan proses pembacaan jarak HC SR04
//==============================================
unsigned int GetPulseWidth()
{
    long i,result;
  
    //Send a trigger pulse
 HCSR04Trigger();
      
    //menuggu hingga echo rising egde 25uS
    for(i=0;i<600000>;i++){
        if(Echo!=1)
            continue;    //Line is still low, so wait
        else
            break;        //High edge detected, so break.
    }

    if(i==600000)
        return US_ERROR;    //Indicates time out
  
    //High Edge Found

    //Setup Timer1
    TCCR1A=0X00;
    TCCR1B=0x01;
    TCNT1=0x00;            //Init counter

    //Now wait for the falling edge
    for(i=0;i<600000>;i++){
        if(Echo==1)
        {
            if(TCNT1> 60000) break; else continue;
        }
        else
            break;
    }

    if(i==600000)  //  60ms
        return US_NO_OBSTACLE;    //Indicates time out

    //Falling edge found

    result=TCNT1;

    //Stop Timer
    TCCR1B=0x00;

    if(result>60000) // 60ms dan maksimal 38ms
        return US_NO_OBSTACLE;    //No obstacle
    else
        return (result+50); // ditambahkan dengan konstanta = 50
}


Kemudian pada progam utama, pemanggilan subrutien proses pengukuran HC-SR04

void main()
{
....................................
....................................
        while(1)
          {
                  t=GetPulseWidth();
                  jarak = (int)t/58; }
                  printf("distance = %d cm\r\n", jarak);// kirim nilai ke serial
                  delay_ms(1000);
           }
}


Well down, Tidak sulitkan kawan... Anda akan dengan mudah mengembangkan coding diatas. Make simply for easy understanding.

Jika ada pertanyaan silahkan tinggalkan dikolom komentar. semoga bermanfaat.






0 komentar:

Posting Komentar

 
Toggle Footer