Picproje Elektronik Sitesi

ENDÜSTRiYEL OTOMASYON => Motorlar & Sürücüler => Konuyu başlatan: sdonmez - 24 Eylül 2012, 20:13:27

Başlık: Mosfet sürememe problemi
Gönderen: sdonmez - 24 Eylül 2012, 20:13:27
Merhaba,

Bldc motor sürmek için aşağıdaki devreyi kurdum.
(http://s17.postimg.cc/kx4olyfhr/Ekran_Al_nt_s.jpg)
İlgili high-side mosfetleri sürekli "ON" pozisyonunda tutarken, ilgili low-side mosfet'e PWM uyguluyorum. Osiloskop olmadığı için sinyalleri izleyemiyorum fakat multimetre ile girişleri kontrol etmeye çalıştım.

Örneğin Q1: ON, Q5: Pwm uygulayacağım durumda devre şöyle çalışıyor:
- Duty cycle değeri 0 iken U,V,W uçlarında 20V okuyorum.
- U2 IR2101'in Vs (U) ve H0 (H1 çıkışı) pinlerinde de 20 var.
- Q5'e uygulanan duty cycle'ı artırmaya başladıkça Vs pini düşmeye, H0 yükselmeye başlıyor.
Vs=20V,  H0: 25V civarına geliyor. Ve bir anda H1, H2, H3, U,V,W uçları 0V'a düşüyor !!

Kısa devre yok. Enerjiyi kesip tekrar verdiğimde olay tekrarlanıyor. Pwm frekansım 20kHz.
Tecrübelerinizi paylaşırsanız memnun olurum
   
Başlık: Ynt: Mosfet sürememe problemi
Gönderen: pisayisi - 24 Eylül 2012, 21:08:34
Pwm yi üst koldaki fetlere uygulamanız lazım, q1 pwm ile sürülürken q5 on konumunda olmalı. Üst koldaki fetler pwm ile sürülmezse fet sürücülerin bootstrap devresi sağlıklı çalışmayacağından fetler sürülemeyecek...
Başlık: Ynt: Mosfet sürememe problemi
Gönderen: sdonmez - 24 Eylül 2012, 21:10:47
Az önce high ve low side mosfetleri aynı anda pwm ile sürmeyi denedim. Yine olmadı.
Başlık: Ynt: Mosfet sürememe problemi
Gönderen: mehmet - 25 Eylül 2012, 02:32:34
Bu motorun teoride nasıl çalıştığını anlayabildiniz mi?
Öncelikle  buna cevap vermeniz gerekli.

Üç fazlı asenkron motorları incelemenizi tavsiye
ederim. -+ voltaj vermeniz gerekli, devreniz de ona göre
ama üst mosfetleri + da tuttuğunuzu söylüyorsunuz.

Kutuplaşma sırasının tablosunu çıkarıp buna göre
mosfetleri sürmeniz gerekmektedir...
Üç faz için U, V, W uçlarına 120 derecelik
açı aralıklarıyla sürmeniz gerekli...
U = 1, V = 0, W =0, 120 derece bekle
U = 0, V = 1, W = 0, 120 derece bekle
U = 0, V = 0, W = 1, 120 derece bekle
gibi...(yön değişimi için de örnek V ile W nin yerini değiştiriniz)
(Motor uçlarında olması gerekli lojik değerleri yazdım
siz sürücü ve mcu daki gerekli değişiklikleri buna göre yapacaksınız)

Pwmin frekansı ile deviri, duty cycle ile de gücü(momenti)
kontrol edebilirisiniz. Tüm mosfetlere uygulanacak olan pwm
aynı olmalıdır...

http://www.freescale.com/webapp/sps/site/overview.jsp?code=784_LPBBBLDC8BIT (http://www.freescale.com/webapp/sps/site/overview.jsp?code=784_LPBBBLDC8BIT)
http://en.nanotec.com/steppermotor_animation.html (http://en.nanotec.com/steppermotor_animation.html)

Yanlışım varsa düzelteyim hatalarımı...

Saygılar...

Başlık: Ynt: Mosfet sürememe problemi
Gönderen: anladinmi - 25 Eylül 2012, 11:27:53
Alıntı yapılan: sdonmez - 24 Eylül 2012, 21:10:47
İlgili high-side mosfetleri sürekli "ON" pozisyonunda tutarken, ilgili low-side mosfet'e PWM uyguluyorum.


Alıntı yapılan: sdonmez - 24 Eylül 2012, 21:10:47
Az önce high ve low side mosfetleri aynı anda pwm ile sürmeyi denedim. Yine olmadı.

Abicim, sen birak bu tehlikeli isleri, yoksa çikabilecek olasi bir yangina karsi önlemini al.

Hem yukardaki, hem asagidaki mosfet geçirirse nolur ?
-----> Kisa devre.
Ya mosfet yanar, ya PCB, ya sürücü mosfet'i süremez.
Mos köprü sürereken adamlar deadband bile koyuyorlar.

Tavsiyem BLDC 'den önce bir step motor sürmendir.
Kal saglicakla.

Not : mesajim biraz agresif görünebilir. Hele ki ilk measj için.
Kimse kirilmasin alinmasin lutfen.



Başlık: Ynt: Mosfet sürememe problemi
Gönderen: sdonmez - 26 Eylül 2012, 23:02:28
Alıntı yapılan: anladinmi - 25 Eylül 2012, 11:27:53
Hem yukardaki, hem asagidaki mosfet geçirirse nolur ?

Cümleyi okuyup da anlamaya çalışmadan yorum yapma! Aynı anda aynı koldaki mosfetleri açmaya çalıştığımı mı anladın yazdığım cümleden?
Patlama, yanma vs yok !


Alıntı yapılan: mehmet - 25 Eylül 2012, 02:32:34
Bu motorun teoride nasıl çalıştığını anlayabildiniz mi?
Öncelikle  buna cevap vermeniz gerekli.

Üç fazlı asenkron motorları incelemenizi tavsiye
ederim. -+ voltaj vermeniz gerekli, devreniz de ona göre
ama üst mosfetleri + da tuttuğunuzu söylüyorsunuz.

Kutuplaşma sırasının tablosunu çıkarıp buna göre
mosfetleri sürmeniz gerekmektedir...
Üç faz için U, V, W uçlarına 120 derecelik
açı aralıklarıyla sürmeniz gerekli...
U = 1, V = 0, W =0, 120 derece bekle
U = 0, V = 1, W = 0, 120 derece bekle
U = 0, V = 0, W = 1, 120 derece bekle
gibi...(yön değişimi için de örnek V ile W nin yerini değiştiriniz)
(Motor uçlarında olması gerekli lojik değerleri yazdım
siz sürücü ve mcu daki gerekli değişiklikleri buna göre yapacaksınız)

Pwmin frekansı ile deviri, duty cycle ile de gücü(momenti)
kontrol edebilirisiniz. Tüm mosfetlere uygulanacak olan pwm
aynı olmalıdır...

Motorun nasıl çalıştığı konusunda bildiklerim bilmediklerimden daha fazladır.   Aşagıdaki gibi bir tablom var zaten. Hangi mosfet'in pwm, hangi mosfet'in direkt sürüleceğini belirliyorum.

unsigned long StateTableRev[] =
{
0x0000,     // No state
0x1002,     // 3L = PWM, 1H = ON
0x0420,     // 2L = PWM, 3H = ON 
0x0402,     // 2L = PWM, 1H = ON
0x0108,     // 1L = PWM, 2H = ON
0x1008,     // 3L = PWM, 2H = ON
0x0120,     // 1L = PWM, 3H = ON 
0x0000,     // No state
};

Sorduğum soru şu: Mosfetleri neden iletime geçiremiyorum?
Başlık: Ynt: Mosfet sürememe problemi
Gönderen: pisayisi - 27 Eylül 2012, 00:38:22
Durum tablona göre pwm yine üst koldaki fetlere uygulanmamakla birlikte bu tablonun durum geçişlerinde de sorun var gibi duruyor.Eğer fazların enerjilenme sırası yukarıda verildiği gibi ise, basit bir kural; bir durumdan diğerine geçerken L veya H değişkenlerinden herhangi, birtanesi değişmez olmalı. Tablon bu basit kuralı gerçeklemiyor...
Başlık: Ynt: Mosfet sürememe problemi
Gönderen: sdonmez - 08 Ekim 2012, 11:44:37
Merhaba,

Mosfet sürememe problemi çözüldü. Donanımsal problemler varmış. Artık motoru ileri-geri sürebiliyorum.
High-side mosfetleri ON/OFF, low-side mosfetleri PWM ile sürüyorum.
Şimdiki problemse şu: Çoğunlukla motor ilk hareketi almıyor, dışarıdan elimle motora hareket verdikten sonra dönüşünde ve torkunda problem yok.
Tahminimce bootstrap şarjından kaynaklanan bir durum var.
İncelediğim örneklerde şuna benzer ifade kullanılmış: "To insure that the high-side driver boot capacitors are fully charged prior to turning on, a programmable bootstrap refresh pulse is activated when VDD is first applied. When active, the refresh pulse turns on all three of the low-side bridge FETs while holding off the three high-side bridge FETs to charge the high-side boot capacitors. After the refresh pulse clears, normal operation begins." [High side boot kapasitörlerini şarj etmek için, alt taraftakileri açıp üst taraftakileri kapalı pozisyona getirmek gerekli demiş kısaca...]
Denedim, ilk başka her üç low-side mosfeti de ON pozisyonuna aldım (Bu arada frenleme de yapmış oluyor). Fakat ilk hareketlerde iyileşme sağlamadı.
Problem hakkında yorumlarınızı bekliyorum.

İyi çalışmalar
Başlık: Ynt: Mosfet sürememe problemi
Gönderen: z - 08 Ekim 2012, 12:22:38
Motora ivmeli bir hareket yaptırmıyor olabilirsin. Devir sayısını sıfırdan itibaren eğimli olarak max değere çıkarttmayı dene.
Başlık: Ynt: Mosfet sürememe problemi
Gönderen: sdonmez - 08 Ekim 2012, 12:29:26
Denedim.
Low-side mosfetleri ON pozisyonuna aldıktan bir süre sonra sürme moduna alıyorum. Pwm duty cycle değerini 0'dan maksimum değere kadar arttırıyorum. Motor çok nadiren kalkıyor. İlk başta, motor ya da devreden çok çok tiz bir ses geliyor. Duty cycle belli bir yere gelince ses kesiliyor.

Osiloskop da yok, sinyalleri izleyemiyorum.

Bootstrap kapasitörü olarak farklı değerler de denedim. Şu anda 10uf takılı. 



Başlık: Ynt: Mosfet sürememe problemi
Gönderen: pisayisi - 08 Ekim 2012, 12:55:47
Alıntı yapılan: sdonmez - 08 Ekim 2012, 12:29:26
Denedim.
Low-side mosfetleri ON pozisyonuna aldıktan bir süre sonra sürme moduna alıyorum. Pwm duty cycle değerini 0'dan maksimum değere kadar arttırıyorum. Motor çok nadiren kalkıyor. İlk başta, motor ya da devreden çok çok tiz bir ses geliyor. Duty cycle belli bir yere gelince ses kesiliyor.

Osiloskop da yok, sinyalleri izleyemiyorum.

Bootstrap kapasitörü olarak farklı değerler de denedim. Şu anda 10uf takılı.

Duty değeri sıfırdan yüzde yüze kadar değiştiğinde motor nadiren kalkıyor demişsiniz; Ara bir duty değerinde motor kalkış yapıyor mu yoksa yüzde yüze kadar hep stop ta mı kalıyor...
Başlık: Ynt: Mosfet sürememe problemi
Gönderen: sdonmez - 08 Ekim 2012, 13:24:47
Hep stopta kalıyor.

mesaj birleştirme:: 08 Ekim 2012, 21:36:18

Önerisi olan var mı?
Başlık: Ynt: Mosfet sürememe problemi
Gönderen: sdonmez - 10 Ekim 2012, 15:33:50
Alıntı yapılan: pisayisi - 08 Ekim 2012, 12:55:47
Duty değeri sıfırdan yüzde yüze kadar değiştiğinde motor nadiren kalkıyor demişsiniz; Ara bir duty değerinde motor kalkış yapıyor mu yoksa yüzde yüze kadar hep stop ta mı kalıyor...

Ir2101'de bootstrap kapasitörünün önünde takılan diyot kaynaklı problem olabilir mi? Yeterince hızlı şarj mı sağlayamıyorum? UF4007 (yanlış hatırlamıyorsam) ile deniyordum, 1N4148 taktım, değişiklik olmadı.
Başlık: Ynt: Mosfet sürememe problemi
Gönderen: pisayisi - 10 Ekim 2012, 19:38:49
uf4007 de normalde 1n4148 den daha iyi performans vermesi lazım. Schotk tipi diotlar kullanılabilir, fetleri hızlı deşarj yapmak için R1...R6 dirençlerine paralel yönde ters kutuplanmış 1n4148 bağlamayı deneyin(diyotun artı kutbu fetin gate ucunda olcak). Bootstrap kapasitesi olarak ESR si düşük seramik yada tantal tipi kutupsuz kondansatörler lede deneme yapılabilir...
Başlık: Ynt: Mosfet sürememe problemi
Gönderen: sdonmez - 11 Ekim 2012, 23:36:20
Gate direncine ters diyot bağlamanın faydası olmadı. Farklı kapasitörler denedim, olmadı. Devre şu anda board üzerine kurulu. Kablolar vs uzun... Bu tür bir etki olabilir mi?
Başlık: Ynt: Mosfet sürememe problemi
Gönderen: z - 11 Ekim 2012, 23:46:41
Alıntı yapılan: sdonmez - 24 Eylül 2012, 20:13:27
İlgili high-side mosfetleri sürekli "ON" pozisyonunda tutarken, ilgili low-side mosfet'e PWM uyguluyorum. Osiloskop olmadığı için sinyalleri izleyemiyorum fakat multimetre ile girişleri kontrol etmeye çalıştım.

Tam tersini yapacaksın. Alttaki mosfetleri on yapıp üstteki mosfetlere pwm uygulayacaksın. Tabiki cakisma olmayacak. Ust mosu iletime sokmadan once alttakini off yapacaksin. usttekini off yaptiginda da alttakini on yapacaksin.

Başlık: Ynt: Mosfet sürememe problemi
Gönderen: sdonmez - 12 Ekim 2012, 00:07:29
Tam tersini de deniyorum, olmuyor.
Başlık: Ynt: Mosfet sürememe problemi
Gönderen: mehmet - 12 Ekim 2012, 00:32:38
http://tr.nanotec.com/adim_motoru_animasyonu.html (http://tr.nanotec.com/adim_motoru_animasyonu.html)

Değişik motorlar için animasyon, adım değerleri ve sürücü devresini
göstermişler...

Saygılar...
Başlık: Ynt: Mosfet sürememe problemi
Gönderen: anladinmi - 12 Ekim 2012, 01:26:12
bu durumda osiloskop olmamasi hatayi bulmada isi güçlendiriyor.
Problemi analiz edersek : 2 ana ihtimal var :
1) Hardware sorunu :
- MOSFET sürme devresinde Ir2101'ler islevini yerine getirmiyor
        - Kapasite, snubber devresi
        -  diyot
- MOSFET'te problem
       - Mosfetin biri uçmus.
       - bir bacagi iyi baglanmamis
- Motorda problem
      - Bir ESC ile problem var mi yok mu bulunabilir.

2) Mantiksal sorun :
- nihayetinde mantiksal sinyaller istenilen gibi degildir :
      - Lojik analyser tarzi bir cihazla bulunabilir.
      - debug print ile çikisa bakmak
- Timing sorunu:
      - Ara ara bir yerde yazilim belli bir süre duruyorsa. (unuutlan print)

Bu motoru döndürmek için ne tür feedback uygulaniyor ? uygulaniyormu ?


StateTableRev tablosu her ne kadarda bir dönüyor ? geçisler neye göre oluyor ?
O StateTableRev tablosunda 2 kol FET'in durumu gözüküyor, 3.kol ne durumda oluyor ? ON ? OFF?
Başlık: Ynt: Mosfet sürememe problemi
Gönderen: sdonmez - 12 Ekim 2012, 09:01:11
Alıntı yapılan: anladinmi - 12 Ekim 2012, 01:26:12
- MOSFET'te problem
       - Mosfetin biri uçmus.
       - bir bacagi iyi baglanmamis
- Motorda problem
      - Bir ESC ile problem var mi yok mu bulunabilir.
Mosfet'te problem olsa, motora ilk hareketi elimle verdiğimde de çalışmaması gerekir. İlk hareketten sonrasında sorun yok.

Alıntı yapılan: anladinmi - 12 Ekim 2012, 01:26:12
2) Mantiksal sorun :
- nihayetinde mantiksal sinyaller istenilen gibi değildir :
      - Lojik analyser tarzi bir cihazla bulunabilir.
      - debug print ile çikisa bakmak
- Timing sorunu:
      - Ara ara bir yerde yazilim belli bir süre duruyorsa. (unuutlan print)

Bu motoru döndürmek için ne tür feedback uygulaniyor ? uygulaniyormu ?
StateTableRev tablosu her ne kadarda bir dönüyor ? geçisler neye göre oluyor ?
O StateTableRev tablosunda 2 kol FET'in durumu gözüküyor, 3.kol ne durumda oluyor ? ON ? OFF?

Hall sensor geçişlerinde statetable'a göre hangi kolun enerjilendirileceği belli. 3. kol OFF durumunda.
Başlık: Ynt: Mosfet sürememe problemi
Gönderen: iyildirim - 12 Ekim 2012, 14:54:09
State table  hall sensörden okunan değerlere göre sıralı değilde komutasyon sırasına göre ise hatalı..

Başlık: Ynt: Mosfet sürememe problemi
Gönderen: sdonmez - 12 Ekim 2012, 21:02:18
Alıntı yapılan: iyildirim - 12 Ekim 2012, 14:54:09
State table  hall sensörden okunan değerlere göre sıralı değilde komutasyon sırasına göre ise hatalı..

O tablo ilk denemelerden kalma... Tabloyu bu şekilde güncellemiştim. Hall'dan gelen sinyal sıralamasına göre...

unsigned long StateTableRev[] =
{
0x0000,     // 0 - No state
0x0210,     // L3 = ON, H1 = PWM
0x2004,     // L2 = ON, H3 = PWM
0x0204,     // L2 = ON, H1 = PWM
0x0801,     // L1 = ON, H2 = PWM
0x0810,     // L3 = ON, H2 = PWM
0x2001,     // L1 = ON, H3 = PWM
0x0000,     // No state
};
Başlık: Ynt: Mosfet sürememe problemi
Gönderen: iyildirim - 12 Ekim 2012, 22:21:49
Hall den gelen sinyalleri bilemediğimiz için bu sıralamanın bizim için pek anlamı yok. 

Yok hall sensörlerden gelen sinyaller de bu şekilde sıralı ise yani komutasyon sırası bu şekilde ise yine hatalı diyeceğim.

2110 kullanan sensörsüz BLDC sürücü bende yapmıştım.  Bu tip sorunların hiç biri ile karşılaşmamıştım. Donanım ile ilgili hemen herşey söylendiğine, ve son olarak üst moslara PWM uygulandığı halde hala sorun varsa sorunun kontrol kısmında,  yazılımda olduğu düşünüyorum.

Başlık: Ynt: Mosfet sürememe problemi
Gönderen: sdonmez - 12 Ekim 2012, 22:55:27
Benim de anlayamadığım şu: Yazılımda sorun olsa, ilk hareket elle verildikten sonra da sorun yaşanmaz mı? Hiç bir problem göremiyorum. İleri ve geri yönlerde çok stabil ve düşük akım çekerek dönüyor.
Başlık: Ynt: Mosfet sürememe problemi
Gönderen: iyildirim - 12 Ekim 2012, 23:49:30
Donanım tamam, yazılımda da sorun yok ise sorun nerede ?

Aklıma son olarak beslemenin kötü olabileceği, ilk kalkış anında çöktüğü gibi şeyler geliyor. Belki işlemci ilk kalkış anında sürekli BOR dan reset yiyordur.
Motor nasıl bir şey. ?

Başlık: Ynt: Mosfet sürememe problemi
Gönderen: anladinmi - 13 Ekim 2012, 00:26:28
Bence tablo biraz yanlis olmus. Bana kalsa söyle, benim kollar sirali gidiyor, bir alt bi üst alternansli :
// VL = ON,       UH = PWM   
//  WH = ON,     VL= PWM
// UL = ON,     WH = PWM
//  VH  = ON,     UL = PWM
//  WL = ON,     VH = PWM
//  UH = ON,     WL = PWM

yani senin yazinla :
// L3 = ON,       H1 = PWM   
//  H2 = ON,     L3= PWM
// L1 = ON,     H2 = PWM
//  H3  = ON,     L1 = PWM
//  L2 = ON,     H3 = PWM
//  H1 = ON,     L2 = PWM

Senin tablonda anlamadigim basta ve sonda nostate; nedir o ? Hepsi mi OFF ?
Kollari sira ile gitmeme sebebi nedir ?
Pardon ya, hall sensöre göre veriyormussun. kusura bakma.
Başlık: Ynt: Mosfet sürememe problemi
Gönderen: sdonmez - 13 Ekim 2012, 00:48:47
Yazılıma hızlanma ve yavaşlama rampası ekledim.
Referansı verip ardından CW yönü aktifleştirirsem motor kalkamıyor ama rampaya bağlı olarak motordan çok tiz bir ses artmaya başlıyor.
Tam bu anda, CW sinyali kesersem motordan gelen tiz ses rampalı olarak azalmaya başlıyor.
Eğer rampa 0'a düşmeden CCW sinyali verirsem motor ters yönde kalkabiliyor. (işlem tam tersi şekilde de işliyor.)



mesaj birleştirme:: 13 Ekim 2012, 00:52:22

Bazen de, rampa 0'a çok yaklaştığında ters yön sinyalini verirsem motor sanki hareket etmeye başlayacak gibi kımıldıyor ama kalkamıyor.
Yani sanki birşeyler şarj oluyor ve şarj bitmeden (sönümlenmeden) diğer yön seçilirse motor rahatça kalkıyor.
Başlık: Ynt: Mosfet sürememe problemi
Gönderen: iyildirim - 13 Ekim 2012, 01:10:39
Alıntı yapılan: sdonmez - 13 Ekim 2012, 00:48:47
Yazılıma hızlanma ve yavaşlama rampası ekledim.
Referansı verip ardından CW yönü aktifleştirirsem motor kalkamıyor ama rampaya bağlı olarak motordan çok tiz bir ses artmaya başlıyor.
Tam bu anda, CW sinyali kesersem motordan gelen tiz ses rampalı olarak azalmaya başlıyor.
Eğer rampa 0'a düşmeden CCW sinyali verirsem motor ters yönde kalkabiliyor. (işlem tam tersi şekilde de işliyor.)

Rampa var ama motor kalkamıyor ne demek.?  Rampa motoru hızlandırma için kullandığımız bir şey. Motor hiç hareket etmiyorsa rampa diye birşey de yoktur.

Kod vermekten kaçınıyorsun ama sorunun kodlarda olduğunu düşünüyorum.

Yukarıda yazdıklarından öncelikle motora ilk hareketi verirken hatalı komutasyonla başladığını sanıyorum.

Olması gereken ise sensörler okunup CW veya CCW yönde bir sonraki komutasyona geçip PWM' i başlatıp  arttırmaya çalışmanız. Sensörden kesme geldiğinde bir sonraki anahtarlama adımına geçmeniz. 
Rampa için sadece PWM 'i arttırmak yeterli. Artan gerilim-akım ile motor bir sonraki komutasyon konumuna daha çabuk gelir. kesme daha hızlı oluşur vs. Sizin herhangi bir timer, delay vs. kullanmadan sadece sensörden gelen sinyal ile kesme üretildiğinde anahtarlama yapmanız yeterli..

Eğer güç kaynağınız çökme vs. yapıyorsa ilk anda PWM 'i yeterince yavaş arttırman yeterli..
Başlık: Ynt: Mosfet sürememe problemi
Gönderen: sdonmez - 14 Ekim 2012, 12:12:54
Merhaba,

Tablolarımı daha anlaşılır olması açısından biraz değiştirdim. (tek yön için)
(http://s18.postimg.cc/hpyp9ksyx/Ekran_Al_nt_s.jpg)
Motor uçlarına dışarıdan voltaj uygulamak suretiyle kutup atlatarak bulduğum hall sıralaması resimdeki gibi.
Aynı sıralamayı mosfet sürerek elde etmeye çalıştığım tablolar da dalga şekillerinin üstünde...

Sol taraftaki RWS tablosunu ise, motor kutuplarını bir adım sonrakine gidecek şekilde oluşturdum:

Örneğin Hall=1 ise, 0x0120   1L = PWM, 3H = ON sinyalini uyguluyorum ki Hall=3 gelecek duruma gitsin.

İlk durumdaki hall durumunu okuyorum ve buna göre sonraki adımları sırayla uygulayacak bir kod yazdım. Ama ilk hareketi veremiyorum.

      if (hall_valid & ENABLE & START & DIR_CW & !DIR_CCW)
      {
         DIRECTION = 1;
         new_speed = An_Ref;                 
         OVDCONS = StateTableRev[hall];
      }


Bir yön için kod da yukarıdaki gibi. Buton durumları istediğim konumda ise, pottan okuduğu analog referansı rampalı şekilde duty cycle ayarlanıyor. Hall durumuna göre de tabloda hangi mosfetlerin ne şekilde sürüleceği seçiliyor.

Başlık: Ynt: Mosfet sürememe problemi
Gönderen: iyildirim - 14 Ekim 2012, 14:45:53
Eğer tablondaki mavi sütündaki değerlere göre sıralı komutasyon yapıyorsan sıralaman doğru..

Ama işlemcinin PWM modülünün OVERRIDE registerlerini yanlış anlamışsın sanırım.
OVDCONS = StateTableRev[hall];

Tablo içeriğini OVDCONS registerine yazman ancak OVDCOND registerinde ilgili kanalın karşılığını sıfır yaparsan anlamlı. OVDCOND registerinde ilgili bit 1 kaldığı sürece o kanala PWM basılır. Yani bütün kanallar aynı anda aktif olur. Mos yakmadığın için (ama nedeni güçsüz güç kaynağıda olabilir) ve ilk hareket verildikten sonra motor döndüğü için OVDCOND nin tüm bitleri sıfır yapıyor olmalısın.. Bu durumda da PWM modülü hiç çalışmamış oluyor. Aynı işi PORT registerleri ile de yapabilirdin. 
Bu da motorun ilk anda hareket edememesi gibi şeyleri de açıklıyor. İlk hareketi elle verince dönmesini...

Sanırım datasheet deki ilk örneği kullanmışsın. Dikkat edersen ilk örnekteki şemada aktif kanallarda PWM yok, Aktif darbe süresi boyunca çıkış daima high. İkinci örnekte ki şemada ise aktif darbelerde PWM var.

Tablonu OVDCOND registerine göre düzeltip, anahtarlama yı OVDCOND ile yapmalısın, mosların tamamı aktif high ile sürüldüğünden OVDCONS registerinin içeriğini sıfırlamalısın.
Geri kalan yerlerde anlattığın mantık doğru görünüyor.
Hall oku, CW, CCW yönde tabloda bir ilerle PWM ver.. Duty i yavaş yavaş arttır.. sensör bilgisi değişince tabloda bir ilerle...
Başlık: Ynt: Mosfet sürememe problemi
Gönderen: sdonmez - 14 Ekim 2012, 16:45:11
Register ismi olarak OVDCONS kullandığıma bakmayın lütfen.
Tabloda kullandığım değerlere dikkat edecek olursanız gerçekte hem OVDCONS hem de OVDCOND registerlarına aynı anda müdahele ettiğini göreceksiniz.
Örneğin:

Yukarıdaki tabloda Hall=1 durumu için 0x0120 yazdım.
Bu değeri açarsak 0x0120 = 0b 0000 0001 0010 0000 'a karşılık geliyor. Üst byte değeri OVDCOND, alt byte değeri ise OVDCONS registerlarına yazılıyor.   Yani OVDCOND=0b0000 0001, OVDCONS=0b0010 0000 oluyor. Bu da 1L=PWM, 3H=ON anlamına geliyor.

Bu tanımlamalarda sorun yok diye düşünüyorum. Proteus simülasyonunda istediğim kanalların pwm veya on/off durumda olduklarını görebiliyorum. Multimetre ile baktığımda da sorun yok.

Ama motor dönmüyor :(
Başlık: Ynt: Mosfet sürememe problemi
Gönderen: z - 14 Ekim 2012, 17:03:13
Konuya yazılanların hepsini okumadım. Sorun devam ettiği için öneride bulunacağım.

Fazlardan 2 sini lowa çek, diğer faza ise max PWM ver.  Bir kaç ms sonra low olan fazlaran birisini devreden çıkar. Bu andan sonra kontrol algoritmanı (sensor bilgilerine komutasyon) kullan. HDD ve benzeri cihazların bazılarında motor ilk başlangıçta çok kısa süreliğine bir sağ sol hareketi yapar ardından hızlanır.

Yıllar önce TI'ın bir uygulama notunda start up problemi için tarifime benzer bir uyarıdan bahsediliyordu. Dokumanın adını hatırlamıyorum.
Başlık: Ynt: Mosfet sürememe problemi
Gönderen: sdonmez - 14 Ekim 2012, 17:15:29
Bu akşam denemek üzere aklıma söylediğinize benzer birşey gelmişti. Belki ilk anda rotor pozisyonu ilk tetiklemeyi düzgün alamayacak bir noktada kalmışsa, ilk sinyali vermeden evvel önce motoru sabit bir kutba getirmek gibi...
Örneğin ilk başta Hall=1 okuduk diyelim. Bu anda tabloya göre 0x0120 vermemiz gerekiyor ki Hall=3 olsun. Fakat önce 0x0108 (tabloya göre) uygulayıp motoru Hall=1 noktasına tekrar getirmek gibi...





mesaj birleştirme:: 14 Ekim 2012, 17:38:10

http://www.edaboard.com/thread152788.html (http://www.edaboard.com/thread152788.html)

burada da benzer bir durum konuşulmuş...

mesaj birleştirme:: 15 Ekim 2012, 13:03:28

Alıntı yapılan: sdonmez - 14 Ekim 2012, 17:15:29
Bu akşam denemek üzere aklıma söylediğinize benzer birşey gelmişti. Belki ilk anda rotor pozisyonu ilk tetiklemeyi düzgün alamayacak bir noktada kalmışsa, ilk sinyali vermeden evvel önce motoru sabit bir kutba getirmek gibi...
Örneğin ilk başta Hall=1 okuduk diyelim. Bu anda tabloya göre 0x0120 vermemiz gerekiyor ki Hall=3 olsun. Fakat önce 0x0108 (tabloya göre) uygulayıp motoru Hall=1 noktasına tekrar getirmek gibi...

Bu da işe yaramadı.

mesaj birleştirme:: 15 Ekim 2012, 13:09:19

Dün gece dikkatimi çeken birşey oldu. Motora ilk hareketi elle verdikten sonra sabit bir hızla döndürüken, IR2101'lerin H0 ve L0 çıkış voltajlarını ölçtüm.
Sabit hızla dönerken, her üç IR2101'in H0 ve L0 uçlarında aynı voltajı görmeyi beklerken farklılık vardı. Örneğin, ortalama bir hızda birinci kol H0'da 12V varken, diğer iki kolda ise 18V'a yakındı. Mosfetleri vs yer değiştirdim ama değişiklik olmadı.
L0 uçlarında ise birbirine yakın değerler okudum.



Başlık: Ynt: Mosfet sürememe problemi
Gönderen: sdonmez - 15 Ekim 2012, 21:08:23
Günlerdir kafamı kurcalayan sorun çözüldü. En son mesajımda yazdığım gibi voltaj farklılığının nedeni düzgün çalışmayan bir IR2101 çıktı :( Yenisi ile değiştirdim ve gayet güzel kalkmaya başladı.
Başlık: Ynt: Mosfet sürememe problemi
Gönderen: rodos - 23 Ocak 2018, 16:35:36
Şemanızın son halini yükleme şansınız var mı acaba
Başlık: Ynt: Mosfet sürememe problemi
Gönderen: Mr.Thinking - 07 Ekim 2022, 08:55:25
Alıntı yapılan: sdonmez - 26 Eylül 2012, 23:02:28Cümleyi okuyup da anlamaya çalışmadan yorum yapma! Aynı anda aynı koldaki mosfetleri açmaya çalıştığımı mı anladın yazdığım cümleden?
Patlama, yanma vs yok !

 
Motorun nasıl çalıştığı konusunda bildiklerim bilmediklerimden daha fazladır.   Aşagıdaki gibi bir tablom var zaten. Hangi mosfet'in pwm, hangi mosfet'in direkt sürüleceğini belirliyorum.

unsigned long StateTableRev[] =
{
0x0000,     // No state
0x1002,     // 3L = PWM, 1H = ON
0x0420,     // 2L = PWM, 3H = ON 
0x0402,     // 2L = PWM, 1H = ON
0x0108,     // 1L = PWM, 2H = ON
0x1008,     // 3L = PWM, 2H = ON
0x0120,     // 1L = PWM, 3H = ON 
0x0000,     // No state
};

Sorduğum soru şu: Mosfetleri neden iletime geçiremiyorum?
 
10 yıllık konuyu hortlatacağım.
Sayın @sdonmez; Bu tabloların kullandığınız dilde yazılım içimde nasıl kullanıldığını gösterebilir misiniz? Ben kendi kullandığım basic diline çevirmeye çalışacağım. Ya da bilen bir arkadaşımız gösterebilir mi? Saygılar.
Başlık: Ynt: Mosfet sürememe problemi
Gönderen: timpati - 11 Ekim 2022, 04:13:40
Katkıda bulunmak için yazmıyorum, tartışmaya katılan herkese buradan ayrı ayrı teşekkür etmek için yazıyorum; çok yararlı bir teknik sohbet olmuş.