SELAMAT DATANG DI DUNIA KANDIWA

Tuesday, April 17, 2012

Sensor Jarak (sensor ultrasonic)


Sensor jarak dapat menggunakan sensor ultasonic, sensor ultrasonic cara kerjanya sama seperti kelalawar saat mengetahui halangan di depannya. Sensor ultrasonic bekerja dengan memancarkan gelombang ultrasonic berupa pulse melalui TX(transifer) dari sensor dan akan terpantul kembali gelomnbang ultrasonic dan di tangkap oleh RX(resiver) sensordari sensor. Sensor ultrasonic mempunyai jara 2cm hingga 300cm.
/*****************************************************
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=0×00;
DDRA=0×00;
// 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=0×00;
DDRB=0×00;
// 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=0×00;
DDRC=0×00;
// 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=0×00;
DDRD=0×00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0×00;
TCNT0=0×00;
OCR0=0×00;
// 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=0×00;
TCCR1B=0×00;
TCNT1H=0×00;
TCNT1L=0×00;
ICR1H=0×00;
ICR1L=0×00;
OCR1AH=0×00;
OCR1AL=0×00;
OCR1BH=0×00;
OCR1BL=0×00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0×00;
TCCR2=0×00;
TCNT2=0×00;
OCR2=0×00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0×00;
MCUCSR=0×00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0×00;
// 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();                                                        //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();
}
}


Sumber :
http://wangready.wordpress.com/2011/04/04/ping-sensor-jarak-ultrasonik/

No comments: