Triac Kesime Gitme Sorunu

Başlatan berkay_91, 19 Şubat 2021, 21:02:05

fide

#15
Alıntı yapılan: berkay_91 - 20 Şubat 2021, 00:16:28söylediklerinize katılıyorum, 50 Hz lik PWM oluşturdum fakat sıfır noktası tespiti olmadığından şebeke hattındaki sinüs sinyaline senkronize olacak şekilde tetikleyemediğim için yine istediğim gibi olmadı ancak konuyu anladım, netteki yapılmış uygulamalarda dediğiniz gibi bir kesme fonksiyonu ile sıfır nokları tespit edilmiş ve o an işlemci tarafından tetikleme yapılmış. fakat ac akım kontrolünü sağlamam gereken devrenin yazılımında zaten bir kesme fonksiyonu var (dahili timer) birde dokunmatik ekran ve bluetooth ile haberleşiyor, bu yüzden 2. bir kesme fonksiyonu eklemeden bu işi çözmem gerek ne önerirsiniz?

Uart haberleşmeli 4 kanal dimmer yaptım. Dediğiniz gibi birkaç interrupt devreye girince kırpışma ile karşılabilir. Bunu devreyi ikiye bölerek çözdüm.
Birinci kısım 1 kanal adc ve ioc (interrupt on change) kesmesi ve zero cross kesmesi içeren dimmer kısmı. Dimm miktarı analog olarak veriliyor ve 4 kanaldaki bitlerden biri değişince kesmeye gidip ilk önce hangi bitin bir olduğunu sonra adc değerini okuyup dimm miktarını ayarlıyor. İşlemci 16f1826

İkinci kısım (bu kusmı arkadaşım geliştirdi. Ben sadece keypad ile basit bir kod yazdım.) keypad, karakter lcd ve canbus içeriyor. Dimmer için önce dac ile analog veriyi oluşturup sonra 4 kanaldan birini set ederek dimmer de algılanmasını sağlıyor. Böylece lambalarda kırpışma olmamasını bu şekilde sağladık. Çünkü ioc interrupt içinde 4 bit lojik kontrol ve adc  okuma var. Bu da veri alımına göre oldukça kısa bir süre.
Her birimiz, geride bıraktığımız eserler kadar ölümsüzüz. Evlat gibi, talebe gibi, icatlar gibi...   http://fidenetgaraj.blogspot.com

berkay_91

#16
Alıntı yapılan: Cemre. - 20 Şubat 2021, 11:42:16Bu durumda MOC3021 yerine Zero Cross Detection özelliği olan bir opto triac kullanılması yeterli. Bu tip opto triaclar tetikleme sinyali geldikten sonraki ilk sıfır geçiş anında devreye girdiklerinden hem anlık pik akım problemlerini çözerler hem de sıfır geçiş algılama devresi kurmanıza gerek kalmaz...

peki linkini eklediğim bu devrede MOC3021 i zero cross detection özellliği olan MOC3031 triac driver ile değiştirsem ve işlemcimden 50 Hz PWM üretsem PWM sinyallerinin sadece duty cycle oranını değiştirerek kodlarıma kesme fonksiyonu eklemeden AC yük üzerinde akım kontrolü sağlayabilir miyim?

https://dosya.co/6gsfrk3jdlms/2.jpg.html

Cemre.

#17
Alıntı yapılan: berkay_91 - 20 Şubat 2021, 16:48:12peki linkini eklediğim bu devrede MOC3021 i zero cross detection özellliği olan MOC3031 triac driver ile değiştirsem ve işlemcimden 50 Hz PWM üretsem PWM sinyallerinin sadece duty cycle oranını değiştirerek AC yük üzerinde akım kontrolü sağlayabilir miyim?

https://dosya.co/6gsfrk3jdlms/2.jpg.html

Hayır. Aşağıdaki yapıda bir dalga formu üretebilmeniz için "doğru anda" (resimdeki Triggering Point) tetikleme sinyali üretebiliyor olmanız gerekiyor. Bu da ancak Zero Cross Detection yaparak mümkün.


power20

#18
@berkay_91, Pwm genelde DC ayarlamak için kullanılır. AC sinyal için pwm kullanmaya çalışmanızın sebebi nedir?
Sıfır geçiş algılama ve tetikleme ile hassas kontrol yapılabiliyor. Mcu ile itinayla yapabilirsiniz. İstenen güce göre tetikleme noktası hesaplanır. 




Sozuak

moc3041 zero cross detection özelliğine sahip. Bunu kullanıp frekansları ayarlayıp  daha basitçe sorunu çözebilirsiniz belki yada işinizi görecek kadar basite indirgemenizde yardımcı olabilir.

berkay_91

Alıntı yapılan: Kılıç - 20 Şubat 2021, 17:30:19@berkay_91, Pwm genelde DC ayarlamak için kullanılır. AC sinyal için pwm kullanmaya çalışmanızın sebebi nedir?
Sıfır geçiş algılama ve tetikleme ile hassas kontrol yapılabiliyor. Mcu ile itinayla yapabilirsiniz. İstenen güce göre tetikleme noktası hesaplanır. 

1 tane daha kesme fonksiyonu kullanırsam mevcut yazılım çok karışacak zaten 1 adet dahili timer kesmesi var o fonksiyona loopta dönerken 1 saniyede bir giriyor...

power20

#21
Kesme içinde bayrağa bakılarak farklı işler yapılır. Çok da karışmaz
Sıfır geçiş algılanmışsa başka iş, 1 saniyelik
zaman kesmesi olmuşsa sizin o saniyede bir yapılacak asıl iş yapılır.

1s süreyi de sıfır geçişiyle ölçebilirsiniz. 100 kere sıfır geçiş olmuşsa 1 saniye doldu demektir.  Muhtemelen mcu içinde daha başka  timer mevcuttur. Sıfır geçişi sonrası bir timer ayarlanır. O tetiklemeyi  yapar


fide

Alıntı yapılan: berkay_91 - 20 Şubat 2021, 18:09:491 tane daha kesme fonksiyonu kullanırsam mevcut yazılım çok karışacak zaten 1 adet dahili timer kesmesi var o fonksiyona loopta dönerken 1 saniyede bir giriyor...
Dimm yapabilmek için saniyede 5000 ila 10000 arasında timer interrupt girmeniz gerekir.
50hz = 100 alternans,
Her alternans için 50 yada 100 kademe dimm düşünürseniz saniyede 5000 yada 10000 defa kesme oluşturmalısınız.
Saniyede bir bunun yanında komik kalır ;)  ;)
Her birimiz, geride bıraktığımız eserler kadar ölümsüzüz. Evlat gibi, talebe gibi, icatlar gibi...   http://fidenetgaraj.blogspot.com

sadogan

Her alternans için bir kesme yetmez mi, neden 100 alternans için 5000 yada 10000 defa olsun ?

sadogan

Alıntı yapılan: berkay_91 - 20 Şubat 2021, 18:09:491 tane daha kesme fonksiyonu kullanırsam mevcut yazılım çok karışacak zaten 1 adet dahili timer kesmesi var o fonksiyona loopta dönerken 1 saniyede bir giriyor...
MCU nedir ?

fide

Senkronize pwm yaparsan olur ama zero cross ile dimm yapacaksan her alternansı  50 yada 100e bölmek en mantıklısı bence.
Yanlışım varsa düzeltin.
Her birimiz, geride bıraktığımız eserler kadar ölümsüzüz. Evlat gibi, talebe gibi, icatlar gibi...   http://fidenetgaraj.blogspot.com


tunayk

Alıntı yapılan: fide - 20 Şubat 2021, 19:26:19Senkronize pwm yaparsan olur ama zero cross ile dimm yapacaksan her alternansı  50 yada 100e bölmek en mantıklısı bence.
Yanlışım varsa düzeltin.

Öyle değil hocam. Sıfır geçişte timer kurulur, timer interruptında tetik sinyali on olur. Timer için yüklenecek değer tetikleme açısıdır ve bu normal döngü içinde hesaplanır. Geri kalan zamanda kesme ile işiniz olmaz. Normal işler yapılmaya devam edilir.

Eğer sıfır geçiş algılama interrupt ile yapılamıyorsa -ki yapılması elzemdir- belki o zaman çok sık aralıkla kesme kullanarak geçiş oldumu bakmak gerekebilir.

OG

Alıntı Yappeki linkini eklediğim bu devrede MOC3021 i zero cross detection özellliği olan MOC3031 triac driver ile değiştirsem
olmaz, triac için kullandığın OPTO COUPLER ZERO-CROSS OLMAMALI
bu opto yalnızca triac sürmek için, zerocross tip kullanırsan bütün çabalar boşa gider, bunlar faz kıyım yapamaz.
(MOC 3021 NON-ZERO CROSS)
(MOC 3031 ZERO CROSS)

eğer lamba değil de ısıtıcı falan sürseydiniz zerocross triyak sürücüler işi çok kolaylaştırır
ölçtüğünüz ısı değerine göre aç kapa komutlarını yollarsınız, her şey hallolur.
Aynı metodu lamba için kullanırsanız kırpışmakdan başka bir işe yaramaz

Kırpışma olmadan temiz dimm için faz kıyım şarttır (lamba)
Faz kıyımı için ise, faz sıfır geçiş tespiti şarttır ki, istediğiniz orana göre triyakı ateşleyesiniz.
Ateşlenen triyak sıfır geçişinde akımı kendi keser
(bu da ayrı bir konu, bazı durumlarda ek önlem almadan kesime gidemez BURADA
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.

berkay_91

https://simple-circuit.com/arduino-light-dimmer-220v/

Linkteki bu devreyi yaptım ve kesme fonksiyonu kullanarak sıfır geçişlerini tespit ettim op-amp olarak elimde olan LM358 i kullandım, bu sitedeki örnek program ve devre stabil bir şekilde çalışıyor, yeni başlayanlar için iyi bir kaynak. yorum yazan herkese teşekkür ederim