F1 Led Stop Çakar Devresi Yapımı

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.
Ş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
PIC12F629 8 pinli bir mikrodenetleyicidir. Seçim nedeni 8 pinli olması ve elimde bulunmasından ibarettir. Elinizde varsa farklı mikrodenetleyicilerde kullanabilirsiniz. Devreyi PIC12F675 ilede kurup kullanabilirsiniz. 12F675 yazılımıda vereceğim.
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.
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 100nf kutupsuz 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.
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.
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 |
-- ------------------------------------------------------ -- 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.
Aşağıda bu çalışmayı hazırlarken kullandığım çalışma ortamından bir kare paylaşmak istedim. Yatak kenarında ne zor şartlar altında yaptığımı göstermek istedim. 🙂
Devrenin kullanımı ve çalışmasını göstermek adına çektiğim videoda aşağıdaki gibidir.
Devrenin PIC12F629 ve PIC12F675 hex dosyasını buradan indirebilrisiniz : Cakar-Program-FULL
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ü LED versiyonu ile değiştirmeniz gereklidir.
Devrenin montajını başka bir yazıda detaylı anlatacağım.
Bu Uygulamada Neler Öğrenebiliriz ?
- Jalv2 dilinin temel kullanımı
- Jalv2 dilinde PIC12F629 için dahili eprom okuma ve yazma
- Jalv2 dilinde tek buton kullanımı
- Jalv2 dilinde tek pin ile led animasyon uygulaması
Başka bir yazıda görüşmek üzere,
Sercan TEK
merhaba serkan bey
her butona bastığımda ”[PIC12 EEPROM] PC=0x003B. Attempt to write to data EEPROM 0x0000 not allowed – CPD bit in configuration word is not set. [U2]
” bu hatayı alıyorum.
Mail adresime dönüş yaparsanız sevinirim.
Kolay gelsin iyi çalışmalar
benim elektronik bilgim ve becerim bunu yapmaya el vermiyor malesef.bu devreyi yapıp kullanıma hazır halde gönderme durumunuz ve benimde takıp kullanma şansım olur mu ? 🙂
maalesef bu konuda bir çalışmam yok. Öyle bir amacımda yok maalesef.
Elinize sağlık. Emek vermişsiniz, güzel ve ilgi çekebilecek bir devre olmuş. Ancak, yazılım dili, yazılım alanında pek kullanılmayan bir dil. Keşke, C dilinde olsaydı, kesin olarak denemek isterdim. Yine de elinize sağlık diyorum. Sağlıcakla kalın.
Merhaba çalışmanız çok güzel olmuş ellerinize sağlık
ben bu devreyi P kanal mosfet ile kullanmak istiyorum dirençleri pull up yapmam yapmam yeterlimi
teşekkürler
Elinize sağlık. Güzel ve detaylı bir çalışma olmuş.
Teşekkür ederim Hocam. Sizin yaptıklarınız kadar profesyonel çalışmalar olmasa da iş görür 🙂
hex dosyasını atabilirmisiniz
konu içerisindeki linkten temin edebilirsiniz.
selamınaleykum ben bu kartı para ile almak istiyorum ne kadar hocam
Merhaba, bu ürün ticari olarak yapılıp satılmıyor. Yapıp satan var mı bilmiyorum. benzerleri nette ve aksesuarcılarda var. 20-30 arası değişiyor fiyatları.
hex dosyasını atabilirmisiniz
Konu iceriginde linki mevcut
şu yazi yazilan dosyalari hex dosyalarini banada atarmisiniz
Bana Mail atin gondereyim.
SercanTEK.59@gmail.com
erozgur96@gmail.com bu benim hesabım burdan atabilirsiniz
mailimi paylaştim ama kodlar gelmedi
konuyu güncelledim. kodları direkt indirebilirsiniz. Konuya tekrar dönün.
şu kodlari kullanmak için banada mail olarak atarmisiniz
Sercan abi bana hex dosyasının tam sürümünü göndermen mümkün mü
Merhaba Bilgisayar Yanımda degil ilk fırsatta atacağım
Eyw. Usta çok teşekkür ederim 😉 kralsın
Sercan bey merhaba ben bu devrede ki 7 ve 12. Modlu kullanmak istiyorum, konuyla ilgili bana yazılım kodunu gönderebilirseniz çok sevinirim, elimden bir çok iş gelir ama bu devreyi abime yaptıracağım kendisi eski bir endüstri meslek lisesi elektronik mezunu, çalışmalarınız çok güzel emeğinize sağlık.
Sercan bey tebrik ederim güzel bir çalışma olmuş, bunu aracıma uygulamak istiyorum, gördüğüm kadarı ile kırmızı siyah ve sarı kablo mevcut, led bağlantısını nasıl yapıyoruz sarı kablo gnd mi 12v mi yoksa 7805 den çıkan 5v mi bunu ledin hangi ucuna bağlayacağız ve led in diğer ucuna hangi kablo bağlanacak tarif edermisiniz!!! ve varsa ve mümkünse kısıtlı olmayan kodu benimle paylaşırmısınız?. Şimdiden teşekkür ederim.
sercan bey yukardaki verdiğiniz kod satırlarını c de mi derlememizz lazım bazı animasyonları çıkarsak öyle kullanabilirmiyiz c de derledikten sonra yada sizin video da gösterdiğiniz gibi butona basınca istediğimiz animasyonda kalması için gerekli dosyayı atmanız mümkün mü?
Kodu derlemek için Jalv2 compiler ve Jaledit idesini kullanmanız gerekmektedir. gerekli dosyaları size mail attım.
Devreyi atarmısınız bağlantısını kendimiz yapalım
Yazı içerisinde zaten devre şeması ve açıklamaları mevcut.
devreden çok siteni beğendim. elektronik olsun mekanik olsun, kendi uğraşlarını, başarılarını, tasarılarını, bulduklarını yazıyor, paylaşıyorsun ve gülümsüyorsun. ne güzel…
imrenmemek elde değil. eline, fikrine sağlık.
Teşekkür ederim.
böyle düşünmeniz beni çok sevindirdi. Herkesin bir hobisi olmalı bende bunu hobi olarak devam ettiriyorum..