LIN Bus (Local Interconnect Network) Haberleşme Protokolü

👤 Yazar: ozcan 📅 Tarih: 03.08.2026 17:15 👁️ Görüntüleme: 2

LIN Bus (Local Interconnect Network) Haberleşme Protokolü Detaylı İncelemesi

LIN Bus (Local Interconnect Network), 1990'ların sonunda LIN Konsorsiyumu (BMW, VW, Audi, Volvo, Mercedes-Benz ve Freescale gibi üreticiler) tarafından geliştirilmiş, otomotiv sektöründe CAN Bus'a düşük maliyetli bir alternatif/tamamlayıcı olarak sunulan tek hatlı (Single-Wire), senkronize, tek sunucu / çoklu istemci (Master / Slave) mimarisine dayanan bir seri haberleşme protokolüdür. Kapı kilitleri, koltuk ayarlayıcıları, cam krikoları, klima fanları ve yan aynalar gibi yüksek bant genişliği gerektirmeyen gövde elektroniği uygulamalarında yaygın olarak tercih edilir.

LIN Bus Mimari Diyagramı


1. Donanım Mimarısı ve Sinyalleşme

LIN Bus, kablolama maliyetlerini ve ağırlığı minimuma indirmek için tek bir dijital sinyal hattı (ve ortak akü/sistem GND) kullanır:

  • LIN Hat Gerilimi: Araç aküsü gerilim seviyesinde (Bat+ / 12V veya 24V) çalışır.
  • Lojik 0 (Dominant): Hat 0V (GND) seviyesine çekildiğinde oluşur.
  • Lojik 1 (Recessive): Hat VBAT (12V) seviyesinde serbest kaldığında oluşur.
Open-Drain Yapısı ve Direnç/Diyot Mimarisi:
LIN hattı donanımsal olarak Open-Collector / Open-Drain mimarisindedir. Hat boşta iken lojik 1 (12V) seviyesinde kalması için Pull-Up dirençleri ve aküye geri beslemeyi engelleyen diyotlar kullanılır:

  • Master Düğümü: 1 kΩ Pull-Up direnci + Diyot eklemesi gerektirir.
  • Slave Düğümleri: 30 kΩ Pull-Up direnci + Diyot içerir.
Bu yapı sayesinde bir LIN ağında 1 adet Master ve maksimum 16 Slave düğümü güvenle haberleşebilir.

2. LIN Çerçeve Yapısı (Frame Format) ve Haberleşme Mantığı

LIN protokolünde tüm iletişim Master cihazın başlattığı sorgular (Poll) üzerinden yürütülür. Çakışma (collision) ve hakemlik (arbitration) riski tamamen ortadan kaldırılmıştır. Bir mesaj çerçevesi iki ana bölümden oluşur:

Bölüm Saha / Alan Açıklama
Header (Başlık)
[Master Gönderir]
Sync Break En az 13 bit uzunluğunda Dominant (0) sinyali. Çerçevenin başladığını bildirir.
Sync Byte Sabit 0x55 baytı. Slave cihazların kendi dahili osilatörlerini Master hızıyla senkronize etmesini sağlar (Kristalsiz ucuz MCU kullanımı).
Protected ID (PID) 6-bit Frame ID + 2-bit Parity. Mesajın kimliğini ve hangi Slave'in yanıt vereceğini belirler.
Response (Yanıt)
[Slave veya Master Yanıtlar]
Data Field 2, 4 veya 8 Bayt uzunluğunda taşınan gerçek veri yükü (Payload).
Checksum Hata denetimi için hesaplanan 8-bit doğrulama baytı (LIN 2.0+ için PID dahil Enhanced Checksum).
Otomatik Baud-Rate Senkronizasyonu:
Slave düğümlerde hassas ve pahalı kristal osilatörler yerine ucuz RC osilatörler kullanılabilir. Master'ın gönderdiği 0x55 (biner: 01010101) baytı sayesinde Slave cihaz, bit sürelerini ölçerek saat frekansını anlık olarak Master ile tam uyumlu hale getirir.

3. TJA1021 / MCP2003 (LIN Transceiver) ile Kod Örneği

Mikrokontrolcülerin 3.3V/5V UART sinyallerini 12V LIN seviyesine dönüştürmek için TJA1021 veya MCP2003 gibi LIN PHY entegreleri kullanılır. LIN protokolü temelde UART donanımını kullandığından, Sync Break sinyali baudrate geçici olarak düşürülerek veya Özel Break Fonksiyonları çağrılarak üretilir.

ESP32 / Arduino C++ (LIN Master Paket Gönderim Örneği - 19200 Baud)

#include <Arduino.h>

#define LIN_RX_PIN  16
#define LIN_TX_PIN  17
#define LIN_CS_PIN  5   // Transceiver Chip Select / Enable Pini

#define LIN_BAUDRATE 19200

// LIN PID Parity Hesaplama Fonksiyonu
uint8_t linHesaplaPID(uint8_t id) {
  uint8_t p0 = ((id >> 0) ^ (id >> 1) ^ (id >> 2) ^ (id >> 4)) & 0x01;
  uint8_t p1 = !(((id >> 1) ^ (id >> 3) ^ (id >> 4) ^ (id >> 5)) & 0x01);
  return (id & 0x3F) | (p0 << 6) | (p1 << 7);
}

// LIN Enhanced Checksum Hesaplama Fonksiyonu
uint8_t linHesaplaChecksum(uint8_t pid, uint8_t* data, uint8_t len) {
  uint16_t sum = pid; // Enhanced Checksum PID'yi dahil eder (LIN 2.0+)
  for (uint8_t i = 0; i < len; i++) {
    sum += data[i];
    if (sum > 255) sum -= 255;
  }
  return (uint8_t)(~sum);
}

void setup() {
  Serial.begin(115200); // Seri Monitör
  
  pinMode(LIN_CS_PIN, OUTPUT);
  digitalWrite(LIN_CS_PIN, HIGH); // LIN Transceiver'ı Uyandır / Aktif Et

  // LIN UART Başlat (19200 Baud, 8N1)
  Serial2.begin(LIN_BAUDRATE, SERIAL_8N1, LIN_RX_PIN, LIN_TX_PIN);
  
  Serial.println("LIN Bus Master Düğümü Başlatıldı.");
}

// LIN Master Çerçeve Gönderme Metodu
void linMasterHeaderGonder(uint8_t rawID, uint8_t* data, uint8_t dataLen) {
  uint8_t pid = linHesaplaPID(rawID);
  uint8_t checksum = linHesaplaChecksum(pid, data, dataLen);

  // 1. BREAK SİNYALİ ÜRETİMİ (Düşük baudrate ile hatta uzun '0' basma)
  Serial2.end();
  Serial2.begin(9600, SERIAL_8N1, LIN_RX_PIN, LIN_TX_PIN);
  Serial2.write(0x00); // 9600 Baud '0x00' -> 19200 Baud'da ~18-bit genişliğinde Break üretir
  Serial2.flush();

  // Standart LIN Hızına Geri Dön
  Serial2.end();
  Serial2.begin(LIN_BAUDRATE, SERIAL_8N1, LIN_RX_PIN, LIN_TX_PIN);

  // 2. HEADER: SYNC BYTE (0x55) VE PID GÖNDERİMİ
  Serial2.write(0x55); 
  Serial2.write(pid);

  // 3. RESPONSE: DATA VE CHECKSUM GÖNDERİMİ
  for (uint8_t i = 0; i < dataLen; i++) {
    Serial2.write(data[i]);
  }
  Serial2.write(checksum);
  Serial2.flush();
}

void loop() {
  // Örnek: ID 0x20 olan Slave cihaza (Yan Ayna Ayarı) 2 bayt komut gönder
  uint8_t komutVerisi[2] = {0x01, 0xFF}; 
  
  linMasterHeaderGonder(0x20, komutVerisi, 2);
  Serial.println("LIN Paket Gönderildi (ID: 0x20)");

  delay(1000);
}

4. Otomotiv Protokollerinin Karşılaştırması (LIN vs CAN Bus vs CAN FD)

Parametre LIN Bus CAN Bus (2.0) CAN FD
Maksimum Hız 19.2 kbit/s - 20 kbit/s 1 Mbit/s 5 - 8 Mbit/s
Kablolama / Hat Sayısı Tek Tel (Single Wire) + GND 2 Tel Diferansiyel (CAN_H, CAN_L) 2 Tel Diferansiyel (CAN_H, CAN_L)
Çalışma Gerilimi 12V / 24V (Akü Seviyesi) 5V / 3.3V Sinyalleşme 5V / 3.3V Sinyalleşme
Mimarisi Single-Master / Multi-Slave Multi-Master / Peer-to-Peer Multi-Master / Peer-to-Peer
Maksimum Veri Yükü 8 Bayt 8 Bayt 64 Bayt
Maliyet (Düğüm Başına) Çok Düşük (Kristalsiz MCU uyumlu) Orta Yüksek

💬 Yorumlar

Henüz yorum yapılmamış. İlk yorumu siz yapın!

Bir Yorum Bırakın

Güvenlik Kontrolü:

Yenidir.com
↑ Sayfa Başı
📞 İletişim ✉ E-Posta Gönder 🟥 YouTube
© 2026 Yenidir.com
Yenidir CMS V0.1