IGBT ile 3 FAZ Motor sürme teknikleri

Başlatan MrThinking, 12 Ocak 2022, 20:19:20

MrThinking

#75
Bir uzmanlık sorusu soracağım;
Aşağıdaki tablolara göre 3 faz bir motorun 360 derece dönmesi için mcu daki B portunun ilk 6 bitine bağlanmış çıkışlardaki
PORTB=0000000
PORTB=0000000
PORTB=0000000
PORTB=0000000
PORTB=0000000
PORTB=0000000
PORTB=0000000
PORTB=0000000

tablo sıralaması ne olmalı?
Uzay vectöre yada svpwm ye geçmem için bu sorunun yanıtını bulmam lazım...Temeldeyim daha...






Bit0=g1 , Bit1=g2,  Bit2=g3, Bit3=g4, Bit4=g5, Bit5=g6

Ego=1/Knowledge

yucatar

#76
Alıntı yapılan: ümitgungor - 25 Ocak 2022, 15:42:02Bir uzmanlık sorusu soracağım;
Aşağıdaki tablolara göre 3 faz bir motorun 360 derece dönmesi için mcu daki B portunun ilk 6 bitine bağlanmış çıkışlardaki
PORTB=0000000
PORTB=0000000
PORTB=0000000
PORTB=0000000
PORTB=0000000
PORTB=0000000
PORTB=0000000

tablo sıralaması ne olmalı?
Uzay vectöre yada svpwm ye geçmem için bu sorunun yanıtını bulmam lazım...Temeldeyim daha...






Bit0=g1 , Bit1=g2,  Bit2=g3, Bit3=g4, Bit4=g5, Bit5=g6



Hocam, 6 adım komütasyon için böyle olmalı.

1.ADIM -> PORTB=1000001
2.ADIM -> PORTB=1001000
3.ADIM -> PORTB=0001010
4.ADIM -> PORTB=0100010
5.ADIM -> PORTB=0110000
6.ADIM -> PORTB=0010001


MrThinking

Alıntı yapılan: pkelle - 25 Ocak 2022, 20:52:53https://www.picproje.org/index.php?msg=524411
Sayın Pkelle beni yönlendirdiğiniz mesajınızda ki örnek tablolar c dili ile yazılmış gibi. Ben proton kullacisiyim. Verdiğiniz tablolardaki rakamların bir porta verilen çıkış değerleri olduğunu saniyorum ama bunu kendi dilime nasıl uyarlayabilirim pek anlayamadım. Konuyu biraz daha ayrıntılı anlatabilir misiniz lütfen.
Ego=1/Knowledge

Z80

#79
Tablolardaki değerler bir porta değil MCU'daki PWM kontrolcüsüne uygulanacak. PWM kontrolcü o değerde "duty" üretecek.

C de veya protonda olması birşey değiştirmez. Mantık aynı. O tablolardaki değerler önceden hesaplanmış 120 derece faz farkına sahip, 64 kademeli, 8 bitlik PWM değerleridir. (Bkz.Ani değer nasıl hesaplanır?).

PIC'lerle uğraştığına göre 3 ECCP modülü olan bir MCU kullanmalsın. Örnek 16F1938. Bunun üzerinde 3 ECCP, 2 CCP modülü var. ECCP modülleriyle 3 adet halfbridge oluşturup, bunların çıkışlarıyla güç elemanlarını süreceksin. PWM frekansı, sürücü polaritesi, deadtime v.s. bu modüllerle yapacaksın. Portlarla ilgin yok.

CCP modülü tek porttan PWM çıkışı sağlar. Bununla ekstra elemanlarla fullbridge-halfbridge sürersin ama deadtime sorunu çıkar.

ECCP modüllerinde fullbridge için 4, halfbridge için 2 çıkış vardır. Yani deadtime v.s. kullanabilirsin. Deadtime da çok dert edilecek birşey değil, ECCP üstündeki ilgili registere istediğin değeri verirsin, modül PWM sinyallerini o deadtime'da üretir.

SPWM frekansını, PWM frekansını değiştirerek değil, tablodaki duty değerlerini tetikleyen timer'ın zamanını değiştirerek yapacaksın. (Bunun sırası daha sonra gelir).

SPWM genliğini ise, tablodaki elemanların değeriyle oynayarak yapacaksın. Örnek: tablodan okuduğun her değeri ikiye bölerek uygularsan çıkıştaki gerilimin yarıya düştüğünü göreceksin.

Bu tablolar örnek sinüs dalgası, sen kendin istediğin gibi tablo yapıp çıkışta karedalga, üçgen, testere üretebilirsin.     

Üstünde CCP veya ECCP modülü bulunan ucuz bir işlemciyle denemeler yaparak tecrübe kazanmanı sana tavsiye ederim.

MrThinking

Alıntı yapılan: pkelle - 26 Ocak 2022, 01:03:05Tablolardaki değerler bir porta değil MCU'daki PWM kontrolcüsüne uygulanacak. PWM kontrolcü o değerde "duty" üretecek.

C de veya protonda olması birşey değiştirmez. Mantık aynı. O tablolardaki değerler önceden hesaplanmış 120 derece faz farkına sahip, 64 kademeli, 8 bitlik PWM değerleridir. (Bkz.Ani değer nasıl hesaplanır?).

PIC'lerle uğraştığına göre 3 ECCP modülü olan bir MCU kullanmalsın. Örnek 16F1938. Bunun üzerinde 3 ECCP, 2 CCP modülü var. ECCP modülleriyle 3 adet halfbridge oluşturup, bunların çıkışlarıyla güç elemanlarını süreceksin. PWM frekansı, sürücü polaritesi, deadtime v.s. bu modüllerle yapacaksın. Portlarla ilgin yok.

CCP modülü tek porttan PWM çıkışı sağlar. Bununla ekstra elemanlarla fullbridge-halfbridge sürersin ama deadtime sorunu çıkar.

ECCP modüllerinde fullbridge için 4, halfbridge için 2 çıkış vardır. Yani deadtime v.s. kullanabilirsin. Deadtime da çok dert edilecek birşey değil, ECCP üstündeki ilgili registere istediğin değeri verirsin, modül PWM sinyallerini o deadtime'da üretir.

SPWM frekansını, PWM frekansını değiştirerek değil, tablodaki duty değerlerini tetikleyen timer'ın zamanını değiştirerek yapacaksın. (Bunun sırası daha sonra gelir).

SPWM genliğini ise, tablodaki elemanların değeriyle oynayarak yapacaksın. Örnek: tablodan okuduğun her değeri ikiye bölerek uygularsan çıkıştaki gerilimin yarıya düştüğünü göreceksin.

Bu tablolar örnek sinüs dalgası, sen kendin istediğin gibi tablo yapıp çıkışta karedalga, üçgen, testere üretebilirsin.     

Üstünde CCP veya ECCP modülü bulunan ucuz bir işlemciyle denemeler yaparak tecrübe kazanmanı sana tavsiye ederim.

Çok teşekkür ederim. Yazdıklarınızı öğrenip pekiştirmem biraz zaman alacak. Sonra görüşürüz. Sagılarımla. Egosuz Bilginin önünde her zaman eğilirim.
Ego=1/Knowledge

yucatar

#81
http://interface.khm.de/index.php/lab/interfaces-advanced/arduino-dds-sinewave-generator/
Verdiğim linkdeki yazılım arduino için yazılmış ben bu linkdeki yazılımı, 3 faz aralarında 120 derece fark olacak şekilde güncelleyip stm'in işlemcisini kullanarak motoru döndürmeyi başarmıştım. Bu yazılımda frekansı değiştirmek için timer zamanını değiştirmene gerek duyulmuyor. Güç içinde @pkelle dediği gibi tabladaki değerlerin yüzdesini alabilirsin
(örnek: yüzde 70 güç vermek istiyorsan "PWM_tablosundaki_değer*0.7" gibi işlem yapabilirsin).

MrThinking

Alıntı yapılan: yucatar - 26 Ocak 2022, 09:48:08http://interface.khm.de/index.php/lab/interfaces-advanced/arduino-dds-sinewave-generator/
Verdiğim linkdeki yazılım arduino için yazılmış ben bu linkdeki yazılımı, 3 faz aralarında 120 derece fark olacak şekilde güncelleyip stm'in işlemcisini kullanarak motoru döndürmeyi başarmıştım. Bu yazılımda frekansı değiştirmek için timer zamanını değiştirmene gerek duyulmuyor. Güç içinde @pkelle dediği gibi tabladaki değerlerin yüzdesini alabilirsin
(örnek: yüzde 70 güç vermek istiyorsan "PWM_tablosundaki_değer*0.7" gibi işlem yapabilirsin).
Teşekkür ederim.
Ego=1/Knowledge

MrThinking

#83
Alıntı yapılan: ümitgungor - 26 Ocak 2022, 08:51:58PIC'lerle uğraştığına göre 3 ECCP modülü olan bir MCU kullanmalsın. Örnek 16F1938. Bunun üzerinde 3 ECCP, 2 CCP modülü var. ECCP modülleriyle 3 adet halfbridge oluşturup, bunların çıkışlarıyla güç elemanlarını süreceksin. PWM frekansı, sürücü polaritesi, deadtime v.s. bu modüllerle yapacaksın.
Sayın @pkelle
Yukarıda bahsettiğiniz 3 adet half bridge yapıyı nasıl oluşturacağız pek anlamadım. Şema ile gösterebilir misiniz.  Diyelim ki tlp350 ile dediğiniz 6 adet half bridge yapı oluşturulabilir mi?
3 adet half bridge yapı için 6 adet ıgbt kullanılmak zorunda. Fakat verdiğiniz kod örneğinde ve pic tavsiyesinde sadece 1 adet half bridge yapı sürülebiliyor galiba. Eccp mantığının 6 adet ıgbt nin gate ine uygulanabilmesi için ne gibi bir yol izlemeliyim. 16f1938 de eccp yapısının 6 adet olması gerekmezmiy di? Kusura bakmayın anlayamadığım için anlatamıyorum da. Sorma şeklim yanlış olabilir...
Ego=1/Knowledge

Z80

#84


ECCP modüllerini halfbridge olarak ayarladığın zaman, P1A-P1B, P2A-P2B, P3A-P3B çıkışlarında ilgili modülün PWM sinyallerini alırsın. Yani toplamda 3x2 = 6 çıkışın var.

16F1938 kataloğundaki PWM maddesini incele.

Diyelim ki 1. modülü halfbridge olarak ayarladık. Frekansını 100 KHz, 8 bit, deadtime v.s.

Buna "128" değerini gönderdiğinde çıkışta %50 duty görürsün. 64 gönderirsen %25 duty görürsün.     



Tablolardaki PHASE1 değerlerini 1. halfbridge, PHASE2 değerlerini 2. halfbridge ve PHASE3 değerlerini 3. halfbridge' e bir timer kullanarak sırayla vereceksin. Bu sayede 120 derece açılı 3 SPWM sinyalin olacak.

IGBT sürmeden önce tek çıkışlık CCP modülüyle alıştırma yap. Tek mosfetle DC motor sür, sonra fullbridge-halfbridge ile uğraşırsın.

MrThinking

#85
Alıntı yapılan: pkelle - 26 Ocak 2022, 19:45:47

ECCP modüllerini halfbridge olarak ayarladığın zaman, P1A-P1B, P2A-P2B, P3A-P3B çıkışlarında ilgili modülün PWM sinyallerini alırsın. Yani toplamda 3x2 = 6 çıkışın var.

16F1938 kataloğundaki PWM maddesini incele.

Diyelim ki 1. modülü halfbridge olarak ayarladık. Frekansını 100 KHz, 8 bit, deadtime v.s.

Buna "128" değerini gönderdiğinde çıkışta %50 duty görürsün. 64 gönderirsen %25 duty görürsün.     



Tablolardaki PHASE1 değerlerini 1. halfbridge, PHASE2 değerlerini 2. halfbridge ve PHASE3 değerlerini 3. halfbridge' e bir timer kullanarak sırayla vereceksin. Bu sayede 120 derece açılı 3 SPWM sinyalin olacak.

IGBT sürmeden önce tek çıkışlık CCP modülüyle alıştırma yap. Tek mosfetle DC motor sür, sonra fullbridge-halfbridge ile uğraşırsın.

Hocam yazan elleriniz ve beyniniz dert görmesin...
Şu an dediğiniz gibi, tek half bridge yapılı uygulamayı ve yazılımı proteusta simüle etme yolunda ilerliyorum.
Ancak henüz gerçeğe uyarlamayacağım için 3 half bridge yapıyı da aynı anda öğrensem simülasyon ortamında sorun olmayacaktır. simülasyon osiloskobu herşeyi gösterecektir diye umuyorum. Bu nedenle 3 half bridge yapıyı da simüle edebileceğim bir pic önerebilir misiniz?
Aşağıdaki datasheet açıklmasına göre Bu pic te sanki 3 yapı aktif olmuyor gibi... Yada ben henüz çözemedim.
bit7-6=10=Half-Bridge output; PxA, PxB modulated with dead-band control; PxC, PxD assigned as port pins
datasheeti hala inceliyorum.
Tekrar teşekkür ederim.
Ego=1/Knowledge

Z80

16F1938 üstünde 1 fullbridge, 2 halfbridge, 2 tekli PWM çıkışı var. Fullbridge de halfbridge olarak ayarlanabilir. Yani işini görür.

"bit7-6=10=Half-Bridge output; PxA, PxB modulated with dead-band control; PxC, PxD assigned as port pins" 

Bu fullbridge modülünün halfbridge olarak ayarlandğı zamanki pin konfigürasyonunu gösteriyor. A ve B halfbridge, C ve D normal kullanıma ayarlanmış. Fullbridge de dört çıkış (A-B-C-D) kullanılır. Halfbridge de yalnızca A ve B.

PxA şu demek, P1A-P2A-P3A yani 3 ECCP modülünün A çkışı.

Proteus'da deneme yaparken PWM ve MCU frekansını düşük tutmanı öneririm. PWM frekansı 1-2 Khz geçmesin yoksa proteus bayılıyor. İşlemci de 8 Mhz'i geçmesin...

Sinüsü görmen için halfbridge çıkışına alçak geçiren filtre koyman gerek. 1k ve 1uF yeter.

MrThinking

#87
Alıntı yapılan: pkelle - 27 Ocak 2022, 20:51:22PxA şu demek, P1A-P2A-P3A yani 3 ECCP modülünün A çkışı.
Hocam buna göre aşağıdaki proteus şeması doğrumudur.



Ego=1/Knowledge

Z80

Mantık olarak doğru, uygulama olarak tamamen yanlış.

O şekilde hiç bir transistör sürülmez. Neden hemen IGBT, mosfet v.s. sürmeye kalkıyorsun, çıkışlardaki sinyali incelemen için bunlara gerek yok. İşe tersinden başladın bence, önce SPWM sinyallerini üretecek düzeni kurman gerekmez mi? IGBT sürmek en son iş. Oralara daha çoooook var. :)

Proteus'a da çok güvenme, biraz karışık devrelerde fena saçmalıyor. Mosfet, transistör bunlarda doğru sonuçlar veremiyebiliyor. Çıkışlaradaki sinyallere odaklanman gerek.
 

MrThinking

Alıntı yapılan: pkelle - 28 Ocak 2022, 00:08:33Mantık olarak doğru, uygulama olarak tamamen yanlış.

O şekilde hiç bir transistör sürülmez. Neden hemen IGBT, mosfet v.s. sürmeye kalkıyorsun, çıkışlardaki sinyali incelemen için bunlara gerek yok. İşe tersinden başladın bence, önce SPWM sinyallerini üretecek düzeni kurman gerekmez mi? IGBT sürmek en son iş. Oralara daha çoooook var. :)

Proteus'a da çok güvenme, biraz karışık devrelerde fena saçmalıyor. Mosfet, transistör bunlarda doğru sonuçlar veremiyebiliyor. Çıkışlaradaki sinyallere odaklanman gerek.
 
Hocam bu semadan önce doğru kurgulanmış bir şema göndermiştim ama ekran alıntısı olduğundan burada pek net görünmedi. O nedenle şemayı blok diyagram gibi kucultup böyle bir yapı şeması gönderdim. Px lerin yerinin doğru oldugunu soylemeniz benim için yeterli.
Ego=1/Knowledge