Etiketler: 8051 uygulama, mesafe ölçüm devresi, srf04 türkçe bilgi, srf04 ultra sonik

8051 ile ultrasonik mesafe ölçümü uygulaması ayrıca srf 04 hakkında Türkçe bilgiler bulunmakta farklı denetleyiciler ile uygulamalarınızda bu bilgiler işinize yarayabilir Hazırlayanlar :Murat FETTAHOGLU Faruk YILDIRIM Hazırlayan emeği geçen kişilere teşekkürler
Dosyalar(proteus simulasyon .dns .c .hex ) 8051-srf04-ultrasonic-mesafe-olcumu.rar
![]()
8051 mikrodenetleyicisi ile ultrasonik alıcı-verici kullanarak mesafe ölçümü yapılması .Yapılan çalışma, 8051 mikrodenetleyicisi kullanılarak ultrasonik alıcı-verici yardımıyla mesafe ölçümünü içermektedir. Sistemde bir adet ultrasonik alıcı-verici, LCD vd 8051 mikrodenetleyicisi kullanılmıştır.
Sistemin çalışmasına geçmeden önce sistemde kullanılan ultrasonik alıcı-vericinin çalışma
prensibinin kısaca verilmesi yararlı görülmüştür.

SRF04 ‘ün ön yüzü Şekil-2 ‘de verilmiştir. Şekilde görüldüğü gibi 4 adet bağlantı noktası vardır. Bunlardan 2 ‘si besleme (+5Volt), diğer ikisi ise pals çıkışı (echo pulse output) ve
tetikleme girişi (trigger pulse input)dir.

SRF04 Zamanlama diagramı

SRF04’ün çalışma prensibi kısaca şöyledir: SRF04 ‘ün çalışmaya başlayabilmesi için minimum 10usn‘lik bir tetikleme palsi diyagramda da görüldüğü gibi SRF04 ‘ün trigger girişine uygulanır. Bu pals uygulandıktan sonra SRF04 ultrasonik dalga üretir ve dışarıya gönderir.
Ses hızının havada 340metre/saniye olduğu bilindiğinden, gönderilen bu ses dalgasının bir yüzeye çarpıp geri dönme süresi hesaplanır. Bu süre bilinirse, ses hızından yola çıkılarak cismin cihazdan uzaklığı hesaplanabilir.
Gerekli hesaplamalar yapılırsa, Pals çıkışından alınan palsin süresi usn cinsinden bulunup 58 ’e bölünerek (cm = usn/58) santimetre cinsinden uzaklık hesaplanmış olur. Eğer 18msn ‘den
daha büyük bir pals üretildiyse cisim algılanamamıştır, SRF04 36msn değerinde çıkışı tekrar 0 Volt seviyesine düşürür.
Devre şeması
C yazılımı (Ultrasonik_Mesafe.c)
#include <89c51rd2.H>
/*********************************************************************************************/
/*SAKARYA ÜNIVERSITESI TEKNIK EGITIM FAKÜLTESI ELEKTRONIK BILGISAYAR EGITIMI */
/* Uygulama Adi : 8051 ve SRF04 Kullanilarak Mesafe Ölçümü Yapilmasi */
/* Dosya Adi : Ultrasonik_Mesafe.c */
/* Tarih : Aralik 2005 */
/* Hedef Islemci: MCS-51 */
/*Proje Tasarami: Murat FETTAHOGLU muratfettahoglu@mynet.com */
/* Faruk YILDIRIM farukyild54@yahoo.com */
/*Proje Danismani: Yrd.Doc.Dr.Ahmet Turan ÖZCERIT */
/* Bu uygulama ile SRF04 Ultrasonik alici verici yardimi ile mesafe ölçümü yapilmistir. */
/*Uygulamada 8051, SRFO4, 2x16 LCD, kullanilmistir. */
/*ve sürücü devre yer almaktadir */
/* Uygulama çalistirildiginda devre uzerinde yer alan buton kullanilarak SRF04 ün önünde var */
//ise cismin nekadar uzaklikta oldugunu yada cisim bulunmadigini LCD de görmek mümkündür. */
/*LCD ekranindaki yönergeler kullaniciyi yönlendirmektedir. */
/*********************************************************************************************/
/* LCD Girislerinin Tanimlanmasi */
#define Data P1 // LCD Data girisleri için port ata
#define RS P2_1 // Kaydedici seçme girisi RS=0 komut, RS=1 veri
#define EN P2_0 // Yetki girisi düsen kenarda çalisir, önce 1 sonra 0 yapilmali
/* LCD Komut Kod Tanimlamalari */
#define Sil 1 // Ekrani temizler
#define KursorGizle 12 // Displayi aç, kürsor görünmesin
#define CiftSatir8Bit 56 // 8 bit ara birim, 2 satir, 5*7 piksel
#define SagaYaz 6 // Kursorun belirttigi adres artarak gider
#define IkinciSatir 192 // Ikinci satirin baslangiç adresi
/*SRF04 e çalismaya baslama palsi gönderen fonksiyon*/
void palsgonder(void){
int say=0;
P2_3=1; //SRF04 ün pals girisi
while(say!=2){ //18usn lik pals üret
say++;
}
P2_3=0;
}
/* LCD Gecikme Fonksiyonu */
void Gecikme (long int sure)
{
long int i;
for (i=1;i<=sure;i++)
{;}
}
/* LCD Komut Yazdirma Fonksiyonu */
void DataKomut (int komut)
{
RS=0; // RS komut modunda
EN=1; // islemin yetkilendirilmesi için düsen kenar ayar islemi
Data=komut; // LCD data girislerine komut bilgisini aktar
EN=0; // yetki için düsen kenar saglandi
Gecikme(1000); // 1000 saykillik gecikme
}
/* LCD Veri Yazdirma Fonksiyonu */
void DataVeri (char veri[], long int hiz)
{
int i=0;
while(veri[i]!=0)
{
RS=1; // RS veri modunda
EN=1; // islemin yetkilendirilmesi için düsen kenar ayar islemi
Data=veri[i]; // LCD data girislerine veri bilgisini aktar
EN=0; // yetki için düsen kenar saglandi
i++; // bir sonraki veri bitini almak için dizi sayisini 1 arttir
Gecikme(hiz);
}
}
/* LCD Baslangic Ayarlarini Yapan Fonksiyon */
void LcdAc(void)
{
int baslangic[]={KursorGizle, CiftSatir8Bit, SagaYaz},t;
for (t=0;t<3;t++)
DataKomut(baslangic[t]);
}
void bekle(){
int i;
for(i=0;i<=5000;i++);
}
/* LCD Rakam Gösterme Fonksiyonu*/
void derecegoster(int derece){
int ascii;
switch (derece){
case 0: ascii=0x30;break;
case 1: ascii=0x31;break;
case 2: ascii=0x32;break;
case 3: ascii=0x33;break;
case 4: ascii=0x34;break;
case 5: ascii=0x35;break;
case 6: ascii=0x36;break;
case 7: ascii=0x37;break;
case 8: ascii=0x38;break;
case 9: ascii=0x39;break;
default:;break;
}
RS=1; // RS veri modunda
EN=1; // islemin yetkilendirilmesi için düsen kenar ayar islemi
Data=ascii; // LCD data girislerine veri bilgisini aktar
EN=0;
}
/* LCD Imlec Kaydirma Baslangic Deger Fonksiyonu*/
void imleckaysaga(){
RS=0; // RS komut modunda
EN=1; // islemin yetkilendirilmesi için düsen kenar ayar islemi
Data=0x14; // Data kodu degeri
EN=0; // yetki için düsen kenar saglandi
Gecikme(1000); // 1000 saykillik gecikme
RS=1;
}
/* LCD Imlec Göster Baslangic Deger Fonksiyonu*/
void imlecgoster(){
RS=0; // RS komut modunda
EN=1; // islemin yetkilendirilmesi için düsen kenar ayar islemi
Data=0x0F;
Gecikme(1000);// LCD data girislerine komut bilgisini aktar
EN=0; // yetki için düsen kenar saglandi
Gecikme(1000); // 1000 saykillik gecikme
RS=1;
}
void main(){
//Degisken tanimlamalari
unsigned long int deger=0;
unsigned long int mikrosn=0;
unsigned long int cm=0;
unsigned long int gecici,kalan,y,rakam;
int x=0,z=0;
long int dizi[10];
P2_3=0; //Pals gonderme portu sifir(ultrasonik trigger)
LcdAc(); //LCD Baslangic Ayari
imlecgoster(); //LCD Baslangic Ayari
DataKomut(Sil); //LCD Ekrani Silme
DataVeri ("Cisim Bulunamadi", 1); //Default deger
while(1){
while(!P2_4); //Butona basildiktan sonraki döngüde birakilana kadar bekle
while(P2_4); //Butona basilinca ÇIK
palsgonder(); //SRF04 e tetikleme palsi gönder
while(!P2_2); //SRF04 ün pals çikisi lojik 1 olana kadar bekle
while(P2_2){ //SRF04 ün pals çikisi lojik 0 olana kadar bekle
deger++; //deger degiskenini 1 arttir.
}
mikrosn=deger*18; //mikrosn olarak çikis palsinin uzunlugunu hesapla
cm=mikrosn/58; //santimetre olarak çikis palsinin uzunlugunu hesapla
if(cm >= 18000){ //Cisim algilanamadiysa ekrana Cisim YOK yaz
DataKomut(Sil); //LCD Ekrani Silme
DataVeri ("Cisim YOK", 1);
}
gecici=cm;
//Santimetre degerini ekrana yollama islemi
while(gecici!=0){
kalan=gecici%10;
dizi[x]=kalan;
x++;
gecici=gecici/10;
}
mikrosn=0;
deger=0;
kalan=0;
gecici=0;
DataKomut(Sil); //LCD Ekrani Silme
DataVeri ("Cismin Uzakligi", 1);
DataKomut(IkinciSatir);
y=(x-1);
for (z=0;z<=(x-1);z++){ //Dizideki degerleri cagirma islemi
rakam=dizi[y];
derecegoster(rakam);
imleckaysaga(); //Her karakteri tazdiktan sonra LCD imlecini saga kaydir
y--;
}
x=0;
}
}

8051 ile lm 35 ısıs sensörü ve adc 0831 çevirici kullanımı için örnek detaylı bir proje. Hazırlayan :Özer Deniz Hazırlayan...

Zener Diyot ve Direncinin Seçilmesi
Türkçe Labview Kullanım Kılavuzu (ileri seviye)
PIC16F876 Programlama ve Test Kartı
320volt.com © | Altyapı: Worpdress | Tema: Sleepy Blue’ WordPress Theme Tasarım: Eyoung | Çeviri ve Düzenleme 320volt.com
17/05/2009 15:09
okulda bizde yaptık bunlardan sumo robot için
o parçalrın adı USR_TX ve USR_RX
18/05/2009 20:17
arkadaslar bende hocamdan bıtırme tezı olarak bu konuyu aldım ..
galıba bende bu devreyı gerceklestırecegım..
ılk olarak bu devre calısmasında her hangı bır sorun verıyormu ..
ıkıncısı olarakta bu devrenın malıyetı ne kadar tutuyor onu soracaktım ..
eger elınızde yazılmıs tez varsa yardımlarınızı beklıyorum ..
tesekkurler herkese ..
emegı gecen herkese saygılar
22/02/2010 05:11
Srf04′ü nereden aldığınızı sorabilir miyim.