Jumat, 23 November 2012

Sensor PING dan contoh programnya :)

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)
Berikut adalah program pembacaan jarak (cm) menggunakan sensor ultrasonik PING))) buatan Parallax. Pada program dibawah ini menggunakan frekuensi kristal 4Mhz, dan pin output dari PING) dihubungkan ke port PB0, LCD pada PC.
Sebelumnya saya minta maaf tidak menampilkan rangkaiannya, karena tidak ada library untuk komponen PING.
//Clock frequency     : 4.000000 MHz
//output sensor PING))) ke PB0
//LCD ke PC
#include <mega8535.h>
#include <lcd.h>
#include <stdio.h>
#include <delay.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0×15 ;PORTC
#endasm
//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;
unsigned int jarak;
        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
}
void main(void)
{
unsigned char kata[16];
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0×80;
SFIOR=0×00;
// 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(); 
        lcd_gotoxy(0,0);
        lcd_puts(kata);//mengirim data ke LCD
        delay_ms(300);
}
}

post by 1111113030

1 komentar:

  1. Tolong dicantumkan sumber acuan/referensinya ya, biar lebih keren.

    BalasHapus