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

25 Haziran 2025 Çarşamba

CAN Bus Fiziksel Katmanı Nedir?

Otomotiv endüstrisinden endüstriyel otomasyona kadar pek çok alanda yaygın olarak kullanılan CAN Bus (Controller Area Network), güvenilirliği ve dayanıklılığıyla ön plana çıkar. Ancak bu protokolün arkasındaki en temel yapı taşı fiziksel katmanıdır. Bu yazıda, CAN Bus'ın fiziksel katmanını detaylı şekilde ele alacağız. 😊

Diagram showing the CAN Bus physical layer with twisted pair wiring, terminator resistors, and transceiver between microcontroller and bus lines

📚 Fiziksel Katman Neyi İfade Eder?

OSI modelinde "Fiziksel Katman" (Physical Layer), verilerin elektriksel ve fiziksel taşıma biçimidir. CAN Bus özelinde bu, veri hattının nasıl sinyal taşıdığı, hangi kabloların kullanıldığı, napaj (power supply) düzenlemeleri ve elektriksel gürültüye karşı önlemleri içerir.

📏 CAN Bus Fiziksel Katman Bileşenleri

İyi bir CAN haberleşmesi için, aşağıdaki temel bileşenlerin doğru şekilde yapılandırılması gerekir:

  • Diferansiyel Hatlar (CAN_H ve CAN_L): İletim sırasında voltaj farkı üzerinden veri taşır. Bu sayede elektromanyetik parazitlere karşı dirençlidir.
  • Transceiver (Alıcı-Verici): Mikrodenetleyici ile CAN hattı arasında köprü görevi görür.
  • 120 Ohm Sonlandırıcı Dirençler: Veri hattının her iki ucuna bağlanır. Yansıma (refleksiyon) engellenir.
  • Bükümlü Çift Kablo (Twisted Pair): Gürültüye karşı koruma sağlar.
  • Topraklama (Ground): Gerilim farklarını dengelemek için ortak referans noktasıdır.

🧪 Voltaj Seviyeleri ve Sinyal Yapısı

CAN haberleşmesinde kullanılan iki temel voltaj seviyesi şunlardır:

Durum CAN_H CAN_L Diferansiyel Voltaj (Vdiff)
Recessive (Boşta) ~2.5V ~2.5V 0V
Dominant (Aktif) ~3.5V ~1.5V ~2V

Bu diferansiyel sinyal yapısı sayesinde, CAN Bus oldukça sağlam bir iletişim sunar.

🛡️ Elektromanyetik Uyumluluk ve Koruma

CAN Bus kabloları, dış ortamda oluşabilecek elektromanyetik gürültüye karşı bükümlü çift (twisted pair) olarak döşenir. Gerekirse bu kablolar shielding (ekranlama) ile daha da korunabilir.

🔌 Kablolama Kuralları

Aşağıdaki kurallar CAN hattının sağlıklı çalışması için oldukça kritiktir:

  • Kablolama lineer (doğrusal) olmalıdır, dallanmalardan kaçınılmalıdır.
  • Hattın iki ucunda 120Ω sonlandırma mutlaka olmalıdır.
  • Toplam kablo uzunluğu 500m’yi geçmemelidir (10kbps için).
  • Bağlantı noktaları 1m’den uzun olmamalıdır.

⚙️ Hız ve Kablo Uzunluğu İlişkisi

Veri Hızı (kbps) Maksimum Kablo Uzunluğu
1000 kbps 40 m
500 kbps 100 m
250 kbps 250 m
125 kbps 500 m
50 kbps 1000 m

🔧 CAN Transceiver Seçimi

CAN transceiver’lar, mikrodenetleyiciler ile CAN hattı arasında fiziksel bağ kurar. Aşağıdaki özelliklere dikkat etmek gerekir:

  • ISO 11898-2 uyumluluğu
  • EMI performansı
  • Çalışma sıcaklık aralığı
  • Standby ve düşük güç modları

Popüler transceiver örnekleri: TJA1050, SN65HVD230, MCP2551.

❓ CAN Bus Fiziksel Katmanı Sık Sorulan Sorular

  • CAN_H ve CAN_L ters bağlanırsa ne olur? Genellikle sistem çalışmaz, ama transceiver zarar görmez.
  • Tek direnç yeterli mi? Hayır, her iki uçta 120 ohm olmalı. Aksi halde yansıma oluşur.
  • Toprak bağlantısı olmazsa ne olur? Gerilim farkları iletişimi bozabilir. Ortak ground önerilir.

🔖 Terimler Sözlüğü

Terim Açıklama
CAN_H Yüksek seviyeli CAN hattı
CAN_L Düşük seviyeli CAN hattı
Transceiver Veri alışverişini gerçekleştiren alıcı-verici devre
Diferansiyel Sinyal İki hat arasındaki voltaj farkına dayalı iletişim
Sonlandırma Direnci Veri hattı ucuna takılan 120Ω direnç

📌 Ekstra Kaynaklar

8 Nisan 2025 Salı

STM32CubeIDE’de Canlı Değişken Takibi: Debug Sürecini Güçlendiren İpucu

STM32CubeIDE, STM32 mikrodenetleyici projelerinde hem geliştirme hem de hata ayıklama süreçlerini kolaylaştıran güçlü bir araç. Ancak çoğu kullanıcı, debug sürecini sadece breakpoint koyup değişkenleri tek tek kontrol ederek geçiriyor. Oysa ki “Live Expressions” (canlı ifadeler) özelliği ile, debug sırasında gerçek zamanlı değişken değişimlerini izleyerek çok daha verimli bir şekilde sorunları analiz edebilirsiniz.

Bu yazıda, STM32CubeIDE’de canlı değişken takibi nasıl yapılır, ne gibi avantajlar sağlar ve bunu bir örnek proje üzerinden nasıl kullanabileceğinizi adım adım anlatacağım.


Nedir Bu "Live Expressions"?

Live Expressions penceresi, kodunuz çalışırken belirli değişkenleri (ya da ifadeleri) sürekli gözlemlemenizi sağlar. Kod breakpoint’te durmasa bile, değişkenlerin değerleri anlık olarak güncellenir. Bu, özellikle zamanla değişen sayıcılar, PWM duty cycle’ları veya sensör değerleri gibi dinamik verileri takip etmek için çok faydalıdır.


Neden Kullanmalısınız?

Live Expressions ile şunları kolaylıkla yapabilirsiniz:

  • Kod kesintiye uğramadan değişkenleri takip edebilirsiniz.

  • Belirli bir algoritmanın anlık çıktısını grafiksel ya da sayısal olarak izleyebilirsiniz.

  • Delay’lerle uğraşmadan, breakpoint koymadan performans sorunlarını veya mantıksal hataları yakalayabilirsiniz.

  • Gerçek zamanlı sistemlerde, kod akışını bozmadan değerlerin nasıl değiştiğini görme imkânı sağlar.


Uygulamalı Örnek: ADC ile Sıcaklık Ölçümü

Diyelim ki bir STM32F103RB mikrodenetleyici ile dahili sıcaklık sensöründen ADC kullanarak sıcaklık değeri okuyoruz. Kodumuz şöyle:

c
#include "main.h" ADC_HandleTypeDef hadc1; float temperature = 0; void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc) { if (hadc->Instance == ADC1) { uint32_t adc_val = HAL_ADC_GetValue(&hadc1); temperature = ((float)adc_val) * 3.3f / 4096.0f; // Voltaj temperature = ((temperature - 0.76f) / 0.0025f) + 25; // Sıcaklık (yaklaşık hesap) } } int main(void) { HAL_Init(); SystemClock_Config(); MX_ADC1_Init(); HAL_ADC_Start_IT(&hadc1); while (1) { HAL_Delay(500); // Sıcaklık değerini yarım saniyede bir güncelliyoruz } }

Adım Adım: Live Expressions Kullanımı

1. Debug Moduna Geçin

Projeyi build ettikten sonra Debug moduna geçin (F11 veya üstteki bug ikonuna tıklayarak).

2. Live Expressions Panelini Açın

Debug görünümüne geçtikten sonra:

  • Menüden Window > Show View > Expressions yolunu izleyin.

  • Açılan panelin ismi "Expressions" olabilir ama bu panel canlı güncelleme desteği sunar.

3. Değişken Ekleyin

  • Expressions paneline sağ tıklayın ve Add Watch Expression seçeneğine tıklayın.

  • Açılan kutuya temperature yazın.

  • Enter’a bastığınızda, değişken panelde belirecek.

4. Canlı Güncellemeyi Görüntüleyin

  • Kod hala çalışırken (pause durumda değilken!) temperature değerinin saniyede iki kez güncellendiğini göreceksiniz.

  • Değer sürekli güncelleniyorsa, sisteminizde herhangi bir kesinti olmadan anlık sıcaklık verisini izleyebiliyorsunuz demektir.


İleri Seviye: İfade Takibi (Expression Tracking)

Bu panelde sadece değişken değil, ifade de yazabilirsiniz. Örneğin:

temperature > 30

şeklinde yazarsanız, bu ifade true veya false olarak sürekli değerlendirilir. Bu da debug sürecinde koşul kontrollerini anında görmek için ideal bir yöntemdir.


İpuçları & Dikkat Edilmesi Gerekenler

  • Optimization seviyeleri yüksekse (-O2, -O3) bazı değişkenler derleyici tarafından optimize edilebilir ve debug sırasında görünmeyebilir. Geliştirme aşamasında -O0 (optimizasyon kapalı) kullanmanızı öneririm.

  • Eğer değişken global değilse, yani fonksiyon içindeyse ve static değilse, Live Expressions’da gözükmeyebilir. Bu durumda değişkenin kapsamını değiştirin.

  • volatile tanımlaması, anlık değişen donanım temelli değişkenlerde kritik öneme sahiptir. Bu sayede değer her seferinde RAM’den okunur.


Sonuç: Canlı Takiple Daha Akıllı Debug

Live Expressions, STM32CubeIDE’nin az bilinen ama çok etkili bir özelliği. Özellikle gömülü sistemlerde, zamanla değişen verileri izlemek ve mantıksal hataları tespit etmek için oldukça kullanışlıdır.

Her debug seansında breakpoint koymak yerine, bu özelliği kullanarak sisteminizi çalışır haldeyken analiz edebilir, daha kısa sürede daha isabetli çözümler üretebilirsiniz.


Eğer bu özelliği daha önce kullanmadıysanız, bir sonraki debug seansınızda denemenizi kesinlikle tavsiye ederim. STM32CubeIDE’nin sunduğu bu ve benzeri küçük araçlar, geliştirme sürecinizde büyük farklar yaratabilir.

1 Mart 2025 Cumartesi

STM32 HAL Kullanırken Performans Optimizasyonu: Kesme ve DMA İpuçları

STM32 HAL Kullanırken Performans Optimizasyonu: Kesme ve DMA İpuçları

STM32 mikrodenetleyicileri, özellikle gömülü sistemler ve zaman kritikli uygulamalar için oldukça popülerdir. Ancak, yazılım tarafında performans optimizasyonu yapmak, donanımın tüm potansiyelini verimli bir şekilde kullanabilmek için kritik önem taşır. Bu yazıda, STM32 HAL (Hardware Abstraction Layer) kütüphanesini kullanarak performansı artırmanıza yardımcı olacak iki önemli konuyu ele alacağız: Kesme ve DMA (Direct Memory Access).

1. Kesme (Interrupt) ile Hızlı Tepki

Kesme, STM32 gibi mikrodenetleyicilerde, belirli bir olay gerçekleştiğinde programın normal akışından çıkıp, hemen o olaya tepki vermesini sağlar. Bu özellik, özellikle zaman kritik uygulamalarda oldukça faydalıdır. Örneğin, bir sensörden gelen veriyi hızlıca okumak veya dış bir butona basıldığında kullanıcıya tepki vermek için kesme kullanabilirsiniz.

Kesme Kullanmanın Avantajları:

  • Hızlı Tepki: Kesme kullanarak, sürekli olarak bir işlem yapmayı beklemek yerine, bir olay gerçekleştiğinde hemen müdahale edebilirsiniz. Bu, zaman kazandırır.
  • Verimli Zaman Kullanımı: Mikrodenetleyici başka işlemlerle meşgulken, kesmeler sayesinde sadece gerekli olduğunda işlem yapılır. Bu, CPU’nun verimli kullanılmasını sağlar.

Kesme Performansı İçin İpuçları:

  • Kesme Önceliği Ayarı: STM32, çoklu kesme kaynakları destekler ve her bir kesmeye bir öncelik verebilirsiniz. Kesme önceliği ayarlayarak, en önemli olayların ön planda işlenmesini sağlayabilirsiniz. Bu, kritik uygulamalarda kesme sırasının doğru yönetilmesini sağlar.

  • Kesme Fonksiyonlarını Kısa Tutun: Kesme fonksiyonları kısa olmalıdır. Kesme fonksiyonları sırasında, mikrodenetleyici başka kesmeleri almaz ve bu da sistemin yanıt süresini olumsuz etkiler. Yalnızca gerekli işlemleri yapın ve büyük hesaplamaları ana program akışına bırakın.

2. DMA (Direct Memory Access) ile Verimli Veri Transferi

DMA, mikrodenetleyicinin CPU’sunu devre dışı bırakarak, verileri bir bellek biriminden diğerine hızlı bir şekilde aktarır. Bu özellik, özellikle yüksek hızda veri transferi yapmanız gerektiğinde faydalıdır. Örneğin, ADC (Analog to Digital Converter) ile veri okuma veya UART üzerinden gelen veriyi hafızaya kaydetme gibi işlemler için DMA kullanmak verimliliği artırır.

DMA Kullanmanın Avantajları:

  • CPU Yükünü Azaltır: CPU, veri transferini kontrol etmez, bu da diğer işlemler için daha fazla işlem gücü bırakır.
  • Hızlı Veri Transferi: CPU’dan bağımsız olarak, veri transferi çok daha hızlı yapılır. Bu, özellikle büyük veri setleriyle çalışırken oldukça önemlidir.

DMA Performansı İçin İpuçları:

  • DMA ile Kesme Kullanımı: DMA ile veri transferi sırasında kesme kullanarak, transfer tamamlandığında işlem yapabilirsiniz. Bu, veri transferi bitmeden önce başka bir işlem başlatmanın önüne geçer.

  • Veri Boyutunu Yönetme: DMA işlemleri genellikle büyük veri blokları üzerinde daha etkilidir. Küçük veri transferleri için DMA yerine doğrudan işlemler yapmak daha verimli olabilir. Gereksiz veri transferlerini önlemek için veri boyutlarını optimize edin.

  • DMA Kanal Yapılandırması: STM32, birden fazla DMA kanalını aynı anda kullanabilir. Bu kanalların doğru yapılandırılması, veri transferinin en verimli şekilde yapılmasını sağlar. DMA kanalındaki kaynak ve hedef adreslerini doğru belirlemek çok önemlidir.

3. Kesme ve DMA Birlikte Kullanımı

Kesme ve DMA birlikte kullanıldığında, çok daha verimli ve hızlı sistemler oluşturabilirsiniz. Örneğin, ADC ile sürekli veri okurken, DMA ile verileri hafızaya aktarabilir ve her yeni veri bloğu geldiğinde bir kesme ile işlem yapabilirsiniz. Bu sayede, hem hızlı veri transferi hem de hızlı işlem yapma imkanı elde edersiniz.

Kesme ve DMA’yı Birlikte Kullanırken Dikkat Edilmesi Gerekenler:

  • Kesme ve DMA Zamanlamasını Yönetme: Kesme ve DMA arasında zamanlama çatışmaları olabilir. DMA ile veri aktarımı bittiğinde bir kesme gerçekleşeceği için, kesme sırasında DMA işlemlerini engellemeyen bir yapı kurmak önemlidir.
  • Kesme İzinlerini Yönetme: DMA kesme işlemi sırasında, başka bir kesmenin engellenmemesi için doğru kesme izinlerini yönetmek gerekir. Örneğin, DMA kesmesinin aktif olduğu zamanlarda, düşük öncelikli kesmeleri geçici olarak devre dışı bırakmak verimliliği artırır.

Sonuç

Kesme ve DMA, STM32 mikrodenetleyicilerinin performansını önemli ölçüde artıran iki güçlü özelliktir. Doğru kullanıldığında, bu iki özellik, zaman ve kaynak verimliliğini optimize eder, CPU yükünü azaltır ve tepki sürelerini hızlandırır. STM32 HAL kütüphanesi, bu özellikleri kullanmayı kolaylaştırır, ancak yine de performans için dikkatli bir yapılandırma gereklidir. Bu yazıda verdiğimiz ipuçları, projelerinizde daha verimli ve hızlı sistemler kurmanıza yardımcı olacaktır.

Unutmayın, her zaman yazılımın yanı sıra donanımı da doğru şekilde yapılandırmak gerekir. Performans optimizasyonu, sistemin tüm bileşenlerinin uyumlu bir şekilde çalışmasıyla mümkündür.

13 Aralık 2024 Cuma

Transistörlü Röle Sürme Devresinde Diyot Kullanımının Önemi

Transistörlü Röle Sürme Devresinde Diyot Kullanımının Önemi

Elektronik devrelerde diyotların farklı görevleri bulunur. Bu yazıda, bir transistör aracılığıyla sürülen bir röle devresindeki diyotun neden kritik bir bileşen olduğunu inceleyeceğiz.

Devre Tasarımına Genel Bakış

Görseldeki devre, bir transistörün yardımıyla bir rölenin kontrol edilmesini sağlamaktadır. Devredeki temel bileşenler şunlardır:

Transistör: Giriş sinyaline göre iletime geçerek rölenin enerjilenmesini sağlar.

Röle: Bobini üzerinden akım geçtiğinde elektromanyetik alan oluşturarak mekanik anahtarının konumunu değiştirir.

Diyot: Röle bobini ile paralel bağlanmış olan bu diyot, devrede bir nevi koruma görevi üretir.

Diyelim ki giriş sinyali transistörü iletime soktu ve rölenin bobini üzerinden akım akmaya başladı. Bu durumda röle mekanik anahtarını kapatır ve bağlı bulunduğu yüklenin çalışmasını sağlar. Ancak, transistör kesime geçip akım akışı aniden kesildiğinde diyotun önemi ortaya çıkar.

Diyotun Koruma Mekanizması

Bir röle bobini, elektromanyetik indürens temelinde çalışr. Bobin üzerinden geçen akım kesildiğinde, bu akımın hızla sona ermesi bobin içerisinde bir öz indürens voltajı oluşturur. Bu voltaj genellikle çok yüksek olabilir (yüzlerce volt seviyesine ulaşabilir) ve devrenin diğer bileşenlerine zarar verebilir.

Diyot, bu noktada koruyucu bir unsur olarak devreye girer. Diyotun röle bobinine paralel bağlı olması, öz indürens sonucu oluşan bu ters yönlü voltajı şu sekilde bastırır:

  • Röle bobini akımını kesmeye çalıştığında, bobin uçlarında yüksek bir gerilim oluşur.
  • Diyot, ters gerilimi kendi üzerinden ileterek bobinde oluşan enerjiyi çözer.
  • Bu sayede transistör, yüksek voltaj seviyesine (spike) maruz kalmaz ve zarar görmekten korunur.

Diyot Olmasaydı Ne Olurdu?

Diyotun bulunmadığı durumlarda, bobin içerisinde oluşan öz indürens voltajı transistörün bacaklarına zarar verebilir. Bu, transistörün yanmasına ya da kalıcı hasarlara yol açabilir. Ayrıca devrenin genel çalışma kararlılığı ciddi anlamda bozulabilir.

Zener Diyotun Rolü

Bu devrede ayrıca bir zener diyot kullanılmış. Zener diyot, belirli bir eşik voltajı aştığında iletime geçerek gerilimi sınırlar. Röle bobini üzerinde oluşan gerilimı kontrol altında tutarak devrede ekstra bir koruma katmanı sağlar.

Sonuç

Diyotlar, basit görünüşlerine rağmen elektronik devrelerde çok kritik bir rol oynar. Görseldeki devrede kullanılan diyot, transistörü ve diğer bileşenleri koruyarak devrenin uzun ömürlü ve güvenilir olmasını sağlar. Bu tür koruma önlemleri, özellikle elektromekanik bileşenlerle çalışan devrelerde vazgeçilmezdir.

Kaynaklar:

  1. https://www.learningaboutelectronics.com/Articles/Relay-driver-circuit.php

31 Mayıs 2024 Cuma

Diyot Tipleri, Kullanım Alanları

Bu yazıda diyot tipleri ve ana kullanım alanları listelenmiştir.

  • P-N Junction-General Purpose Diode: Akımın tek yönde iletilmesini sağlar. İletim yönünde üzerine ~0.7V gerilim düşer. Genellikle doğrultucu olarak kullanılır. Aynı zamanda devre güç girişlerinde ters kutuplamadan/polariteden korunmak için de kullanılır.


  • Schottky Diode: Genel kullanım diyot ile benzer özelliklerdedir. Farklı kılan kısmı İletim yönünde üzerine daha düşük gerilim düşer. Bu sayede yüksek hızlı anahtarlama devrelerinde hızlı geri toparlama özelliği sayesinde sıklıkla kullanılır. Bu uygulamalarda üzerinde harcanan güç daha düşük olduğu için verimi daha yüksektir.

  • Zener Diyot: Belirli bir ters gerilimde iletime geçer ve gerilimi sabitlemeye yarar. Bu özelliği sayesinde gerilim regülatör devrelerinde, referans gerilim üreteçlerinde ve aşırı gerilim koruma devrelerinde kullanılır.

  • Transient Voltage Suppression Diode (TVS): Ani ve yüksek gerilim yükselmelerine karşı koruma sağlar. Elektronik cihazları yıldırım düşmesi, elektrostatik deşarj veya endüktif yüklerin sebep olduğu ani gerilim yükselmelerinden korur.


  • Light-Emitting Diode (LED): İleri yönde akım geçtiğinde ışık yayan yarı iletken diyottur. Farklı yarı iletken malzemeler kullanılarak farklı dalga boylarında (renklerde) ışık üretebilir. Aydınlatma, gösterge, sinyalizasyon ve haberleşme gibi birçok alanda kullanılır.


  • Fotodiyot: Üzerine düşen ışık miktarına bağlı olarak akım üreten diyottur. Işığı elektrik sinyaline dönüştürdüğü için ışık sensörleri, otomatik aydınlatma sistemleri, kamera pozometreleri ve tıbbi görüntüleme cihazlarında kullanılır.


  • Varaktör Diyot (Varikap): Uygulanan ters gerilime bağlı olarak kapasitans değeri değişen diyottur. Bu özelliği sayesinde radyo ve televizyon alıcılarında frekans ayarlama, osilatör devrelerinde frekans kontrolü ve parametrik yükselteçlerde kullanılır.


  • Tünel Diyot: Kuantum tünelleme etkisiyle çalışan özel bir diyot türüdür. Çok hızlı anahtarlama özelliği sayesinde yüksek frekanslı osilatör ve yükselteç devrelerinde kullanılır.


  • Lazer Diyot: Uyarılmış ışık emisyonu ile ışık üreten özel bir diyot türüdür. Ürettiği ışık, tek renkli, tutarlı ve yönlüdür. Optik fiber iletişim sistemleri, barkod okuyucular, lazer yazıcılar, lazer işaretleyiciler ve tıp alanında kullanılır.



Kaynaklar

  • https://www.globalspec.com/learnmore/semiconductors/discrete/diodes/general_purpose_diodes
  • https://www.build-electronic-circuits.com/schottky-diode/
  • https://www.build-electronic-circuits.com/zener-diode/
  • https://uk.rs-online.com/web/content/discovery/ideas-and-advice/tvs-diodes-guide
  • https://www.electrical4u.com/led-or-light-emitting-diode/
  • https://elektrikbilim.com/1009-fotodiyotlar.html
  • https://diyot.net/diyot-cesitleri-1/
  • https://www.derstagram.com/tunnel-diyot-nedir-nasil-calisir/
  • https://tekfaz.com/lazer-diyot-nedir-yapisi-ve-calisma-prensibi.html

Otomotiv Ethernet vs CAN FD: Hangisi Otomotivin Geleceği?

🚗 Otomotiv Ethernet vs CAN FD: Hangisi Otomotivin Geleceği? Günümüzde otomotiv elektroniği baş döndürücü bir hızla gelişiyor. Otonom sürü...