5 Mayıs 2018 Cumartesi

RGB LED Kullanımı

RGB Led ler adından da anlaşılacağı üzere kırmızı, yeşil ve mavi renkli ledlerin aynı kılıf içerisine toplanmış halidir. Her ledin iki bacağı olmasına karşın üç farklı ledin birleşimi olan bu ledin dört bacağı vardır ve bu sebeplede RGB ledler ortak bacağın anot olması veya ortak bacağın katot olması durumuna göre iki model üretilirler aralarındaki tek fark bu ortak bacağın anot (+) yada katot(-) olmasıdır. Bunun dışında görselde görüleceği üzere uzun bacak (ortak bacak) sol baştan ikinci sırada tutulacak şekilde bakılırsa her zaman en soldaki kırmızı, ortak bacağın hemen yanındaki yeşil ve en sağdaki bacak ise mavi led içindir. Bildiğiniz gibi ledler bir diyot çeşididir ve farklı ışıma yapan kısımlardan oluşur ve bu diyotların içerisinde kullanılan kimyasallar ile farklı ışımalar mümkün olmaktadır yani dış kılıfları renkli değildir. 
Bu durumda renkleri ayrı ayrı yakmakla birlikte aynı anda farklı renklerin yanması ile yeni renkler elde edilir. Yandaki görselde ana renklerin kesişim noktalarına baktığınızda mavi ve kırmızı ile mor veya magenta, mavi ile yeşilde turkuaz veya cyan, yeşil ve kırmızı karışımında sarı ve son olarak kırmızı mavi ve yeşil karışımında beyaz oluşmaktadır. Renkler konusu da 7. sınıf fen bilgisi dersi konularında aynen bu şekilde işlenmektedir.

RGB ledleri farklı projelerde birçok amaç için kullanabiliriz. tek yapmamız gereken her rengin dayanabildiği bir voltaj direnci vardır ve buna dikkat etmemiz gerekir ki buda ledlerin renklerine uygun direnç seçimi ile yapılır. Bu konu Temel elektronik anlatımları altında ayrıca anlatılmıştır.

Potansiyometre Kullanımı

Potansiyometre ortaokul 6.sınıfta fen bilgisi dersinde gördüğümüz sürgülü reosta yani ayarlı direnç olarakta bilinen bir devre elamanıdır. Orta bacaktan çıkış gerilimi alınır. İç yapısında bulunan direnç malzemesi ayarlanarak istenilen seviyeye getirilir ve  bu sayede orta bacaktan istenilen voltaj seviyesi elde edilir.

A Bacağı: +5V
B Bacağı: GND
C Bacağı ise kullanılacak(kontrol edilecek) diğer devre elemanına bağlanır.

C Bacağından 0-1023 değerleri analog sinyalleri olarak elde edilir. 0-1023 daha öncede söylediğimiz gibi arduino üzerindeki 10 bitlik adc elmanı kullanıldığından ve dolayısı ile 1024 farklı ikili sayı kodlanabildiğinden bu değerler arasında değerler görünürki bunların voltaj değeri karşılığı hesaplanarak tespit edilir.


Aralık değerleri Volt cinsinden elde edilir, eğer miliVolt olarak kullanılacak olursa bu 1000 ile çarpılarak dönüşümü yapılır.


Örnek Kullanım Kodları


const int pot(A0);
int gelendeger;
float vson;
float mvson;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);

}

void loop() {
  // put your main code here, to run repeatedly:
  gelendeger=analogRead(pot);
  Serial.print("Deger=");
  Serial.println(gelendeger);
  vson= (gelendeger/1023.0)*5;
  Serial.print("Volt=");
  Serial.println(vson);
  mvson= (gelendeger/1023.0)*5*1000;
  Serial.print("mVolt=");
  Serial.println(mvson);
  delay(750);

}

LM35 Sıcaklık Sensörü

LM35 Sıcaklık Sensörü bağlantı uçları:



Sıcaklık sensörünün bacaklarının doğru bağlanabilmesi için yazılı yüzünün bize bakması önemlidir buna göre

en soldaki bacak Vcc  = +5V
ortadaki bacak     Out  = Analog Çıkış Bacağı A0, A1, A2 hangisini isterseniz
en sağdaki bacak GND= Arduino üzerindeki GND pinlerinden birine bağlanır.

Çalışma Prensibi: Ortamın sıcaklığını doğrudan ölçmediğimizi bilmemiz gerekiyor. Bu ne demek lm35 üzerinden doğru bağlantıları yaptığımızda çıkış ucunda 0-1023 arasında değerler elde ediyoruz sebebi arduino üzerinde 10 bitlik adc kullanılmış olmasıdır. İşte tamda bu noktada lm35 i üreten firmanın bu elaman için yayınladığı değerlere ihtiyacımız var bunlara datasheet deniliyor. Demekki elimizdeki lm35 sensörünün üreticisini bilmemiz gerekiyor  bilemez isek ne olacak ortalama birbiri ile aynı olabileceğini düşünerek bulduğumuz bir lm35 datasheetine göre hareket edebiliriz. Genelde lm5 ler 1 santigrat derece için 10mV çıkış verirler yani biz Vcc bacağından giriş gönderdiğimizde lm35 içerisinden ortamın sıcaklığına göre çıkış bacağından her 1 santigrat derece için 10mVolt çıkışa izin verilir. 
Arduinomuzda 10bitlik adc den  0-1023 değeri aralığında çıkış aldığımız için önce bu dönüşümlerini yapmalıyız.

Örneğin lm35 out dan 45 değeri okunuyorsa bu değeri 1023 bölmeliyiz ve 5Volt ile çarpmalıyız ki kaç voltluk çıkış verdiğini bulalım.
 
5volt nereden geliyor çünkü Anolog girişimizden 5volt girişi yaptık ve çıkış sinyalimize düşen gerilimi hesapladık. Örnek değerimizi yani 45 değerini yerine koyarsak.
çıkan değeri lm35 için milivolta dönüştürürsek bu değerin kaç santigrat dereceye karşılık geldiğini hesaplayabiliriz. Çünkü lm35 10 milivoltta 1 santigrat dereceyi işaret ediyordu.
1mV = 0,001Volt olduğuna göre

0,439882x1000 = 439,882mV eder bunuda 10 a bölersek 43,9 santigrat derece hesaplarız. İşte bu yapılan matematiksel işlemleri arduino kodumuz içerisinde de yazdığımızda ve gelen verileri işleyip parametreleri uyguladığımızda santigrat karşılığını elde edebiliriz.

Bu bilgiler olmadan ezbere yapılan her proje havada kalır önemli olan neyin nereden geldiğini araştırmak, bulmak ve öğrenmektedir. Sevgi ve saygılarımla...

Değerleri ve parametreleri kullanarak oluşturduğum kod aşağıdadır.


const int lm35_out=A0; // Buraya Analog pinlerden hangisine bağlarsanız onu tanımlarsınız.A0,A1...
int lm35_sonuc; // A0 a ulaşan değerleri toplayacağımız bir değişken tanımlıyoruz....
float voltajout; // A0 daki değeri voltaj karşılığını tutacağımız değişken...
float derece; // Parametreleri hesapladıktan sonra dereceyi tutacağımız değişken...
void setup()
{
Serial.begin(9600);
}

void loop()
{
lm35_sonuc=analogRead(lm35_out)//prob olarak tanımladığımız A0 pinimizden gelen değerleri alıyoruz.
Serial.print("lm35 out degeri=");
Serial.println(lm35_sonuc);


voltajout=(lm35_sonuc/1023.0)*5000 ;
Serial.print("lm35 voltaj degeri=");
Serial.println(voltajout);
derece= volajout / 10.0 ;
Serial.print("ölçülen sıcaklık degeri=");
Serial.println(derece);
delay(500);

}

Toprak Nem Sensörü

Toprak Nem Sensörünün Kullanımı ve Bağlantısı

Sensör Devresi ve Sensör Probu arasındaki + ve - kutuplarının yönü farketmemektedir. Dilediğiniz gibi bağlayabilirsiniz.

Sensör Devresi üzerindeki pinlerin bağlantısı:
VCC = +5V
GND= GND
D0= Dijital Pin
A0= Analog Pin

Çalışma Prensibi: Prob üzerindeki uçlar arasında oluşan iletkenliğin şiddetini ölmeye dayalı bir mantığa sahiptir. İki sivri uç arasında iletkenliğin arttığı bir ortamda iletkenlik değeri yükselir. İletkenliğin hiç olmadığı yada boşlukta maksimum 1023 değeri ölçülür (Bu değer anolog pinlerde 0-1023 aralığında gelir sebebi arduino üzerinde 10 bit adc(analog - dijital dönüştürücü) kullanılmıştır, ayrıntılı bilgiye başka bir yazımda yer vereceğim). İletkenliği artıran bir sıvıda yada, ıslak bir ortamda bu değerden aşağıya doğru değerler ölçülür ki bu değer hiç bir zaman sıfır (0) olarak ölçülemez öyle olması için iki ucun birbirine değdirilmesi yani kısa devre yapılması gerekir.

Sensör Devresi üzerinde bir adet potansiyometre ve iki adet smd led bulunur. Ledlerden birisi devrenin aktif olduğunu belirtirken diğer led potansiyometreye yapılan ayara göre aktif olur. Potansiyometre üzerinden iletkenlik eşik değerini değiştirebiliyoruz yani led lambayı atıyorum 800 değerinin altında yanmasını ayarlayabiliyor bu sayede görsel olarakta problar arasındaki iletkenlik değerinin 800 altında olduğunu aktif olan bu ledden anlayabiliyoruz. Potansiyometre üzerinden bu ayar yapılarak istenilen seviyede led yakılıp söndürülebilir.

Toprak Nem Sensörü için arduinoda bir kütüphaneye ihtiyaç duyulmamaktadır. Çok basit bir yapıda bağlantısı yapılarak kodlar arasında kullanılır. Genellikle A0 analog pin üzerinden kullanılır. Dijital pinlere de bağlantısı D0 üzerinden yapılır.

En sık kullanılan proje sulama projeleridir. Toprağın nem seviyesini gözlemleriniz ile tespit edebildiğiniz sürece bu sensör ile gözlemlediğiniz toprağın iletkenlik eşiğini baz alır bu değerin üzerinde olan seviyelerde bir sulama motorunu açıp kapatabilirsiniz. Örnekler çoğaltılabilir genellikle birlikte çalıştığım çocuk ve genç öğrencilerim bu projeden çok keyif alıyorlar. 



const int prob=A0; // Buraya Analog pinlerden hangisine bağlarsanız onu tanımlarsınız.A0,A1...
int sonuc; // A0 a ulaşan değerleri toplayacağımız bir değişken tanımlıyoruz....
void setup()
{
Serial.begin(9600);
}

void loop()
{
sonuc=analogRead(prob)//prob olarak tanımladığımız A0 pinimizden gelen değerleri alıyoruz.
Serial.print("iletkenlik degeri=");
Serial.println(sonuc);
delay(500);

}