Dijital AC Dimmer

Dimmerle lamba kontrolü ve dalga formu

Dimmer devreleri AC dalganın triyak vasıtasıyla fazının istenilen değerde ayarlanmasını yapan elektronik devrelerdir. Akkor telli lambalarda aydınlık ayarı, rezistanslı ısıtıcılarda ısı ayarı, üniversal motorlarda hız ayarı için kullanılırlar. Bu uygulamamızda PIC16F628A mikrodenetleyicisi ile dijital AC dimmer yapacağız.

Analog AC Dimmer

Analog Dimmer

Yukarıdaki analog AC dimmer devresinde görüldüğü gibi Triyak’ın A2 ucuna kontrol edilmek istenen yük bağlanır. AC dalganın faz açısı C2 ve R3+R4 ayarlı direnciyle ayarlanır. Direncin en yüksek olduğu noktada C2 kondansatörü en geç dolacak ve diac üzerinden AC dalganın altenansının en sonunda  triyak tetiklenecektir. Dolayısı ile yük üzerinde en az voltaj oluşacaktır. Çünkü triyak iletime geçtikten sonra dalganın “0” noktasında kesime gidecektir. Dalganın başında tetikleme uygulanacak olursa en fazla voltaj yük üzerinde görülecektir.

Aşağıda dalga formları görülmektedir.

Tetiklenen dalganın şekli

Dijital AC Dimmer

Digital dimmerde faz açısı zero crossing detector (sıfır geçiş tespiti) ve timer kesmesi ile yapılır. Bir peryotluk dalgada iki alternans vardır. Bunlar (+)  alternans ve ( – ) alternans. Dolayısı ile iki adet sıfır noktası mevcuttur. Şehir şebekesinin frekansı 50Hz. olduğuna göre peryotu T=1/F’ten T=1/50=20msn. bulunur. Herbir alternansın süresi 10ms eder. Bu uygulamada alternansı 180 parçaya böldük. Yani 10,000usn/180 =55.5us. eder yaklaşık olarak 55u saniyelik timer2 kesmesi ile faz dilimleme işlemi yapıldı.

Uygulamanın devre şeması aşağıda gösterilmiştir.

628DIMMER

Devrede sıfır tespit devresi TL072 opamıyla gerçekleştirilmiştir. Opamp çıkışı PIC’in RB0 (INT) girişine bağlanmıştır. Sıfır tespiti kesme ile yapılacaktır. Devre beslemesi 2x12V transformatör yardımıyla, bir köprü diyot ve regülatör devreleriyle sağlanmıştır. Opamp simetrik beslenmiştir.

BTA12 triyak MOC3021 Optocoupler triyak aracılığıyla tetiklenmektedir.

Yazılım

Yazılımın algoritması kısaca şöyle;

sıfır noktasını tespit et. ve timerı başlat. Ayarlanan dilim  kadar bekle eşitlendiğinde triyakı tetikle. Diğer alternans için kesme kenar değişimi yap. aynı işlemleri diğer alternans için de yap. Triyağı durdurmaya gerek yok zaten kendisi 0 noktalarında kesime gidiyor.

</pre>
#define UP (Button(&PORTB,6,10,0))
#define DWN (Button(&PORTB,7,10,0))
#define SET (Button(&PORTB,5,300,0))
#define RESET (UP&&DWN)
#define PWM_AC PORTB.F4

// Lcd pinout settings
sbit LCD_RS at RA6_bit;
sbit LCD_EN at RA7_bit;
sbit LCD_D7 at RA3_bit;
sbit LCD_D6 at RA2_bit;
sbit LCD_D5 at RA1_bit;
sbit LCD_D4 at RA0_bit;

// Pin direction
sbit LCD_RS_Direction at TRISA6_bit;
sbit LCD_EN_Direction at TRISA7_bit;
sbit LCD_D7_Direction at TRISA3_bit;
sbit LCD_D6_Direction at TRISA2_bit;
sbit LCD_D5_Direction at TRISA1_bit;
sbit LCD_D4_Direction at TRISA0_bit;
unsigned char dilim,pwm=180,i;
unsigned char txt[6];

void karaktere_cevir(char veri)
{
 ByteToStr(veri,txt);
}
//------------------------------------------
void interrupt()
{
 if(INTCON.INTF)
 {
 TMR2=0;
 T2CON.TMR2ON=1;
 OPTION_REG.INTEDG=~OPTION_REG.INTEDG;
 dilim=0;
 PWM_AC=0;
 INTCON.INTF=0;
 }
 if(PIR1.TMR2IF)
 {
 dilim++;
 if(dilim==pwm) {PWM_AC=1;} // Triyağı tetikle
 PIR1.TMR2IF=0; // Timer2 kesme bayrağını temizle
 }
}
//------------------------------
void init()
{
 TRISA=0; // PORTA çıkış
 CMCON=7; // PORTA dijital
 TRISB=0b11100001; // PORTB nin INT girişi ve butonlar giriş
 INTCON.GIE=1; // Globel kesmeye müsade et
 INTCON.INTE=1; // INT kesmesine izin ver (RB0)
 OPTION_REG.INTEDG=0; // düşen kenar kesme (INT)
 OPTION_REG.F7=0; // dahili pull-uplar aktif
 INTCON.PEIE=1; // çevre kesmelerine izin ver
 T2CON=0; // timer 2 ayarları
 PIE1.TMR2IE=1; // timer 2 kesmesine izin
 Lcd_Init(); // lcd yi kur
 lcd_cmd(_LCD_CURSOR_OFF); // imleci kapat
}
//---------------------------------------
void main()
{
 init();
 LCD_Out(1,2,"DIJITAL DIMMER");
 LCD_Out(2,1,"elektrokod.wordp");
 Delay_ms(3000);
 Lcd_Cmd(_LCD_CLEAR);
 LCD_Out(1,2,"DIJITAL DIMMER");
 karaktere_cevir(pwm);
 LCD_Out(2,1,txt);
 T2CON.TMR2ON=1;
 PR2=55;
 do
 {
 if((UP)&&(pwm<180)) {pwm+=1;karaktere_cevir(pwm);LCD_Out(2,1,txt);}
 if((DWN)&&(pwm>1)) {pwm-=1;karaktere_cevir(pwm);LCD_Out(2,1,txt);}
 if(SET) {INTCON.GIE=0; PWM_AC=~PWM_AC;Delay_ms(1000);}
 if(RESET) {INTCON.GIE=1;Delay_ms(1000);}
 }while(1);

}
<pre>

Proje dosyalarına buradan erişebilirsiniz

Proje uygulama videosu aşağıdadır.

Kaynaklar:
http://circuit-diagram.hqew.net/Triac-based-Lamp-Dimmer-power-control_12387.html

http://home.howstuffworks.com/dimmer-switch2.htm

http://skyblg.wordpress.com/2013/02/27/220v-ac-dimmer-2/

Reklamlar

100 thoughts on “Dijital AC Dimmer

  1. Merhaba
    3031 ile bu devreni çalıştıramazsınız çünkü üzerinde zero cross detector bulunmaktadır.

    • İlginiz ve ikazınız için teşekkürler. Çizim eskiden yapılmıştı. Proteusun kütüphanesinde zerocrossuz eleman yoktu. Dolayısı ile onu kullandım. Gerçekte kullandığım eleman moc3021. Resimi tekrar düzeltiyorum.

  2. çizimin proteus dosyası varmı .bende bu devreyi uygulayıp denemek istiyorum.rica etsem proteus dosyasını paylaşırmısınız.

    • baskıdevresi ve programı mevcut size montajı ve çalıştırması kalıyor. Kararlı çalışan güzel bir devre. pice pcb tarafındab besleme uclarına 5 ile 14 nolu uçlar arasına 100nf atmayı unutmayınız. Kolay gelsin…

  3. hocam özürdiliyorum bende proteus kurulu değildi.yeni kurdum ondan dosyaları göremedim.sizin devre proteus un hangi versiyonuyla çizilmiş.bende açılmıyorda

    • Algoritma, bir işin hangi aşamalardan geçilerek yapılacağını gösteren çalışma planıdır. Algoritma bir programlama dili değildir. Programlama dillerine yol gösteren bir yöntem dizisidir. Kaba Kod (Pseudo code) ise bir algoritmanın yarı programlama dili deyimleri, yarı konuşma dili ifadelerine dayalı olarak tanımlanmasıdır.

      Onu kendin çıkartacaksın.

  4. hocam baskı devre ile verdiğiniz resimdeki devre arasında faklılık var
    örneğin ırf530 baskı devrede var ama resimde yokve pic ,in 9 nolu ucu 2M2 direnci ve ırf530 üzerinden LCD ye gidiyor ama resimde böyle değil

  5. SAYIN HOCAM ARES BASKI DEVREDE LCD NEDEN 18 BACAK GÖRÜNÜYOR.İSİSTE 16 BACAKLI LCD KULLANMIŞSINIZ.LÜTFEN CEVAP VERİN ÇÜNKÜ DEVREYİ YAPTIM AMA LCD BULAMADIM

  6. merhaba linkteki resimde işaretlediğim ve numaralandırdığım kısımlar ne bağlanacağını yazabilirmisiniz klemenslerde 10k yazıyor osiloskop prop yerlerimi 2×12 acmi ?

  7. numaralandırdığım yerlere nelerin bağlanacağını yazabilirmisiniz girişlerimiz neresi ac 220 kaç numaradan veilecek örneğin mosfet cıkısına ne baglanacak

    • Resimde AC220 yazan yere faz ve nötr uçları bağlanacak. 3 numaradaki 10k yazan klemense lamba bağlanacak. 2 numaralı yere 2x12V trafo çıkışı bağlanacak. 1numaraya DC yük (dc motor, 12v lamba vb) bağlanacak. (burası isteğe bağlı. kullanılmayabilir.)

  8. sa hocam devreyi kurdum ama ekrandaki kademeyi artırıp azalttığım da lambanın parlaklığı değişmiyor sadece ortadaki tuş ile lambayı kapatıp açabiliyorum sizce sorun nerede olabilir.yardımcı olabilir misiniz?

    • MOC3021 gibi zero crossing dedector olmayan bir optocoupler triyak kullanmalısın. Eğer zero crosssing dedektor varsa sadece kapatıp açabilirsin.

  9. Merhaba hocam aklıma takıldı.. kullandığınız opamp tl072 vcc 5v ile çalışmazmı pdf ye baktım göremedim.pc817 ile yapılamazmı aradaki fark nedir??

    • TL072 yerine 741 vb. opamplar kullanılabilir. Burada opamp karşılaştırıcı olarak kullanılmıştır. Vcc 5 olabilir ama simetrik besleme gerekir. Yani vss olarak ta -5V kullanılmalıdır. PC817 optocoupler olarak görülüyor. Bu uygulamada transistörlü optocoupler kullanılmadı.

  10. biz bu devreyi sıfır geçiş noktası bularak statik var kompansatör yapmayı planlıyoruz. bu devre uygun olur mu? PIC olarak hangisini kullandınız, pıc c compiler kopyalarsak çalışır mı?

    • Her çeşit dalganın sıfır geçiş noktasını tespit edebilirsiniz. Bu devrede opamp karşılaştırıcı olarak kullanılmıştır. Referans gerilimi olarak GND (0V) alınmıştır. Siz faz açılarının başlangıç noktasını tespit etmek istiyorsanız uygundur. Devrede PIC16F628A kullandım. Ama başka bir mikrokontroler da olabilirdi.
      İstediğiniz bir derleyici kullanabilirsiniz.

      • Hex dosyasını PIC c compiler la açtığımda bir hata görünüyor. Bu Pıc hatası devre için sorun çıkarır mı?

      • Hex dosyası text tabanlı bir dosyadır. notepad ile açılabilir. Ayrıca derleme olmaz. Zaten hex kodlar içerir. Hex dosyasını PIC programlayı ile pic’e atacaksınız. Eğer devre donanım olarak hatasız kurulmuşsa çalışacaktır.

      • Hocam devreyi kurduk ama 2×12 trafonun bağlı olduğu klemenslerden ve devrenin o kısmından duman çıktı. devre neden çalışmamış olabilir?

      • Devrenizde kısadevre oluşmuş. Trafoyu bağlamadan ohm metre ile direncini ölçün. Önce kısadevrenin nerede olduğunu bulup giderin sonra bağlayın. büyük ihtimalle köprü diyot yanmış.

      • Hocam biz devreyi kurduk çalıştıramadık. Bitirme ödevi için bu devre gerekli acilen. sizinle irtibata geçebileceğimiz mail adresi ya da tel. numarası verebilir misiniz?

  11. Hocam devrenizi kurdum çalışıyordu ama bugün prize taktığımda fan direkt devreye giriyor,fanın da hız kontrolünü yapamıyorum. Önceden prize taktığımda butonlara basmadan devreye girmiyordu.Sorunun nerede olabileceği hakkında yardımcı olabilir misiniz?

  12. arkaslar yukarıdakı kodu pic e atmam gerekiyor da bu kodu win pic e uygun bir koda cevirebilecek biri varmı ? benim için çok önemli lütfen….

  13. Hocam sizinle irtibata geçebileceğimiz mail adresi veya tel. numarası var mı?Bitirme ödevimiz için acil devreyi kurmamız gerekiyor.

  14. hocam devreyi kurmak istiyorum fakat bir kaç sorum olacak. ben bu devreyi freze veya matkap hızını kontrol etmek için kullanmak istiyorum acaba bir sıkıntı çıkar mı sizce ?

  15. hocam mükemmelsiniz. internette aradım taradım. şu zero crossing neymiş be.
    hocam benim yapmak istediğim lambayı tuşla değil de saatli devremde(saat alarm devresi 1307 % 16f628a ) alarm saati gelince 30 dk içerisinde belli aralıklarla lamba (5 dk da bir olabilir.) ilk %10 ikincide % 20 gibi 15. dk. da %50 ışık vermesini nasıl yapabiliriz. (akşam yatıyorum zero crossing sabah aklımda artık kurtarın beni lütfen)
    birde ben css c kullanıyorum

  16. Hocam gerçekten bir çok site ve kişiye göre microcontroller ile yapılan AC Dimmer olayını tam olarak iyi bir şekilde anlatmışsınız. Çok Tşk. Ederim. Fakat Ben CCS C kullanıyorum harici kesme RB0 ı sizin kodlara göre çalıştırdım ama bir türlü timer2 yi çalıştıramadım. setup_timer _2(mod,peryod,postscale) fnksiyonunu bu değerler olmayınca ccs c de çalışmıyor galiba. Bir de void interrupt()
    bu hangi kesme harici mi yoksa timer2 ye mi ait.
    tşk. ederim.

  17. HOCAM KAFAMA TAKILAN BAŞKA BİR SORU PİC MOC3021 İ NASIL KONTROL EDİYOR YANİ PWM Mİ KULLANILIYOR BURADA YADA MOC UN AKIMINI MI AYARLIYOR

  18. faz açısı ile yapılıyor ama optokuplör üzerinde nasıl bir etki yapılıyor.akım yada gerilim ayarlanarak mı.yani optokuplördeki led in ışığı nasıl ayarlanıyor

  19. sonuçta optokuplördeki led diyaka etki ederk triyak tetikleniyor.benim anlamadığım pic ile optodaki led ışığı nasıl ayarlanıyor

  20. bu devrede lcd gösterge yerine 7 haneli led göstyergeler nasl kullanacağım.bunun şemasını verirmisiniz.

  21. Peki 7 haneli göstergeyi bağladığımızda yazılım değişirmi ?
    değişirse yeniden HEX dosyasını atarmısınız..

  22. Merhaba hocam,, opamp beslemesini neden simetrik yapmak zorundayız acaba açıklayabilirmisiniz. Normal tek çıkışlı transformatör ve lm358 kullanarak sıfır noktasını tespit edemezmiyiz?

  23. Hocam Merhaba devreyi yaptım fakat sadece aç kapa yapabiliyorum.opamp pic triak vs.değiştirdim fakat fayda etmiyor .trafadan kaynaklana bilirmi.İyi çalışmalar.

      • Moc3021 kullandım hocam. Acaba trafo kapalı tip kullandım ondan kaynaklanırmı 4 tane uç var benim trafoda

  24. Kapalı tip olması önemli değil 2×12 olması yeterli. 3 tane uç olması gerekiyor. Simetrik besleme olduğu için 2li eşit gerilim olmalı.

    Besleme çıkışlarını ölçtünüz mü? Çıkışta GND’ye göre +12V ve -12V ölçülmesi gerekiyor.

    • Trafoyuda değiştirdim hocam ama 12 v yakalayamıyorum. Kondanstörleri kaç volt kullandınız acaba. Bu dimlemeye etkenmidir. 0 noktasınımı yakalayamıyorum.

      • devre takibini yaparsak trafo çıkışında ac dış iki uçta 24V, orta uçla yan uçlar ölçüldüğünde 12Vac ölçmemiz gerekir. bunlar doğrultulduktan sonra regüle devresine geliyor regüle çıkışı gnd ye göre +12V dc ve -12Vdc ölçülmeli.

        pic beslemesi +5V doğru olarak ölçülmeli.

      • Opamp tarafında sorun olduğu kesin gibi görünüyor çünkü interrupta girmiyor program hocam.

  25. Hocam kolay gelsin çalışmalarınızı yakından takip ediyorum. Bir nokta dikkatimi çekti PIC’e ait master clear ucu 5 V Vdd ye bağlı mı yoksa boşta mı kalacak kodda pull up dirençleri aktif edilmiş.

  26. Hocam tekrardan rahatsızlık veriyorum devreyi oluşturdum. Bağlantılarla alakalı sıkıntı yok ancak ”DIJITAL DIMMER 179” yazıyor ve butonlarla sayı (tüm butonlara basıldı) değişmiyor. Ayrıca bu esnada 220 volta bağlı yükümüzdeki dimmerlenebilir ampul 1 er saniye aralık ile yanıp sönüyor. Konuyla alakalı problem nedir acaba?

  27. 155 dereceye kadar lamba yanıp sönüyor 155 dereceden küçük dereceler için dimleme düzgün çalışıyor bu sorun nasıl giderilebilir ?

    • eğer bu devreyi kurduysan timer ile ilgili bir hata olabilir. Prg kodları aynıysa donanımsal bir hata olabilir. Bu hata için zero crossing detector katına bakın. Çünkü bu devre test edilmiş düzgün çalışan bir devre.

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap / Değiştir )

Connecting to %s