Weee e e e..halo dulur kabeh..
Artikel kali ni saya coba sharingkan pengalaman saya menggunakan sensor ultrasonic sebagai pengukur jarak. Nah sebelumnya seperti biasa sruput kopinya dulu..
Sensor yang digunakan adalah modul Parallax PING yang ssudah jadi dan tinggal pakai. Maksude g perlu da rangkaian elka lain, Cuma minsys mikrokontroler untuk kontrolnya. Nah ini dia barangnya .
Sensor PING ini memiliki 3 kaki yaitu sebagai supply +5 volt (+5), ground (GND), dan signal (SIG). Frekuensi gelombang yang dipancarkan adalah 40kHz. Teori operasinya berdasarkan time diagram berikut.
Sensor ini bekerja bila pada pin SIG diberikan trigger pulsa TTL positif selama 5 us. Setelah mendapat trigger baru memancarkan gelombangnya. Setelah dipacarkan oleh, penerima bertugas menangkap echo/pantulan. Nah prinsipnya sederhana saja kan..Hoahhhh ngantuk e, nyruput kopi dulu ah…
Berdasarkan prinsip kerja dan time diagram di atas, ntuk interface ke ultrasonik, terdapat aturan yang cukup mudah, yaitu:
1. Pada SIG diberi sebuah pulsa (tcut)sebesar 5 mikro detik. ini berati dengan mengeset mikrokontroler sebagai output dan memberikan data ke ultrasonik.
2. Mikrokontroller menunggu sampai pin SIG dari ultrasonik mengeluarkan sinyal kondisi "high" dengan mengeset mikro sebagai input.
3. Selama kondisi input mikro “high” maka dilakukan perhitungan lamanya sampai input “low”.
4. Data hasil perhitungannya kita tampilkan di LCD ya..
Kalau pengen tau datasheetnya download disini.. Di bawah ini adalah soucecode pengukur jarak yang saya buat dengan codevision avr..monggo dibaca..
#include
#include
#include
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include
// Declare your global variables here
unsigned int i;
unsigned char buf[16];
float jarak;
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
// 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);
lcd_gotoxy(0,0);
lcd_putsf("jajal");
delay_ms(1000);
while (1)
{
// Place your code here
i=0;
DDRD.1=1;
PORTD.1=1;
delay_us(5);
PORTD.1=0;
DDRD.1=0;
PORTD.1=1;
while (PIND.1==0)
{};
while (PIND.1==1)
{ i++;
}
jarak=i*0.01572;
sprintf(buf,"jarak = %0.02f",jarak);
lcd_gotoxy(0,0);
lcd_clear();
lcd_puts(buf);
delay_ms(100);
};
}
Sensor ini banyak diaplikasikan dalam pembuatan robot cerdas yang sering dilombakan dalam KRCI..Sekian ya, semoga bermanfaat, silahkan kasih feedback ya. Salam pagi yang indah
#include
#include
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include
// Declare your global variables here
unsigned int i;
unsigned char buf[16];
float jarak;
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
// 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);
lcd_gotoxy(0,0);
lcd_putsf("jajal");
delay_ms(1000);
while (1)
{
// Place your code here
i=0;
DDRD.1=1;
PORTD.1=1;
delay_us(5);
PORTD.1=0;
DDRD.1=0;
PORTD.1=1;
while (PIND.1==0)
{};
while (PIND.1==1)
{ i++;
}
jarak=i*0.01572;
sprintf(buf,"jarak = %0.02f",jarak);
lcd_gotoxy(0,0);
lcd_clear();
lcd_puts(buf);
delay_ms(100);
};
}
Sensor ini banyak diaplikasikan dalam pembuatan robot cerdas yang sering dilombakan dalam KRCI..Sekian ya, semoga bermanfaat, silahkan kasih feedback ya. Salam pagi yang indah