Konuyu Değerlendir
  • 0 Oy - 0 Ortalama
  • 1
  • 2
  • 3
  • 4
  • 5
F1 Led Stop Çakar Devresi Yapımı (Jalv2)
#1
Son zamanlarda araçların arkasında ortada bulunan LED stop lambasına modül bağlandığını gördüm. Değişik efektler olsada başlangıçta yanıp sönen ve sabitlenen efekt gayet güzeldi. Arkanızdan gelen kişinin sizi dikkat etmesi için bence gerekli olan bir özellik olduğunu düşünüyorum.
Piyasada araştırdığımda hazır modüllerin 10TL – 30TL arasında satıldığı gördüm. Bazıları sadece yapıp sönen bazıları ise farklı efektler üretebilen modüllerdi.

Malzeme çantama baktığımda ihtiyacım olan malzemeleri görünce dayanamadım ve elimdeki imkanlar doğrultusunda modülü yaptım. Hazır almak ucuza gelsede birşeyleri kendi başınıza yapıp kullanmanız bence paha biçilemez. Yapmışken biraz fonksiyonel birşey olsun dedim ve ortaya 13 Modlu çakar devresi çıktı. Yapıp kullanan arkadaşlar farklı modları seçerek kullanabilir.

Öncelikle şunu belirtmek isterim. Bazı simsar arkadaşlar bu tarz basit projeleri yapıp kendi ürünleri gibi sattıyorlar. Bu yüzden kaynak kodun tamamını paylaşmayacağım. DEMO olarak bir hex vereceğim. Yapıp kullanırsanız devre her çalıştığında farklı efekt çalıştıracaktır. DEMO yazılımla kalıcı efekt seçemezsiniz. Buradaki amacımız nasıl yapıldığını anlatmak olduğu için sadece işinize yarayacak kaynak kodları vereceğim.

Eğer Full yazılımı kullanmak isteyen arkadaşlar olursa mail yolu ile bana ulaşabilirler.

Şimdi gelelim devremize,
Öncelikle elimde olan malzemeler ile yaptığımı söylemiştim. Bunlar 12F629, BDX53, LM7805, Direnç, LED, Kondansatördür. Yazılımı tahmin edebileceğiniz gibi Jalv2 ile geliştirdim. Ücretsiz ve basit işlerde favorim olması en büyük etken

[Resim: 12f629_bdx53_pin.png]

PIC12F629 8 pinli bir mikrodenetleyicidir. Seçim nedeni 8 pinli olması ve elimde bulunmasından ibarettir. Elinizde varsa farklı mikrodenetleyicilerde kullanabilirsiniz.

BDX53C NPN tipi güçlü bir darlington transistördür. Biz sadece LED süreceğimiz için bize gayet yeterlidir. Datasheetini incelerseniz Voltaj ve Akım değerlerini görebilirsiniz.

[Resim: modlu_cakar_devre.png]

Devre Şemamız yukarıda görüldüğü gibi basit ve çok malzeme gerektirmeyen yapıda. Toplamda bağlanacak 3 adet kablonuz olacaktır. Şemada 12F629 Vdd ve GND bağlantıları gözükmüyor. Devreyi yapmak isterseniz bunları göz önünde bulundurun.


Araçlar 12V olduğu için mikrodenetleyiciyi çalıştırmak adına LM7805 kullandım. giriş ve çıkışına 100nfkutupsuz kondansatör yerleştirdim. Bir tane buton kullanarak MOD seçimini sağladım. Butona her basıldığında bir sonraki moda geçer ve hafızasında kaydedip bir sonraki çalışmada hatırlamasını sağlayacak şekilde programladım. Hatta butona basıldığında işlemin uygulandığını göstermek için ledlere 2 kez göz kırptırdım. Animasyon listesini bitirip başa döndüğünüzde Altı kez göz kırptırdım. İlavetten 13. mod olan ve her bastığınızda farklı animasyon çıkan moda geldiğinizde 1 kez göz kırptırdım. Bu sayede butona basıldığındaki işlemleriniz görsel hale geldi. Son olarak çıkışa bağladığım LED sayesinde devre üzerindeki animasyonlar direkt gözükmektedir. Enerji verip ayar yapmak isterseniz bu LED ile görsel doğrulama yapabilirsiniz.


Elimdeki imkanlar doğrultusunda ben devreyi delikli karta yaptım. Zamanım olsaydı baskı devre çizip basacaktım ama bu şekilde kolayıma geldi desem yalan olmaz. İsteyen arkadaşlar bası devresini hazırlayabilir.

[Resim: devremiz-2.png]

[Resim: Devremiz.png]

Kabul ediyorum işçilik çok iyi olmadı ama devremiz çalışıyor.

Devreyi dış etmenlerden korumak ve yalıtım sağlamak için ısıya dayanıklı 20mm çapında daralan makaron kullandım.

[Resim: uygun-makaron.png]

[Resim: makaronlu-hali.png]

Isı sorunu olup olmayacağı soru işareti ile devreyi 1 saat full çalıştıdım. LM7805 ve diğerleri üzerinde ısı oluşmadı. Zaten araçta sadece frene bastığınızda devre enerjilenmektedir. Sürekli enerji altında çalışmayacaktır.

Yazılım tarafına baktığımızda daha öncede söylediğim gibi Jalv2 kullandım.



Kod:
-- ------------------------------------------------------
-- Modlu Stop Çakar Projesi (LED)
-- 23.07.2017 - Tekirdağ
-- Compiler : jal jalv24q6 (compiled Oct 25 2016)
-- Sercan TEK - www.sercanca.com
-- ------------------------------------------------------
include islemci_ayarlar

led = off                        -- Led Pini Kapalı

var byte mode                    -- hafızada kayıtlı animasyon değişkeni
var byte aktif_mod               -- oynatılacak animasyon
var bit temp_mode = false        -- Animasyon Değişim Bayrağı
var byte ikaz = 2                -- ikaz efekti için
var byte x                       -- animasyon temp değişken

const mode_adet = 13             -- Toplam Animasyon Adeti
const mod13_start = 12           -- mod13 başlangıç
-- ------------------------------------------------------
--  12f629 Dahili Eepromdan byte Okur
-- ------------------------------------------------------
function Data_oku(byte in hucre) return byte is
  EEADR = hucre
  EECON1_RD = TRUE
  return EEDATA
end function
-- ------------------------------------------------------
--  12f629 Dahili Eeproma Byte Yazar
-- ------------------------------------------------------
procedure Data_yaz(byte in hucre,byte in bilgi) is
  var bit temp
  EEADR = hucre
  EEDATA = bilgi
  EECON1_WREN = TRUE
  temp = INTCON_GIE
  INTCON_GIE = FALSE
  EECON2    = 0x55
  EECON2    = 0xAA
  EECON1_WR = TRUE
  INTCON_GIE = temp
  EECON1_WREN = FALSE
end procedure
-- ------------------------------------------------------
--  Mod butonu kontrol eder
-- ------------------------------------------------------
procedure buton_kontrol is
if buton == true then     -- butona basıldı ise
 led = off
  _usec_delay(1000_000)
 mode = ((mode % mode_adet) + 1)
 data_yaz(0,mode)
    if mode == 13 then   -- mode 13 seçilirse
     ikaz = 1            -- 1 kere yanıp söner ikaz verir
     aktif_mod = mod13_start
     data_yaz(1,aktif_mod)
    else
      aktif_mod = mode
    end if
   if mode == 1 then     -- mode 1 e geri döndü ise
     ikaz = 6            -- 6 kere yanıp söner ikaz verir
    end if
  for ikaz loop          -- normalde 2 kere yanıp söner ve ikaz verir.
   led = on   _usec_Delay(50_000)
   led = off  _usec_Delay(50_000)
  end loop
   if ikaz != 2 then
     ikaz = 2
   end if
 _usec_Delay(750_000)
 temp_mode = true
end if
end procedure
-- ------------------------------------------------------
-- Bekleme Alt Programı
-- ikinci parametre true verilirse Süre = deger x 1000ms
-- ikinci parametre false verilirse Süre = deger x 10us
-- ------------------------------------------------------
procedure bekle(word in deger,bit in ms) is
if deger > 0 then
 for deger loop
  if ms then
   _usec_delay(1000)
  else
   _usec_Delay(10)
  end if
  buton_kontrol
 end loop
end if
end procedure

-- ------------------------------------------------------
--  Animasyon Alt Programı, x1,x2,adet değişkenleri ile
--  Farklı animasyonlar elde edilebilir.
-- ------------------------------------------------------
procedure animasyon(word in x1,word in x2,byte in adet) is
 for adet loop

  if temp_mode then
   exit loop
  end if

  if x1 > 0 then led = on  bekle(x1,true) end if
  if x2 > 0 then led = off bekle(x2,true) end if
 
  buton_kontrol
 end loop
end procedure
-- ------------------------------------------------------
-- hSıradaki anmiasyonu oynatır
-- ------------------------------------------------------
procedure animasyon_oynat is
case aktif_mod of
-- ------------------------------------------------------
-- Mod 1
-- hızlı yanıp sönmeye başlar yavaşlar ve 20sn yanık kalır
-- ------------------------------------------------------
1 : block
   x = 0
     for 5 loop
       x = x + 15
       animasyon(x,x,2)
        if temp_mode then
         exit loop
        end if
      end loop
     animasyon(1000,0,20)
   end block
-- ------------------------------------------------------
--  Mod 2
--  Hızlı Hızlı Yanıp Söner
-- ------------------------------------------------------
2 : block
    animasyon(180,190,1)
   end block
-- ------------------------------------------------------
--  Mod 3
--  4 Kez Yanıp Söner ve 1 sn Yanık Kalıp Başa DÖner
-- ------------------------------------------------------
3 : block
    animasyon(100,100,4)
    animasyon(1000,0,1)
   end block
-- ------------------------------------------------------
--  Mod 4
--  3 Kez Yanıp Söner ve 1sn Sönük Kalıp Başa Döner
-- ------------------------------------------------------
4 : block
    animasyon(150,150,3)
    animasyon(0,1000,1)
   end block
-- ------------------------------------------------------
--  Mod 5
--  Düz yanar ve kısılarak söner
-- ------------------------------------------------------
5 : block
     for 255 using x loop
      led = on
      bekle(255-x,false)
      led = off
      bekle(x,false)
       if temp_mode then
         exit loop
       end if
     end loop
    bekle(100,true)
   end block
-- ------------------------------------------------------
-- Mod 6
-- Hızlanarak yanıp Söner
-- ------------------------------------------------------
6 : block
   x = 160
     for 8 loop
      x = x - 20
      animasyon(x,x,1)
        if temp_mode then
          exit loop
        end if
     end loop
    animasyon(0,500,1)
   end block
-- ------------------------------------------------------
--  Mod 7
--  5 kere yanıp söner ve 30 sn sabit yanar
-- ------------------------------------------------------
7 : block
    animasyon(120,120,5)
    animasyon(1000,0,30)
   end block
-- ------------------------------------------------------
-- Mod 8
-- 2 Farklı hızda yanıp söner
-- ------------------------------------------------------
8 : block
    for 2 loop
     animasyon(200,200,2)
     animasyon(50,50,2)
      if temp_mode then
        exit loop
      end if
    end loop
   end block
-- ------------------------------------------------------
-- Mod 9
-- 2 kez yanıp söner 2 kez söner
-- ------------------------------------------------------
9 : block
    animasyon(200,200,2)
    animasyon(0,200,2)
   end block
-- ------------------------------------------------------
-- Mod 10
-- 3 kez yanıp söner ve 5 sn sabit yanar
-- ------------------------------------------------------
10: block
    animasyon(100,100,3)
    animasyon(300,300,3)
    animasyon(500,500,3)
    animasyon(1000,0,5)
   end block
-- ------------------------------------------------------
-- Mod 11
-- 4 kez yanıp söner ve 6 sn sabit yanar
-- ------------------------------------------------------
11: block
    animasyon(130,130,4)
    animasyon(1000,0,6)
   end block
-- ------------------------------------------------------
--  Mod 12
--  Sürekli Yanık Kal
-- ------------------------------------------------------
12: block
    led = on
   end block

-- ------------------------------------------------------
--  Mod 13
--  her enerji verildiğinde sırasıyla tüm modları gezer
-- ------------------------------------------------------

end case

 if temp_mode then        -- mod değişimini algılar.
  temp_mode = false
 end if

end procedure

-- ------------------------------------------------------
-- mode 13 seçildi ise hepsini sırasıyla gezer
-- ------------------------------------------------------
mode = Data_oku(0)         -- Hafızadaki animasyon modunu oku
aktif_mod = Data_oku(1)    -- Hafızadaki animasyon sırası

if mode == 13 then         -- sıralı mod seçildi ise
if aktif_mod == 0 then    -- ilk oynatma
  data_yaz(1,mod13_start) -- aktif mod 11 olsun.
  aktif_mod = mod13_start
 else                     -- ilk oynatma değilse sıradakine geç
   aktif_mod = ((aktif_mod % 12) + 1)
   data_yaz(1,aktif_mod)  -- hafızaya yaz
 end if
else                       -- normal mod devam eder
aktif_mod = mode
end if

-- ------------------------------------------------------
--   Ana Döngü
-- ------------------------------------------------------
forever loop
buton_kontrol
animasyon_oynat
end loop

Gerekli gördüğüm açıklamaları Kodların yanlarına yazdım. Harici kütüphaneye bel bağlamamak adına bekleme ve eeprom okuma rutinlerini kendim yazdım. Kullanmak istediğiniz mikrodenetleyicinin lib dosyasını ekleyip kodu derleyebilirsiniz.


Animasyon Modları
Aslında toplamda 11 mod var 12. mod Düz yanıyor, 13. modta ise her frene bastığınızda farklı bir animasyonu yakıyor. Her animasyon frene basılı iken tekrar tekrar animasyonun başına dönüp tekrarlar.

1.Mod : Hızlıdan yavaşa doğru yanıp söner ve 20 sn sabit yanık kalıp başa döner.

2.Mod : Sürekli hızlı hızlı yanıp söner

3.Mod : 4 Kez yanıp söner, 1 sn yanık kalıp başa döner.

4.Mod : 3 Kez yanıp Söner, 1 sn sönük kalıp başa döner.

5.Mod : Düz Yanar ve kısılarak sönüp başa döner.

6.Mod : Hızlanarak yanıp söner başa döner.

7.Mod : 5 kere yanıp söner, 30sn yanık kalıp başa döner.

8.Mod : 2 farklı hızda yanıp söner başa döner.

9.Mod : 2 kez yanıp söner, 2 kez sönük kalıp başa döner.

10.Mod : Farklı hızlarda 3 kez yanıp söner, 5 sn yanık kalıp başa döner.

11.Mod : 4 kez yanıp söner, 6 sn yanık kalıp başa döner.

12.Mod : Devamlı yanık kalır.

13.Mod : Her defasında farklı animasyon oynatır.






Devrenin DEMO hex dosyasını buradan indirebilrisiniz : programv3_DEMO.hex

Not : PIC12F629 mikrodenetleyicisine bu Hex kodunu yüklemek için USB Brenner 8 gibi bir PIC programlayıcıya ihtiyacınız olacaktır. İlavetten Devre sadece LED kullanılmış stop lambaları içindir. Eğer Akkor flamanlı bir ampüle sahip stop lamlasında kullacaksanız öncelikle ilgili ampülü LEDversiyonu ile değiştirmeniz gereklidir.
www.sercanca.com
Bul
Alıntı
Topic Options
Foruma Git:




Bu konuyu görüntüleyen kullanıcı(lar): 1 Ziyaretçi