K

PWM ile Dimmmer Nasıl Yapılır.

Başlatan kurtelektronik, 15 Ekim 2011, 10:41:40

kurtelektronik

Arkadaşlar pwm ile dimmer yapan varmı aranızda.
Normal bir ampul için dimmer yapmak istiyorum.

220w.da çalışacak şekilde.

şimdiden teşekkürler.

inventor

Emrah isminde bir arkdaşa ait sanırım. Kaynak kodları da var.
İlmin en büyük düşmanı, sabırsızlıktır. (Şems-i Tırmizi)

kurtelektronik

Teşekkür ederim.
Bunun picbasic ile yazilmiş açık bir kodu varmı ?

inventor

proton ile basic çok yakın. programa bakın, derleme hatası olan komutları ben düzelttireyim.
İlmin en büyük düşmanı, sabırsızlıktır. (Şems-i Tırmizi)

kurtelektronik

Interrupt_Detect:
If INTF = 1 Then
    TMR0 = Load_Value
    T0IE = 1  ' Enable TMR0 overflow interrupt
    INTF = 0  ' Clear INT Flag (be ready for the next)
EndIf

If T0IF = 1 Then
    High GPIO.0
    DelayUS 100  'triyak tetiklemesi 100 uSn
    Low GPIO.0

    T0IF = 0
EndIf
Context Restore


Ben bu kodları başka bir yazılımın içine atacağım.
Yukarıdaki kodlarda bekleme süresi konmuş bu programın çalışmasında sanırım gecikmeye yok açar ?
doğrumu düşünüyorum.

ete

#5
Bu verilen sistem PWM ile dimmer sistemi değildir. Tamamen sıfır noktası yakalama ve buna bağlı olarak da tirac'ın gecikmeli yada gecikmesiz sürülmesine ait bir örnektir. Bu sistem benzerlerinden epeyce yaptım. Hatta şu anda dokunmatik dimmer devresi üzerinde çalışmaktayımki benzer mantıkla çalışmaktadır.
PWM ile bir dimmerin çalıştırılması klasik anlamda son derece zordur. Sebebi gayet açıktır.
Bir Triac şebeke sinyali olan 50 Hz lik sinüs işaretinin X eksenini kestiği noktalarda otomatik olarak kesime gider. Yeniden tetiklenmesi için öncelikle sinyalin X ekseninde uzaklaşması ve tirac gate ucuna da bir tetik sinyalinin verilmesi ile mümkün olur.
Bu işi PWM ile yapmaya kalkarsanız PWM sinyalinin LOW dan HIGH konumuna geçme anı sizin sinüs işaretinin X eksenini kestiği an olmalıdır (sıfır geçiş noktası) bu iş bir senkron meselesidir. Şayet şebeke sinyali ile PWM sinyalini senkron içinde çalıştırabilirseniz bu iş mümkün ama değilse mümkün olması imkansız bir iştir. Senkron olmayınca neler olur birde ona bakalım.
PWM sinyali LOW dan HIGH konumununa çıktı ama bu arada sıfır noktası çoktan aşılmış ve neredeyse ikinci sıfır noktasına gelinecek. Bu durumda Triacı tetikleyebilirsiniz ama bir kaç ms sonra tirac otomatik kesime gidecektir. Ve devamında sizin PWM sinyalinizin LOW süresi gelirse triac kesimde kalacaktır. Böylece lambanız sürekli kesik kesik yanacak ve bir türlü ayar tutmayacaktır.

PWM sinyali ile dimmer çalıştırmanın bir yolu var, bunun için bir 555 devresi de kullanmak gerekiyor. Sizin PWM sinyali ile 0-5V arası bir voltaj elde ediyorsunuz ve bu voltajı 555 CV (5 nolu pin) ye giriyorsunuz. Sıfır noktası sinyalini ise 555 in trigger pinine giriyorsunuz. Böylece 555 veridğiniz voltaja uygun olarak bir PWM sinyali oluşturuyor ve bu sinyal ise şebeke den trigger aldığı için sinüz ile eşzamanlı çalışıyor. Bu sistemi yaptım ve bir kaç kez değişik yerlerde uyguladım.
Şema aşağıdadır. Pic yalnızca PWM sinyali üretmekte ve butonlar yardımı ile sinyalin duty değeri değiştirilmektedir.

Ete

kurtelektronik

İlginiz ve yardımlarınız için teşekkürler.
Açık kodları verebilmeniz mümkünmüdür.

kurtelektronik

#7
Bu şekilde bir devre ile PWM yapabiliyorsunuz.

ete

Açık kodları vereyim sorun değil ama siz dimmeri ne ile kontrol edeceksiniz.
Ben buton kontrolü vereyim siz buton yerine istersen RF kullanın isterseniz IR kumanda kullanın.
Verdiğim kodlarda her tuşa basılışta %25 lik bir artış sağlamak üzere 25 değerini kullandım. Bu duty değer artışıdır.
Siz gerekirse bu rakamı 1 yaparsınız her basışta 1 artar ve 100 kademelik bir dimmeriniz olur. Benim sistemde 4 kademeli bir dimmer olur.

Ete
@ DEVICE PIC16F628A
@ DEVICE PIC16F628A, WDT_ON
@ DEVICE PIC16F628A, PWRT_ON
@ DEVICE PIC16F628A, BOD_ON
@ DEVICE PIC16F628A, PROTECT_OFF
@ DEVICE PIC16F628A, LVP_OFF
@ DEVICE PIC16F628A, CPD_OFF
@ DEVICE PIC16F628A, INTRC_OSC_NOCLKOUT
'---------------------------------------------

DEFINE OSC 4 
CMCON=7
PortA=0         
TrisA=%00000001 
PortB=0
TrisB=%11000000
'-----------------------------------------------
T2CON =%00000101  '00=1/1 , 01=1/4  , 10=1/16 Bölücü.
OPTION_REG.7 = 0 ' Internal pull-ups = on 
PR2=49
CCP1CON=%00001100
'-------------------hazırlık--------------------------------

D1       VAR BYTE 60
D2       VAR BYTE 61
I        var byte 62
DUTY     var byte 64
SAYAC    VAR BYTE 65
TEMP     VAR WORD 66
TUS      VAR WORD 68
ZAMAN    VAR WORD 70
X        VAR WORD 72
DONGU    var BYTE
symbol ARTIR=PORTB.6
SYMBOL AZALT=PORTB.7
SYMBOL BUZZER=PORTA.1

Pause 250
duty=50 :gosub ayar
BASLA:
       
         
        if ARTIR=0  then   
          IF DUTY=>25 then DUTY=DUTY-25
          GOSUB AYAR
        endif
   
        IF AZALT=0  THEN   
           IF DUTY=<75 THEN DUTY=DUTY+25
           GOSUB AYAR
        ENDIF
        pause 75
       
        GOTO BASLA

AYAR:
    X=(PR2+1)* (100-DUTY)/25
'    X=(PR2+1)* duty/25
    CCP1CON.4=X.0
    CCP1CON.5=X.1
    CCPR1L=X>>2
    RETURN


ELZEMEFE

#9
merhaba arkadaşlar bende pwm ile uğraşıyorum  şu an burdakileri  uygulamarı deneyen oldumu  hakan  kurt arkaşımızın yaptığı çizim kısa ve mantıklı geldi.. ama çalışıp çalışmadığı konusunda  tereddütlerim var

Mucit23

@ELZEMEFE Yazılımların hepsi sorunsuz bir şekilde çalışmaktadır. Tereddütün olmasın.

Ete hocam Sizin AC kıyıcılar hakkında bilginiz varmıdır?  Dimmeri AC voltajda uygulamak istiyorum. Ac kıyıcıların çalışma mantığı nedir? Bu sistemde aldığımız PWM sinyalini direk Triak'a uygularsak neler olabilir.
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

ete

Benimde merak ettiğim bir konu bu. Ancak mantığımı kullanarak sorunuda cevaplayabilirim.
Bir AC sinyal direk kullanırsan 10ms lik aralıklarla sıfır noktasından geçer. Bu noktada gücü aktarmak için kullandığın bütün malzemeler (triac yada tristör) kesime geçer. Sıfır noktasını geçtikten sonra yeniden onları tetiklemen gerekir.

Bir pwm sinyali ise belirli bir frekansa bağlı bir kare dalgadır. Bu sinyal ile bir tristörü tetiklediğimizi var sayalım.
Frekansımız 250 Hz olsun.  250 Hz lik sinyalin peryodu 4 ms olacak ve bunun 2 ms si HIGH ve 2 ms si ise LOW olacakır.
Şimdi Triac'ı bu sinyal ile tetiklersek; diyelimki sıfır noktasında her iki sinyalde low da çakıştı. 2ms sonra PWM triac'ı tetikleyecek ve bu tetik ister istemez PWM sinyaline bağlı olmaksızın 10 ms boyun yani bir sonraki sıfır noktasına kadar sürecektir. Bu durumda PWM sinyalimiz bir işe yarayabildimi? tabiiki hayır. Çünki triac bir kere tetiklendimi onun tetik ucuna LOW uygulasanızda o sıfır noktasına kadar tetiklenmiş kalacak ve lambamızı yakar konumda olacaktır. Halbuki biz ne istiyoruz PWM HIGH süresi kadar tirac tetiklenmiş olsun LOW süresi kadar ise kesimde kalsın. Ama ne yazıkki bu mümkün olamıyor.  Bu nedenle PWM sinyali özel tedbir almadan AC kıyıcı olarak kullanılamaz. Özel tedbir nedir? Özel devre anlamında kullandım bunu. Yukarıda bir örnek var.
AC sinyal DC ye çevriliyor ve direk Mosfet transistörle sürülüyor. Bu sistem çalışır ama artık AC likten çıkmış oluyorsunuz. Ama lambaya dim uygulayabilirsiniz bu yöntemle.

Biraz hayalinizi çalıştırın. 50 Hz lik bir sünüs yerine 500 Hz lik bir sinüs işaretimiz olsa bunu bir köprü diyottan geçirsek böylece negatif alternanslarıda pozitif tarafa geçirip işaretimizi 1000 hz seviyesine çıkartırız. Bu sinyal ile triac'ı beslesek dikkat beslesek diyorum tetiklemiyorum. Bu şu demektir benim traic'ım her 500us debir kesime gidecektir. İşte ben buna 250 Hz lik bir PWMsinyali uygularsam istediğimi yapmış olurum. O kesime gittikçe benim PWM sinyalim onu tetikler ama PWM sinyalinin LOW peryodunda ise kesimde kalır ve böylece bu işi kıvırmış olurum.

Bu hayal ürünü örnekten şu sonucu çıkartıyorum, şayet triac'ı beslediğim sinüs sinyali , onu tetiklediğim PWM sinyalinden daha yüksek bir frekansa sahip olursa onu rahatlıkla PWM ile sürebiliorum. Ama tersi olursa olmuyor maalesef.

Bu teoriden yola çıkarak triac yerine tristörle çalışan Havya devresi yapmıştım. Sinüs işaretini 100Hz'e çıakrdım ve bunu tristör'e uyguladım. Bu tristöre peryodu 1000ms  olan bir PWM sinyali uyguladım mükemmel çalıştı.
Şİmdi aynı mantığı kullanarak dimmer de yapılabilir diyorum. Tabiiki PWM sinyali kesme veya benzer bir yöntemle düşük frekanslı olarak elde edilmelidir. Aksi halde sistem yine çalışmayacaktır.

Başka fikri olan varsa belirtsin. Bunlar benim düşüncelerim ve bir kısmını direk deneme yaparak elde ettim.

Ete


KAZIMUGUR

Ac de kullanılan elemanlar istediğim an "söndürülemiyor" ( bu tabir lambalardan kalmadır).
Zorlamalı komütasyon gibi söylemlerin harcı borcunu ödemiyor.
İlla pwm yapmak istiyorum...
Yol belli.
Ac yi dc ye çevirip , şimdilerde istediğimiz her türlüsünü bulabileceğimiz kadar gelişmiş power mosfet ler ile pwm in alasını yaparız.
Bunun ötesindeki uğraşlar boşunadır ,  belki teorik deneyler için evet.

Mucit23

#13
Aslında hocam Güç Elektroniği hakkında biraz bilgiye sahip olsaydım Ac gelirim önce bir köprü diyotla doğrultur sonra Tekrar IGBT lerle saf sinüse çevirirdim. Ama sanırım saf sinüse çevirmek öyle kolay olmuyor. İşin içerisine epeyce mühendislik konuları giriyor sanırım. Öyle olsaydı sadece bir lambanın parlaklığını değil. Bir monofaze motorun devrinide ayarlayabilirdik sanırım. 2 Adet PWM çıkışı olan bir picle yapılabilir kanaatindeyim. Yanlız şu modifiye sinüsü ne tür fiiltrelerden geçiriyor saf sinüs yapmak için inanın hiç bilgim yok.
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

KAZIMUGUR

#14
@Mucit23 , Allah CC iyilikler versin.
Dc ye çevirdin , bir daha ne diye saf sinüs yapasın ?

Eskiden bildiğimiz bir trafo (ferrit nüveli değil) ve bipolar güç transistörleri ve trafo üzerindeki uygun uyarı sargıları ile doğrudan elde ederdik ac yi.
İşi biraz bilenler bir kaç gerilim-akım kontrolü filan ekleyince al sana ups.
Lakin devir değişti...

Powered by EzPortal