H-Köprü Tasarımı

Başlatan Serk@n77, 27 Eylül 2024, 06:56:36

Serk@n77

İyi çalışmalar.

Daha önce hazır entegreler ile PWM DC motor kontrolü yapmıştım. Şimdi mosfetlerle kendi devremi tasarlayıp 12V, 90W bir motoru hız ve yön olarak kontrol etmek istiyorum. Temel elektronik bilgilerimle internette H-Bridge devrelerini araştırarak bir devre tasarladım. Bu devreyi denemek istiyorum. Şemasını gönderiyorum. İlk denemem olduğu için dikkat etmem gereken hususları size sormak sormak istedim. Mosfet1, mosfet2, mosfet3, mosfet4 5V kontrol pinlerim.

1-3, 2-4 pinleri aynı anda lojik 1 seviyesine getirmemem gerekiyor.Bunun tehlikesini biliyorum.

Motoru döndürmem için 1-3 lojik 1 ise diğerleri 0 olmalı veya ters yön için tam tersi. Motoru hızlı bir şekilde sağ-sol yapmamam gerekiyor. Biraz beklemek gerektiğini biliyorum.

Bunun haricinde bir tavsiyeniz var mı? Mesela merak ettiğim motora bir paralel kondansatör (100nF) bağlamak gerekir mi veya PWM özellikleri gibi.

Mosfetleri yüksek amperli ve açıldığında D-S omajı yüksek olanlardan seçtim. Mosfet geytlerini 5V ile kontrol edilen transistörlerle 12V üzerinden kontrol etmeyi tasarladım.


ete

Böyle bir devre tasarlarken Mosfetlerin ne kadar belalı olabileceklerini akıldan çıkartmamak gerekiyor. Uygun olmayan H-Köprü devrelerinde mosfet çakışması yaşandığında anında mosfetler çöp olacaktır. Buna dikkat etmek gerekiyor.
Diğer bir konu da Mosfet Gate'lerinin bir kondansatör gibi davrandıklarını unutmamak gerekiyor. Malum kondansatör belirli bir akım ve voltajla şarj edildiği gibi kondansatörü deşarj etmek için yine bir tertibata ihtiyacın olduğunu unutma. Devrendeki HIGH side tarafındaki mosfetin 10K direnç üzerinden yeterince deşarj edilmesi bence pek mümkün değil gibi.
Bu durumda sen kapatma emrini versende o mosfet tam kapanmayacak ve diğer tarafı açtığında mosfet çakışması kaçınılmaz olacaktır. İşte bu tür sorunların giderilmesi için mosfet sürücü entegreleri geliştirilmiştir. Bir nevi Push-Pull olarak mosfeti sürerler. Açarken hızlı şarj ve kapatırkende hızlı deşarj yaparak çakıışmayı engellerler. Geriye mosfetlerin sürülürken araya yeterli ölü zamanın koyulması kalıyor.
Her bir mosfetin Açılma (Turn_on) ve kapanma (TUrn-Off) zamanı vardır. Bu sürelere özellikle dikkat edip açma kapama ve yön değiştirme işlemlerinde gereken ölü zamanın (Dead time) aralıkta verilmesi gerekir. Yoksa biri kapanırken henüz kapanmadan diğerini açmış olursunki bu durumda mosfet çakışması meydana gelirki hiç istenmeyen bir durumdur bu.
Söylediklerim bir amatörün tecrübelere dayanan sözleridir. Anlam çıkarmak zana kalıyor.

Ete

Serk@n77


mehmet

#3
Bu nedenle; IR2104 gibi ic kullanmanız. Bu durumda tüm mosfetleriniz N-ch olacaktır. Rahat edersiniz.

İlla bu şekilde sürmek istiyorsanız:
Mosfetleri süren transistörler yanlış bağlı.
Kuzey mosfetleri alttaki gibi sürebilirsiniz. Eğer, yük gerilimi 15volttan düşükse gerilim bölücüye gerek yok.




Ben alttaki şemayı yaptım. Mosfetler 3205, sürücü 2104 olarak kullandım. Ayrıca dört adet hızlı yük diyotlarını ilave ettim.

Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
http://www.mehmetbilgi.net.tr
CC BY

Serk@n77

#4
Alıntı yapılan: ete - 27 Eylül 2024, 09:05:26Devrendeki HIGH side tarafındaki mosfetin 10K direnç üzerinden yeterince deşarj edilmesi bence pek mümkün değil gibi. Bu durumda sen kapatma emrini versende o mosfet tam kapanmayacak ve diğer tarafı açtığında mosfet çakışması kaçınılmaz olacaktır.
Ete

Hocam bu durum sizce hız ayarında da sorun teşkil eder mi? Neticede PWM'de açılıp kapanan bir sinyal.

Zira motoru ters döndürme için 5 sn. süre opsiyonum var. Sanırım bu süre mosfet boşalması için yeterli bir süredir.

Serk@n77

#5
Alıntı yapılan: mehmet - 27 Eylül 2024, 10:40:21Bu nedenle; IR2104 gibi ic kullanmanız. Bu durumda tüm mosfetleriniz N-ch olacaktır. Rahat edersiniz.

İlla bu şekilde sürmek istiyorsanız:
Mosfetleri süren transistörler yanlış bağlı.
Kuzey mosfetleri alttaki gibi sürebilirsiniz. Eğer, yük gerilimi 15volttan düşükse gerilim bölücüye gerek yok.




Ben alttaki şemayı yaptım. Mosfetler 3205, sürücü 2104 olarak kullandım. Ayrıca dört adet hızlı yük diyotlarını ilave ettim.



P kanal Mosfet hatta PNP transistör bile kullanmaktan mümkün-mertebe imtinâ ediyorum. Ezberimi bozan elemanlar gibi geliyor. Maalesef hocam P kanal mosfet ile söylediğiniz konuyu anlayamadım, imkanınız varsa biraz daha detaylandırarak anlatabilir misiniz?

Bu mosfet 12V ile D-S arası açık, 1V-2V civarında düşük bir voltay ile kapalı olması lazım benim bildiğim kadarıyla.

mehmet

#6
Bu şekilde olmalı:

https://tinyurl.com/2ddv2y3l

Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
http://www.mehmetbilgi.net.tr
CC BY

ahmet_zxc

mosfetlere ters diyot koysan iyi olur

aRci

Merhaba;
Alttaki devre ile 24v 2 adet liner mota yön vermeye çalışıyorum ayrıca gnd tarafına şönt direnc koyup morun çektiği akımı ölçüyorum.

Devre masada düzgün çalışıyor liner motor test sırasında yüksüz 1.5amper çekiyor buna ayrıca taş direnç le ilave yük oluşturup 5amper ve üzeri yükledik devrede gene bir sorun olmadı.
ancak motoru tezgaha bağladığımızda 1 hafta içerisinde arızalandı.
araştırma yaptığımda bu tarz devre için yön değiştirme yapmadan önce akımı başka bir mosfetle kesip o şekilde yapmam gerektiğini gördüm.
konu hakkında tavsiyeniz nedir. motor hız kontrolü yapmayacağım.

Alttaki devre ile gate bacağı gerilimini düşürmeye çalışılmış bu devrenin uygulamasını yapacağım mevcut devrede küçük değişiklikle uygulayacağım. çizim için fikriniz nedir.



ahmet_zxc

motordan enerjiyi kestiğin anda motor durana kadar jeneratöre dönüşür ve
verdiğin alternansın ters alternansında motor durana kadar sana geri enerji verir.

bu enerjiyi ya sönümlemelisin, ya da motor durana kadar bekleyip(ölü zaman) sonra diğer yönde enerji vermelisin.

alttaki devrede de buna yönelik bir çözüm yok.

aRci

Alıntı yapılan: ahmet_zxc - 30 Eylül 2024, 21:35:59motordan enerjiyi kestiğin anda motor durana kadar jeneratöre dönüşür ve
verdiğin alternansın ters alternansında motor durana kadar sana geri enerji verir.

bu enerjiyi ya sönümlemelisin, ya da motor durana kadar bekleyip(ölü zaman) sonra diğer yönde enerji vermelisin.

alttaki devrede de buna yönelik bir çözüm yok.
Merhaba ters yönlü hareket için bekleme süresini ekleye bilirim 5sn fazlasıyla yeterli olacaktır motorun hareketini durması için.
Alttaki devrede ise gate voltajinin 18vvden fazla olmaması için ilave direnç ve zener eklenmiş devreyi kurdum ve test ettiğimde mosfetler artık 12v de çalıştırmıyor ancak 24v ile devreyi beslerseniz o zaman çıkış alabiliyorsun. Elimde 24v motor olmadığından deneme yapamadım ölçü aleti ile yaptığım kontrolde
12v ile beslersen cikisda voltaj olmazken 24v ile beslersen cikisda voltaj gözükmekte

Misfeti aslında role kontakları yapışma sondan dolayı mosfetli h-bridge yapmak istedim ama sıkıntısı bitmiyor

Role kontağı yapışma problemine çözüm olarak acaba bir mosfetle besleme kesip sonra rolenin kontagini değiştirip sonra gene mosfetle enerjiyi açsam hatta pwm ile hızını yavasdan yukselterek role kontak ömrüne faydası olurmu sizce

Serk@n77

#11
Alıntı yapılan: ete - 27 Eylül 2024, 09:05:26Böyle bir devre tasarlarken Mosfetlerin ne kadar belalı olabileceklerini akıldan çıkartmamak gerekiyor. Uygun olmayan H-Köprü devrelerinde mosfet çakışması yaşandığında anında mosfetler çöp olacaktır. Buna dikkat etmek gerekiyor.
Diğer bir konu da Mosfet Gate'lerinin bir kondansatör gibi davrandıklarını unutmamak gerekiyor. Malum kondansatör belirli bir akım ve voltajla şarj edildiği gibi kondansatörü deşarj etmek için yine bir tertibata ihtiyacın olduğunu unutma. Devrendeki HIGH side tarafındaki mosfetin 10K direnç üzerinden yeterince deşarj edilmesi bence pek mümkün değil gibi.
Bu durumda sen kapatma emrini versende o mosfet tam kapanmayacak ve diğer tarafı açtığında mosfet çakışması kaçınılmaz olacaktır. İşte bu tür sorunların giderilmesi için mosfet sürücü entegreleri geliştirilmiştir. Bir nevi Push-Pull olarak mosfeti sürerler. Açarken hızlı şarj ve kapatırkende hızlı deşarj yaparak çakıışmayı engellerler. Geriye mosfetlerin sürülürken araya yeterli ölü zamanın koyulması kalıyor.
Her bir mosfetin Açılma (Turn_on) ve kapanma (TUrn-Off) zamanı vardır. Bu sürelere özellikle dikkat edip açma kapama ve yön değiştirme işlemlerinde gereken ölü zamanın (Dead time) aralıkta verilmesi gerekir. Yoksa biri kapanırken henüz kapanmadan diğerini açmış olursunki bu durumda mosfet çakışması meydana gelirki hiç istenmeyen bir durumdur bu.
Söylediklerim bir amatörün tecrübelere dayanan sözleridir. Anlam çıkarmak zana kalıyor.

Ete

Hocam 10K yı kaç ohm'a düşürmemi tavsiye edersiniz? Bu devrede sanırım dönüşler arasına uygun bir süre koyarsam sorun çıkmayacak gibi. Veya en azından deneyip tecrübe kazanmak istiyorum.

PWM frekansı konusunda bir tavsiyeniz olur mu?

Bir de PWM.i her iki mosfetten eş zamanlı mı vermeliyim yoksa mosfetin birisi açıp (kapalı hâle getirip) diğerinden mi vermeliyim?

ete

Anlaşılan mosfet sürücü kullanmadan yapayım diyorsun. Bu durumda 10K direncin değeri ni en azından yarıya düşürmende fayda var. Mosfet gate leri ortalama 100-150 ohm dirençleri sever. Ama oraya bu değerde bir direnç koyamazsın devrenin yapısı gereği kaldırmaz.Belkide biraz deneme yapıp 1K ya kadar o direnci düşürebilirsin.
MOsfetleri sürerken araya bir ölü zaman gecikmesi koymanda yarar var. Zamanın miktarı konusunu deneyerek bulman gerekecek.
Motorlar için en uygun PWM frekansı 5Khz - 20Khz aralığıdır. Bazı arkadaşlar daha yüksek frekanslarda çalışmışlar ve daha uygun olduğu söylüyorlar ben 20Khz tercih ederim.
PWM nin eş zamanlı verilmesi bence zararlı. Kime lazım ise diğeri kapalı olmalı lazım olana verilmeli. Burada temel fikir alt mosfetlerin aynı anda sürülü olmamasını sağlamaktır. Aynı şey üst mosfetler içinde geçerli elbette.

Ete

aRci

Merhaba alttaki devreyi uyguladım. elimde 12v silecek motoru ile test ediyorum motor boşta 2.5amper çekiyor. Kontrolcü olarak 16f1827 kullandım donınmsal pwm ile önce röle cekip ardından duty arttırarak motoru calıştırıyorum durarkende duty i yavaşca sıfıra çekip ardından röleyi kapatıyorum bu şekilde röle kontaklarını korumaya çalışacağım.
Her nasılsa pwm çalıştrımayı başardım benim için oldukca karmaşık geldi uyguladığım pwm hesabını hesaplamak için yardımcı olurmusunuz.

Devre başka bir devreden tetik alıyor. kart üzerinde bir potans var ondan akım sınırlama değeri alıyor başka bir pindende motor akımını ölçüyor. set değerden fazla ise portb.0 ı high yapıyor.

    ASM
    __config _CONFIG1, _FOSC_INTOSC & _WDTE_OFF & _PWRTE_ON & _MCLRE_OFF & _CPD_ON & _BOREN_OFF & _CLKOUTEN_OFF & _IESO_ON & _FCMEN_OFF    
    __config _CONFIG2, _WRT_OFF & _PLLEN_ON & _LVP_OFF & _STVREN_OFF 
    endasm

    OSCCON = %11110000      '8 mhz internal clock, PLL on     
    ANSELA = %00000011      ' AN on PortA.0 analog
    ANSELB = %00000000      ' Digital inputs
    
    OPTION_REG.7=0
    'WPUA   = %11000000
    'WPUB   = %00110010
    
    DEFINE OSC 32
    DEFINE ADC_BITS 10     ' 10 bit A/D Conversion
    DEFINE ADC_CLOCK 1
    DEFINE ADC_SAMPLEUS 10 ' 5 uS A/D sample time

'///////////////////////////Analoglar///////////////////////////////      
    Symbol GODONE    = ADCON0.1  'Dönüştürme Durum Biti Devam ediyor = 1
    Symbol ADONE     = ADCON0.0  'Dönüştürme Modülü Etkin = 1
    Symbol ADIF      = PIR1.6      'ADC okuma bitti kesme bayrağı 
    ADCON1 = 128
    
    'RCSTA = $90   ' Enable serial port & continuous receive
    'TXSTA = $24   ' Enable transmit, BRGH = 1
    'SPBRG = 64    ' 9600 Baud @ 32MHz, 0,04%
    'SPBRGH = 3
    'BAUDCON.3 = 1 ' Enable 16 bit baudrate generator

    Symbol GIE       = INTCON.7    'genel kesmeler aktif                         
    Symbol PEIE      = INTCON.6    'Çevresel kesmeler aktif
    Symbol RCIE      = PIE1.5      'EUSART alma kesmesi              
    Symbol RCIF      = PIR1.5      'EUsart Kesme Bayrağı               
    Symbol SPEN      = RCSTA.7    'Seri Bağlantı Noktası Etkin = 1
    Symbol CREN      = RCSTA.4    'Sürekli veri alma etkin = 1
    Symbol OERR      = RCSTA.1    'Sürekli veri alma etkin = 1
    
    PEIE             = 0  'Çevresel Kesmeler Aktif                                                                                
    SPEN             = 0  'Seri Bağlantı Noktası Etkin = 1
    CREN             = 0  'Sürekli veri alma etkin = 1
    CREN             = 0

    RCIE             = 0  'EUsart Alma Kesmesi Aktif  = 1

    GIE              = 0  'Tüm kesmeler açık
    'ON INTERRUPT GOTO KESME 'komut satırını ekle programa (BASLA satırından bir evvele koyabilirsin)

    Porta = 0 
    Portb = 0 
    TRISA = 3   
    TRISB = %11000000
    WPUA  = 0
    WPUB  = %11000000
    
    MDCON=0                'modülator çıkışı iptal
    MDSRC=0                'modülasyon kaynak seçimi                 pwm sayfa 205 ten başlıyor
    MDCARH=0               'modülasyon yüksek biti
    MDCARL=0               'modülasyon düşük biti
    CCP1CON.2=1      'pwm moduna ve tek pin çıkışına ayarlandı
    CCP1CON.3=1      'pwm moduna ve tek pin çıkışına ayarlandı
    CCPTMRS=0        'tüm ccp lere tmr2  seçildi
    CCPR1L=0 
    CCPR1H=0
    T2CON=%00000110        'Prescaller / 16, Timer2 ON  'ccp1 için prescaller ayarlandı ve t2 devreye alındı
    PR2=249
    
    Symbol YAkm    = Portb.0
    'Portb.3 Pwm Cıkıs
    Symbol Rly1    = Portb.4
    Symbol Rly2    = Portb.5
    Symbol Ttk1    = Portb.6
    Symbol Ttk2    = portb.7
    Deger var word
    MtrAkm var word
    SetAkm var word
    
    CCPR1L=0 
    CCPR1H=0 
basla:
    if Ttk1 = 0 and Rly1 = 0 then 
        if CCPR1L != 0 then gosub Durdur
        high Rly1:Low Rly2
        pause 100
        for CCPR1L = 1 to 250
            pause 5
        next CCPR1L
    endif 
    if Ttk2 = 0 and Rly2 = 0 then 
        if CCPR1L != 0 then gosub Durdur
        Low Rly1:High Rly2
        pause 100
        for CCPR1L = 1 to 250
            pause 5
        next CCPR1L
    endif
    Adcon0 = 0  
    ADIF   = 0
    ADONE  = 1  'Dönüştürme Modülü Etkin = 1
    GODONE = 1
    while GODONE = 1
    wend
    ADONE  = 0
    MtrAkm = (ADRESh*256) + ADRESL
    
    Adcon0 = 4
    ADIF   = 0
    ADONE  = 1  'Dönüştürme Modülü Etkin = 1
    GODONE = 1
    while GODONE = 1
    wend
    ADONE  = 0
    SetAkm = (ADRESh*256) + ADRESL
    if MtrAkm > SetAkm then
       high YAkm
    else
       low Yakm
    endif
    pause 50
    if Ttk1 = 1 and Ttk2 = 1 and CCPR1L != 0 then Gosub DurDur           
goto basla
'===============================================================================
'===============================================================================
DurTmp var byte
DurDur:
    DurTmp = CCPR1L
    for CCPR1L = DurTmp to 1 Step -1
        pause 2
    next CCPR1L
    pause 100
    low Rly1:Low Rly2
    pause 100
return


ahmet_zxc

Alıntı yapılan: aRci - 01 Ekim 2024, 00:17:48Merhaba ters yönlü hareket için bekleme süresini ekleye bilirim 5sn fazlasıyla yeterli olacaktır motorun hareketini durması için.
Alttaki devrede ise gate voltajinin 18vvden fazla olmaması için ilave direnç ve zener eklenmiş devreyi kurdum ve test ettiğimde mosfetler artık 12v de çalıştırmıyor ancak 24v ile devreyi beslerseniz o zaman çıkış alabiliyorsun. Elimde 24v motor olmadığından deneme yapamadım ölçü aleti ile yaptığım kontrolde
12v ile beslersen cikisda voltaj olmazken 24v ile beslersen cikisda voltaj gözükmekte

Misfeti aslında role kontakları yapışma sondan dolayı mosfetli h-bridge yapmak istedim ama sıkıntısı bitmiyor

Role kontağı yapışma problemine çözüm olarak acaba bir mosfetle besleme kesip sonra rolenin kontagini değiştirip sonra gene mosfetle enerjiyi açsam hatta pwm ile hızını yavasdan yukselterek role kontak ömrüne faydası olurmu sizce
roleler elbette bir çözüm olmakla birlikte bana motor sürmede çok doğru tercih gibi gelmiyorlar. belkide ben yanılıyorumdur.
yaptığın yöntemle roleleri koruyabilirsin, makul mantıklı.
bizde ac de çalışan cihazlarda zero cross detect yapıp zero noktasında roleleri açıp kapıyoruz.



Powered by EzPortal