PIC12F675 ile RGB led driver

PIC12F675 ile RGB led driver

Bu devre, 12V RGB şerit LED veya benzeri üç kanallı ışık yüklerinde renk geçişi oluşturmak için hazırlanmış basit bir mikrodenetleyici kontrollü sürücü örneğidir. Temel amaç, üç ayrı renk kanalını sırayla sürerek yumuşak geçişler ve sabit renk modları oluşturmaktır.

Kaynak çalışmanın en güçlü tarafı, çok az parçayla öğretici bir örnek sunmasıdır. Bu yüzden proje bir son ürün gibi değil, yazılımı geliştirilmeye açık bir deneme ve öğrenme devresi olarak değerlendirilmelidir.

Not: Verilen MikroC kodu doğrudan PIC12F675 için yazılmıştır. Metinde PIC12F683 ile de çalışabilecek şekilde geliştirildiği belirtilse de, bu açıklama önce eldeki 12F675 kodunu temel alır.

Not: Kaynak metinde MOSFET ifadesi geçiyor, ancak şemadaki Q1, Q2 ve Q3 elemanları BC237 transistorlerdir. Bu nedenle ekrandaki devre küçük akımlı örnek sürücü olarak düşünülmeli, uzun şerit LED uygulamalarında güç katı yeniden seçilmelidir.

MikroC kodu nasıl çalışıyor?

Kodun mantığı oldukça nettir. ayarlar() fonksiyonunda analog girişler kapatılır, GPIO yönleri ayarlanır ve harici kesme açılır.

Burada TRISIO=0x04 ayarı ile GP2 giriş yapılır; GP0, GP1 ve GP4 ise RGB kanallarını sürmek için çıkış olarak kullanılır.

Kesme fonksiyonunda her buton basışında sayac bir artırılır.

Ana döngü bu sayaca bakarak hangi animasyonun veya hangi sabit rengin çalışacağını belirler.

Böylece tek tuşla mod değiştirme yapılır.

Koddaki değerlere göre sayac=0 otomatik renk geçiş modudur.

Sonraki değerlerde ise tek renk ve karışım renkleri sabit olarak seçilir.

Yani bu proje sadece fade efekti değil, aynı zamanda menü butonuyla gezilen basit bir renk seçici mantığı da içerir.

Programsal PWM ile renk geçişi nasıl yapılıyor?

RGB() fonksiyonunda donanımsal PWM kullanılmaz. Bunun yerine GPIO çıkışları çok kısa gecikmelerle açılıp kapatılır ve görev oranı değiştirilerek parlaklık hissi oluşturulur.

Kısacası burada yapılan şey, zamanlayıcı tabanlı profesyonel PWM yerine yazılımla oluşturulmuş basit PWM benzeri sürme yaklaşımıdır.

Bu yöntem küçük projelerde işe yarar ve mantığı öğretir. PWM konusuna yeni başlayanlar için darbe modülasyonu çeşitleri sayfası da tamamlayıcı olabilir.

Not: Kodda buton için ayrı debounce işlemi görünmüyor. Gerçek devrede mekanik buton sıçraması yüzünden mod atlama çiftlenirse, yazılımsal veya basit RC tabanlı debounce eklemek faydalı olur.

Şemadaki sürücü katı ne anlatıyor?

pic12f675-pic12f683-rgb-led-driver-rgb-serit-led-mikroc-programsal-pwm-bc237

Şemada PIC12F675 çıkışları önce R1, R2 ve R3 üzerinden transistor tabanlarına gidiyor. Q1, Q2 ve Q3 ise üç ayrı renk kanalını sürmek için ayrılmış. Böylece mikrodenetleyici doğrudan şerit LED akımını üstlenmeden, renk kanallarını transistor katı üzerinden kontrol ediyor.

Buradaki önemli düzeltme şudur: Kaynak metinde uzun şerit LED ve MOSFET ifadesi geçse de, verilen çizim BC237 ile yapılmış bir örnek sürücü gösteriyor.

Bu yapı birkaç LED, küçük dekoratif yük veya kısa şerit uygulamalarında anlaşılır bir deneme devresi olabilir.

Ancak daha ciddi RGB şerit uygulamalarında MOSFET tabanlı LED sürücü mantığı daha doğru olur.

Ayrıca şemada mikrodenetleyici tarafı ile 12V şerit LED tarafının aynı toprağı paylaştığı unutulmamalıdır.

Uygulamada 5V kontrol beslemesi ile 12V LED beslemesi farklı olsa bile ortak GND doğru kurulmalıdır.

pic12f675-rgb-led-surucu

12volt-serit-rgb-led

Gerçek devrede dikkat edilmesi gerekenler

  • PIC12F675 ile kontrol tarafı genelde 5V seviyesinde düşünülürken, şerit LED tarafı 12V ile beslenir. Ortak toprak bağlantısı unutulmamalıdır.
  • Mikrodenetleyici beslemesine yakın bir bypass kondansatörü eklemek kararlılığı artırır.
  • Uzun şerit LED uygulamalarında transistor seçimi tekrar yapılmalıdır; örnek şema doğrudan yüksek güçlü son kat gibi düşünülmemelidir.
  • Hazır 12V RGB şerit LED kullanılıyorsa segment başına direnç yapısı çoğunlukla şeridin üzerinde bulunur. Ancak çıplak LED gruplarında akım sınırlaması ayrıca hesaplanmalıdır.
  • Programsal PWM işlemciyi meşgul ettiği için çok daha zengin efektlerde ve daha akıcı geçişlerde PIC12F683 gibi daha uygun bir varyant tercih edilebilir.

Benzer projelerde nasıl geliştirilebilir?

Bu proje menü butonlu basit bir RGB sürücü olarak güzel bir başlangıçtır. Üzerine uzaktan kumanda, daha fazla animasyon, hız ayarı veya hafızaya alınmış efektler eklenebilir.

Benzer bir kullanım fikrini görmek isteyenler için uzaktan kumandalı şerit led kontrolü uygulaması da ilham verici olabilir.

PIC12F675 ile hazırlanan bu RGB led driver, az parçalı ve anlaşılır bir örnek projedir.

Kod tarafında GP2 kesme girişi ile mod seçimi, GP0-GP1-GP4 üzerinden üç kanal sürme ve yazılımsal PWM benzeri zamanlama kullanılmıştır.

Kaynak metindeki en önemli düzeltme ise şemada görülen sürücü katının MOSFET değil, BC237 transistorlerle kurulmuş olmasıdır.

Bu ayrım doğru yapıldığında proje, hem başlangıç seviyesi için öğretici hem de geliştirilmeye açık bir temel haline gelir.

PIC12F675 ile RGB led driver uygulama dosyaları;

Paylaş:

8 Yorum

  1. Y
    yakup

    Aytaç hocam eline sağlık teşekkürler rgb uygulamaları ile işim olmuyor ama bana büyük bir ders verdiniz 🙂 yazılarınıza bakıyorumda bu minik canavar (f675) ile neler yapılıyor hayret ediyorum boşuna takılıp kalmışım f84 f628 gerçi onlarda gerekli ama bir çok işi f675 ile halledebilirmişim

    Yanıtla
  2. A
    Aytaç DÜRGEN

    Evet sizinde dediğiniz gibi bir çok iş yapılabiliyor. Sizlere de kolay gelsin

    Yanıtla
  3. S
    selim

    aytaç abi çalışman güzel tebrikler.. kocaeli de nerden temin ettin rgb ledi öğrenebilir miyim…

    Yanıtla
  4. A
    Aytaç Dürgen

    Selime:Üzgünüm ama rgb ledleri istanbuldan aldım. kırmızı mavş yeşil olarak kullanabilirsin. Leventelektronik var biliyorsan. orda da var şerit rgb.

    Yanıtla
  5. S
    SELİM

    teşekkürler…

    Yanıtla
  6. A
    ali

    Hocam verdiğiniz ekteki ISIS devresinde f675 var onun yerine direk f683 kullanıp vermiş olduğunuz hex’i ona atsak yine devre çalışır mı yoksa programda değişiklik gerekli mi? Birde devrede bc237’lerin kollektörlerine ters diyot bağlayıp Vdd eklemişsiniz o kısmı tam anlamadım. Yardımcı olursanız sevinirim.

    Yanıtla
  7. م
    مهران چمنی

    ممنون
    جالب بود

    Yanıtla
    1. ک
      کریم سه پا

      کس نگو بابا

      Yanıtla

Yorum Yap