Mosfet sürememe problemi

Başlatan sdonmez, 24 Eylül 2012, 20:13:27

sdonmez

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 :(

z

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.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

sdonmez

#32
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

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.




sdonmez

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ı.

rodos

Şemanızın son halini yükleme şansınız var mı acaba

Mr.Thinking

#35
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.
ego=1/Knowledge

timpati

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ş.
why mr. anderson, why ?