hack forum alfa shell recovery shell shell recovery shell Mirror Zone Sosyal medya bayilik bebeklerde pişik tedavisi wso shell indoxploit shell

cami halısı cami halısı cami halısı Cami Süpürgesi

Evden Eve Nakliyat Evden Eve Nakliyat mng Evden Eve Nakliyat Evden Eve Nakliyat Evden Eve Nakliyat evden eve nakliyat ofis taşıma yurtiçi evden eve nakliyat yurtiçi evden eve nakliyat

çiğköfte promosyon
STM32 & 74HC595 ile 8 Kanal 8 Bit Shift PWM -
ana sayfa > STM32, Yazılım > STM32 & 74HC595 ile 8 Kanal 8 Bit Shift PWM

STM32 & 74HC595 ile 8 Kanal 8 Bit Shift PWM

Perşembe, 16 Eki 2014 yorum ekle yorumlara git
STM32 & 74HC595 ile 8 Kanal 8 Bit Shift PWM

Merhaba arkadaşlar.

RGB P10 paneller için Driver yazmaya alt yapı hazırlamakla uğraşıyorum. İşin temelinde burada anlattıklarım olacak. Bu yüzden bunu ayrı bir yazıda 74HC595 ile nasıl pwm çoğullanır bundan bahsedeceğim.

74HC595’i mutlaka bilirsiniz. Oldukça sık kullanılan 8 bit Shift Register enteğresidir. Bu enteğre genellikle port çoğullama işlerinde kullanılır. Kullandığınız mikrodenetleyicinin sadece 3 pinini kullanarak 8 adet çıkış elde edebiliyorsunuz.

Bu enteğrenin kullandıldığı birçok devre görmüşsünüzdür. Dediğim gibi genellikle port çoğullama gibi işlemlerde kullanılıyor. PWM amaçlı pek kullanan yoktur. Bunun genel sebeblerinden biri pwm üretmek için yapılan işlemin biraz hız gerektirmesidir. Özellikle PWM frekansı arttıkça mikrodenetleyicinin işlem hızıda artması gerekiyor. Alabileceğinizi max. PWM frekansı kullandığınız mikrodenetleyicinin çalışma hızıyla doğru orantılı diyebiliriz sanırım. :)

Hızla ilgili sıkıntı yaşamamak için ben en baştan STM32F103 kullanayım dedim. Fritzing ile temel prensip şemasını çizdim.

İşin teorisine gelirsek olay şöyle gerçekleşiyor.

74HC595 ile PWM tamamen hız ile alakalı bir durum. Normalde Shift Registerin bir pinini lojik 1 veya 0 yapmak için tek seferlik seri olarak veri göndermek yeterlidir. Enerji olduğu sürece konum değişmez. PWM frekansı çıkarmak ise sürekli çıkışı güncellemek ile ilgili bir durum.

Örnekle gidersek sanırım daha iyi anlaşılır.

Örneğin 100hz 8 bit pwm sinyaline ihtiyacınız var. PWM çözünürlüğünüz 8 bit olduğu için 0-255 arası bir değer alacaktır.

PWM nasıl oluşuyor? Bu sorunun cevabı basit aslında. Diyelimki 74HC595’in 0. çıkışından 8 Bit %50Duty değerine sahip pwm sinyali almak istiyoruz. İlk başta 0-255 arası sayacak bir döngü kuruyoruz. Buna Duty döngüsü diyelim Bu döngünün her çevriminde 74HC595’e veri göndermemiz gerekiyor.

Duty döngüsü içerisindeyken sayacın değerini sürekli ilgili çıkışın duty değeriyle karşılaştırıyoruz. Diyelim Duty değerimiz 127 olsun. O halde Döngü değerimiz 127 olana kadar Shift registerın 0. bitine lojik 1 127’den sonrada lojik 0 gönderirsek %50 duty değerine sahip bir puls’ elde ederiz. %75 duty için gaziantep escort Duty döngüsü 191 olana kadar 0. bite lojik1, 191’den büyük olursa lojik 0 göndeririz. Bu sayede %75’lik bir puls elde ederiz. Tabi ben bu işlemleri sadece Shift registerin 0. biti için söylüyorum. Shift Registerin 8 kanalından birden sinyal almak için yukarıda bahsettiğim Duty döngüsü içerisinde Shift Registerin bütün bitleri için Duty sayacıyla karşılaştırma yapılmalı ve bu karşılaştırmaya göre shift registere gönderilecek olan 8 bitlik verinin ilgili biti lojik1 veya lojik 0 yapılmalı.

Yukarıda bahsettiğim döngü 1 seferlik çalışırsa sadece 1 puls çıkar. Ama hala PWM frekansı yok. PWM frekansı için bu puls’ların sürekli çıkması lazım. Bunu nasıl yapacağız peki? Elbette timer kesmesi ile. Çünkü bize sabit zamanlama lazım.

PWM frekansımızın periyodu 1/F’den 10ms olarak bulunur. Bu bizim periyodumuz. Dolayısıyla yukarıda bahsettiğim işlemler tam olarak 10ms içerisinde gerçekleşmesi gerekir.. Bunu ben timer ile ayarladım. Yukarıda anlattığım yöntemdeki gibi harici bir duty döngüsü kurmak yerine timer kesmesini kullandım. Şimdi 100Hz için periyodumuz 10ms olarak bulmuştuk. Yani yukarıda kurduğumuz 0-255 arası döngü içerisinde yapılan işlemlerin 10ms içerisinde gerçekleşmesi gerekiyor. O halde 10/255 bağıntısından 0,039ms veya 39us gibi bir değer buluruz.

O halde biz kesme oluşma süresini 39uS olarak ayarlamamız gerekiyor. Timer kesmesi her oluştuğunda Duty_Count adında bir değişkenimizin değerini 1 arttıracağız. Bu değer 255’den büyük olursada Duty_Count değerini 1 yapacağız. Ardından Duty_Count değerini 8 kanal için ayrı ayrı tanımladığımız duty değişkenleri ile karşılaştırıp 74HC595’e gidecek verinin ilgili bitlerini lojik1 veya lojik 0 yapacağız.

Bunun için ilk başta STM32’de Timer’i ayarlamamız gerekir. Timer ayarlarını aşağıdaki gibi yapın.

Bu sayede timer’i yaklaşık 39-40’us ye kurmuş oluyoruz. Ayrıca Timer_Update kesmesini aktif etmiş oluyoruz.

Şimdi timer alt programına bakalım.

yukarıdaki kodlar içerisinde Bit_Count adında iki adet döngü göreceksiniz. Bu döngülerden ilki Duty_Count değeri ile Duty değerleriminiz karşılaştırılmasının yapıldığı döngüdür. Hangi bitin lojik 1, hangi bitin lojik 0 olacağına burada karar verilir. Alttaki döngü ise Soft SPI döngüsüdür. Şimdi diyeceksiniz madem hız gerekli neden Soft spi kullanıyorsunuz? Sebebi ise RGB paneller ile yaptığım çalışmada soft spi zorunluluğu olduğu için artık bu uygulama içinde donanımsal spi ile uğraşmak istemedim. İsteyen uygulayabilir.

Şimdi ufak bir uygulama yapalım. Duty adında 8 bit 8 elemanlı bir dizimiz var. Bu dizinin 0 elemanı 74HC595’in 0. bit’inin duty değeridir. 7. elemanı ise 7. bitin duty değeridir.

mainde şöyle bir kod yazıp basitçe bir animasyon yapmaya çalıştım.

Yukarıdaki kodun çalışma videosu:

Görsel açıdan pek zevkli bir uygulama olmadı elbet. Fakat benim asıl hedefim RGB paneller olduğu için fazla üzerinde durmadım. İşin mantığını öğrenen RGB ledlerle çok güzel uygulamalar yapabilir.

İşin temel mantığı budur arkadaşlar. Burada Duty_Count değerimiz PWM çözünürlüğünü (0-255 için 8 bit) Kesme oluşma süresi ise PWM frekansını belirler. Mesela PWM Frekansını 50Hz’e düşürüp çözünürlüğü 10 bit yaparak servo kullanabilirsiniz. Aynı anda 8 kanal 10 bit pwm elde edersiniz. Bu yöntemle doğrudan motor felan sürmeyecekseniz 100Hz gibi frekanslar led sürmek için çok uygundur. Frekans duty arasında buna benzer birçok olasılık mevcuttur. Konu hakkında sormak istedikleriniz varsa sorabilirsiniz.

İyi çalışmalar.

  1. Atakan
    Pazar, 19 Eki 2014 zamanında 09:39 | #1

    CCS C ile bu Shift PWM olayını hep merak etmiştim ama CCS C olmadığını görünce biraz üzüldüm.
    imkan bulursanız eklerseniz sevinirim.

  2. Ferhat YOL
    Perşembe, 23 Eki 2014 zamanında 23:03 | #2

    Atakan :

    CCS C ile bu Shift PWM olayını hep merak etmiştim ama CCS C olmadığını görünce biraz üzüldüm.
    imkan bulursanız eklerseniz sevinirim.

    Buradaki amaç işin teorisini öğrenmek veya öğretmek. Bunu anladıktan sonra istediğiniz dile uygulayabilirsiniz.

    Zaten kod çok basit. CCS’ye uyarlanacak bir tarafı yok.

  3. Baran Ekrem
    Cumartesi, 15 Kas 2014 zamanında 21:17 | #3

    Hocam bunu birde ccs e uyarlasanız nasıl olurdu 😀

  4. Atakan
    Salı, 19 Oca 2016 zamanında 21:04 | #4

    @Ferhat YOL
    Haklısınız belki ama timer ayarları pic12f675’e göre ayarlamak ve ona göre pwm duty değerlerini ayarlamak için yapılacak düzenlemeleri yapamadım.. Sanırım mantığını anlamadım.

  1. şimdilik geri bağlantı yok


hack forum hack forum shell sitesi recovery shell alfa shell recovery shell Mirror Zone cisco nedir instagram takipci hilesi instagram takipci satin al sosyal medya paneli smm bayi sistemi smm script satisi smm bayilik paneli Sosyal medya bayilik paneli bebeklerde pişik tedavisi beden sağlığı

cami halısı cami halıları cami halısı cami halıları cami halısı cami halıları Cami Halısı Cami Süpürgeleri Cami Süpürgesi

palyaço kiralama balon süsleme masa sandalye kiralama şark köşesi şark odası yörük çadır katı meyve sıkacağı meyve sıkacağı düğün orkestrası düğün orkestrası istanbul no touch lazer wso shell indoxploit shell

Evden Eve Nakliyat Ucuz evden eve nakliyat Evden Eve Nakliyat evden eve nakliyat istanbul evden eve nakliyat Evden Eve Nakliyat evden eve nakliyat istanbul evden eve nakliyat Evden Eve Nakliyat mng Evden Eve Nakliyat Evden Eve Nakliyat Evden Eve Nakliyat istanbul evden eve nakliyat Evden Eve Nakliyat istanbul evden eve nakliyat evden eve nakliyat Evden Eve Nakliyat istanbul evden eve nakliyat ofis taşıma yurtiçi evden eve nakliyat
ücretsiz hosting kurumsal hosting resseler hosting ucuz hosting sanal sunucu vds sanal sunucu vps sanal sunucu
çiğköfte bayilik çiğköfte bayilik paketi Çiğ Köfte Bayilik Kurulum Paketi

grafik tasarım sosyal medya yönetimi website tasarım

prefabrik prefabrik ev prefabrik ev fiyatları

promosyon promosyon şapka promosyon ürünleri

hack forum alfa shell recovery shell shell recovery shell Mirror Zone Sosyal medya bayilik bebeklerde pişik tedavisi wso shell indoxploit shell

cami halısı cami halısı cami halısı Cami Süpürgesi

Evden Eve Nakliyat Evden Eve Nakliyat mng Evden Eve Nakliyat Evden Eve Nakliyat Evden Eve Nakliyat evden eve nakliyat ofis taşıma yurtiçi evden eve nakliyat yurtiçi evden eve nakliyat

çiğköfte promosyon

hack forum hack forum shell sitesi recovery shell alfa shell recovery shell Mirror Zone cisco nedir instagram takipci hilesi instagram takipci satin al sosyal medya paneli smm bayi sistemi smm script satisi smm bayilik paneli Sosyal medya bayilik paneli bebeklerde pişik tedavisi beden sağlığı

cami halısı cami halıları cami halısı cami halıları cami halısı cami halıları Cami Halısı Cami Süpürgeleri Cami Süpürgesi

palyaço kiralama balon süsleme masa sandalye kiralama şark köşesi şark odası yörük çadır katı meyve sıkacağı meyve sıkacağı düğün orkestrası düğün orkestrası istanbul no touch lazer wso shell indoxploit shell

Evden Eve Nakliyat Ucuz evden eve nakliyat Evden Eve Nakliyat evden eve nakliyat istanbul evden eve nakliyat Evden Eve Nakliyat evden eve nakliyat istanbul evden eve nakliyat Evden Eve Nakliyat mng Evden Eve Nakliyat Evden Eve Nakliyat Evden Eve Nakliyat istanbul evden eve nakliyat Evden Eve Nakliyat istanbul evden eve nakliyat evden eve nakliyat Evden Eve Nakliyat istanbul evden eve nakliyat ofis taşıma yurtiçi evden eve nakliyat
ücretsiz hosting kurumsal hosting resseler hosting ucuz hosting sanal sunucu vds sanal sunucu vps sanal sunucu
çiğköfte bayilik çiğköfte bayilik paketi Çiğ Köfte Bayilik Kurulum Paketi

grafik tasarım sosyal medya yönetimi website tasarım

prefabrik prefabrik ev prefabrik ev fiyatları

promosyon promosyon şapka promosyon ürünleri

hack forum alfa shell recovery shell shell recovery shell Mirror Zone Sosyal medya bayilik bebeklerde pişik tedavisi wso shell indoxploit shell

cami halısı cami halısı cami halısı Cami Süpürgesi

Evden Eve Nakliyat Evden Eve Nakliyat mng Evden Eve Nakliyat Evden Eve Nakliyat Evden Eve Nakliyat evden eve nakliyat ofis taşıma yurtiçi evden eve nakliyat yurtiçi evden eve nakliyat

çiğköfte promosyon