Ping))) Parallax Ultrasonic Range Finder | | |
Written by Administrator |
Saturday, 28 February 2009 11:37 |
Ping))) Parallax Ultrasonic Range Finder "Plus Source Code"
Ultrasonik, sebutan untuk jenis suara diatas batas suara yang bisa didengar manusia. Seperti diketahui, telinga manusia hanya bisa mendengar suara dengan frekuensi 20 Hz sampai 20KHz. Lebih dari itu hanya beberapa jenis binatang yang mampu mendengarnya, seperti kelelawar dan lumba-lumba. Lumba-lumba bahkan memanfaatkan ultrasonik untuk mengindera benda-benda di laut. Prinsip ini kemudian ditiru oleh sistem pengindera kapal selam. Dengan cara mengirimkan sebuah suara dan mengitung lamanya pantulan suara tersebut maka dapat diketahui jarak kapal selam dengan benda tersebut. Mula-mula suara dibunyikan, kemudian dihitung lama waktu sampai terdengar suara pantulan. Jarak dapat dihitung dengan mengalikan kecepatan suara dengan waktu pantulan. Kemudian hasilnya dibagi 2. Misalnya lama waktu pantulan adalah 1 detik, maka jaraknya adalah (344,424m/detik x 1 detik)/2 = 172m.
Ping))) Ultrasonic Range Finder, adalah modul pengukur jarak dengan ultrasonic buatan Parallax Inc. yang didesain khusus untuk teknologi robotika. Dengan ukurannya yang cukup kecil (2,1cm x 4,5cm), sensor seharga 300 ribu rupiah ini dapat mengukur jarak antara 3 cm sampai 300 cm. Keluaran dari Ping))) berupa pulsa yang lebarnya merepresentasikan jarak. Lebar pulsanya bervariasi dari 115 uS sampai 18,5 mS.
Gambar 1. Ping))) Parallax Ultrasonic Range Finder
Pada dasanya, Ping))) terdiri dari sebuah chip pembangkit sinyal 40KHz, sebuah speaker ultrasonik dan sebuah mikropon ultrasonik. Speaker ultrasonik mengubah sinyal 40 KHz menjadi suara sementara mikropon ultrasonik berfungsi untuk mendeteksi pantulan suaranya. Pada modul Ping))) terdapat 3 pin yang digunakan untuk jalur power supply (+5V), ground dan signal. Pin signal dapat langsung dihubungkan dengan mikrokontroler tanpa tambahan komponen apapun. Ping))) mendeteksi objek dengan cara mengirimkan suara ultrasonik dan kemudian “mendengarkan” pantulan suara tersebut. Ping))) hanya akan mengirimkan suara ultrasonik ketika ada pulsa trigger dari mikrokontroler (Pulsa high selama 5uS). Suara ultrasonik dengan frekuensi sebesar 40KHz akan dipancarkan selama 200uS. Suara ini akan merambat di udara dengan kecepatan 344.424m/detik (atau 1cm setiap 29.034uS), mengenai objek untuk kemudian terpantul kembali ke Ping))). Selama menunggu pantulan, Ping))) akan menghasilkan sebuah pulsa. Pulsa ini akan berhenti (low) ketika suara pantulan terdeteksi oleh Ping))). Oleh karena itulah lebar pulsa tersebut dapat merepresentasikan jarak antara Ping))) dengan objek. Selanjutnya mikrokontroler cukup mengukur lebar pulsa tersebut dan mengkonversinya dalam bentuk jarak dengan perhitungan sebagai berikut
Jarak = (Lebar Pulsa/29.034uS) /2 (dalam cm) atau Jarak = (Lebar Pulsa x 0.034442) /2 (dalam cm) Karena 1/29.034 = 0.34442 Gambar 2. Pulsa Ping))) Parallax Ultrasonic Range Finder
Satu hal yang perlu diperhatikan adalah bahwa Ping))) tidak dapat mengukur objek yang permukaannya dapat menyerap suara, seperti busa atau sound damper lainnya. Pengukuran jarak juga akan kacau jika permukaan objek bergerigi dengan sudut tajam (meruncing).
Pada aplikasi ini mikrokontroler akan membaca lebar pulsa dari Ping))), dihitung kemudian ditampilkan ke LCD. Pastikan !!! : pin Signal (SIG) terhubung ke PINB.0 Tanpa resistor pullup.
Gambar 3. Rangkaian Aplikasi Ping))) Parallax
Berikut adalah langkah percobaannya :
NB: Untuk Chip dan Clock Sesuaikan Dengan Yang Anda Gunakan Simpan sesuai nama yang anda inginkanExample : Ping.c (untuk file source C) Ping.prj (untuk file project) Ping.cwp (untuk file Code Wizard Project)
/***************************************************** This program was produced by the CodeWizardAVR V1.24.4 Standard Automatic Program Generator © Copyright 1998-2004 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com e-mail: office@hpinfotech.com
Project : Ping))) Parallax Ultrasonic Range Finder Version : v1.0.0 Date : 28/02/2009 Author : Didox MPX 2 Company : Mechanical MPX 2 Comments : Tutor AVR
Chip type : ATmega8535 Program type : Application Clock frequency : 4,000000 MHz Memory model : Small External SRAM size : 0 Data Stack size : 128 *****************************************************/
#include
// Alphanumeric LCD Module functions #asm .equ __lcd_port=0x1B ;PORTA #endasm #include
// Declare your global variables here #define SigOut PORTB.0 #define SigIn PINB.0 #define DirSig DDRB.0
unsigned int counter; float distance; unsigned char Baris1[16]; unsigned char Baris2[16];
void main(void) { // Declare your local variables here
// 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 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 While (1) { }
Foto 1 Foto 2 Foto 3
Seperti tampak pada gambar, pengukuran jarak pada LCD menampilkan angka sesuai dengan pergeseran objek pada penggaris, dan mempunyai ketelitian tinggi dan bisa membaca data dibawah millimeter Foto 1 menampilkan 10,50 cm = 105 mm Foto 2 menampilkan 7,30 cm = 73 mm Foto 3 menampilkan 7,27 cm = 72,7 mm (data antara 1 mm dapat terbaca) Download File Lengkap Format PDF |
2 komentar:
hey kawand..thx infonya ya
kalo mau pake dua ping codingnya gimana yah?
thx b4
hey kawand..thx infonya ya
kalo mau pake dua ping codingnya gimana yah?
thx b4
Posting Komentar