PING))) Sensor Jarak Ultrasonik

Sensor jarak ultrasonic Parallax PING))) mampu mengukur jarak dengan teliti dan tanpa kontak antara 2 cm (0.8 inche) sampai 3 meter (3.3 yard). Sangat mudah untuk dikoneksikan dengan mikrokontroler, hanya membutuhkan satu pin I/O.

Sensor PING))) berkerja dengan mentransmisikan sebuah ultrasonic burst (diatas batas pendengaran manusia) dan menghasilkan sebuah pulsa output yang berhubungan dengan waktu yang dibutuhkan oleh echo dari burst untuk kembali ke sensor. Dengan mengukur lebar pulsa echo jarak sensor ke target dapat dihitung.

Karakteristik

  • Tegangan suplai                : 5VDC
  • Konsumsi arus                   : 30 mA typ; 35 mA max
  • Jarak                                      : 2 cm sampai 3 m (0.8 in sampai 3.3 yrd)
  • Input Trigger                      : positive TTL pulse, 2 uS min, 5 µs typ
  • Echo Pulse                           : positive TTL pulse, 115 uS to 18.5 ms
  • Echo Hold-off                     : 750 µs from fall of Trigger pulse
  • Burst Frequency               : 40 kHz for 200 µs
  • Burst Indicator LED shows sensor activity
  • Delay before next measurement : 200 µs
  • Size                                         : 22 mm H x 46 mm W x 16 mm D (0.84 in x 1.8 in x 0.6 in)

 

 

 

 

 

Konfigurasi Pin

GND Ground (Vss)
5 V 5 VDC (Vdd)
SIG Signal (I/O pin)

Teori Operasi


 

 

 

 

 

 

 

 

 

 

Bentuk Pancaran Sinyal Sensor

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Kode Pengolahan Data Sensor Menggunakan CodeVision AVR

Berikut contoh program dengan menggunakan mikrokontroler AVR ATMega8535 denga xtal 4 MHz, Pin ultrasonik PORTB.0, LCD pada PORT A.

/*****************************************************

Project :

Version :

Date    : 4/2/2008

Comments:

Chip type           : ATmega8535

Program type        : Application

Clock frequency     : 4.000000 MHz

Memory model        : Small

External SRAM size  : 0

Data Stack size     : 128

*****************************************************/

#include <mega8535.h>

// Alphanumeric LCD Module functions

#asm

.equ __lcd_port=0x1B ;PORTA

#endasm

#include <lcd.h>

#include <stdio.h>

#include <delay.h>

//deklarasi PIN I/O PING

#define PULSE PORTB.0

#define ECHO  PINB.0

#define ARAH  DDRB.0

#define OUT 1

#define INP 0

unsigned int ultrasonic()

{

unsigned int count=0;                               //deklarasi variabel local count: penghitung lebar ECHO

unsigned int jarak;                                      //dekarasi jarak: hasil pembagian lebar ECHO dengan suatu konstanta

ARAH=OUT;                                                 //mengatur PIN I/O sebagai output

PULSE=1;                                     //memberikan tanda ke PING untuk memancarkan ultrasonic burst

delay_us(5);                               //waktu tunggu sebelum pengukuran min. 2us biasanya 5us

PULSE=0;                                    //menberikan sinyal low ke PING

ARAH=INP;                               //arah PIN I/O diatur sebagai input

PULSE=1;                                    //mengatur PIN I/O sebagai pill-up

while (ECHO==0) {};              //menunggu sinyal ECHO high

while (ECHO==1)

{

count++;                                  //menghitung lebar sinyal ECHO high

}

jarak=(unsigned int)(((float)count)/25); // nilai pembagi dikalibrasi sampai sesuai dengan satuan yang diinginkan

return(jarak);                                                      //mengembalikan jarak ke fungsi ultrasonic dengan tipe data unsigned int

}

// Declare your global variables here

void main(void)

{

// Declare your local variables here

unsigned char kata[16];//variabel lokal untuk menyusun karakter dengan lebar array 16 dan mengirim ke LCD

// Input/Output Ports initialization

// Port A initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTA=0x00;

DDRA=0x00;

// Port B initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTB=0x00;

DDRB=0x00;

// Port C initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTC=0x00;

DDRC=0x00;

// Port D initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

PORTD=0x00;

DDRD=0x00;

// Timer/Counter 0 initialization

// Clock source: System Clock

// Clock value: Timer 0 Stopped

// Mode: Normal top=FFh

// OC0 output: Disconnected

TCCR0=0x00;

TCNT0=0x00;

OCR0=0x00;

// Timer/Counter 1 initialization

// Clock source: System Clock

// Clock value: Timer 1 Stopped

// Mode: Normal top=FFFFh

// OC1A output: Discon.

// OC1B output: Discon.

// Noise Canceler: Off

// Input Capture on Falling Edge

// Timer 1 Overflow Interrupt: Off

// Input Capture Interrupt: Off

// Compare A Match Interrupt: Off

// Compare B Match Interrupt: Off

TCCR1A=0x00;

TCCR1B=0x00;

TCNT1H=0x00;

TCNT1L=0x00;

ICR1H=0x00;

ICR1L=0x00;

OCR1AH=0x00;

OCR1AL=0x00;

OCR1BH=0x00;

OCR1BL=0x00;

// Timer/Counter 2 initialization

// Clock source: System Clock

// Clock value: Timer 2 Stopped

// Mode: Normal top=FFh

// OC2 output: Disconnected

ASSR=0x00;

TCCR2=0x00;

TCNT2=0x00;

OCR2=0x00;

// External Interrupt(s) initialization

// INT0: Off

// INT1: Off

// INT2: Off

MCUCR=0x00;

MCUCSR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization

TIMSK=0x00;

// Analog Comparator initialization

// Analog Comparator: Off

// Analog Comparator Input Capture by Timer/Counter 1: Off

ACSR=0x80;

SFIOR=0x00;

// LCD module initialization

lcd_init(16);

while (1)

{

sprintf(kata, “J=%3d cm”, ultrasonic()); //menyusun karakter ke dalam satu baris dengan menggunakan fungsi sprintf

lcd_clear();                                                        //membersihkan layar LCD

lcd_gotoxy(0,0);                                            //menempatkan kursor pada koordinat 0,0 LCD

lcd_puts(kata);                                                //mengirim data ke LCD

delay_ms(300);                                              //delay memberi waktu sebelum lcd_clear();

}

}

—————————————————————————————

Daftar Pustaka

Parallax, Inc.  •  PING))) TM Ultrasonic Distance Sensor — Datasheet

6 Responses to PING))) Sensor Jarak Ultrasonik

  1. zhie awakening says:

    mantabz gan……

  2. andi says:

    Nice info gan.
    Programnya udah jalan dan nilai jarak yg dideteksi sensor pingnya bagus.
    Awalnya saya gunakan ping ini untuk set point buat ngontrol kecepatan 2 motor brushless menggunakan kontrol methode pid.
    Tapi knapa ya gan, ketika saya panggil fungsi ping-nya dan fungsing kontrol pid-nya berbarengan, malah fungsi sensor ping ngeganggu kontrol PID ?? Tapi waktu gk dipanggil fungsi sensor pingnya, hanya kontrol PID-nya dipanggil, kontrol PID-nya berjalan bagus.
    Kira2 knapa ya gan?
    Mohon pencerahannya gan.
    Tks banyak🙂

  3. maikal says:

    nilai time smplingnya yang mana ya gan??
    Tks

    • wangready says:

      ya intinya tuningnya saat semua program nya sudah dimasukin gan, soalnya nanti ada waktu interval antara baca sensor-proses olah data- dan eksekusi outputnya…

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s