Hile arayışı - Zamanla değişen sistemin kontrolu

Başlatan z, 18 Temmuz 2012, 21:40:43

ErsinErce

pwm frekansını değiştirerek akımdan endüktansa ulaşmaya çalışsak nasıl olur hocam?

z

Şu anda ne yapacağımı bilemez durumda sadece kafa yormaktayım.

Endüktansı ölçeceğim diye solenoidin akımını ayarlamakla ilgili akım servosunu hiç bir zaman devre dışı bırakamam. Selonoidi süren pwm sinyalin frekansını değiştirirsem akım kontrol rutinlerim yanlış çalışmaya başlar. Çünkü rutinlerim pwm frekansı üzerine kurulu. Aksi takdirde kontrol sistemim de solenoid gibi zamanla değişen sistem haline gelir.

Şu anda aklıma yatan yöntem;

Solenoid yüksek L ve R değerine sahip ve EMK yı ihmal edersek RL den oluşan bu sistem pwm sinyalin her bir darbesinde exp davranacak.

PWM palsın başlangıç anındaki akım ile, palsın bitimindeki akım ölçülürse endüktans bilgisine ulaşılabilir. Ancak bu tip bir işlemi DSP ile yapmak lazım. Kullandığım ARM işlemci zaten çok yoğun kontrol algoritmaları koşturduğundan  ilave gelecek bu yükü kaldırabilecekmi emin değilim. Bu akımları donanımsal olarak sample alma yoluyla analog olarak saklayıp  daha sonra işlemcinin müsait olduğu zamanda ölçmek ve hesap yapmak aklıma geliyor fakat bu kez de kartımın üstündeki çip sayısı artacak.

Bu tip kısır  döngülerden dolayı bir kartı ortaya koymam çoğu zaman 2 senelik arge süreci demek.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

ErsinErce

anladığım kadarıyla selenoidi gnd tarafından kontrol ediyorsunuz hocam,
kontrol kısmını high-side'a aktarma ya da low-side'ın girişine diferansiyel bir akım ölçer koyma ile belki bu kısım çözüme kavuşturulabilir
bir de tepki süreniz kaç ms de hocam?
belki bu kısmı farkedilmeyecek seviyede yavaşlatarak koşması planlanan algoritmalar için ekstra yer açılabilir
10ms lik süreç için bilgiler alınıp işlenip sonraki 10ms lik süreç için karar'a varılabilir

ayrıca akım kontrol kısmına frekans değişkenini ekleyebilirseniz bu sistemin patenti alınabilir hale gelecektir  ;D
ya da sistemin matematiksel formu çıkartılıp önceden tahmin ve hata düzeltme yöntemiyle yaklaşılabilir
İTÜ'deki Nükleer Reaktör'ün kontrol mekanizması da (tepki süresi 1 ms) bu şekilde çalışıyor hocam ayrıca bilginiz olsun  :)

z

Akım serrvolarımın update süresi yaklaşık 50us. Bu da demektirki hız servo update sürem 500us. Sonuçta pozisyon servom 5ms de bir update olacak.
Dolayısı ile akımdaki değişimleri 50us içinde iki kez ölçebilmeliyim. Burada yapılacak zamanlama hataları selonidden tıss, şışş, cıvvv yada cazur cuzur sesler oluşumuna neden olacak.

İşte bu sebeplerden  dolayı yüksek hız ve asm ihtiyacım var.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

ErsinErce

pwm frekansı 20khz ve üstüne ayarlansa ama güncelleme frekansı 100hz olsa bu tarz sesler büyük adımlar harici oluşmaz diye düşünüyorum hocam
akım ölçümlerini de dma ile alsanız güncelleme öncesi tüm veriler elinizde hazır olur
bu noktadan sonra karar için hızlandırma yapmak, işinizi kolaylaştırıp diğer işlemlere yer açabilir ?

z

Bahsettiğim sesler zaten adımlama esnasında oluşacak sesler değil. Sukünette bir noktada pozisyonlama yapılırken çıkacak sesler. Yoksa yer değiştirme aşamasında ses çıkması doğal bir durum.

PWM frekansı 20Khz buna karşılık güncelleme frekansı 100Hz olursa ne olur?  Bunun 100Hz pwm den ne farkı var?

Solenoidim 12v, 50 Ohm, endüktans 25...75mH. Hareket mesafesi 5mm. Hedeflediğim çözünürlük 0.1mm.


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

ErsinErce

pwm 20khz olurken güncelleme 100hz olursa;
- pwmden kaynaklı sesleri duyamayacağımız bir frekansa çıkartırız
- akım ölçme periyodumuz kısalır ve örnekleme sayımız artar (çözünürlük artar)

diye düşünüyorum, kaçırdığım bir nokta olabilir tabi ?

z

Sabit duty de F pwm frekanslı voltaj, bobin içeren bir sisteme uygulanırsa F frekansında sabit genlikte bir ses duyarız.

Eğer akım geribeslemesi yaparak bobine uygulanan voltajı digital tekniklerle değiştirerek akımı ayarlamaya kalktığımızda ADC ile akımdan örnekler alırız ve  bu verileri bir dizi algoritmaya sokarız. ADC önündeki analog devreler zaten gürültülü bir ortamda çalışmaktadır bir de kendi ürettikleri gürültü de bobin akımı ile birlikte örneklenir. Üstüne üstlük hesaplama rutinleri kesme ve yuvarlama hataları yapar. Bu durumda bobine uygulanacak PWM duty değeri aynı zamanda sayısal gürültü değerleri içerir.

Bu durumda PWM sinyalimiz modülasyona uğrar. Rahatsız edici sesi oluşturan PWM frekansımız değil modülasyona neden olan sinyal yani gürültüdür. (Sukunette bobinden DC akım + gürültü değeri okunur)

F pwm frekansını düşürdüğümüzde modülasyon frekansımız da düşer.

20Khz zaten duyulabilen bir ses değildir fakat çoğu motor vs sürücü sükunette vıcır vıcır ses çıkartır. Bu vıcırdamaların frekansı pwm yani 20Khz değil bunun çok altında seslerdir. Üstelik sabit bir tonda da değildir.

Eğer pwm frekansını 20Khz yapar update süreni 100Hz seçersen evet modulasyona neden olan sinyalin frekansı çok düşer fakat 50Hz bile rahatsız edecek tondadır. Vıcırdama sesleri tıkırdama seslerine dönüşür.

Üstelik update süresi azalırtılırsa rıpıl da azalırken tersine update süresi arttıkça rıpıl genliği de artar. Bu da bir başka olumsuzluktur. Daha açık ifade ile düşük frekanslı yüksek volümlü ses mi yüksek frekanslı duşuk volümlü sesmi daha iyidir? (Her ikisi de kötüdür).

Akım kontrol çevriminde 10ms çok uzun bir değer. Evet bu süre uzadıkça akımdan alacağın sample değerleri çok artar ama biz gelişi güzel anlardaki akım değerleri ile ilgilenmiyoruz. PWM in 0-1 ve 1-0 anındaki bobin akımları ile ilgileniyoruz. Bu akım değerleri belli olursa akımdaki artış hızını bulabiliriz. V, R ve Duty bilindiğine göre
bu artış hangi L değerinden kaynaklanır sorusunu çözebiliriz. Fakat update süresinin çok altında elde edeceğin bu değerleri ne yapacaksın? Elde edeceğin sonuç 10ms lik voltaj darbesinin neden olacağı akım artışından farklı bir değer olmayacaktır. Çünkü 10ms lik zaman içinde 200 pwm palsı vardır ve bunların duty değeri sabittir. Bunların her birisinde okunan akım rampa şeklindedir ve asıl ulaşmak istediğimiz değerler 0. pals ile 199.palsdaki akım değerleridir. Bunları bilirsek servo update süremiz içinde akımda ne kadarlık artış olmuş bilebiliriz.

(1 den 200 e kadar 1 1 artan değerleri okumak ile sadece 1 ve 200 de okunan değerleri okuyup toplam artışa bakmak aynı şeyler)

Günümüz modern sürücülerinde digital akım servosunun band genişliği 20Khz civarında. Analog olanları 100khzde. Bu da süre cinsinden 50us ile 10us demek.



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

ErsinErce

örneklemeyi 10mslik süre boyunca almayıp yüksek frekans yüksek altında 0. ve 199. puls'in değişim değerlerini beklesek nasıl olur hocam?
güncelleme yaptıktan sonra bir puls süresince bekleyip başlangıç değerini aldıktan sonra
sonraki güncellemeye dalındığında bir puls süresi daha örnekleme alınarak başlangıç ve bitiş değerlerini elde edebiliriz

benzer yapıyı düşük frekansta yapsak işlemciyi uzun süre o noktaya sabitlemek gerekir ama yüksek frekansta bunu yapabilme imkanımız var

pisayisi

#24
Bu makale baya açık

https://www.jstage.jst.go.jp/article/jsmec/47/2/47_2_637/_pdf

kısaca yapılması gereken



pozisyon bilgisi gerektiğinde, pwm çıkan kenarda shunt direnc akımını ölç ardından inen kenardaki akım değerini ölç. pwm frekansın belli dt de belli. 8 nolu Formulu pozisyon bilgisi gerektiğinde hesaplat  iş tamam. Tek sorun akımdaki ripple lar yüzünden kullanman gereken analog filtreler olabilir bunlara kafa yormak lazım. Tam tepe değeri çukurları yakalamada sıkıntı olurmu tecrübe etmek lazım...
Murat

anladinmi

Var olan kontrol döngüsün dokunulmadan Durum kestiricisi / gözlemcisi kullanilsa olmaz mi ?
L degistiginden lineer sistem olmayacak, non lineer olmasi gerekecek gibi.

ErsinErce


z

Solenoid pozisyon kontroluna ara ara kafa yormaktayım. İşin teknisyenlik aşamasına geçip solenoidden geçen akımı değiştirerek çekiçteki hareketi gözlemlemeye çalıştım ve gözle/parmakla bile akımın çekiç hareketini doğrusal etkilemediğini görebiliyoruz.

Bir solenoidde çekice uygulanan magnetik kuvvet kabaca F=K*i*i/x  ile ifade ediliyor. Burada F üretilen kuvvet, i akım, K bir katsayı x ise çekicin o anki pozisyonu.

Bu bağıntıya göre her hangi bir andaki çekme kuvveti, çekicin o anki pozisyonu ile o anda akan akımın karesi ile alakalı.

Öte yandan çekicin kütlesi, çekici geri asılan yayın yay sabiti ve çekiç mekanizmasının sürtünmesi 2. dereceden bir sistem oluşturuyor.

Bobinin L,R etkisini de düşününce tam bir matematik curcuna durumu oluyor.

Selonoidi sabit akım kaynağı ile sürünce sistem biraz sadeleşse de kağıt kalemi alıp akım ile çekicin pozisyonu arasındaki diferansiyel denklemi yazarsanız katsayıları değişken pis bir dif denklem çıkıyor.

Bu da elimi kolumu bağlıyor. İlk fırsatta sistemi PID kontrol ile kontrol altında tutmaya çalışacağım. Katsayıları atmasyon değerlerle deneyip en iyi cevabı elde etmeye çalışacağım.

Oldu oldu olmadı çay demleriz artık.

Konu hakkında konuşmak isteyenleri beklerim.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

PI kontrol ile solenodin pozisyonunu kontrol altina aldim. Fakat mukemmellikten uzak.
Cekic, solenoidin yuvasinda surtunmeli duruyor. Bilyeli az surtunmeli ozel bir yatagi yok bu da stick-slip olayina neden oluyor.

Yapis yapis sunek bir gress var. Bu pahali bir malzememi? Nereden alabilirim?
Cekici sokup vicik vicik bu yagla yaglayip sonucu gormek istiyorum.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

ErsinErce

hocam gres yağı kullanmayın kesinlikle zamanla donmaya başlıyor, pistonlu sistemlerde bile darbeli bir harekete neden oluyor.
araçlarda kullanılan metala yapışan yağlardan kullanılabilir ya da selenoidlerde kullanılan ince yağlardan
nalburlardan veya yapı market tarzı yerlerden bulabilirsiniz gress ve ince yağı