LM016 etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
LM016 etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

26 Mart 2014 Çarşamba

Arduino - HC-SR04 Ultrasonik Sensör ile Mesafe Ölçer Uygulaması

Merhaba. Bu yazımda HC-SR04 ultrasonic sensörünü tanıyıp cisim algılama ve de mesafe ölçümü yapacağız. Ses dalgaları sınıflandırılmasında 20 KHz-1 GHz arasındaki ses sinyalleri ultrasonic ses olarak tanımlanmıştır.Bizim sensörümüz ve bir çok ultrasonic sensör 40Khz frekansında ultrasonic ses üretmektedir. Burada önemli olan sesin yüksekliğinde belirleyici olan etken frekanstır.Ses yüksekse frekansta yüksektir.Ultrasonic ses sinyallerini insan kulağı algılayamaz.


Aslında HC-SR04 tüm haliyle bir transdüserdir. Transdüser ile sensör arasındaki fark ise sensör herhangi fiziksel bir değişimi algılayan bir eleman iken, transdüser bu değişimi algılayıp elektrik,ısı vs. bir çok enerji formuna dönüştürebilen bir elektronik devredir.

HC-SR04'te 2 adet araba farını andıran bir tanesi ses iletici diğeri de ses alıcı olan transdüser bulunmakta. Sol taraftan 40 KHz'de üretilen ses sinyal darbesi engele çarpıp sağ tarafa gelir ve biz bu gidiş-geliş arasındaki zamanı, cm'ye çevirerek uzaklığı ölçeceğiz.


T=0 zamanında darbe iletilir(ultrasonic ses sinyali), cisimden yansır, transdüser tarafından algılanır ve tekrar
gönderilir.



Sonraki darbe ilk darbenin ultrasonik enerjisinin hepsi absorbe edildiğinde iletilmelidir.Bu yüzden sensöre bir pals gönderilir sensör okunur ve sensörün datasheetinde yazan süre kadar sensöre tekrar pals gönderilmez.Eğer bekleme yapmaksak sensör saçma değerler döndürür.Çünkü ilk yolladıgımız sinyal bir yerden yansıyarak sensöre geri dönmeye devam eder.


Sensör üzerinde 4 adet pin mevcut.Bunlar;vcc,gnd,trig,echo pinleri.Sensör kendi içerisinde 40khz frekansında bir sinyal üretip  8 pals verici transdüsere gönderiyor.Bu ses dalgası  
havada, deniz seviyesinde ve 15 °C sıcaklıkta 340 m/s bir hızla yol alır.Bir cisme çarpar ve geri sensöre yansır.Cismin sensörden uzaklıgı ile doğru orantılı olarak echo pini bir süre lojik 1 seviyesinde kalır ve tekrar lojik 0 olur.Bizim bu mesafeyi ölçmekiçin tek yapmamız gereken echo pininin ne kadar lojik1 oldugunun süresini bulmaktır.Bu yapı yukarıdaki resimden daha iyi görülebilir.

Echo pininin lojik 1de kalma süresini mikrodenetleyici timerı ile ölçelim. Klasik yol=hız*zaman dan ve sesin 340m/sn lik hızınıda 34000cm/1000000us (340000/1000000=1/29) olarak düzenlersek  formül x=t/29 olarak bulunur.Fakat burada önemli bir nokta sensörün bize döndürdüğü süre, ses sinyalinin gönderilmesi ile alınması arasındaki oluşan süre. Yani yol=zaman/29 ile aradaki mesafeyi iki ile çarpmış oluyoruz.Çünkü ses hem gitti hem geldi.Bu yüzden x=t/58 formulüyle aradaki mesafeyi ölçmüş olacağız . Bazı yerlerde 58 yerine 58.2 veya 59 yazanı da gördüm artık sizin kararınıza kalmış birşey.

Buna ek olarak da 13.pine led bağladım ve mesafe 15 cm altına düştüğünde led yansın istedim.Siz isterseniz bir buzzer koyabilirsiniz. Buyrun kodlar ;

#include <LiquidCrystal.h>
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
int trigPin=2; //define trigPin 2
int echoPin=3; //define echoPin 3
int led=13;
void setup() {
  
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
  pinMode(led,OUTPUT); 
 lcd.begin(16,2);
}

void loop() {
  int sure, uzaklik;
  lcd.clear(); 
  lcd.setCursor(0,0);
  
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(1000);
  digitalWrite(trigPin, LOW);
  sure = pulseIn(echoPin, HIGH);
  uzaklik = (sure/58);
  
  if (uzaklik<15)
  {digitalWrite(led,HIGH);}
  else {digitalWrite(led,LOW);} 
  
  lcd.print("Uzaklik = ");
  lcd.print(uzaklik);
  lcd.print(" cm"); 
   delay(400);   
}








Video ;




Not: Resimlerin birçoğu www.mcu-turkey.com adresinden alınmıştır. Aynı programı PIC için yapmak isteyenler aşağıdaki adresi ziyaret edebilirler.


http://www.mcu-turkey.com/hc-sr04-ultrasonic-sensor-ile-cisim-algilama-ve-mesafe-olcumu/








15 Mart 2014 Cumartesi

Arduino - LM35 Sıcaklık Sensörü ve LCD ile Termometre Uygulaması


Bu yazımda geçen yazıda yaptığımız termometre uygulamasında kullandığımız seri haberleşme yerine LCD ekranı kullanarak yine aynı projeyi yaptım.

Bu projeyi PCB karta işlerken elbette seri haberleşme portu yerine portatif olan LCD'yi kullanmak durumunda kalırız. Bu yüzden LCD'yi de öğrenmek mühim. Zaten Seri Haberleşmeyi tam olarak öğrenebilirsek LCD'yi de kullanmak zor olmayacaktır.

Burda sadece LCD Ekran kullanımı ve LM35 Termometre projelerini birleştirdim ve aşağıdaki kodu koştum. LCD Bağlantılarını tekrar yazacağım uğraşmak istemeyenler için :).








LCD'nin
1 - VSS (Toprak)
2-  +VDD
3-  Potansiyometrenin Ortası
4-  Arduino 7.pinine
5-  Toprak
6-  Arduino 8.pinine

11- Arduino  9.pinine
12- Arduino 10.pinine
13- Arduino 11.pinine
14- Ardunio 12.pinine
15- +VDD   
16-  Toprak

***Şemada 15. ve 16.pinlerin yerlerini ters yazmışım çok özür diliyorum. 15 VDD, 16 Toprağa bağlı olmalı. Potansiyometrenin



Sağ Bacak Toprak, Sol Bacak +VDD

Kodlarımız :

#include <LiquidCrystal.h> // Kütüphane Gerekli
LiquidCrystal lcd(7, 8, 9, 10, 11, 12); //Arduino pinleri LCD için
float sicaklik; //Analog değeri dönüştüreceğimiz sıcaklık 
float analoggerilim; //Ölçeceğimiz analog değer

void setup(){
  lcd.begin(16,2); 
}

void loop(){
  lcd.clear(); 
  lcd.setCursor(0,0); //komutu ile imleci istediğimiz karakter kutusunda konumlanmasını sağlıyoruz.İlk satırın 6.sütununa.
  analoggerilim = analogRead(A1); //A1'den değeri ölç
  analoggerilim = (analoggerilim/1023)*5000;//değeri mV'a dönüştr 
  sicaklik = analoggerilim /10,0; // mV'u sicakliğa dönüştür

  lcd.print("Sicaklik Degeri"); // İmlecten itibaren bu yazı yazılacak
  lcd.setCursor(0,1); // 1.satırın ilk sütunundayız 
  lcd.print(sicaklik); // Ardndan Bu değişken değer yazılacak
  lcd.print(" Derece"); //Değer ardından da bu yazı yazılacak
  lcd.setCursor(1,7);  //Derece yazısının yeri (2.satır,7.sütun)
  delay(1000); //Bu kısım LCD'lerin frekans çalışma aralığı yüzünden giriliyor.

}


Videomuz :








22 Ağustos 2013 Perşembe

Arduino - LCD Ekran Uygulaması

LCD uygulamaları mikroişlemciler ile yapılan uygulamalar için önemli bir temel taş. Çünkü ölçülmesini istediğimiz (mesafe ölçümü,hız ölçümü vs.) birimleri aynı anda ekranda görebilme imkanımız bulunmakta.

Öncelikle LCD ekrandan bahsetmek istiyorum.Gereksiz bilgi ama açılımı Liquid-Cyrstal Display. Piyasada çok çeşidi var hatta Arduino için üretilmiş olanları bile var.Fakat ben LCD ekranımı Arduino'yu almadan çok çok önce aldığım için biraz farklı ve bağlantıları resimden de anlaşılacağı üzere biraz karmaşık oldu.







Bu karmaşıklığı LCD numaralarını göstererek daha basite indirgeyebiliriz. Yan tarafta LM016'nın numaralandırılmış hali var.Fakat sorunlar burda da bitmiyor. LCD üreticisi firmalar bu numaraları sıralı bir şekilde üretmeyebiliyor.





 Ben 1-16 arasında numaralandırılmış olan kısmı lehimleme tercihinde bulundum.

Ekran parlaklığını potansiyometre ile ayarlıcaz.Bunu da VDD-VSS arasında potansiyometre koyarak yapcaz. Yani LCD'nin 3 numaralı kısmı potansiyometrenin orta bacağına takılı olcak. 2 numara VDD ve potansiyometrenin uç bacağı, 1 numara VSS ve o da  potansiyometrenin diğer uç bacağına bağlı olacak.

LCD 4 numaralı pin data girişi yeri, 5 numaralı pin toprağa bağlı ekrana datayı yazacak ve 6 numaralı pin de sinyal aktifliği yeri.Daha çok bilgiyi aşağıdaki adresten LM016L'nin datasheetinden edinebilirsiniz.


http://pdf1.alldatasheet.com/datasheet-pdf/view/146552/HITACHI/LM016L.html



Kodlarımız;



#include <LiquidCrystal.h> // Kütüphane Gerekli
LiquidCrystal lcd(7, 8, 9, 10, 11, 12); //Arduino pinleri LCD için

void setup(){
  lcd.begin(16,2); 
}

void loop(){
  lcd.clear(); 
  lcd.setCursor(0,0); //komutu ile imleci istediğimiz karakter kutusunda konumlanmasını sağlıyoruz.İlk satırın ilk sütununa.
  
lcd.print("arduinotik"); // İmlecten itibaren bu yazı yazılacak
  lcd.setCursor(0,1); // 2.satırın ilk sütunundayız şimdi de
  lcd.print("dunyasi"); // 2.satıra bu yazı yazılacak
  delay(15000); //Bu kısım LCD'lerin frekans çalışma aralığı yüzünden giriliyor.
}


Yüklediğim resim biraz karışık bunun için özür dilerim.O yüzden bağlantıları tek tek yazdım devrenin kurulumunun kolay olması için. LCD'nin pinlerini esas aldım.

LCD'nin
1 - VSS (Toprak)
2-  +VDD
3-  Potansiyometrenin Ortası
4-  Arduino 7.pinine
5-  Toprak
6-  Arduino 8.pinine

11- Arduino  9.pinine
12- Arduino 10.pinine
13- Arduino 11.pinine
14- Ardunio 12.pinine
15- +VDD   
16-  Toprak

***Şemada 15. ve 16.pinlerin yerlerini ters yazmışım çok özür diliyorum. 15 VDD, 16 Toprağa bağlı olmalı.Potansiyometrenin

Sağ Bacak Toprak, Sol Bacak +VDD