Jumat, 23 Maret 2012
Sensor jarak Ultrasonik PING dengan Atmega8535 dan program Code Vision
Sensor Ping merupakan sensor untuk mengukur jarak. pada postingan sebelumnya juga sudah dijelaskan bagaimana coding sensor PING tapi menggunakan AVR Studio. Bagaimana cara mengaksesnya...?
Berikut saya jelaskan tahapan-tahapan untuk mengakses sensor PING.
1. PIN dijadikan sebagai output
2. Keluarkan pulsa pada PIN sebesar 2 microseconds – 5 microseconds
3. PIN dijadikan sebagai input + aktifkan pullup internal
4. Hitung pulsa high
5. Konversi pulsa menjadi jarak dengan rumus =>> Jarak (cm) = Pulsa (us) / 29.034 / 2
Berikut ini listing program dimana sensor PING di hubungkan ke mikro melalui PORTD 2 dan LCD di PORT C :
#include <mega8535.h>
#include <delay.h>
#include <stdio.h>
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd.h>
#define DDR_PING DDRD.2 //DDR yang dijadikan output dari sensor PING yaitu DDRD.2
#define PORT_PING PORTD.2 //PORT yang dijadikan output dari sensor PING yaitu PORTD 2
#define PIN_PING PIND.2 //PIN yang dijadikan output dari sensor PING yaitu PIND 2
unsigned char kata[16];
float baca_jarak()
{
unsigned int count=0;
float jarak;
DDR_PING=1; //jadikan PIN output
PORT_PING=1; // memberi sinyal high selama 5 us
delay_us(5);
PORT_PING=0; //memberi sinyal low
DDR_PING=0; //jadikan PIN sebagai input
PORT_PING=1; //aktifkan internal pullup
while (PIN_PING==0){} //ketika sinyal low tidak ada perintah
while (PIN_PING==1) //ketika sinyal high maka nilai counter mencacah naik setiap 1 us
{
count++;
delay_us(1);
}
jarak=((float)count/29.034/2); //hitung nilai count dan dikalibrasi menjadi jarak dalam cm
return(jarak);
}
void main(void)
{
PORTA=0x00;
DDRA=0x00;
PORTB=0x00;
DDRB=0x00;
PORTC=0x00;
DDRC=0x00;
PORTD=0x00;
DDRD=0x00;
lcd_init(16);
while (1)
{
lcd_clear();
sprintf(kata, "Jarak = %.1f cm", baca_jarak());
lcd_gotoxy(0,0);
lcd_puts(kata);
delay_ms(300);
};
}
Langganan:
Posting Komentar (Atom)
Tidak ada komentar:
Posting Komentar