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

27 Aralık 2016 Salı

Arduino, LM35 ve LCD Ekran ile Sıcaklık Ölçümü



Şimdiki projemizde lm35 i kullanarak lcd ekrana sıcaklı değerini yazdıracağız.Daha önceki derslerimizde LCd ekrana yazı yazdırmayı öğrenmiştik o konuyu geçtiğimiz varsayıyorum.Eğer bakmadıysanız buradan bakabilirsiniz.Bizim için önemli olan LM35 sensorunden gelen analog değeri okuyarak sıcaklık ile orantılamak olacak.Bir sensorden veri okuyup yorumlayacaksanız öne sensorun katalog bilgilerini gözden geçirmeniz gerekecek. Lm35 in datasheetinden sensorun sıcaklık ile çıkışını şu şekilde vermişler.




Görüldüğü gibi 1500 mV ta 150°C olduğunu söylüyor.Buradan oran orantı kurarak işlem yapacağız.Bizim analogRead komutu ile okuduğunuz değer 0-5V arasını 0-1023 arası olarak okuyor.
1500 mV hangi değere denk geldiğini bulmalıyız ki derce ile analog okunan değer arasında bağıntı kuralım.

                 5000mV            1023
                 1500mV               x
                ______________
                x = (1500*1023) /5 000= 306,9

Yani 306,9 değeri olarak verilmiş ama biz bunu integer olarak okuyacağımız için 307 değeri alalım ve diyelim ki 307 değeri geldiğinde ortam 150°C ye gelmiş demektir.Şimdi bir orantı daha kurarak işlemi tamamlıyoruz.

                 150°C           307
                 Sıcaklık         analogRead
                ______________
    *            Sıcaklık = (150*analogRead) /307

İşte yıldızlı orantı ile artık sıcaklık değerimiz bulabiliriz.
Şimdi devreyi kurup programı yükleyip çalıştırması kaldı.Bu arada unutmadan LM35 in bacak bağlantılarına datasheetten bakmak gerekir ki pin bağlantısını doğru yapalım.




Program:
#include <LiquidCrystal.h>
// LiquidCrystal(rs, enable, d4, d5, d6, d7) ilk komutu kullanarak pin bağlantılarını belirliyoruz.
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
 float sicaklik;
  int analogdeger;
void setup() {
  lcd.begin(16, 2); /* Kullandigimiz LCDnin sutun ve satir sayisini belirtmeliyiz */
  lcd.clear();
 }
void loop() {

  analogdeger=analogRead(A0);//Ao dan okuduğumuz LM35 değeri
  sicaklik = (150*analogdeger)/306;//formülümüzü yazdık
 
  lcd.setCursor(3, 0); /* Imlecin yeri 1. satir 3. sutun olarak ayarlandi */
  lcd.print("Sicaklik:"); /* Ekrana yazi yazalim */
  lcd.setCursor(5, 1); /* Imlecin yeri 2. satir 5. sutun olarak ayarlandi */
  lcd.print(sicaklik);//sicaklik değeri yazdırıldı.
}


Devre Şeması:


İşlem gayet basit kolay gelsin.





Devamını Oku

13 Aralık 2016 Salı

analogWrite Komutu



Analog işlemin ne olduğunu Mikrodenetleyicide Analog Bacakla İşlem Yapma makalem de temel olarak bahsetmiştim. Ama yine de kısa olarak bahsetmek isterim. Günümüzde bir çok alanda analog olarak işlem yapan cihaz görürüz aslında. Ama bunun farkında olmayabiliriz. Açılır kapanır kapılar nasıl olurda hızlı bir şekilde kapanırken bir anda yavaşlayarak kapanır da hızla kapının iki parçasının çarpışması önlenir. Bir ledin parlaklığını nasıl kontrol ederiz. Asansörler yavaşça kalkıp hızlanırken nasıl olurda yavaşlayarak dururlar. İşte bu soruların cevabı. Bu sistemlerde ki aktüatörlerin çalışma gerilimlerini değiştirerek sistemlerin hareket hızlarıyla oynanır.5V la çalışan bir lede 2,5 V verilirse toplamda ki led parlaklığını yarısını lede ederiz. Matematiksel olarak da açıklamalar mevcut.Ama şuan temel olarak derslerimizi işleyeceğimizden matematiksel kısma girmiyoruz.

Şimdi arduinoda bu işin nasıl yapılacağını öğreneceğiz. İlk olarak  analogWrite komutu ile analog bilgi gönderme işlemini gerçekleştirelim. Hangi pinden analog bilgi gönderebileceğimizi pinin yanındaki dalga şeklinden anlarız. Aşağıdaki şekilde belirtildiği gibi.



           analogWrite(pinnumarasi,deger); hangi pinle işlem yapılacağı belirlendikten sonra pinde ne kadar analog değer derilmesi işlemi için değer kısmına 0-255 arası değer girlir.Yazının başında belirttiğim makalemde oran orantı kurulma işlemiyle 0-5 volt arası değeri seçtiğiniz pinden elde edebilirsiniz. Unutmadan şunu da belirteyim. Bu amaçla kullanacağınız bacağı pinMode komutuyla çıkış olarak tanımlamanız gerekir.

Örnek:

5 nolu pinden 4V çıkış almak için

                 5V             255
                 4V               x
                ______________
                x = (4*255) /5 = 204

analogWrite( 5 , 204 );


Devamını Oku