7 Şubat 2021 Pazar

Sensör ve Transducer Nedir? Farkları Nelerdir?

Sensör ve transducer yer yer iç içe giren ve karışan kavramlardır. Bu yazıda bu iki kavram arasındaki benzerlik ve farklılıklardan bahsedeceğim.

[2]

Sensör

Sensörler fiziksel dünyadaki değişiklik veya olayları algılayan, bu bilgileri bir çıkış sinyaline çeviren yapılardır.[1] Çıkış sinyali farklı formlarda olabilir.

Sensörlere verilebilecek en basit örnek klasik tip termometrelerdir. Bunlar sıcaklığı ölçer ve kalibre edilmiş civa dolu cam borusu ile kullanıcıya gösterir. Elektriksel sistemlerde bu yapılar okunan fiziksel değerin analog veya dijital şekilde verilmesi olarak değerlendirilebilir.

Transducer

Transducerlar enerjiyi bir formdan başka bir forma çeviren yapılardır. Transducerlar iç yapılarında sensör barındırır. Transducer için en basit örnek mikrofon ve speaker olabilir. Mikrofon ses sinyalini alarak elektrik sinyaline çevirir. Speaker ise elektrik sinyalini alır ve sese çevirir. Burada mikrofon sensör, speaker actuator görevindedir. Amplifier ise sadece girişteki elektriksel sinyali güçlendirerek çıkışa iletir.

Aradaki Önemli Farklar

  • Sensör fiziksel değerleri kullanıcıların değerlendirebileceği veya anlamlandırabileceği formata çevirir. Transducerlar fiziksel değeri başka bir fiziksel değere çevirir.
  • Sensör kendisinden başka bir alt sistem bulundurmayabilir. Transducerler içlerinde en az bir sensör ve çıkış sinyalini/fiziksel değerini sürecek bir sinyal koşullama birimi içerir.
  • Sensörün birincil görevi fiziksel değeri anlamlı bir değere çevirmektir. Transducerın birincil görevi ise fiziksel değeri diğer değere dönüştürmektir.
  • Sensör örnekleri: Barometre, accelerometre (ivmeölçer), gyroscope (dönüölçer).
  • Transducer örnekleri: Thermocouple, thermistor, antenler.

Referanslar:

[1] https://www.electronicshub.org/sensors-and-transducers-introduction/
[2] https://www.stechies.com/difference-between-sensor-transducer/


6 Şubat 2021 Cumartesi

Accuracy, Precision & Resolution Kavramları (Doğruluk, Hassasiyet, Çözünürlük)

Accuracy, Precision ve Resolution kavramları ölçüm sistemlerinde sıklıkla karşımıza çıkan ifadelerdendir. Aynı zamanda bu sistemler için kullanılan sensörlerde de benzer ifadelere rastlayabilirsiniz.

[1]


Bir ölçüm sisteminin performansı sistemin aynı şartlarda aynı sonucu vermesi ile ölçülebilir. Bu durumu başlıkta yer alan kavramlarla açıklayabiliriz.

Accuracy, doğru ölçüme ne kadar yakın olduğunuzu ifade eder.

Precision, arka arkaya alınan ölçümlerde ne kadar tutarlı olduğunu, aynı veya yakın değeri verdiğini ifade eder.

Resolution, ölçümün adım aralığıdır. Örnek olarak 3.3V bir sistemde 12 bit ölçüm alacaksanız çözünürlüğünüz (3.3/4095)V kadardır.

Bu kavramların anlatımını güçlendirmek için aşağıdaki görsel oldukça faydalıdır. Görselde hedefin orta noktası olması gereken ölçüm değeridir. Etrafındaki yıldızlar ise ölçüm değerleridir. Bu 4 görseli sınıflandıracak olursak;

  • Sol Üst: Yüksek accuracy, düşük precision. (Tolere edilebilir)
  • Sağ Üst: Yüksek accuracy, yüksek precision. (En iyi durum)
  • Sol Alt: Düşük accuracy, düşük precision. (En kötü durum)
  • Sağ Alt: Düşük accuracy, yüksek precision. (Tolere edilebilir)



Biz tasarladığımız ölçüm sistemlerinde yüksek accuracy ve precision bekleriz. Bu ölçüm sistemimizin performansını yüksek seviyede tutmamızı sağlar ancak bunun mümkün olmadığı durumlarda çeşitli tolerans metotları geliştirmek gerekir. Çünkü geliştirilecek uygulamaya uygun ölçüm sistemini tasarlamak için fiyat/performans kriterinden dolayı en iyi durumu oluşturacağınız sistemi oluşturamayabilirsiniz.

Bu durumda accuracy durumunu tolere etmek için sistem karakteristiğine uygun bir offset değeri veya dinamik bir sistem için offset fonksiyonu oluşturulur. Böylece ölçüm istenilen noktaya çekilebilir.

Precision konusunda bir iyileştirme yapmak için de dijital ve analog filtreler yardımı ile bu kriter arttırılabilir.

Resolution değeri sistemin karakteristiği ile direkt ilgilidir ve üzerinde herhangi bir işlem yapamayız. Precision iyileştirme için yapılacak filtreleme fonksiyonları resolutiondan oluşacak kayıpları da bir ölçüde iyileştirebilir.

Referanslar:
[1] https://keydifferences.com/difference-between-accuracy-and-precision.html

6 Ocak 2021 Çarşamba

Lineer/Proportional/Oransal Çıkışlı Bir Analog Sensörün Okunması, Sensör Okuma ile ilgili Temel Mantıklar

 Sensör verilerinin okunması ve anlamlandırılması kontrol sistemleri için en temel girdiyi oluşturur. Sensör bilgileri, sensörün tipine, iç yapısına, ölçtüğü fiziksel niteliğin davranışına göre farklılık gösterebilir. Sensör çıkışları lineer veya bir polinoma bağlı olabilir.

Bu yazı kapsamında lineer çıkışlı sensörler hakkında detaylı bir açıklama yaptıktan sonra polinomsal çıkışlı bir sensör hakkında da kısa bir yorum yapıp bitireceğim.

Lineer çıkışlı analog bir sensöre örnek olarak SS495B ve LM35 üzerinden ilerleyeceğiz. Aşağıda gördüğünüz görselde SS495B'nin gauss/çıkış voltaj grafiği verilmiştir. Bu sensörün ölçüm yaptığı fiziksel nitelik ile çıkış voltajının lineer olduğu grafikten bellidir. Çıkış gerilimi gauss değerine göre lineer olarak artıp azalır.

SS495B Çıkış Karakteristiği
Bu şekilde çıkış veren sensörler çok basit bir matematiksel formülle tanımlanır. ADC değerini okuyup voltaja çevirdikten sonra, gerilim değerinden ilgili fiziksel değere geçilir. Bu örnekte o değer gauss'tur.

Grafikten görüldüğü gibi sensör 0.5V-4.5V arasıda tanımlıdır. Aralık dışıda bir değer okunması halinde uygulamanın çeşidine göre bir senaryo planlanır. Bu aralıkta da direkt bir eğik doğru formülü ile tanımlanır. Bu formül;

Gauss = ( Vout - 2.5 ) * ( 640 / 4.5 )

şeklindedir. Bu formüldeki ( 640 / 4.5 ) ifadesi grafiğin eğimidir. Bu değer sayısal olarak sadeleştirilip sadece bir çarpım ifadesi şeklinde de yazılabilir.

LM35 sensörü de sıcaklığa bağlı lineer çıkış veren bir sensördür. Bu sensörün datasheetinde çıkış aşağıdaki şekilde ifade edilmiştir. Sensör 2°C-150°C aralığında her bir derece için 10mV çıkış verir.
LM35 Çıkış Karakteristiği

Bu bilgilerden hareketle bu sensörün çıkışını santigrat derece şeklinde ifade etmek için aşağıdaki formül kullanılır.

Temperature = 2 + ( Vout / 0.01 ) = 2 + ( Vout * 100 )

İki ayrı sensör değerinin nasıl dijital veriye çevrildiğini bu iki örnekle özetlemiş olduk. Bir de polinomsal çıkış veren sensörler vardır. Bunlar için en yaygın örnekler NTC tipi sıcaklık sensörleri olabilir. Bu sensörlerin direnç değerleri sıcaklığa bağlı değişir ve en basit şekilde başka bir direnç ile seri bağlanarak orta noktanın gerilimi üzerinden bir dönüşüm yapılır. Burada ilk olarak basit gerilim bölücü mantığından sıcaklık sensörünün direnç değeri bulunur ve bu direnç değeri -nispeten- kopleks bir matematik denkleminden geçerek sıcaklık elde edilir. Bu denklem "Steinhart and Hart Equation" olarak adlandırılır. Burada yer alan A, B ve C sabitleri ilgili sensörün datasheetinde verilir. R değeri ise NTC'nin o anki direnç değeridir.


Bir NTC'nin direnç değerinin sıcaklığa bağlı değişimini gösteren grafikte aşağıdaki gibidir. Grafikte görünen PTC, NTC ile ters çalışan ama aynı amaçla kullanılan bir sensör türüdür.




Bu yazı kapsamında sensör okuma ve okunan değerleri fiziksel değere çevirme hakkında genel bilgiler vermeye çalıştım. Umarım faydalı olur. Çalışmalarınızda başarılar.



12 Aralık 2020 Cumartesi

Inbox Zero

"Inbox Zero" kavramı Marlin Mann tarafından ortaya atılmış, e-mail yönetimi ile ilgili bir yaklaşımdır. Amacı e-mail yönetimini doğru yönlendirerek kişilerin çalışma verimini arttırmaktır.


Mann'a göre gelen kutusunda bekleyen posta sayısı sadece posta sayısını değil, bunun yanında kişinin aklında, arka planda süreçli onu yoran bir iştir. Bu yüzden gelen kutusunda bekleyen posta sayısı ne kadar yüksekse, kişinin ilgisi o kadar düşük olur/olabilir. Bunun temelinde algı olarak mail kutusunun bir todo list gibi görülmesidir.


Mann bu problemin çözümü olarak bir öneri sunar. Bu öneride gelen mailler 5 aksiyonla değerlendirilir.
  1. Sil
  2. Yetkilendir/Delege et
  3. Yanıtlama (<=2 dakika)
  4. Erteleme (>2 dakika)
  5. Yapma (<=2 dakika)
Mann'ın e-mail yönetimini verimli bir şekilde işletme konusunda verdiği diğer ip uçları aşağıdaki gibidir.
  • E-mail programınızı açık tutmayın.
  • E-mail yoğunluğunuza göre gelen kutunuzu sadece belirli saatlerde kontrol edin. Yoğun mail kullanımı olan kişilerde saat başları seçilebilir. Daha az e-mail trafiği olan kişilerde ise günde iki defa yeterli olabilir.
  • İlk olarak silebileceğiniz mailleri silin veya arşivleyin
  • Sonrasında başkası tarafından yanıtlanabilecek olan e-mailleri ilgili kişilere iletin.
  • İki dakika veya daha kısa sürede cevaplanabilecek e-maillere hemen cevap verin.
  • Cevabı iki dakikadan uzun ama daha sonra cevaplanabilecek e-mailleri başka bir "yanıtlanacaklar" klasörüne taşıyın.
  • "Yanıtlanacaklar" klasöründeki e-maillere geri dönüş yapmak için gün içerisinde bir saat belirleyin ve o aralıkta tüm yanıt bekleyen maillerinize dönüş yapın.

Bu konu hakkında Mann'ın 2007 yılına ait yaklaşık bir saatlik konuşmasını da aşağıdaki videodan izleyebilirsiniz.


Referanslar:
[1] https://whatis.techtarget.com/definition/inbox-zero
[2] https://flow-e.com/inbox-zero/


7 Aralık 2020 Pazartesi

Cooperative Multitasking

 Bu yazıda cooperative multitasking (CM olarak anılacak) kavramı üzerine bildiklerimi ve gömülü sistemler üzerinde bu yapıya benzer bir çalışma metodolojisi ile nasıl geliştirme yaptığımdan bahsedeceğim.

CM kavramı non-preemptive multitasking olarakta bilinir. Temel olarak görevi taskları sıralı bir şekilde işletmektir. Bilinen modern multitasking yapılarından farkı ise önceliğe göre aktif bir task switching yapmamasıdır. CM yapısında, işlemci aynı anda bir task ile ilgilenir ve o task tamamlanana kadar diğer taskların çalışmasına izin vermez. Bu yapı Windows 3.1x'te kullanılmıştır.[1]

CM yapısı ile çalışacak bir sistemde taskların zamanları önemlidir. Bu yüzden yazılacak taskların süreleri ve gereksinim durumu iyi analiz edilmelidir. Vakit alan bir task önemli bir taskı engellerse bu sistemi verimsiz/anlamsız/zararlı hale getirebilir.

CM kavramını görselleştirmek için aşağıdaki görseli kullanalım. Burada örnek olarak Task A 20ms de bir çalışır ve task aktif olduktan sonra 3 ms boyunca iş yapar. Diğer tasklarda da benzer şekilde çalışma periyotları ve çalışma süreleri tanımlanmıştır.

İlk ve en basit kural çalışma süresi, çalışma periyodundan büyük olmalıdır. Bu ikisi arasındaki fark ne kadar yüksek olursa ilgili taskın işlemciye yükü o kadar düşük olur.



Görselde CM metodu içe çalışan bir yapı verilmiş ve Task A, B, C tanımlanmıştır. Her bir taskın çalışma sürelerine göre işlemler grafikteki gibi verilir. Burada zamanları tek tek inceleyeceğiz.
  • @10. ms Task C çalışır ve 11. ms'de biter.
  • @15. ms Task B çalışır ve 17. ms'de biter.
  • @20. ms Task A çalışır ve 23. ms'de biter. Bu esnada Task A'nın da çalışma periyodu gelir ancak Task A bitmediği için sırasını bekler. Task A biter bitmez 23. ms'de Task C başlar. 24. ms'de biter. Bu kaymadan dolayı Task C'nin bir sonraki başlama zamanı kayar ve Task C 33. ms'de çalışır.
  • @30. ms Task B çalışır ve 32. ms'de biter.
  • @33. ms Task C çalışır ve 34. ms'de biter.
  • @40. ms Task A çalışır ve 43. ms'de biter.
  • @43. ms Task C çalışır ve 44. ms'de biter.
  • @45. ms Task B çalışır ve 47. ms'de biter.
Bu yapıda en önemli konu 20. ms'de yaşanan kaymaların olabileceğidir. Bu yüzden doğru bir düzen içerisinde tasarlanmalıdır. Çok daha uzun sürecek tasklar da olabilir. Bu durumda diğer taskların kritik görevlerinin olmaması önemlidir.

Bu yapıyı kurarken genelde tüm tasklar tek bir zaman sayacı üzerine kurulur ve ilgili zaman sayacını referans alark her bir task çalışma başlangıcını belirler.

Gömülü sistemlerde çalışırken, RTOS kullanmadan geliştirilecek uygulamlarda oldukça faydalı bir yöntemdir. RTOS'lara göre eksik kaldığı bir nokta normalde delay koyarak geliştirilebilecek basit akış diyagramlarını oluşturmak için switch case yapılarının gerekmesi olabilir ancak alışkanlık sağladığınızda fazlasıyla kolaylık sağlayacaktır.

Bu yazı kapsamında interruptsız bir program üzerine konuyu anlattım. Ek ve özet bilgi olarak bu yapılar çalışırken çalıştıracağınız interruptlar ile de tam gerçek zamanlı tasklar çalıştırabilirsiniz. Kurgulanacak bu yapıda yukarıda verilen tasklar interruptlar tarafından bölünür ve sizin hem interrupt yapınız hem de ana döngü yapınız sağlıklı bir şekilde çalışabilir.

Ana döngü içerisinde yavaş toplanacak veriler, haberleşme değerlendirme algoritmaları, dosya okuma/yazma yapıları vs. geliştirilebilir. Interruptlar içerisinde ise hızlı tepki verilmesi gereken giriş/çıkış yapıları, kontrol algoritmaları, periyoda bağımlı algoritmalar vs. çalıştırılabilir.

Umarım faydalı olur.

Referanslar

[1]. https://en.wikipedia.org/wiki/Cooperative_multitasking

31 Ağustos 2020 Pazartesi

FIT (Failure in Time) ve MTBF (Mean Time Between Failure) Kavramları

FIT ve MTBF, emniyetli elektronik sistemler üzerine çalışırken bilinmesi gereken en temel kavramlardandır.

FIT (Failure in Time) bir sistemin veya komponentin, belli bir süre içerisinde hata yapma olasılığını, hatanın frekansını ifade eder. Bu kavram ilgili cihazın güvenilirliği etkiler. Bununla birlikte emniyetli sistemler genelde bir çok cihazın birleşiminden oluştuğu için her bir sistem veya komponentin FIT değeri geniş çerçevede sistemi etkiler. Bu yüzden genellikle FIT değeri düşük sistemler emniyetli sistemlerde tercih sebebi olur.




MTBF (Mean Time Between Failure) bir sistemin veya komponentin iki hatası arasında geçen süreyi ifade eder.


FIT ile MTBF arasındaki ilişki FIT = 1 / MTBF şeklindedir. Kullanıldığı yere göre farklılık gösterir ancak temelde aynı bilgiyi ifade eder.

Bir Sistemin FIT Değerinin Bulunması

Bir sistemin FIT değerini hesaplamak için çeşitli yöntemler vardır. Bu yöntemler ilgili komponentin yapısına göre değişir.
Direnç, kondansatör gibi chip seviyesidneki elemanlarda FIT genellikle fabrika içi yapılan testlerle hesaplanır. Bu hesaba ilgili üreticinin geçmiş üretim/hata raporları da etkili olur.
Büyük sistemlerde ise FIT değeri öncelikle kullanılan alt sistemlerin hata oranlarına göre hesaplanır. Uzun vadede ilgili ürünün saha dönüş raporlarına göre FIT değeri güncellenir. Bu aşamaların tamamnıda belli bir tahmin faktörü vardır.

Örnek olarak, 10 adet komponent hata yapana kadar veya 1000 saati doldurana kadar test edilmiştir. Bu testte 6 adet ürün hata yapmıştır. Bu şartlar altında ilgili ürünün FIT hesabı aşağıdaki gibidir. İlgili ürünün her bir milyon saatteki hata oranı, FIT değeri 799'dur.


FIT değeri elbette test ortamı ile de ilgilidir. Bu noktada sıcaklık önemli ve etken faktörlerdendir. FIT değerinin sıcaklığa göre değişimini hesaplamak için belirli formüller vardır ve bunlar kullanılabilir. Burada dikkat edilecek husus hedef ürünün çalışma sıcaklığına göre FIT değeri hesaplamaktır. Örnek olarak 60°C'de çalışacak bir ürün için 30°C için verilmiş FIT değerini kullanmak hata olacaktır.

Bu yazıda FIT ve MTBF kavramları hakkında genel fikir oluşturacak kadar bilgi vermeye çalıştım. Daha kapsamlı bilgi için ve uygulamaları hakkında fikir edinmek için IEC 61508 ve benzeri emniyet standardlarını inceleyebilirsiniz.

Görsel Kayakları:

5 Ağustos 2020 Çarşamba

Emniyet Kritik Sistemler

Günlük yaşantımızda, arabalarda, fabrikalarda, büyük tesislerde, günlük hayatımızda gördüğümüz veya göremediğimiz -artık neredeyse- her yerde insanlar çeşitli sistemler ile(elektronik, mekanik, elektromekanik vb.) iç içe yaşamaktadır. Sistemlerin tamamı belli koşullar altında hata yapabilir veya hatalı kullanılabilir. Bu kapsamda hata durumunda cana, mala, tesislere veya çevreye zararı dokunabilecek sistemler emniyet kritik sistemler olarak değerlendirilir. Bu sistemlerin ürünleşmesi için geçen tüm yaşam döngüsü belli standardlar dahilinde yürütülür.

Bir sistemin emniyet kritik olup olmadığı anlamak için bir soru sormak yeterlidir. “Zarar verir mi?”. Örnek olarak bir kapı turikesinin geç açılması sadece insanı biraz sinirlendirir. Ancak bir uçağın iniş takımlarının geç açılması yüzlerce hayata, ciddi mal kaybına ve çevresel zarara sebep olur. Bu örnekte olduğu gibi “Zarar verir mi?” sorusunun cevabı “Geliştirilecek sistemin emniyetli olması gerekir mi?” sorusuna da cevap vermiş olur.


Emniyet kritik sistemler hakkında geliştirilen standardlar ilk zamanlarda birçok acı tecrübe sonucunda ortaya çıkmıştır. Bu sistemlerin ilk geliştiği sektörler havacılık, otomotiv, demiryolu gibi sivil hayatla ve insanla sürekli iç içe olan çalışma alanlarıdır. Günümüzde emniyet kritik sistem geliştirme süreçleri bu iki sektörün lokomotif etkisi ile oldukça olgunlaşmıştır. Bu sayede geliştirilen teknikler ile hataları yaşamadan evvel ilgili hataları önlemek için mühendisler çalışmalar yürütmektedir. Bahsi geçen sektörlerin kendi özelleşmiş standardları vardır. Emniyetle ilgili tüm standardların şemsiye standardı ise IEC 61508'dir.


Emniyet konusunda ISO 26262 standardı otomotiv sektörü özelinde emniyetli sistem geliştirme konusunda ürünün tüm yaşam döngüsü ile ilgili çok detaylı örnekler barındıran ve eğitim kitabı tadında içeriğe sahip bir standarddır.


Otomotiv sektöründe emniyetli sistem geliştirme süreçleri -diğer sektörlerde de olduğu gibi- V model tabanlı yürütülür. Bu kapsamda aşağıdaki model takip edilir. Donanım ve yazılım gibi çekirdek geliştirme süreçlerine girmeden önce -mümkün olan- her şey sistem seviyesinde planlanır ve tasarlanır. Örnek verecek olursak yazılım yazılmadan önce yazılım testlerinin nasıl yapılacağı planlanmış olmalıdır. Bununla birlikte sistemin emniyet seviyesine göre(Otomotivde ASIL1-ASIL4, Raylı Ulaşımda SIL1-SIL4 gibi) proje yönetim süreçleri bile değişiklik gösterebilir. Örnek olarak SIL1 seviyesindeki bir ürünün yazılımını tek bir geliştirici yapabilirken, SIL3 seviyesindeki bir ürünü iki farklı ekibin geliştirilmesi gerekebilir. Farklı seviyelerde FMEA, FTA, HARA analizleri yapılır. Riskler bu analizler sonucunda tespit edilir.


Emniyetli sistem geliştirme işi oldukça zahmetli ve maliyetli bir süreçtir. Bu yüzden ISO 26262–2:2011 Annex B Table B.1’de verildiği gibi firmaların projeden önce bu kültüre hazır olmaları veya bu kültürü geliştirmeye niyetli olmaları gerekir. Aksi taktirde proje süreçleri normal bir proje ile karşılaştırılamayacak kadar detaylı ve zahmetlidir. Emniyet kritik bir projeyi bu kural ve kıstaslara uymadan geliştirecek olursanız tüm süreç emniyet kritik ürün geliştirmeye göre 3 kat daha hızlı olabilir.

Görsel Kaynakları:
  1. https://www.instron.com.tr/tr-tr/testing-solutions/industry-solutions/automotive/safety-systems
  2. https://www.axivion.com/en/p/solutions/iso-26262-compliance-141.html



STM32 HAL Kütüphanesinde Başlangıçtan Sonra IO Pinin Yönünü/Direction Değiştirme #STM32Tips

STM32 HAL kütüphanesinde, başlangıç sonrasında bir GPIO pininin yönünü kolayca değiştirebilecek bir fonksiyon doğrudan sağlanmamaktadır. Bu ...