Knight Rider Araba Farları LED Devresi

guclusat

Tanınmış Üye
Süper Moderatör
04460.gif

40858.gif
Karaşimşek devresi

Devre Açıklaması ve Çalışma Mantığı

  • Charlieplexing Mantığı: PIC12F629 mikrodenetleyicisinin sadece 4 adet I/O pini (Pin 2, 3, 6 ve 7) kullanılarak, pinlerin giriş (High-Z) ve çıkış (High/Low) durumları dinamik olarak değiştirilerek tam 8 adet LED bağımsız bir şekilde sürülmektedir.
  • Güç Katı: Devre +9V ile +18V geniş çalışma voltajı aralığına sahiptir. Girişteki 1kΩ direnç ve 5.1V Zener diyot, mikrodenetleyiciyi korumak ve VDD pinine (Pin 1) sabit 5.1V besleme sağlamak için regülatör görevi görür.
  • MCLRx / Reset: PIC12F629'un Pin 4 (GP3/MCLR) pini dahili olarak yapılandırıldığı için şemada boş bırakılmıştır.

Malzeme Listesi

Malzeme TanımıDeğer / ÖzellikAdetAçıklama
U1PIC12F6291 Adet8-Bit Flash Mikrodenetleyici (DIP-8)
D1-D85mm LED8 Adetİstenilen renkte standart LED
DZ15.1V Zener Diyot1 Adet1/2W veya 1W Zener Diyot
R11 kΩ Direnç1 Adet1/4W Ön direnç (Besleme regülesi için)
Soket8 Pin DIP Soket1 AdetPIC12F629 için (İsteğe bağlı)
 

Eklentiler

Son düzenleme:
08735.gif

4 fonksiyon vardır:

* Chaser MODE
* Fren Modu
* Kovalayıcı / Fren MODU
* KAPALI

Düğmeye bastığınızda modlar değişir.
 

Eklentiler

How To Make A Knight Rider Scanner Light​

knight rider new.PNG
Knight Rider Tarayıcı Işığı Nasıl Yapılır
 
Son düzenleme:
Kod:
/*
 * PIC12F629 Charlieplexing 8 LED Knight Rider / Kara Şimşek
 * Osilatör: Dahili 4 MHz (INTOSC)
 */

#include <xc.h>

// Konfigürasyon Ayarları (HEX dosyasındaki 0x1144 config karşılığı)
#pragma config FOSC = INTRCIO   // Dahili Osilatör, GP4 ve GP5 I/O olarak aktif
#pragma config WDTE = OFF       // Watchdog Timer Kapalı
#pragma config PWRTE = ON       // Power-up Timer Açık
#pragma config MCLRE = OFF      // GP3/MCLR pini dijital giriş (Reset kapalı)
#pragma config BOREN = OFF      // Brown-out Detect Kapalı
#pragma config CP = OFF         // Kod koruma kapalı
#pragma config CPD = OFF        // EEPROM koruma kapalı

#define _XTAL_FREQ 4000000

// Charlieplexing Mantığı: 8 LED için TRISIO ve GPIO Durum Tablosu
// Kullanılan Pinler: GP0 (Pin 7), GP1 (Pin 6), GP2 (Pin 5), GP4 (Pin 3)

const unsigned char TRIS_TABLO[8] = {
    0b11111100, // LED 1: GP0 & GP1 aktif
    0b11111100, // LED 2: GP0 & GP1 aktif
    0b11111001, // LED 3: GP1 & GP2 aktif
    0b11111001, // LED 4: GP1 & GP2 aktif
    0b11101101, // LED 5: GP1 & GP4 aktif
    0b11101101, // LED 6: GP1 & GP4 aktif
    0b11101110, // LED 7: GP0 & GP4 aktif
    0b11101110  // LED 8: GP0 & GP4 aktif
};

const unsigned char PORT_TABLO[8] = {
    0b00000001, // LED 1: GP0 HIGH, GP1 LOW
    0b00000010, // LED 2: GP1 HIGH, GP0 LOW
    0b00000010, // LED 3: GP1 HIGH, GP2 LOW
    0b00000100, // LED 4: GP2 HIGH, GP1 LOW
    0b00000010, // LED 5: GP1 HIGH, GP4 LOW
    0b00010000, // LED 6: GP4 HIGH, GP1 LOW
    0b00000001, // LED 7: GP0 HIGH, GP4 LOW
    0b00010000  // LED 8: GP4 HIGH, GP0 LOW
};

void main(void) {
    CMCON = 0x07; // Komparatörleri kapat (Pinleri dijital I/O yap)
    
    while(1) {
        // İleri Doğru Kayma (LED 1 -> LED 8)
        for(char i = 0; i < 8; i++) {
            TRISIO = TRIS_TABLO[i];
            GPIO   = PORT_TABLO[i];
            __delay_ms(60);
        }
        
        // Geri Doğru Kayma (LED 7 -> LED 2)
        for(char i = 6; i > 0; i--) {
            TRISIO = TRIS_TABLO[i];
            GPIO   = PORT_TABLO[i];
            __delay_ms(60);
        }
    }
}

Kaynak kodu
 
İlk iki resimde PIC'in 1k ve zener ile beslenmesi bana biraz güvensiz geldi. Ben olsam zenere güvenmezdim.
Ayrıca 1k dirençten sonra kalan çok az akımla PIC mi beslenecek, LED'ler mi?

1787671582648.webp
Ama girişte bir 7805 ya da 78L05 kullanılırsa belki daha iyi olabilir. 100nF kondansatörler mutlaka kullanılmalı ve entegrenin bacaklarına en yakın yerden lehimlenmelidir. Bu, gürültüğü çok iyi bastırır. PIC besleme bacakları arasına da bir 100nF koymak çok iyidir.

LED'lere gelince, her LED bir transistör ağı ile beslenirse daha yüksek güçlü LED'ler de kullanılabilir.
 
Geri
Yukarı