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

6 Mart 2024 Çarşamba

POWERB Alkaline LR03 AAA 1.5 Volt Pil Değerlendirmesi @250mA

Bu yazıda testimizi 250 mA seviyesinde gerçekleştirdik. 250 mA sabit akımda voltaj grafiği 800 mV'u yaklaşık 2,4 saatte kesiyor. Bu durumda POWERB Alkaline LR03 AAA pilin kapasitesi 2,4 h*250 mA hesabından 600 mAh olarak bulunur.

Test düzeneği ve ölçüm ile ilgili konulara buradaki yazıdan ulaşabilirsiniz.









Label order: Row ID | Time Stamp (Millisecond) | Voltage (mV) | Current (mA) | Set Current (mA)

Veri seti

Pil Kıyaslama Yazıları

1 Mart 2024 Cuma

CAN Bus Fiziksel Katmanı

CAN (Controller Area Network) Bus CANH, CANL şeklinde isimlendirilen ikili hat üzerinden birden çok sistemin konuşabildiği, aynı anda tek bir sistemin konuştuğu (half-dublex), yüksek hızlı uygulamalara izin veren bir ağ yapısıdır.

Haberleşme yapılarında farklı seviye katmanlar ve uygulama tipleri vardır. Bu kapsamda CAN Bus'ın fiziksel katmanı üzerine detaylı bir inceleme gerçekleştirilmiştir.

Bu konuya giriş yaparken donanım seviyesinden işi ele alıp elektriksel seviyeye ilerlemek mantıklı olacaktır.

Öncelikle yazı  kapsamında kullanılacak tanımlardan bahsetmek gerekirse, sistem ifadesini CAN Bus hattına bağlanabilen ve haberleşebilen her şey olarak düşünebiliriz. Otomotiv üzerinden örnek verecek olursak VCU, BMS, Inverter gibi CAN Bus ile haberleşen yapılara sistem diyebiliriz.

Bir CAN Bus hattı CANH ve CANL hatlarının burulmuş çifti (twisted pair) ile birbirine bağlanır. Bu yapı ethernet kablolarında da benzer şekilde kullanılır. Bu bağlantı elektromanyetik yayılıma karşı hattın güçlü olmasını sağlar. Bu yapıda hat üzerinde indüklenen gürültü akımları her iki hatta neredeyse ortak seviyede etkileyeceği için CANH, CANL arasındaki fark neredeyse sabit kalır. 

Örnek bir burulmuş çift (twisted pair) görseli aşağıda görebilirsiniz.

CANH, CANL twisted pair kablo üzerinden iletildikten sonra elektronik devre üzerindeki yapılar ile karşılaşıyoruz. Burada temel yapıyı anlamak için CAN Bus dönüştürücüler ile anlatıma devam etmek faydalı olacaktır. Sektörde de sıklıkla kullanılan SN65HVD1050 entegresini örnek olarak ele alabiliriz. Bu yapılar mikrodenetleyicilerden çıkan CANTX, CANRX pinlerini CANH, CANL seviyesine dönüştürür. CAN Bus dönüştürücü entegrelerinin ana görevi budur. Tamamen analog yapılar bu dönüşüm için yeterlidir. Bununla birlikte hat ile ilgili temel elektriksel kontrolleri yapabilir. Entegre özelinde sıcaklık kontrolü ve koruması yapabilir. ESD korumaları sağlayabilir. Bublar zorunlu fonksiyonlar değildir.

SN65HVD1050'nin iç yapısı aşağıdaki gibidir.

CAN Bus dönüştürücüleri giriş tarafında CANH, CANL değerlerinin elektriksel farkına göre RXD ucuna 1/0 bilgisi gönderir. CANH, CANL aynı değerlerde ise lojik 1, aradaki fark 2.5 V ise lojik değer 0'dır.


Gönderici taraftan bakacak olursak TXD pini üzerinden bir sürücü kısım aktifleşir ve çıkış anahtarlarını sürer. Bu anahtarlar TXD lojik 0 iken aktif çalışır ve CANH, CANL hattını 2.5 V farka çeker. Aksi durumda aynı değerde tutar.

CAN Bus'ın özelliklerinden biri hattı sürerken aynı zamanda aktif olarak okumaya devam etmesi ve CAN mesaj paketi içerisinde belli bitleri takip ederek karşı alıcının mesajı sağlıklı bir şekilde alıp almadığını doğrulamasıdır. Bu sayede gönderilen mesajların en az bir alıcıya ulaşıp ulaşmadığından gönderici taraf emin olur.

Ek ve büyük bir katkısı da veri gönderirken okumaya devam etmesi sayesidne herhangi bir durumda önceliği yüksek bir mesaj paketi başka bir sistem üzerinden gönderilirse, hattı her sistem sürekli okuyarak çalışmaya devam ettiği için ilgili yüksek öncelikli mesaja diğer tüm sistemler izin/öncelik verir.

Kaynaklar:

  1. https://www.ti.com/lit/an/sloa101b/sloa101b.pdf

Duracell Alkaline LR14 1.5 Volt Pil Değerlendirmesi @250mA

Bu yazıda testimizi 250 mA seviyesinde gerçekleştirdik. 250 mA sabit akımda voltaj grafiği 800 mV'u yaklaşık 19,8 saatte kesiyor. Bu durumda Duracell Alkaline LR14 pilin kapasitesi 19,8 h*250 mA hesabından 4950 mAh olarak bulunur.

Test düzeneği ve ölçüm ile ilgili konulara buradaki yazıdan ulaşabilirsiniz.









Label order: Row ID | Time Stamp (Millisecond) | Voltage (mV) | Current (mA) | Set Current (mA)

Veri seti

Pil Kıyaslama Yazıları

26 Şubat 2024 Pazartesi

ESP32 ile Kristal veya Osilatör Kullanmadan RMII Üzerinden Ethernet Haberleşmesi ve İpuçları

İnternette gördüğüm ESP32 ve ethernet uygulamalarının çoğunda ethernet chipine kristal takarak uygulama çalıştırılmış. Bunun sinyal kalitesi açısından faydası olabilir ancak tek çözüm bu değil. ESP32 modüllerinden de ethernet için gerekli clock çıkışını alabilirsiniz.

Bunun için örnek devrede de gösterildiği gibi ESP32 ile ethernet chipinin clock uçlarını birleştirmek yeterli. Burada frekans 50 MHz mertebesinde olduğu için mümkün oldukça yakın olması önemli.

Benim yaptığım uygulamadan hat boyu yaklaşık 44 mm ve 2 adet via kullanılıyor. Buna rağmen sorunsuz bir şekilde sistemin çalıştığını gördüm.



ESP32 clock çıkışı için GPIO0, GPIO16, GPIO17 pinleri kullanılabilir.


Arduino arayüzünde varsayılan olarak clock ESP32'ye girecek şekilde tanımlanmıştır. Ethernet clock çıkışını tanımlamak için aşağıdaki satır kullanılabilir. Bu begin fonksiyonu üzerinden ethernet chipi, clock yönü ve pini seçilebilir.

ETH.begin(0,-1,23,18,ETH_PHY_LAN8720,ETH_CLOCK_GPIO17_OUT);

Kaynaklar;

  • https://docs.espressif.com/projects/esp-idf/en/release-v3.1/api-reference/ethernet/esp_eth.html
  • https://www.espressif.com/sites/default/files/documentation/esp32-wroom-32d_esp32-wroom-32u_datasheet_en.pdf

20 Şubat 2024 Salı

Panasonic General Purpose Zinc Carbon R6BE AA 1.5 Volt Pil Değerlendirmesi @250mA

Bu yazıda testimizi 250 mA seviyesinde gerçekleştirdik. 250 mA sabit akımda voltaj grafiği 800 mV'u yaklaşık 1,4 saatte kesiyor. Bu durumda Panasonic General Purpose Zinc Carbon R6BE AA pilin kapasitesi 1,4 h*250 mA hesabından 350 mAh olarak bulunur.

Test düzeneği ve ölçüm ile ilgili konulara buradaki yazıdan ulaşabilirsiniz.







Label order: Row ID | Time Stamp (Millisecond) | Voltage (mV) | Current (mA) | Set Current (mA)

Veri seti

Pil Kıyaslama Yazıları


10 Ocak 2024 Çarşamba

STM32F103 Mikrodenetleyici Çevre Birimlerinde Karşılaştığım Bir Problem #STM32Tips

Konunun hikayesinden başlamak gerekirse, STM32F0 ve STM32F1 serisi işlemcilerden oluşan ve CAN Bus üzerinden birbirleri ile haberleşen bir tasarım üzerine çalışıyordum. Her bir kart için CAN Bus bağlantısının yanında bilgisayar bağlantısını da kurmak için USB bağlantısını sisteme dahil etmiştim. Bu tasarım STM32F0 serisi işlemcide CAN Bus ve USB sorunsuz çalıştı.

STM32F1 serisi işlemciyi kullanırken aynı yazılıp mimarisi üzerinden devam ediyordum ancak bir sorun ile karşılaştım. Bir şekilde CAN Bus hattını kullanamıyordum. Problemi araştırmaya başladığımda USB ve CAN Bus'ın birlikte kullanımı ile ilgili başka problem yaşayanların da olduğunu gördüm. Sonrasında kullandığım işlemci olan STM32F103CB'nin datasheetini (Reference Manual RM0008 Rev 21) inceledim. CAN Bus kısmında aşağıdaki gibi bir not olduğunu gördüm.

"In low, medium-, high- and XL-density devices the USB and CAN share a dedicated 512-

byte SRAM memory for data transmission and reception, and so they cannot be used concurrently (the shared SRAM is accessed through CAN and USB exclusively). The USB and CAN can be used in the same application but not at the same time."

Buradan anladığımız CAN Bus ve USB işlemci üzerinde aynı SRAM alanlarını kullanıyor ve bu yüzden her iki çevre birimi birlikte kullanılamıyor. USB'yi kapatıp CAN Bus'ı çalıştırmak veya tam tersi mümkün ancak her ikisi aynı anda asla çalıştırılamıyor. Bu yüzden örnek vermek gerekirse CAN Bus üzerinden alınan bir veriyi USB üzerinden gerçek zamanlı alıp işlemek mümkün değil.

Ek olarak STM32F0 serisi ile bir çok uygulama yapmıştım ve bu yüzden USPDP, USPDM hatlarını direkt konnektöre bağlamıştım. STM32F103CB işlemci kullanırken USBDP hattına 3.3 V'a 1.5 kR pull-up resistor gerekiyormuş.

STM32 USB kullanılan uygulamalarda donanım tasarımı hakkında aşağıdaki doküman yayınlamış. Donanım tarafında yapılması gereken işler tek bir dokümanda bütün işlemci ailesi için verilmiş. Gelecek tasarımlar için işe yarar gibi görünüyor.


Link: https://www.st.com/resource/en/application_note/an4879-introduction-to-usb-hardware-and-pcb-guidelines-using-stm32-mcus-stmicroelectronics.pdf (10.01.2024)

3 Ocak 2024 Çarşamba

Panasonic Alkaline Power LR6 AA 1.5 Volt Pil Değerlendirmesi @500mA

Bu yazıda testimizi 500 mA seviyesinde gerçekleştirdik. 250 mA standardına göre yapılmadığı için katalog değeri olan kapasite değeri değildir ancak 500 mA sabit akımda Panasonic Alkaline Power LR6 AA pilin kapasitesi 1050 mAh'dir. 250 mA için daha yüksek olması gerekmektedir. İlgili grafikler ve veri setleri aşağıdadır.

Test düzeneği ve ölçüm ile ilgili konulara buradaki yazıdan ulaşabilirsiniz.




Label order: Row ID | Time Stamp (Millisecond) | Voltage (mV) | Current (mA) | Set Current (mA)

Veri seti

Pil Kıyaslama Yazıları



23 Aralık 2023 Cumartesi

CAN Bus Temelleri ve Bir Mesajının Yapısı

CAN (Controller Area Network) Bus Robert Bosch GmbH tarafından oluşturulmuştur. 1986'da RB GmbH tarafından SAE'de yayınlanmıştır. Takip eden yıllarda CAN Bus'ın farklı versiyonları yayınlanmıştır ve ISO tarafından standardize edilmiştir. CAN Bus günümüzde içten yanmalı ve elektrikli bir çok araç tipinde aktif olarak kullanılan ve temel kontrol yetenekleri dolayısı ile sıklıkla tercih edilen bir haberleşme protokolüdür.

CAN Bus, mesaj tabanlı bir haberleşme protokolüdür. Hat üzerinde bulunan bütün noktalar hatta veri basabilir ve veriyi okuyabilir. Fiziksel olarak CANH, CANL şeklinde isimlendirilen iki fiziksel hat üzerinden iletilir. Fiziksel hat üzerinde bulunan voltaj farkı üzerinden çalışır.

CAN Bus ile haberleşen bir ağın fiziksel bağlantısı aşağıdaki gibidir. Bir hat boyunca bir çok sistem bağlanabilir. Her bir sistem ağa mesaj gönderebilir ve okuyabilir.

CAN Bus'a bağlantı için transreceiver yapılarına ihtiyaç duyulur. Mikrodenetleyiciler ile CANH, CANL hatları arasında aşağıdaki gibi transreceiver yapıları kullanılır. Mikrodenetleyiciler tarafında Rx, Tx hatları ile iletişim kurulur.

Aşağıda verilen görselde CANH, CANL hatlarındaki değişim ve bu değişimin CAN Rx ucundaki karşılığını gözlemleyebilirsiniz. CANH, CANL aynı seviyede iken CAN Rx 1'dir. Aksi durumda CAN Rx 0 olur. 0 değeri CAN Bus için baskın bit olarak ifade edilir.

Bir önceki görsel üzerinden CAN Bus mesajını inceleyecek olursak;

  • Start of frame: Bir CAN Bus mesajı 0 biti ile başlar.
  • ID-Arbitration: Takip eden bitler mesaj ID sini ifade eder. Mesaj ID'si aynı zamanda paketin önceliğini de ifade eder. Örneğin aynı anda iki sistem hatta veri basmak isterse CAN Bus'ın önceliklendirme yapısına göre değerlendirilir. Çok basitçe ifade etmek gerekirse Veri gönderimi başladığı anda bir mesajın ID'si ne kadar 0 ile başlarsa o kadar baskındır. Görseldeki sıraya göre "00001xx" ve "00100xx" başlayan iki mesaj paketi gelirken birinci paket önceliklendirilir ve ikinci paketi gönderen sistem gönderimi durdurur.
  • RTR: Remote transmission request olarak geçer. Bir mesaj paketini başka bir sistemden talep etmek için kullanılır.
  • Control: Bu kısımda mesaj ile ilgili ek bilgiler yer alır.
    • IDE: ID Extend olarak geçer. 1 olması durumunda 18 bitlik daha ID kısmı aktif olur. Mesaj paketi toplamda 29 bitle ifade edilir.
    • DLC: Data length code olarak geçer. Mesaj paketinin kaç byte olduğunu ifade eder.
  • Data: Veri aktarma kısmıdır. Kullanıcının iletmek istediği veri tam olarak buradadır.
  • CRC: Veri paketinin doğruluğunu teyit etmek için kullanılır.
  • ACK: Gönderilen paketin en azından bir sistem tarafından alındığını ifade eder. Bu kısım Herhangi bir alıcı sistem üzerinden sürülür. Eğer CAN Bus üzerinde başka bir sistem yoksa bu bit 0 olmaz ve gönderici mesajın iletilemediğini anlar.
  • End of frame: Mesaj paketi sonunda 7 bit 1 gönderilir.

16 Aralık 2023 Cumartesi

Batarya Test Düzeneği ve Meganit LR6 AA alkalin 1.5 Volt Pil Değerlendirmesi @250mA

Çeşitli veri toplama işleri için tasarladığım esdaq ve elektronik yük olarak kullandığım Pratic Load Bank kartlarını kullanarak batarya değerlendirmesi yapabilmek adına bir düzenek ve LabVIEW ortamında demo bir program oluşturdum. Demo programına buradaki link üzerinden erişebilirsiniz (Özel bir amaca tasarlanmadığı için düzen problemleri vardır). Kullandığım pil yuvası da 3D yazıcıdan çıkartılmış bir yuvadır. Düzeneğin bir görseli aşağıda verilmiştir.


Oluşturulan yapının şema gösterimi de aşağıda verilmiştir.


Bu çalışmadaki amaç bataryaların farklı durumlarda gösterdiği davranışı kayıt altına almak ve SoC, SoH gibi hesaplamalar için girdi vermeyi sağlayabilmek.

Öğrendiğim kadarıyla kalem pil diye adlandırdığımız AA boyutta 1.5 V piller 250 mA sabit akımda 0.8 V a kadar geldiği süre üzerinden standard kapasite ölçümü yapılır. Bu şekilde bakınca örneğin 250 mA sabit akıma ayarlanmış bir pil 10 saat boyunca 250 mA akımı sağlarsa 10*250 hesabı üzerinden 2500 mAh kapasiteye sabittir denir.

Aşağıda verilerini paylaştığım pil testinde sabit 250 mA akım altında yaklaşık 6 saatlik bir deney gerçekleştirilmiştir. Pil gerilimi ~6. saatte 800 mV a gelmiştir. Bu verilerin ışığında pilin kapasitesini 6 h*250 mA=1500 mAh olarak hesaplayabiliriz. Bu hesap çekilen akım değerine göre değişecektir. Örneğin testi 500 mA ile yaparsak kapasite <1500 mAh olacaktır. Test 100 mA ile gerçekleştirilirse de kapasite >1500 mAh olacaktır.



İlerleyen süreçlerde farklı pillerin farklı akım değerlerinde testlerini girmeye çalışacağım. Yine de belki işe yarar diye yaptığım testin tüm verisini ham olarak aşağıdaki link üzerinden paylaşıyorum.

Label order: Row ID | Time Stamp (Millisecond) | Voltage (mV) | Current (mA) | Set Current (mA)

Veri seti

20 Nisan 2023 Perşembe

Otomotivde Pasif ve Aktif Emniyet Kavramları (Active Safety/Passive Safety)

Otomotiv sektörü, araçların güvenliği ve emniyeti için sürekli olarak çalışmaktadır. Bu çalışmalar sonucunda otomotiv sektöründe Pasif ve Aktif Emniyet kavramları ortaya çıkmıştır.

Pasif Emniyet, araç kazası durumunda oluşabilecek zararları en aza indirmeyi amaçlayan bir sistemdir. Aktif Emniyet ise, araç kazasını önlemeyi amaçlayan bir sistemdir.

Pasif Emniyet Sistemleri, araç kazası durumunda yolcuların zarar görme riskini en aza indirmek için tasarlanmıştır. Bu sistemler, araç içi ve dışı güvenlik sistemlerini içerir. Örneğin, araç içi emniyet sistemleri arasında; kemerler, hava yastıkları, koltuk başlıkları, koltuk kemeri hatırlatıcıları, çocuk koltukları ve emniyet kafesleri gibi sistemler bulunur. Araç dışı emniyet sistemleri arasında ise; çarpışma anında aracın enerjisini emen ve yavaşlatan kasa yapısı, kaporta ve önemli parçaların çarpışma sonrası deformasyonu sonucunda yolcuların zarar görmesini önleyen sistemler yer alır.

Aktif Emniyet Sistemleri, araç sürüşü esnasında kazaları önlemek için tasarlanmıştır. Bu sistemler arasında, ABS (Anti-Blokaj Fren Sistemi), ESP (Elektronik Stabilite Programı), akıllı hız kontrolü, şerit takip sistemi, park asistanı ve uzaktan kumandalı acil durum freni gibi sistemler bulunur.

Günümüzde, otomotiv sektörü sürekli olarak Pasif ve Aktif Emniyet sistemlerini geliştirmektedir. Bu sistemler, araçların güvenliği ve emniyeti için çok önemlidir.



26 Haziran 2022 Pazar

Kapasitör Dolum Eğrisi ve Ölçüm Metodu

Kondansatör (capacitor) üzerinde elektrik depolayabilen bir pasif elektronik elemandır. Kondansatörün kapasite değeri Farad birimi üzerinden değerlendirilir.

Kondansatörün dolum eğrisi aşağıdaki gibidir. Kontansatör herhangi bir t anında bir R1 direnci üzerinden enerjilendirildiğinde (step input) üzerindeki voltaj değişimi Vout gibi davranır. Vout'un herhangi bir andaki değerini hesaplamak için aşağıdaki görselde verilen ilk formül kullanılır. Bu formülde belli bir zamandaki voltajı hesaplarken Vin, e, R, C ve t sait olacağı için ilgili zamandaki voltaj değeri bulunabilir.

Aynı formülde t ifadesini çekerek kutu içerisindeki ifade elde edilir. Bu ifade bize şunu söyler. R, Vin sabit ve Vout belirlenen bir değer ise, dolum eğrisinin Vout değerine ne kadar sürede geldiğini ölçebilirsek gömülü bir sistem üzerinde kapasitör ölçümü yapılabilir. Vout değeri Vin/2 veya Vin/e seçilebilir. Çok yüksek veya düşük Vin değerleri ölçüm açısından sağlıklı olmayabilir.


Osiloskop üzerinden alınmış bir kapasitör dolum görseli aşağıdaki gibidir. Bu görselde;

  • Sarı: Kapasitör dolumunu tetikleyen sinyal.
  • Turkuaz: Kapasitör dolum voltaj grafiği.
  • Pembe: Kapasitör ile 1.65 V luk sabit bir değer üzerinden kurulan karşılaştırıcı devresinin çıkışı.
Algoritma tarafında tetikleme sinyalini verdikten sonra karşılaştırıcının düşen kenarına kadar geçen süre bize kapasitör değerini hesaplamak için gereken zaman bilgisini verir. Aşağıda görseli verilen testte R=1kOhm, C=470nF seçilmiştir. Bu durumda kapasitör voltajının 1.65 V'a gelmesi 325us sürecektir. Aynı süreyi osiloskop görselinden de görebilirsiniz. (Cursorlar ile işaretlememek eksiklik olmuş)


Son söz olarak, kondansatör ölçümü için daha farklı ölçüm yöntemleri de mevcuttur. Bu yöntemlere örnek olarak kondansatörlere belirli frekans değerlerinde sinyal uygulanır. Bu sinyallerin değişimi üzerinden kondansatör değerine karar verilir. Ölçüm yöntemlerinin tamamında zaman tabanlı işlemler olduğu için kondansatör ölçümü zamana bağımlıdır ve direnç ölçümüne nispeten uzun sürer.

Kaynaklar:

  • https://www.elektrikde.com/kondansator-ve-cesitleri-nelerdir/

9 Şubat 2022 Çarşamba

Safety ve Security Kavramları

Bu yazıda safety ve security kavramlarını inceleyeceğiz. Türkçede emniyet ve güvenlik şeklinde yer yer ifade edilse de net bir karşılık olmadığı için bu yazıda ingilizce terimler kullanılacaktır.

Safety, emniyette olma ve potansiyel tehlikelerden korunma durumudur. Safety, kabul edilebilir bir risk düzeyine ulaşmak için bilinen tehlikelerin kontrolünü de ifade eder. Safety, genellikle sistemlerin kendileri kaynaklı oluşabilecek tehlikeli durumlarını ve bu durumlardan kaçınmayı ifade eder.

Security, sistemin dışından gelecek, sistemin doğal işleyişini bozmak veya sistem içerisinde tutulması gereken her türlü bilginin, sistemin izni haricinde alınması/erişilmesi durumudur. Security açısından sistemler değerlendirilirken riskler, tehdit modelleri ve saldırı yöntemleri analiz edilir. Sonrasında sistem security açısından da güvenli bir noktaya gelmesi gereken aksiyonlar planlanır ve devreye alınır.

5 Ekim 2021 Salı

Coupling ve Cohesion Kavramları

Yaızlım geliştirme süreçlerinde belli bir metedoloji veya tekniği takip etmediğiniz zaman işin sonunda veri yapıları ve fonksiyonların fazlaca birbirine girmesi kaçınılmaz bir durumdur. Özellikle OOP odaklı olmayan C gibi dillerde bu konu daha bariz şekilde kendini göstermektedir. C++ gibi OOP odaklı bir dilde mecburen de olsa bazı düzenlemeler doğal olarak kendiliğinden gelişiyor ancak C gibi dillerde özellikle planlanmadığı zaman gerçekten düzenli ve sistematik kod yazmak zor oluyor.

Bu yazıda, yazılımda genel kavramlardan olan coupling ve cohesion kavramları hakkında temel bilgileri paylaşacağım. Bu kavramları zihninizde canlandırmak için aşağıdaki görsel iyi bir örnektir. Burada birbirine benzer yapıların bir grup şeklinde durduğunu ve bu gruplar arası geçişlerin basit birkaç yol/arayüz vasıtası ile olduğunu görüyoruz.


Öncelikle coupling ve cohesion kavramlarının genel tanımını yapalım.

Coupling, modüller arasındaki karşılıklı bağımlılık derecesinin ölçüsüdür. Couplingin düşük olması kodun taşınabilirliğini arttırır. Platformlar arası geçiş rahatlıkla sağlanır.

İyi bir yazılımda bu ölçü düşük olmalıdır. [2]

Cohesion, modül öğelerinin işlevsel olarak ilişkili olma derecesinin bir ölçüsüdür. Bunu OOP bir dilde class olarak, C dilinde ise bir *.c ve *.h dosya çifti olarak düşünebilirsiniz. Tek bir görevi yerine getirmeye yönelik tüm unsurların bileşende yer alma derecesidir. Temel olarak cohesion, modülü bir arada tutan içsel ilişkidir. 

İyi bir yazılım tasarımı, yüksek bir bütünlüğe sahip olacaktır. 

Örnek olarak inputlara göre bir hesabı gerçekleştiren fonksiyon sadece o işi yapmalıdır. Bu fonksiyonun içerisine bir de print fonksiyonu eklemek veya gömülü yazılım tarafında kullanılan bir haberleşme protokolü üzerinden göndermek cohesion açısından olumsuz bir örnektir.

İkinci bir örnek verecek olursak, örneğin bir arayüz tasarımı yapıyorsanız ve arka planda çeşitli hesaplar yapılıyorsa bu hesaplar arayüz fonksiyonları içerisinde yer almamalıdır. Bu tarz hatalı kurulmuş düzenler uzun vadede yazılımı kontrol edilebilirlikten çıkartan etkenlerdir.

Referanslar:

[1] https://enterprisecraftsmanship.com/posts/cohesion-coupling-difference/
[2] https://www.geeksforgeeks.org/software-engineering-coupling-and-cohesion/
[3] https://stackoverflow.com/questions/3085285/difference-between-cohesion-and-coupling

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

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/


4 Ağustos 2020 Salı

IEC 61508'e göre Hata Analiz Yöntemleri

Hata analizi, genellikle düzeltici eylemleri veya yükümlülüğü belirlemek amacıyla bir hatanın nedenini belirlemek için veri toplama ve analiz etme işlemidir. Hata analizi, doğru bir şekilde yapılır ve üzerinde iyileştirmeler yapılırsa para, hayat ve kaynak tasarrufu sağlayabilir. Yeni ürünlerin geliştirilmesinde ve mevcut ürünlerin iyileştirilmesinde kullanılan, ciddi bir gereksinimdir. Hata analiz yöntemleri uygulanacağı sektöre ve uygulamaya göre çeşitlilik gösterir.

Elektronik sistemlerde emniyet ile ilgili kurallar genel olarak 61508 standardında yer alır. Emniyetli elektronik ekipmanların geliştirme sürecinde hata analiz işlemleri önemli bir yer tutmaktadır. Bu kapsamda 61508 aşağıda verilen hata analiz yöntemlerini önerir.


IEC 61508–7:2010 dokümanında B.6.6 başlığı altında kullanılabilecek hata analiz yöntemleri 10 alt başlık altında sıralanmıştır. Başlıklar altında analiz yöntemleri ile ilgili bir kaç kısa açıklama, sonrasında standardlara ve çeşitli kitaplara referanslar vardır. IEC 61508 bu konu ile ilgili sadece yönlendirme niteliğindedir. Bu 10 alt başlık;

  • B.6.6.1 Failure modes and effects analysis (FMEA)-Hata modu ve etkileri analizi
  • B.6.6.2 Cause consequence diagrams-Neden-Sonuç Diyagramları
  • B.6.6.3 Event tree analysis (ETA)-Olay ağacı analizi
  • B.6.6.4 Failure modes, effects and criticality analysis (FMECA)-Hata modu, etkileri ve kritiklik analizi
  • B.6.6.5 Fault tree analysis (FTA)-Hata ağacı analizi
  • B.6.6.6 Markov models
  • B.6.6.7 Reliability block diagrams (RBD)-Güvenilirlik blok diyagramı
  • B.6.6.8 Monte-Carlo simulation-Monte Carlo simülasyonu
  • B.6.6.9 Fault tree models-Hata ağacı modeli
  • B.6.6.10 Generalised Stochastic Petri net models (GSPN)-Genelleştirilmiş stokastik petri ağı modelleri

Gelecek yazılarda hata analiz yöntemlerinden bir kaçının detaylı açıklamasını yapacağım. Bunların başında FMEA ve FTA gelecektir.

Emniyetle kalın!


CAN Bus Frame Tipleri

Yazıya başlamadan önce CAN Bus temelleri ve mesaj yapısının temellerini incelemek için bu linkte yer alan blog yazısını inceleyebilirisiniz ...