Merhabalar!
Çalıştığım şirket (Palm Teknoloji) için motor sürücü geliştiriyorum ve bu süreçte yaşadığım sıkıntıları kendi motor sürücünüzü yaparken sizin de yaşamamanız için paylaşmak istedim. Belki sorunlarıma çare bulabilirsiniz. Burayı gelişmelerle meşgul edeceğime eminim.
Öncelikle sürmek istediğim motor 450W gücünde Hall Sensörlü bir brushless motor. FOC ile sessiz güvenli ve güçlü şekilde sürmek için 10s3p Li-ion bir batarya kullanıyorum yani 32-42 V aralığında bir gerilimle süreceğim.
Amacım maaliyeti düşük tutmak ama güçten ödün vermemek. İş arkadaşım Yasin Yağın ile birlikte geliştiriyoruz. Burada şematikleri veya gerberleri paylaşamam maalesef bunlar şirkete ait. Fakat sıkıntılar ve çözüm yolları için tavsiyelerde bulunacağım.
Başlarda DRV8323 kullandık fakat çok hızlı ilerleyemedik çünkü pinleri aşağıda bulunuyor, lehimlerken çok sıkıntı çekiyor ve geliştirme sürecine devam edemiyorduk. SPI ile haberleşerek 1xPWM modunda sürmek istemiştik bu TI entegresini kullanarak. Bu sürücülerin detaylarına şimdilik girmeyeceğim. Ama sistemden komple vazgeçtiğimizi söyleyebilirim. Aşağıda bu sürücünün bir fotoğrafı var.

Şimdi ise https://forum.esk8.news/t/cheap-focer-vesc-compatible-4-12-redesign-tested-and-functional/1510/4 bu sürücüyü temel alarak VESC donanım ve yazılım altyapısından güç almak istiyorum. Şimdi gelişmeleri buraya aktaracağım. Aşağıda bu sürücünün fotoğrafını bulabilirsiniz.

Şu anda gizemli dumanlar çıkıyor sürücüden, sorunu anladığımda burayı güncelleyeceğim. Yorumlarınızı eksik etmeyin!
Yorumlarınızı bekliyoruuz!
Böyle bir konuda bilgilendirilme yapılması beni çok mutlu etti. Bir motor sürücü tasarımında dikkat edilmesi gereken tasarım parametleri nelerdir ve bunlar nasıl elde edilebilir? Ben bunu sormak istiyorum. Electrowareden sevgilerle :)
Motor sürücüler için binlerce açık kaynak tasarım bulmak mümkün. Öncelikle motoru iyi bilmek gerekiyor. DC motorları tek yöne sürmek çok kolayken, iki yöne sürmek için bir H-Bridge tasarımı gerekiyor. Dolayısıyla iş biraz kompleksleşiyor.
BLDC motorlara geçince 3 fazı da sürmek için toplam 6 mosfetli bir güç katı gerekli. Motorun şu anda bulunduğu konumu bilmek için fazlardaki ters-EMK değerlerini bilmek lazım. Motor hareketli olmadığı zaman bu değer bilinmediğinden ilk döndürme sorun olabiliyor. Bunu çözmek için Hall-sensör veya enkoder gibi açı ölçecek bazı elemanlar kullanılıyor BLDC motorlarda. Bunların değerleriyle ilk torku doğru uygulayabiliyorsunuz. Sonrasında isterseniz ters-emk ile de sürebilirsiniz.
Mosfet sayısı çok olunca bunları kontrol ettiğiniz zamanlama problem oluyor. Mosfetlerin açılması kapanması sırasında bir kısa devre oluşturmamak için zamanlamaları kritik. Bunu takip etmek için kendiniz kod yazmak ve çözmek için zaman harcayabilirsiniz. Ama entegreler bu sorunu kolayca çözüyor. Texas Instruments firmasının DRV8202 entegresi örneğin. Bu işi kendi yapıyor ve bunun yanında birçok farklı işi de yapıyor. Hatalardan sistemi arındırıyor. Sür diyorsunuz sürüyor kısacası :D
Bunun bide mikrokontrolör tarafı var, siz BLDC kömütasyonla mı yoksa daha gürültüsüz operasyon için FOC komütasyonla mı sürmek istiyorsunuz? Bunları da işlemciye attığınız yazılımın hesaplamalar yaparak çözmesi lazım ki DRV entegresine doğru komutları versin. Bu konuda da https://vesc-project.com/ sitesindeki VESC TOOL programı ve firmware i çözüm oluyor. Tabii devrenin çalışması için de donanımı uyumlu yapmanız gerek yoksa kodu portlamak için çok uğraşmanız gerekebilir. Bunu kendimiz yapmaya çalıştığımızda çok zorlandığımız olmuştu. Bu VESC sistemine geçince çok hızlandık.
Tüm bu konularda binlerce kaynak mevcut. İlerledikçe güç katı optimizasyonunun önemi, filtreler, ısı atımı vs çeşitli problemleri çözerek daha güçlü ve verimli sürücüler yapabiliyorsunuz. Daha çok akım, daha çok voltaj ve daha çok güç!
Selamlar
Dumanın sebebini çözdüm sanırım ama emin olmak için yeni bir kart dizip çözümü denemek gerekecek.
Yazılım için VESC https://vesc-project.com/ kullanıyorum. Çok başarılı ve açık kaynaklı bir proje. Benjamin Vedder adlı bir üstad eski BLDC TOOL programını yeni arayüzlerle güncellemiş. Çok kolay ayarlamalar yapmak mümkün. Öneririm.
VESC firmware 3.4 sürümünü atmıştım, şematiklerin temel alındığı shaman adlı kullanıcının tasarımı olan CheapFOCer'de yeni versiyonların çok başarılı çalışmadığını görmüşler. Nedenini henüz bilmiyorum.
İlk dizdiğim ve fotoğrafını attığım kartta denemelerde gördüm ki duty cycle ölçümleri ve akan akım ölçümleri hatalıydı. Sanıyorum yanlış anahtarlamaya sebep olup mosfetleri yakacak kadar hatalıydı. Şu ana kadar elimde yalnızca 1 sapasağlam mosfet kaldığı için eski kullandıklarım ile yeni bir devre dizdim. Dizmeden önce şematikleri iyice bir kurcaladım hata ihtimaline karşın ve bukdum. SENS pinlerini işlemci girişine yanlış sırayla bağladığımızı farkettiğim için onu düzelttim. Sanırım yanlış okumalara bu sebebiyet veriyor. Bu hatadan shaman adlı kullanıcı linkini attığım forumda da bahsetmiş aslında.
Mosfetleri test etmek için kullandığım örnek bu: https://www.youtube.com/watch?v=RkWy1EirEu8
Elimdeki kötü mosfetleri kullanarak devreyi dizeceğim. Aynı paketteki en ucuz mosfetlerin tanesi 15 lira :D Bu yüzden mümkünse bu kötü ama bozuk olmayan mosfetler günü kurtaracak.
Yeni devreden umutluyum. 0.022uF'lık bir kapasite ihtiyacı vardı devrede, öncekinde bunun yerine ne kullandığımı bilmiyorum şimdilik 0.047uF lik iki kapasiteyi seri bağlayarak çözdüm olayı.
Bakalım bu sefer dumanlarla karşılaşacakmıyız.
Kötü haber, maalesef sorunlar devam ediyor. Öncelikle taktığım mosfetlerin kalitesiz olmasından sanırım anahtarlama hataları yaşıyordu. Fakat motoru döndürmeyi başardı. Akımdaki dalgalanmalar nedeniyle vuruntu yapıyordu. Sanıyorum fazlardan biri işini yapmıyor. Videoya çektim durumu.
Daha sonra DRV hatası vermeye başladı. Sorunun mosfetlerden kaynaklandığını düşünerek sorunlu olanları aradım ve doğru anahtarlamayan birini bulup değiştirdim. Durum değişmedi.
Ben de sorunun çözümünü mosfetleri değiştirmekte gördüm. Elimde fazladan https://pdf.direnc.net/upload/pjd45n06a-dahasheet.pdf mosfetlerden vardı. Bunları SMD paket footprintine takmak için bir saatlik bir ince işçilik yaptım ve sonuç başarılı bir ameliyat oldu.
Güvenilir mosfetlerle sistemi tamamladığım için mutlu mesut gücü açtım ve testler yapacaktım ki DRV hatasının orda olduğunu gördüm. Bağlantıların hepsini işlemci-DRV ve mosfetler için tek tek kontrol ettim. Hiçbir sıkıntı bulamadım.
VESC Tool'da amper ölçümünde durup dururken 3A civarında gösteriyordu. Bundan işklillenerek şantları kontrol ettim sorun yoktu fakat DRV'nin işlemciye giden pinlerinden birinde voltaj ölçümü yapıyordum ki bir sorun buldum.
Sanırım DRV bizlere veda etmiş. Elimde yalnız bir DRV kaldı. Artık işlemcinin 6.5V gören pinine de güvenemeyeceğim için onu da değiştireceğim.
Bu günlük bu kadar, yarın ola hayrola.
Bugün bahsettiğim değişmleri yaptım ve STLink ile firmware attıktan sonra FW 3.4 sürümüne VESC TOOL ile downgrade ettim. Kabloları bağlayana kadar herşey düzgün gözüküyordu. Ama motoru süremiyor. Sürse de vuruntulu gidiyor. Sanırım fazlardan birinde sıkıntı var. Neden olduğunu çözmek için osiloskopla kurcalayacağım. Elimdeki son DRV'yi de bozmak istemiyorum. Yenisini Türkiye'de bulamam.
Osiloskopla kurcalama şerefine eriştim sonunda!
Osiloskobun toprak bağlantısını yüzde 1 de olsa temas etmemiş olma şansı var ama göz ardı edebilirsiniz. Voltajı 1/10 olarak ayarladım. Yani 1500 mV gördüğünüz sinyal aslında 15V.
Şimdi durum şu ki motoru yüzde 20 duty cycle ile sürme ayarına getirdim VESC Tool'dan. Güç kaynağı 15.4V gerilim uyguladığını gösteriyor ve kartın 0.34A çektiğini söylüyor. Motor ise dönmüyor fakat titriyor. Dönen bir motorda deneyemedim çünkü dönemiyor bu yüzden yorumlarken onu hesaba katmalısınız. Bir de motor bir sağa bir sola oynadığı için titremeler sırasında, bir bi yöne bir diğer yöne sürmeye çalışıyor bu nedenle ölçümleri ona göre değerlendirin, özellikle gate ölçümlerinde ikisi de aynı zamana ait olmadığı için hatalı düşünmeyin. Yakında İki probe ile de deneyeceğim. Hatta hem gate hem de işlemciden çıkan bacağı birlikte ölçeceğim ki suçluyu bulalım. Ama şimdilik bunlarla yetinmelisiniz.
Öncelikle test koşullarını gösteren VESC tool:
NEREDEYSE MÜKEMMEL MAVİ FAZ:
Mavi alçak taraf mosfetin kapısı:
Mavi yüksek taraf mosfetin kapısı:
Mavide işler güzel gidiyor gibi görünüyor. Biraz faz ekranında biraz sorun gözükse de onun dışında herşey mükemmel. Motoru döndürecek kadar mükemmel.
BAŞIMIN TATLI BELASI YEŞİL FAZ
Yeşil faz alçak taraf mosfet kapısı
Yeşil yüksek taraf mosfet kapısı
Yeşilde alçak tarafta sorunlar göze çarpıyor. Daha iyi anlamak için iki kapıyı da aynı grafikte görmek gerek. Daha sonra bakacağız buna.
EN TEHLİKELİ FAZ SARI:
Sarı alçak taraf mosfet kapısı:
Sarı yüksek taraf mosfet kapısı:
Sarıda yarısında durum iyi yarısında kötü görünüyor. Suçlu belli, alçak alçak taraf! 25. ms ile 27: ms aralığında doğru hamleyi yaparak HIGH tutuyor fakat sonra LOW'a düşüyor yani mosfeti açıyor!
Henüz elimizde bir zanlı yok ama kan kokusu alıyorum. Suçluyu bulmak için ikinci probu arayacağım. Bir elin nesi var iki elin sesi var!
İkinci prob hızlı çıktı. Sarı renkli olan Yüksek taraf mosfetlerin kapıları, turkuaz olan alçak taraf.
Mavi faz kapıları:
Yeşil faz kapıları:
Sarı faz kapıları:
Burdan bazı sorunlar olduğu belli. Umarım iyice düşündükten sonra bir çıkarım yapabiliriz. Osiloskop görüntüleri aynı bir röntgen filmi gibi sorunları gösterecek fakat sorunların kaynağını bilirsek daha hızlı olur.
Sorun mosfetlerde
Sorun DRV'nin mosfetleri süren bölümünde
Sorun işlemcinin DRV'ye verdiği mosfet sürme bilgisinde
Sorun tekerin şuan dönemediği bir hali çekmemizde, dönse durum farklı olurdu
Sorun güç kaynağı kullanmakta, kesintiye uğratıyor olabilir
Sorun mosfetleri lehimleme şeklimde
Sorun devrenin başka bir elemanının bozuk olmasında
Sorun firmware sürümünde
Sorun şematiklerdeki küçük farklılıklarda
Sorun lehim yaparken bozulan komponentlerde
Sorun osiloskopta
Sorun bende
Sorunun nerede olduğunu yarın daha iyi anlayabileceğiz. Bu grafikleri burada bırakarak sabahın ilk ışıklarıyla uyuyorum. Yarın ilk iş işlemci pinleri ile gate çıkışlarını karşılaştırıp DRV'yi aklamak olacak. Belki bunu yapmadan önce aynı testleri DC modunda da yapmalıyım ne dersiniz?
Yarın ola hayrola
Scope ölçümlerini daha yakından alırsan cross conduction var mı anlayabiliriz. Spike ve dipler var hep, belki ölçüm alırken sıkıntı oluyordur yada entegre çıkışı kapatıyordur bulmak lazım.
Sürmek istediğin frekansa yetişemiyor olabilir sürücü entegre.
İşte aklımdaki adam! Hoşgeldin abi çok sevindim seni gördüğüme. Bir haftadır diğer işlerden dolayı ilgilenemiyordum bu sürücü ile. Hatta nerdeyse pes etmiştim, yerine başka bir mimarideki bir sürücüyü sipariş ettim :D
Şematikleri detaylı kontrol ettiğimde bu elimdeki sürücünün CheapFOCer-1'den hiç bir farkı yoktu. Aynı kodu attığımda çalışmasını bekliyordum bu sürücünün. Geçen hafta bu sürücünün motor sürdüğüne de şahit oldum ama hatalı sürüyordu.
Entegrenin yetişemediğini düşünmüyorum çünkü işlemcide VESC adındaki açık kaynak bir yazılım var, aynı donanım üzerinde çalışmasını bekliyorum o yüzden sorunun bu olduğunu düşünmüyorum. Ama bunu test etmek için işlemcinin çıkışlarını yoklayabilirim sanırım.
Cross conduction için yakından ölçüm alacağım, ölçümde kanalları nasıl bağlamamı önerirsin? Bu ölçümlerden önce yeni mimarideki siparişin gelmesini bekleyeceğim onu denediğimde çalışırsa bunu debuglamam gerekmeyebilir.
Şimdi https://github.com/shamansystems/Cheap-FOCer-2 bu linkteki motor sürücüyü olduğu gibi sipariş ettik. Geçici olarak sorunsuz bu sürücüyü deneyeceğim. Bir problem yoksa bu yeni mimari tabanlı tasarım yapabiliriz. Önceki mimari ile bunun arasında en büyük fark 3 şant direnci içermesi ve entegrenin daha güncel olması. Bu geldikten sonra burayı güncellerim.