Sensör (Algılayıcı) Nedir? Ne Değildir?

Sensörler veya daha Türkçe bir tabirle algılayıcılar sıcaklık, basınç, uzaklık vb. ölçülebilen fiziksel büyüklüklerin dijital ortamda ifade edilebilmesini sağlayan elektronik elemanlardır. Anneanneye anlatılabilir şekilde ifade edersek sensörler bir makinenin duyu organlarıdır. İşin hikaye kısmını bir kenara bırakalım ve sensörler nasıl kullanılır, hangi durumlarda hangi sensörler kullanılmalıdır gibi sorulara yanıt bulmaya çalışalım. Bunun için öncelikle önemli bir kaç kavramı açıklama ihtiyacı hissediyorum.

Bazı Önemli Kavramlar

Bu kavramlar hangi sensörü seçmemiz gerektiği hususunda bize yardımcı olacak kavramlardır. Ayrıca sensörlerin sınıflandırılmasında kullanılırlar.

Analog Sinyal

Analog sinyal sürekli ve kesintisiz sinyaldir denilebilir. Grafik üzerinde sonsuz noktayla ifade edilebilir. Örneğin bir sinüs işaretini düşündüğümüzde zaman eğrisi üzerinde seçeceğimiz noktaların her biri için gerilim eğrisinde bir nokta vardır.

Analog Sinyalin Grafiği

Dijital Sinyal

Sayısallaştırılmış sinyal formatıdır. Sinyal 1 ve 0 lardan oluşur. Bir verinin mikrodenetleyici gibi bir dijital sistem tarafından okunabilmesi için bu şekilde ifade edilmesi gerekir. Kesikli zamanlıdır ve grafik üzerinde iki nokta ile ifade edilebilir. Dijital denilince akla görseldeki gibi bir sinyal gelmelidir.

Dijital Sinyalin Grafiği

Çözünürlük

Çözünürlük sensör tarafından okunan verinin hangi hassaslıkta okunabildiğini belirleyen kavramdır.

ADC (Analog to Digital Converter)(Analog Dijital Dönüştürücü)

ADC analog elektrik sinyalini mikrodenetleyicinin kullanabileceği dijital elektrik sinyaline dönüştüren birimdir. Bu birimin çözünürlüğü analog verinin dijital veriye ne kadar hassas dönüştürülebileceği konusunda belirleyicidir.

Dijital Sensör

Dijital sensörler 1 bitlik veri çıkışı sağlarlar. Bir şeyin var ya da yok olduğu bilgisini ölçerler. Örneğin 1-10 cm ölçüm aralığına sahip dijital bir uzaklık sensörü 1-10 cm aralığında herhangi bir cisim var ise 1 yok ise 0 verisi döndürür. Cismin hangi uzaklıkta olduğu verisi bu tip bir sensör ile elde edilemez.

Analog Sensör

Analog Sensörler adından da anlaşılacağı üzere analog çıkış sağlarlar. Çıkış verilerileri teorik olarak sonsuz çözünürlüklüdür. Ancak dijital bir sistemde kullanıldıklarında çözünürlükleri analog veriyi dijital veriye dönüştüren ADC'nin çözünürlüğüyle sınırlanmış olur. Örneğin 1-10 cm ölçüm aralığına sahip analog bir uzaklık sensörü bu aralıkta bir cisim var ise cismin sensöre olan uzaklığını, cisim yok ise maksimum uzaklık değeri olan 10 cm bilgisini döndürür.

Normally Open / Normally Close (Normalde Açık / Normalde Kapalı)

Normalde açık ve normalde kapalı dijital sensörler için kullanılan kavramlardır. Normalde açık sensörler, sensör herhangi bir veri okumuyor ise 0,okuyorsa 1 değeri döndürürler. Normalde kapalı sensörler normalde açık sensörlerin tersine, sensör herhangi bir veri okumuyor ise 1, okuyor ise 0 değeri döndürürler. Aralarındaki en can alıcı fark sensörün bozulma durumunda ortaya çıkar. Sensör arızası durumunda kullanılan sensör eğer normalde açık bir sensör ise sensör arızası ancak sensörden veri gelmesi gereken durumda farkedilebilir. Bu durum can ve mal kayıplarına neden olabilir. Aksine kullanılan sensör normalde kapalı bir sensör ise arıza durumunda 0 değeri döndürmeye başlayacaktır. Bu durumda sensör arızası anında tespit edilip sensörün bağlı olduğu sistem durdurulabilir, can ve mal kayıplarının önüne geçilebilir.

Active Sensor / Passive Sensor (Aktif Sensör / Pasif Sensör)

Aktif sensörler ölçüm yaptıkları ortama bir enerji verirler ve o enerji üzerindeki değişimlerden yararlanarak istenilen ölçümü gerçekleştirirler. Örneğin CNY70 kontrast sensörü ortama düşük dalga boylu bir ışık yayar ve yansıyan ışığın yoğunluğuna göre ölçüm yaptığı yüzeyin kontrastı hakkında bir bilgi verir.
Pasif sensörler ölçüm yaptıkları ortamdan aldıkları enerjiyi kullanarak bir çıkış sinyali üretirler. örneğin LDR'ler bu tip sensörlerdendir. LDR'nin direnci ortamdaki ışık miktarına bağlı olarak değişir ve bu sayede ortamdaki ışık miktarını ölçmede kullanılabilir.

Ham Sensör Verisi

Sensörden okunan herhangi bir fiziksel anlam ifade etmeyen genelde gerilim cinsinden ifade edilen veridir.

İşlenmiş Sensör Verisi

Sensörden okunan ham verinin sensör datasheetinden elde edilen işlemler uygulanarak arzu edilen fiziksel büyüklüğe dönüştürülmüş halidir. Örneğin bir basınç sensörü için okunan ham veriden türetilen bar veya pascal cinsinden veri işlenmiş veri olarak adlandırılır.

Sensör Seçimi ve Çözünürlük Hesabı

Sensör Seçimi

Sensör seçerken en önemli parametre sensörün ne amaçla kullanılacağıdır. Eğer sensör basitçe bir anahtarlama elemanı olarak kullanılacaksa (limit switch veya optokuplör örneklerinde olduğu gibi) dijital sensörler tercih edilmelidir. Dijital sensörler seçilirken yukarıda bahsedilen normalde açık, normalde kapalı özellikleri de göz önünde bulundurulmalıdır. Eğer sensör fiziksel bir büyüklük ölçmek için kullanılacak ise (sıcaklık, basınç, ışık sensörü örneklerinde olduğu gibi) analog sensörler tercih edilmelidir.
İkincil olarak sensörün çalışma aralığı göz önüne alınmalıdır. Kullanılacak sensörün besleme ve çıkış voltajları kullanılan sistemin elektroniği ile uyumlu olmalıdır. 5V giriş ve besleme gerilimine sahip bir sistemde yine 0-5 V aralığında çıkış sinyali üreten bir sensör tercih edilebilir.
Kullanılacak sensör analog sensör ise ADC seçimi de en az sensör seçimi kadar etkilidir. Yukarıda da belirttiğim üzre kullanılan ADC aslında sensör çözünürlüğünü sınırlayan temel parametredir. Kullanılan ADC ne kadar yüksek çözünürlüğe sahipse sensörden o kadar yüksek hassasiyette veri alınabilir.

Çözünürlük Hesabı

Bu hesabı yaparken bir kullanım senaryosu üzerinden gitmeyi daha yararlı buluyorum. Örnek senaryoda bir taşıma firması için ağırlık ölçüm sistemi tasarımı yaptığımızı düşünelim. Bu sistemin tasarımı için öncelikle sistemden beklenen özellikler bilinmelidir.Bu örnekte firmanın beklentisi 0 - 5 ton arası en az 1 kg ölçüm hassasiyeti ile ölçüm yapabilen minimum maliyetli bir sistem olsun. Bu sistem için öncelikle ölçümü yapacak sensör seçilmelidir. Sensör seçimindeki belirleyici etkenler basitçe 5 ton ya da daha fazlasını ölçebilmesi ve çalışma gerilimidir. Tüm sistemde 10 V çalışma gerilimini kullandığımızı varsayalım. Bu durumda sensör seçiminde de 0 - 10 V arası çıkış veren bir sensör tercih etmek uygun olacaktır. Maliyet parametresini de dikkate alarak 0 - 5 ton arasındaki kütleleri ölçebilen 10 V çalışma gerilimli en ucuz loadcell (kütle ölçmek için yaygın kullanımlı bir sensör tipi) tercih edilmelidir. Bu şekilde ilk şart sağlanmış olur. İkinci şart yani ölçüm hassasiyetini sağlamak için kullanılacak ADC de büyük önem taşır. 1 kg ölçüm hassasiyeti yakalamak için 5 ton / 1 kg = 5000 ölçüm kademesine ihtiyaç vardır. Bu da kullanılacak ADC'nin çözünürlüğünün 5000 ya da daha büyük olmasını gerektirir. ADC çözünürlükleri bit cinsinden ifade edilir. Ve 2^n şeklinde hesaplanır. Örneğin 8 bit'lik bir ADC'nin çözünürlüğü 2^8 = 256'dır. Örneğimize dönecek olursak kullanılacak ADC'nin en az 13 bit çözünürlüğünde olması gerektiğini göreceğiz. 13 bit = 2^13 = 8192 kademe sağlar ve bu değer bize gereken 5000 değerinden yüksek en küçük ADC çözünürlük değeridir. Sistemde bu ADC kullanıldığında 0 - 5 ton arası ölçümleri 5000 / 8192 = 0.61 kg ölçüm hassasiyeti ile yapabiliriz. Duruma elektriksel açıdan bakarsak aslında 0 - 10 V aralığını da 8192 parçaya böldüğümüzü söyleyebiliriz. Bu durumda bu ADC kullanılarak işlemci tarafından algılanabilen birim gerilim farkı da 10 V / 8192 = 0.122 mV'dur.

Biraz da Pratik :)

Bu bölüme kadar sensörler ve suç ortakları ile ilgili teorik bir takım şeylerden bahsettim. Bunlar ziyadesiyle sıkıcı olmakla birlikte bilinmesi gerektiğini düşündüğüm şeylerdi. Bu bölümde bu bilgilerden de yararlanarak sıkça kullanılan bazı sensörlerden veri toplama ve bu verileri fiziksel büyüklükler cinsinden ifade etme üzerine örnekler yapacağım. Bu örnekleri elektronik kısmını bir külfet haline getirmemek amacıyla Arduino üzerinde yapacağım. Ancak siz küçük değişiklerle her türlü platformda uygulayabilirsiniz.

Bu yazıda sensörlerin bağlantılarından bahsetmeyeceğim. Kullanmak istediğiniz sensörün bağlantılarını bulmak için #sensör ismi# arduino veya #sensör ismi# wiring anahtar kelimelerini google aramalarında kullanabilirsiniz.

Sharp GP2Y0D805Z0F Kızılötesi Uzaklık Sensörü

Basit bir uzaklık sensörü ve özellikleri şöyle:

  • Tipi : Uzaklık Sensörü, Limit Switch
  • Çıkış Tipi : Dijital sensör
  • Çözünürlük : 1 bit
  • Normally close
  • Ölçüm Aralığı : 0.5 - 5 cm
  • Çalışma gerilimi : 2.7V - 6.2V (yani 5V sistemlerde kullanılabilir)

Bir dijital sensörden veri elde etmek için mikrodenetleyici üzerindeki I/O pinleri kullanılabilir. Sensörün data bacağının Arduino üzerinde D8 pinine bağlı olduğunu varsayarsak sensörden veri elde etmek ve bu verileri Arduino seri monitöründe göstermek için şu şekilde bir kod kullanılabilir.

/*
Sharp GP2Y0D805Z0F Infrared Distance Sensor
--------------------------------------------
coded by Yasin Kaya (selengalp)
07.05.2016
*/
 
// defining Sensor Pin 
#DEFINE SENSOR_PIN 8

// SETUP
void setup() {
  // begin serial monitor with 9600 boudrate
  Serial.begin(9600);
  
  // sensor pin is assigned as input 
  pinMode(SENSOR_PIN,INPUT);
}

// LOOP
void loop() {
  // defining sensor_data variable
  // bool variable because GP2Y0D805Z0F is a digital sensor and gives "0" or "1" 
  bool sensor_data = false;

  // reading sensor data
  sensor_data = digitalRead(SENSOR_PIN);

  // printing sensor data to serial monitor
  Serial.println(sensor_data);
}

LM35 Sıcaklık Sensörü

Sıkça kullanılan basit bir sıcaklık sensörü ve özellikleri şöyle:

  • Tipi : Sıcaklık sensörü
  • Çıkış Tipi : Analog sensör
  • Çözünürlük : 10 bit (Arduino Uno ADC)
  • Ölçüm Aralığı : (-55°C,150°C)
  • Çalışma gerilimi : 4V - 30V (yani 5V sistemlerde kullanılabilir)

Bir analog sensçrden veri elde etmek için mikrodenetleyici üzerindeki analog giriş özelliğine sahip I/O pinleri kullanılabilir. Sensörün data bacağının Arduino üzerinde A0 pinine bağlı olduğunu varsayarsak sensörden veri elde etmek bu ham veriyi anlamlı bir sıcaklık verisine döndermek ve bu verileri Arduino seri monitöründe göstermek için şu şekilde bir kod kullanılabilir.

/*
LM35 Temperature Sensor
--------------------------------------------
coded by Yasin Kaya (selengalp)
07.05.2016
*/
 
// defining Sensor Pin 
#DEFINE SENSOR_PIN A0

// SETUP
void setup() {
  // begin serial monitor with 9600 boudrate
  Serial.begin(9600);
  
  // sensor pin is assigned as input 
  pinMode(SENSOR_PIN,INPUT);
}

// LOOP
void loop() {
  // defining sensor_data variable
  // int variable because we know that the received value is between `0 - 1024`.
  int raw_sensor_data = 0;
  
  // float variable because LM35 is an analog sensor 
  float sensor_data = 0;

  // reading sensor raw data
  raw_sensor_data = analogRead(SENSOR_PIN);
  
  // calculating temperature in Degree-Celcius from raw data.
  sensor_data = raw_sensor_data * 0.48828125; //(0.48828125 = 500mV/1024 .48828125)
  
  // printing sensor data to serial monitor
  Serial.println(sensor_data);
}

Kaynaklar:

http://www.ck12.org/user:sciencepbvusd/book/8th-Integrated-Science/section/8.2/
https://www.instructables.com/id/LM35-Temperature-Sensor/