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
Tolong dicantumkan sumber acuan/referensinya ya, biar lebih keren.
BalasHapus