Merhabalar,
ADUM4223 entegresi ile bir mosfet sürücü devresi kurdum . Sürücü entegresi galvanic isolasyonlu bir entegre.
(https://thumb.ibb.co/nDR63d/devre.png) (https://ibb.co/nDR63d)
Şemada gözükmeyen boot diyodu ve önüne bağlı bir dirençte var. Yine şemada olmayan gate devre aşağıdaki gibidir
(https://thumb.ibb.co/kzwpOd/gate.png) (https://ibb.co/kzwpOd)
STM32F429 kitimle girişlerine comp.pwm uyguladım(TIM1 - PE8,PE9). İstediğim frekansı ayarlayıp scope'dan ölçebiliyorum. Mosları 30V-80V'da ve 2kHz ile 16.5kHz frekanslarında test ettim.
Moslar düşük gerilimdeyken sıkıntı yok ancak 80V'da 16.5kHz'de iken moslar ısınmaya başlıyor. Ani bir ısınma değil ancak yavaş yavaş ısınıyor.
Not: Devrede yük yok
Scope resimleri:
30V 2kHz
(https://thumb.ibb.co/m5Yawy/30v_2khz.jpg) (https://ibb.co/m5Yawy)
80V 2kHz:
(https://thumb.ibb.co/kBvKpJ/scope.jpg) (https://ibb.co/kBvKpJ)
80V 16.5kHz:
(https://thumb.ibb.co/nDFfwy/80V16khz.jpg) (https://ibb.co/nDFfwy)
Sarı: işlemci'nin bir çıkışına bağlı
Mavi: mosfet çıkışı
İşlemci çıkışnda da ripple oluyor ve sürücü bunu kuvvetlendirerek çıkışa kadar aktarıyor. İlk kez yüksek gerilimde çalıştığım için böyle bir problem karşıma çıktı. Isınma anahtarlama kaybı oluşuyor diye düşünüyorum.
Yardımlarınız için şimdiden teşekkür ederim.
Gate sürücüyü 3.3V ile sürme, en az 5V kullan.
Bu arada kullanması ne gıcık entegreymiş az datasheet kurcaladım da.
ADuM4135 ya da 2ED020I12 varken bu sürücü biraz dandik kaçmıç
Bence ilk böyle bir şey süreceksen bilindik TLP250 gibi optolara yönelebilirdin. Nasılsa klasik süreceksin ve DESAT kullanmayacaksın.
Hocam entegre 3v'u destekliyor. Çalışmamı bu çiplerle sürdüreceğim. Problem bence sürücü entegresinde değil. Sorun yüksek gerilimde ve yüksek frekanstaki problem. Bunun nedenini merak ediyorum.
En alttaki resim sorunlu sarı renk ile mavi renk aynı incelikte olması gerekirdi. Mavi lkare dalga olmuş.
A ve B girişleri bağlı mı yoksa tekini mi bağladın disable pini mi kullnuyorsun A resimde peki B de ne var.
iki comp. pini bağlı.Sarı olan Vca.
Cboot 1uF paralelinde 100nF bağlı.
Tavsiyem ilk önce cpu iki çıkışını osiloskop resmini ekle , daha sonra mosfetleri bağlama , gnda ve gndb ikisini de eksiye ver
ve adum entegresinin mosfet gate çıkışlarını osiloskopla resmini çek o zaman sorun daha iyi anlaşılır.
Yük bağlı değilken pik olmaz , 16khz gayet normal bir değer. 500khz olsa yük yokken ısı problemi olabilridi ama 16khz de olmaz.
daha net bir şekilde görüntülenmiş hali
işlemci çıkışı sürücü bağlı değilken: (sarı:pwm, mavi:pwm_n)
(https://thumb.ibb.co/kmUKry/i_lemci_s_r_c_bagli_degil.jpg) (https://ibb.co/kmUKry)
Sürücü çıkışı gnda ve gndb ground'da moslar bağlı değilken: (sarı:high_side, mavi:low_side)
(https://thumb.ibb.co/fvbtJd/mos_cikisi_gnd.jpg) (https://ibb.co/fvbtJd)
Mos'lar bağlı ve mosfet beslemesi kapalıyken: (sarı:high_side, mavi:low_side)
(https://thumb.ibb.co/hNuKry/moslar_bagli_mos_off.jpg) (https://ibb.co/hNuKry)
Moslarda 80V varken gate sinyalleri: (sarı:high_side, mavi:low_side)
(https://thumb.ibb.co/cR09ry/moson_lowhighside.jpg) (https://ibb.co/cR09ry)
High-side ve köprü çıkışı: (sarı:high_side, mavi:çıkış)
(https://thumb.ibb.co/m3z8jJ/mos_on_highside_mosout.jpg) (https://ibb.co/m3z8jJ)
poems by Jeffrey Harrison (https://poetandpoem.com/Jeffrey-Harrison/poems)
Low-side ve köprü çıkışı: (sarı:low_side, mavi:çıkış)
(https://thumb.ibb.co/c22iJd/lowside_mosout.jpg) (https://ibb.co/c22iJd)
80V bağlıyken üst mos alt mos'a göre daha fazla ısınıyor. Girişteki gürültü kuvvetlenerek çıkışta daha büyük etkiye neden oluyor sanırım.
Şöyle bir durum fark ettim. PWM'de dead time var ve işlemci çıkışlarında bu durum gözüküyor. Ancak moslar bağlıyken 3.fotoğraftaki high-side sinyalinin sağında hafif bir eğim oluşuyor. Bu durum mosfetlere de enerji verince daha belirgin oluyor ve mosfetler sanırım anlık bir kısa devreye düşüyor. Acaba doğrumu düşünüyorum?
Evet doğru düşünüyorsun. Gerçek voltaj ve kablolar devreye g
irdiğinde kaçak endüktanslar nedeni ile mos hemen kesime girmiyor. Bu yüzden de besleme gerilimi çok kısa süreliğine kısa devre oluyor. Aslında akım sinyaline bakıyor olsan muhtemelen durum daha net görünecek.
Şu durumda dead time değerini uzatıp duruma bakarsın.
Hocam dead-time'ı düşürsem de yükseltsem de her türlü çakışıyorlar. İşlemci çıkışından bir filitreleme yapmam mı gerekli?
static void MX_TIM1_Init(void)
{
TIM_MasterConfigTypeDef sMasterConfig;
TIM_OC_InitTypeDef sConfigOC;
TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig;
htim1.Instance = TIM1;
htim1.Init.Prescaler = 0;
htim1.Init.CounterMode = TIM_COUNTERMODE_UP;
htim1.Init.Period = 10909;
htim1.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
htim1.Init.RepetitionCounter = 0;
if (HAL_TIM_PWM_Init(&htim1) != HAL_OK)
{
_Error_Handler(__FILE__, __LINE__);
}
sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
if (HAL_TIMEx_MasterConfigSynchronization(&htim1, &sMasterConfig) != HAL_OK)
{
_Error_Handler(__FILE__, __LINE__);
}
sConfigOC.OCMode = TIM_OCMODE_PWM1;
sConfigOC.Pulse = 7000;
sConfigOC.OCPolarity = TIM_OCPOLARITY_LOW;
sConfigOC.OCNPolarity = TIM_OCNPOLARITY_LOW;
sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
sConfigOC.OCIdleState = TIM_OCIDLESTATE_RESET;
sConfigOC.OCNIdleState = TIM_OCNIDLESTATE_RESET;
if (HAL_TIM_PWM_ConfigChannel(&htim1, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
{
_Error_Handler(__FILE__, __LINE__);
}
sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE;
sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_DISABLE;
sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_OFF;
sBreakDeadTimeConfig.DeadTime = 128;
sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE;
sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH;
sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE;
TIM1->CR1|=512;
if (HAL_TIMEx_ConfigBreakDeadTime(&htim1, &sBreakDeadTimeConfig) != HAL_OK)
{
_Error_Handler(__FILE__, __LINE__);
}
HAL_TIM_MspPostInit(&htim1);
}
duty'i düşürüp low-sideın pwm'inin kaydığını gördüm nedendir bu?
(https://thumb.ibb.co/fWzvgy/normal.jpg) (https://ibb.co/fWzvgy)
(https://thumb.ibb.co/fWzvgy/normal.jpg) (https://ibb.co/fWzvgy)
Dostum yukarıdaki resimler çok iyi idi ama son verdiğin resim yanlış,
En alttlaki resimin cpu dan iki çıkışını osiloskopla çekebilirmisin.
İki mosfetin çakışmasını görmek için high side mosfetin hemen drain yada sourcesine bir 22ohm gibi bir direnç bağla
ve osiloskopu direncin uclarına bağla (aman dikkat osiloskpu yakma), çakışmayı daha net görebilirsin.
Tabi ilk başta driverda lojik bir problem mi var ona bak sen . Öyle görünüyor.
(VDDA ve GNDA arasındaki voltajı heralde diyot ile veriyorsun , orada da voltaj sabit mi? belki düşüyordur bu da chipi yanıltabilir tahmin)
@iboibo high-side'da mosfet beslmesi yokken besleme gerilimi 15V'u gösteriyor. Mosfetleri besleyince yüksek gerilime çıkıyor.
VDDA GNDA arası asla 15v geçmemeli eğer 20-30v geçmişse mosfetin gate bozunuma uğramıştır. Demek ki sorunun bu imiş.
Şu şekilde bağlayabilirsin
(https://image.ibb.co/kFezby/dfdfled.jpg)
İzolasyonlu dediğiniz IC ile ölçüm
yaparken; aynı anda kontrol GND'si
ve sürücü GND' si scop üzerinden
birleşmiyor mu?
Ayrıca 15V luk zenerler mosfetin
S ve G pinleri arasına konulması
daha uygun olmaz mı?
@mehmet onlar zener değil schottky diyot. Scope üzerinden birleşmiyor gnd'ler ayrı. Birleşse izolasyonun anlamı olmaz.
@iboibo yüksek gerilime çıkması normal zaten boost yapısından dolayı böyle olması gerek diye biliyorum.