Bu yazımızda 74HC595 özelinde “Shift Register nasıl çalışır?” üzerine kabaca bakacağız. 74HC595 8-bitlik bir shift register. Yani 8 adet çıkışı var. Bu güzel bir avantaj! Çünkü bu arkadaşlara seri giriş, paralel ve seri çıkış devreleri deniliyor. Bu ne anlama geliyor derseniz; genellikle mikrodenetleyicilerle kullanıldıklarından, mikrodenetleyicinin bir çıkışından 8 çıkış elde edebiliyorsunuz. Biz Arduino biliyoruz ve Arduino’da 14 dijital, 6 tane de analog olmak üzere toplam 20 giriş/çıkış pini var. Ve inanın bazen yetmiyor. Bu gibi durumlarda shift register kullanmak avantajlı. 74HC595 aynı zamanda binary yani ikilik sistemde sayıcı olarak kullanılıyor. toplam 8-bit olduğu için (2^8) 0-255 arasında 256 değer sayabiliyor. Bu entegreyi mutfak saati ve 4×4 LED matris devrelerinde de kullanmıştık. Ayrıca kaynaklarda Türkçe karşılık olarak üniversite kitaplarına “Kaydırmalı Yazmaç” ya da “Kaydırmalı Saklayıcı” olarak geçmiş. Yapacak bir şey yok. Bilimi üretemiyor, adamların terimlerini çevirmeye çalışıyoruz!
Konumuzdan uzaklaştık yine! Bu arkadaşın datasheetine bir göz atalım önce.( https://www.onsemi.com/pub/Collateral/MC74HC595-D.PDF)
Genel Özelliklerine bakacak olursak; çıkışlarının CMOS ve TTL devre elemanlarını sürebileceği söylenmiş, besleme gerilimi 2-6V arasında, boştaki girişten neredeyse akım çekmiyor (1 uA). Normal çalışma esnasında ise her bacak için 20 mA giriş, 35 mA çıkış akımı değerleri verilmiş. Vcc bacağından ise 75 mA akım çekiliyor. 16 tane bacağı var ki bunların 8 tanesi paralel çıkış bacakları. Genel özellikleri böyle ihtiyacımız olunca referans alırız. Linki de yukarıda verdim, isteyen inceleyebilir. Gelelim çalışmasına: ‘Seri Giriş’ olduğundan bahsetmiştik. Bu giriş veri (DATA) girişi olup bir saat (CLOCK) sinyali ile denetleniyor. Biz seri iletişimde bunu görmüştük. Tek hat üzerinden, saat sinyali ile senkronize olarak veri alınıyor. Data sheet incelendiğinde clock girişinin yükselen kenarında (rising edge) veri girişinin olacağı belirtilmiş. Yani kare dalganın sadece sıfırdan (LOW) bire (HIGH) dönüş anında veri alınabileceği söyleniyor. Kare dalganın diğer bölümlerinde veri okunmuyor. Bu entegre bu yükselme anında veri girişini kontrol ediyor; bir şey yoksa ‘0’, 5 volt seviyesi varsa ‘1’ girişi olduğu kabul ediliyor, ve bu değer 8-bitin en soldaki hanesine kayıt ediliyor.
Saat sinyalinin daha sonraki yükselen kenarı geldiğinde yine veri okunuyor ve yeni veri en soldaki haneye yazılıyor. E oradaki veriye ne oldu? Oraya yeni veri geldiğinde, eskisi bir sağdaki bite kaydırılıyor. Yani her yeni veri okunduğunda tüm bitlerdeki veriler birer sağa kaydırılıyor. Bu kaydırma işleminden dolayı bu arkadaşların isimleri “shift” adını alıyor! Böylelikle veriler okunup 8 bitlik alana kaydediliyor. Ama bu kayıt yeri çıkış değil, sadece geçici kayıt yeri. (Bu kayıt işleminden dolayı da “register” geldi, ismi şimdi daha iyi anlaşılabiliyor). Kayıtlı bu veriyi çıkışa alabilmek için bir giriş daha gerekli: LATCH!
Latch (kilit) pinine ‘1’ yolladığımızda (ucu boşta bıraktığımızda da) kayıt edilmiş veri çıkış aşamasına aktarılıyor. Ama hala çıkış alamıyoruz, veriler 595’in içerisinde bekliyor. Bazı açıklamalarda burası da bir “depo” olarak tanımlanıyor. Tasarımcılar bu verileri çıkışa almak için bir pin daha tanımlamış: OUTPUT ENABLE. Yani çıkışı aktif hale getirme. Ne gerek vardı bilemiyorum ama bu giriş ‘0’ olmadan verileri çıktı olarak alamıyoruz. Genel uygulamalarda bu giriş direkt olarak GND hattına bağlanıp, sadece latch bacağı ile çıkışlar kontrol ediliyor. (Data sheette OE harfinin üzerinde çizgi var. Üzerinde çizgi olan girişler o girişin default olarak ‘0’ olması durumunu gösteriyor. Benzer durum reset pininde de var). Kontrol pinlerinden biri de REGISTER CLEAR. Adından anlaşılacağı üzere bu pin GND hattına çekildiğinde registerde kayıtlı olan veriler siliniyor. Dikkat edin! çıkışlar değil sadece kayıtlı veri! Çıkışları silmek istediğinizde kayıtlı verileri sıfırladıktan sonra tekrar Latch pini aktif edilmeli. Entegre üzerindeki son kontrol pini de Q7′. Bu pin aslında bizim 8 numaralı çıkış pinimiz. Birden fazla 74HC595 seri bağlanmak istendiğinde bu pine ihtiyaç var. Yani bir tane daha bu entegreden kullanarak 16-bit, 3 tane ile 24- bit,.. gibi çıkış alabiliyoruz. 16-bit çıkış için ikinci entegrenin DATA girişi birinci entegrenin Q7′ çıkışına bağlanıyor. CLOCK ve LATCH girişleri birbirlerine direk bağlanabiliyor. Tüm giriş/çıkış pinleri bu kadar.
Bu giriş/çıkışların entegre üzerindeki fiziksel konumları da yukarıdaki gibi. Q0-Q7 paralel çıkışlar 15 ve 1-7 numaralı bacaklara bağlanmış. Anlattıklarımızı test etmek için basit bir devre kuralım. Mikrodenetleyici de kullanmayıp DATA ve CLOCK sinyallerimizi üretelim, LATCH’i de biz yapalım. Bunlar için birer buton, çıkışları gözlemlemek için de LED kullanalım.
Şimdi yukarıda bahsettiklerimizi kolayca test edebiliriz. Bu arada devrede LED’lere 330Ω seri direnç bağladık akım sınırlandırmak için. Butonlara ise 10kΩ pull down direnci. Bir de bunlardan peş peşe nasıl bağlıyoruz! Yani iki shift register seri bağlanarak 16 çıkış elde edebiliyor muyuz? Tabii ki cevap evet! Saat ve kilit (latch) ortak bağlanıp, her yeni eklenenin “data” girişi bir öncekinin “seri çıkışına” bağlandığı sürece evet!
Gerisi sizde, kolay gelsin…
Kaynaklar:
(https://www.youtube.com/watch?v=FohODewKyec&t=15s)
(https://www.youtube.com/watch?v=ameNT2MKDyE&t=1s)
(https://www.youtube.com/watch?v=5qxHt4MK3u8&t=467s)
( https://www.onsemi.com/pub/Collateral/MC74HC595-D.PDF)
(https://www.youtube.com/watch?v=6fVbJbNPrEU&t=429s)
elinize sağlık çok güzel olmuş.
BeğenLiked by 1 kişi
Teşekkürler…
BeğenLiked by 1 kişi