Elekrtikli Araç için Fırçasız DC Motoru Nasıl Süreyim ve Kontrol Edeyim?

Başlatan Erhan YILMAZ, 23 Eylül 2019, 15:08:41

Erhan YILMAZ

Arkadaşlar merhaba!

Uzun süredir ayrı düştüğüm forum işim düşünce aklıma düştü.

Doktora amacıyla Berlindeyim 1-2 sendir ve burda bu elektrikli biskiletler, scooterlar, kaykaylar falan bayağı revaçta. Bizim hocada elektromobilite fakültesinin başkanı, bir sürücü yapalımda şanımız yürüsün diye tutturuyor. Benim tez konumla alakası olmadığından biyerden bi referans şema, örnek kod bulup, devşirip vermeyi düşünüyorum. Konu hoşuma da gitmiyor değil aslında. Kaykaydan bisiklete aşağı yukarı 500W-2000W arasında motorlar döndürülecek.
Referans donanım olarak bunu buldum http://www.ti.com/tool/TIDA-010056. Eli ayağı düzgün, güzel bir tasarıma benziyor. İşlemci kısmına XMC4500 ekleyip ve daha basit ır2101 tarzı sürücüler kullanıp donanımı yapmayı düşünüyorum.

Yazılım olarakda şurda https://www.infineon.com/dgdl/Infineon-AP32359_BLDC_Motor_Control_Software-AN-v01_00-EN.pdf?fileId=5546d46258fc0bc101596988325e3f87 güzel bir uygulama notu paylaşmışlar. Deneme kartına üstüne yükledim motoru döndürdüm. Güzel dökümante edilmiş bir uygulama, pi tork kontrolu falanda var.Tam böyle yaparım geçerim diyorken foc kontrolü hatırladım. https://www.youtube.com/watch?v=Nhy6g9wGHow

Sonra baktım foc daha verimliymiş. Zaten bizim cihazlarda pille çalışıyor. Yani verimli olması daha iyi.

Şu aşamada maliyet kaygımız yok. Özetle ilk soru: FOC kontrol mu kullanayım yoksa trapezoidal mi? FOC kullanırsam hız ve açı geri beslemesi için hall sensör mü, encoder mi yoksa bu resolver dedikleri aletten mi kullanayım? Bizim motorlar genellikle hall sensörlü olduğu için hall sensör kullanmak zorunda kalabilirim. Bu durum performansı yada verimliliği etkiler mi?

Diğer bir konu ise kontrol konusu. Hız kontrolünden ziyade anladığım kadarıyla tork(akım) kontrolü daha mantıklı geliyor. Örneğin kaykay için iki motor olacağı için dönemeçlerde diğer motorun daha yavaş dönmesi gerekicek, yani hız kontrolü pek bu işin dinamiğine uygun değil gibi duruyor. Hoca öyle söyledi en azından. Bu durum doğru mudur? Akım(tork) kontrolü mü yapayım?

Birde https://www.infineon.com/dgdl/Infineon-AP32359_BLDC_Motor_Control_Software-AN-v01_00-EN.pdf?fileId=5546d46258fc0bc101596988325e3f87 bu uygulama notunda voltaj kompenzatörü olayı var. Besleme voltajı değişmesini dengelemek için PWM sinyalini değiştiriyor heralde. Bizim aletlerde pilli olduğu için besleme voltajı 35-50V arasında değişiyor. Kompenzatör olayını aktif edeyim mi? Faydası olur mu?

Özetle pille çalışacak 500W-2000W araç motorunu en iyi şekilde nasıl süreyim? Nelere dikkat edeyim? Tecrübeli arkadaşlar yol gösterirse sevinirim.

Saygılar..

Erol YILMAZ

Motor düşük devirli de kullanılacağı için fiziki feedback elemanı kullanılmalı.
"Hall effect sensor" isabetli görünüyor.
Encoder uygulamada mekanik olarak "problem çıkartacak" bir parçaya benziyor.
Resolver'i kullanmadım,bilmiyorum.

Kontrol tekniği tercihi, deneyiminize kalmış bir durum.
Trapez ile başlayabilirsiniz. Ötesi için biraz teori çalışmak lazım.

Erhan YILMAZ

Doğru diyorsunuz hocam hall sensör en pratik çözüm gibi. Teoriğe bkatım foc için verimi torku falan iyi deniyor. O zaman foc benim işime gelir heralde?

Birde düşük devir neye göre deniliyor hocam? Kaba bi hesap yaptım kaykay 30km ile gitse, tekerin çevresi 20cm olsa 2500 devir/dakika da dönmesi lazım. Bu hız düşük mü?

Erol YILMAZ


apsis

Aslında motorun tasarlanan maksimum hızda verebileceği torku minimum hızla maksimum hız aralığında FOC ile yapapılabilmesi lazım. FOC önüne tasarlanacak bir hız regülatörü buna bağlı olarak Iqd akımlarını değiştirerek hız ve tork eksenini ayrı ayrı kontrol edebilirsiniz. Mesela servo motorların böyle çalışması beklenir.
Ben ST'nin UM1052 pdf'inden ve TI ın bir çok dökümanından yaralanıyorum. Bir inceleyin derim.

Ayrıca hall ve incremental encoderli tork denemesini yapmış olarak söylüyorum encoder bu işin olmazsa olmazı gibi geliyor bana. Hall sensörlü denemede motor milini elimle bile durdurabiliyorken, Encoderli testlerde elimle mili tutamadım :).

Belki de hall sensörlüyü beceremedim ya da işlemcim FPU'suz ve biraz düşük hızlı olduğu için hall sensöründe bu işi iyi yaptıramadım.

100 puls(içerde 400 puls oluyor) encoder kullandım. Bunu 2000 puls encoderde de deneyeceğim. Sonrasında mutlak encoder ve resolver ile deneyeceğim.

Aslında FOC için vektörü ne kadar sık aralıklarla kontrol ederseniz ( encoder çözünürlüğü) FOC o kadar iyi çalışıyor.

Ayrıca kontrolör dışında motorun da bunda etkisi var.

Sargı tiplerinin konsantre ya da distributed olması.

Mıknatısların internal ya da surface mount olması.

Sargı tipleri BEMF şeklini belirttiği için  burada BLDC ve PMSM farkı ortaya çıkıyor.

Mıknatıs dizilimi ise hem kontrol açısından hem de vuruntu açısından önemli. Internal motor vuruntular oluşabiliyor ve FOC için tork denklemi surface mount ile aynı işlevi gerçekleştirmiyor. Internal mounting ile kullandım ancak özellikle kalkışlarda vuruntu oluşturabiliyor.

Surface mount olanların vuruntuları yok denecek kadar az kontrolü daha kolaydır. Bu etkenleri de göz önünde bulundurmanızı tavsiye ederim

St ve TI 'ın bu iş için kütüphaneleri hatta var doğrudan arayüz ile kod çıkartılabiliyor. Kodları istediğim gibi devşiremedim. Ancak faydalandığım bölümleri oldu :).

St'nin ki bayağı karmaşıktı. Tam bir OOP yazılım ve kendi içerisinde küçük bir RTOS'cuk barındırıyor.

"Makineye Beyin" MEKATRONİK

z

Alıntı yapılan: Erhan YILMAZ - 23 Eylül 2019, 16:32:13...Birde düşük devir neye göre deniliyor hocam? Kaba bi hesap yaptım kaykay 30km ile gitse, tekerin çevresi 20cm olsa 2500 devir/dakika da dönmesi lazım. Bu hız düşük mü?

Düşük devirden kasıt mesela 5 dev/sn, 1dev/sn, 0.1 dev/sn.

Olcum teknigine bagli olmakla birlikte FOC tekniğinde en büyük sorun faz akımlarının tespitinde yaşanır. Akımların doğru şekilde okunmasını sınırlayan pek çok etken var.

Akım sens devresindeki opampın band genişliği, ADC nin hızı, işlemcinin hızı, işlemcinin intlara cevap verme hızı, her şey etkili.

PWM frekansı arttıkça akım ölçme sorunu da iyice dramatikleşir.


Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Cemre.

Alıntı yapılan: z - 24 Eylül 2019, 01:57:28Düşük devirden kasıt mesela 5 dev/sn, 1dev/sn, 0.1 dev/sn.

Olcum teknigine bagli olmakla birlikte FOC tekniğinde en büyük sorun faz akımlarının tespitinde yaşanır. Akımların doğru şekilde okunmasını sınırlayan pek çok etken var.

Akım sens devresindeki opampın band genişliği, ADC nin hızı, işlemcinin hızı, işlemcinin intlara cevap verme hızı, her şey etkili.

PWM frekansı arttıkça akım ölçme sorunu da iyice dramatikleşir.




Denk gelmişken sorayım, bu işin en kolay yolu nedir? Şuan için ACS712 türevi hall effect sensörler ile motor faz akımını ölçmeyi planlıyorum. Tavsiye var mı? Önemli olan hızlı/hazır çözüm olması...

Cemre.


apsis

@z abi um1052 sayfa 52'de akımdaki spikeları engellemek  için pwm olarak kullanılan timer ile bir teknik anlatılıyor.
Duty ve deat time a bağlı olarak ölçümü başlatıp bitiriyor ve oluşan spikelardan ölçümü elimine ediyor.

Böyle bir tekniği hiç uyguladınız mı?

Daha önceden akım ölçmelerde problem yaşayan biri olarak çok faydalı gördüm bunu.
"Makineye Beyin" MEKATRONİK

z

Alıntı yapılan: Cemre. - 24 Eylül 2019, 08:04:20Denk gelmişken sorayım, bu işin en kolay yolu nedir? Şuan için ACS712 türevi hall effect sensörler ile motor faz akımını ölçmeyi planlıyorum. Tavsiye var mı? Önemli olan hızlı/hazır çözüm olması...

En temizi bahsettiğin şekilde doğrudan motorun faz akımını ölçmek. Öteki türlü Half bridgein Gnd tarafından özellikle 2 şönt hele hele de tek şönt kullanarak akımları ölçmeye çalışmak gerçekten yorucu bir iş. (Sıradan işlemciler ve ADCler için)

pwm peryodunun 50us gibi kısa olduğu durumlarda, üç fazın akımını ölçmek için ADC ile sırayla peş peşe ölçüm gerekiyor. Bu da ADC hızına bağlı olarak 3 faz akımlarının her birisinin farklı anlarda okunması demek. Bu yüksek endüktanslı motorlarda fazla sorun oluşturmasa da düşük endüktanslı motorlarda akımdaki rampa biraz mide bulandıracaktır.


Motoru pür dikkat dinlediğimde motordan tıslama hırlama gibi pwm modülasyonuna bağlı gürültüler duyduğumda o işin hakkıyla yapılmadığını düşünüyorum.

O yüzden bu akım ölçme işi bence FOC yada benzeri tüm işlerin en can alıcı kısmı.

Zaten akademik yayınları araştırınca bu konuda herkesin harıl harıl çalıştığı ve daha iyi akım ölçme işine kafa yormada yarıştıkları görülüyor.

O yüzden



Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

Alıntı yapılan: apsis - 24 Eylül 2019, 08:19:38@z abi um1052 sayfa 52'de akımdaki spikeları engellemek  için pwm olarak kullanılan timer ile bir teknik anlatılıyor.
Duty ve deat time a bağlı olarak ölçümü başlatıp bitiriyor ve oluşan spikelardan ölçümü elimine ediyor.

Böyle bir tekniği hiç uyguladınız mı?

Daha önceden akım ölçmelerde problem yaşayan biri olarak çok faydalı gördüm bunu.

PWM'in orta noktasında başlatılan ADC ile gnd hatlarında üç ayrı direnç kullanılan akım ölçme en sağlıklısı görünüyor. (Daha iyisi doğrudan motorun faz akımını ölçmek ama bu ilave maliyet demek)

Fakat (bence) tam orta noktada 3 akımdan sample alıp kapasitörde saklamak ve daha sonra ADC ile bu sampleları dönüştürmek en mantıklısı.

Aksi takdirde uzun ADC ölçüm süresi başa dert olacak ve mecburen daha hızlı ADC ve daha hızlı işlemcisi olan çipler kullanmak gerekecektir.


Bana e^st de diyebilirsiniz.   www.cncdesigner.com

apsis

Alıntı YapFakat (bence) tam orta noktada 3 akımdan sample alıp kapasitörde saklamak ve daha sonra ADC ile bu sampleları dönüştürmek en mantıklısı.

Bunu anlayamadım. Varsa bir kaynak öğrenmek açısından gösterebilir misiniz?

ST hazır programında akım ölçme ve FOC işlemini eş zamanlı yapmış. Yani sample işlemi bittiğinde dma'dan kesme geliyor (kesme 1. öncelikli olarak) ve ardından park clark ( rev Park vs.) dönüşümleri yapılıyor sonra SVPWM vs. Adamlar  sistemi çok iyi tasarlamış. Program F0'da bile iyi koşuyor.
"Makineye Beyin" MEKATRONİK

apsis

"Makineye Beyin" MEKATRONİK

z

Alıntı yapılan: apsis - 24 Eylül 2019, 11:20:36Bunu anlayamadım. Varsa bir kaynak öğrenmek açısından gösterebilir misiniz?

Kaynak benim.

Eger birden fazla sinyali ayni anda olcemiyor sirayla tek tek olcuyorsan ve bu yontem sorun olustuyorsa bu durumda birden fazla sinyalin herbirini sample hold duzenegine girer ve tek hamlede tum sinyallerden sample alirsin.

Ardindan aldigin samplelari pes pese olcersin.

Sample & hold, Trace & hold gibi tekniklere bak.



Tek ADC ile akimlarin T anindaki degerlerini olcmeye kalktigimizda ADC nin donusum suresi kadar araliklarla olcum yapabiliyoruz. Bu esnada enduktans akimlari rampali degisim halinde.

Rampanin egimi enduktansa ve voltajin buyuklugune bagli.

Bu sorunu bertaraf etmek icin en sagdaki gibi sample alici ile T aninda 3 akimin da o anki degerlerinden sample alinip analog olarak kapasitorlerde saklaniyor. Daha sonra ADC ile bu akimlar sira ile okunuyor.

Eger 5Khz gibi pwm frekanslari ile calisilacaksa bahse konu sorun dert edilmez. Zira 5Khz pwm 200uS genislik demektir ve 1uS gibi hizda donusum yapan ADC ile 3 akim 2 us gecikme ile akimlardan ornek alir ve 3us de olcer.

Toplam peryodun sadece %1'i akim olcumune gider.

Pwm frekansi yukseltildikce bu %1 lik oran artmaya baslar.

Olay motorun endukasina bagli olarak sorun haline gelebilir.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

apsis

Anladım abi.Çok teşekkür ederim.
Değişik bir teknik geliştirmişsin.
Bu sampla&hold'u araştıracağım.
"Makineye Beyin" MEKATRONİK