16f887 ile PID kontrol de yardım lütfen

Başlatan _MOD_, 15 Nisan 2011, 18:48:06

_MOD_

Selam. 16f887 ile servo dc pid hız kontrolü yapmaya çalışıyorum. Hocam örnekleme süresi 4.7us olsun dedi. Sorun şu ki pic zaten her komutu 200ns de çalıştırıyor. 4.7us saniyede en fazla 24 komut işleyebilir. 24 komutta pıd çıkışlarını hesaplayıp çıkışa yansıtmam çok zor. Bunu yapmayı başarsam bile program sadece pid hesabından oluşmuyor. Aynı zamanda LCD sürülmesi port taranması giriş hesaplanması da gerekiyor. Yani 24 komutta pid olsa bile 24 komuttan sonra yine örnek alınıp hesaplamaya geçileceği için diğer birimler için süre kalmıyor.

Tagli

Hız verisini analog olarak mı yoksa dijital olarak mı elde ediyorsun? Veri analog ise hiç şansın yok, çünkü zaten A/D dönüşümü yanlış hatırlamıyorsam 20 us civarında bir zaman alıyordu.

Giriş verisi dijital ise assembly ile belki istenilen süre sağlanabilir ama kesme gecikmesi bence bunu yapmanı da engelleyecektir. Ayrıca işin bir de çıkış boyutu var. O kadar yüksek frekanslı PWM üretebileceğinden şüpheliyim. Üretebilsen bile çözünürlüğü çok düşük olacaktır.

Hocanın istediği sürenin 4.7 us olduğundan emin misin? Bence 4.7 ms olsa daha mantıklı olurmuş. Zaten uygulamanın bu kadar yüksek bir örnekleme frekansına ihtiyaç duymaması lazım. 20 ms örnekleme süresi ile amatör hava taşıtları yapılıp dengeleniyor. Bu konuyu hocanla bir konuş, karşılaştığın donanımsal sınırlardan bahset.
Gökçe Tağlıoğlu

_MOD_

Pardon. Örnekleme süresi 47 us miş.

Bu durumda 240 komut koşuluyor. Ama çarpmayı ard arda toplama olarak hesapladığım için bu da yeterli bir süre değil.

_MOD_

Aslında ben 3,9 ms de bir yapmayı düşünüyordum. Bunu Microchipin inverted pendulum örneğinden gördüm. Orda pid hesaplarken çarpma ve bölmede kolaylık sağladığı için bunu kullanmışlardı. Ama hocam başka türlü bir hesap yaptı. 3500 rpm dönen motorun 1 derece dönmesi için ne kadar süre gerekir dedi ve orda 47us' yi buldu. Bu örnekleme saniyesi dedi. Frekansı da bir şekilde uydurmak gerekir dedi.

Giriş microdenetleyicinin adc si ile dijitale çevrilcek.

XX_CİHAN_XX

Harici ADC kullanman daha verimli olabilir.
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

z

Alıntı yapılan: _MOD_ - 15 Nisan 2011, 19:17:48
Pardon. Örnekleme süresi 47 us miş.

Bu durumda 240 komut koşuluyor. Ama çarpmayı ard arda toplama olarak hesapladığım için bu da yeterli bir süre değil.

Ilkokulda bile cocuklar 10 lu sistemde carpmayi alt alta toplama olarak yapmiyor. Ustelik 10 lu sistemin aksine, ikili sistemde carpma yapmak cocuk oyuncagi.

Ote yandan bir baska baslikta hocanin onerileri dogrultusunda ornekleme suresini 47us bulmustuk.

Eger projende motor akimini da denetim altinda tutmak icin akim dongusu olmayacaksa; hocana kafadan itiraz edip ornekleme suresini bunun bir kac kati (hatta 20 kati) secebilirsin.

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

_MOD_

Harici adc nin ne gibi bir faydası olabilir?

İkilik çarpma işlemi pic ile nasıl yapılır onu araştırayım.

Örnekleme süresini 3,9 ms alsam dezavantajı ne olur acaba?

Birde motor akımını denetim altında tutmaktan kasıt nedir acaba?

Proje teslimi 25 nisanda telaşımı mazur görün lütfen


z

#7
Alıntı YapBirde motor akımını denetim altında tutmaktan kasıt nedir acaba?

Amacin hiz servosu yapmak.

Blok diyagrami cizecek olursan hiz referansi ile tako sinyali arasindaki fark hiz hatasini uretecek.

Hiz hatasi PID ye girecek ve motor akimi refrens sinyalini uretecek.

Motor akim referans sinyali ile gercek motor akimi arasindaki fark motor akim hatasini uretecek

Motor akim hatasi PID yada PI a girecek ve motor kontol voltajini uretecek (pwm degerini uretecek)

Motor kontrol voltaji guc amplifikatorune (PWM guc kati) girecek ve bu da motoru surecek.

Burada ic ice iki dongu var.

Ilki hiz dongusu

Ikincisi akim dongusu


Eger akim dongusu olmayacaksa ornekleme suresini 1ms gibi yuksek alabilirsin.
Eger akim dongusu olacaksa akimdan ornek alma suren 100us gibi dusuk olmali (sende 45us)
Hiz dongusunde ise 1ms yada 450us olacak.

Daha guzel bir blok simdilik bulamadim ama asagidaki blok en azindan akim dongusu hakkinda fikir verir.



Burada icdeki akim servosu aslinda tork servosudur. Motorun sabit miknatisli bir motor ve Tork akimla K gibi bir katsayinin carpimindan ibaret.

Iki dongulu bu sistemin yaptigi olay motor devri dusmeye baslarsa tork ihtiyaci ortaya cikmis demektir. Motor derhal daha yuksek tork uretmesi icin tork servosu gerekli mudahaleyi yapar.

Eger ic donguyu kaldirip atar ve sadece hiz servosu ile kontrol yaparsan bu durumda sistem tepkisi kotulesir, ic degiskenler (bunlardan birisi motor akimi oluyor) kontrol altina alinmadigindan onunla hic ilgilenmemis oluyorsun ve akimin alip basini gitmesine goz yummus oluyorsun bu da gerek servo guc katini gerek motoru savunmasiz birakir.

Kucuk guclu uygulamalarda sorun olmayabilir sadece cevap sureleri  uzar.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

47us sample alarak PID yada benzeri digital filitre islemleri yapacaksan PIC 16 serisi  20Mhz de bile seni yolda birakabilir.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

klax

bunalmıs hocama bende katılıyorum.16 serisi 20 mhz ıslemcı bu ısteklere cevap vermeye bılır
TB2EOS

mihri

47us çok kısa bir süre değil mi? Motorun tepki süresi bunun çok üstündedir.
"Eppur si muove!"

camby

Alıntı yapılan: _MOD_ - 15 Nisan 2011, 23:31:29
Harici adc nin ne gibi bir faydası olabilir?

İkilik çarpma işlemi pic ile nasıl yapılır onu araştırayım.

Örnekleme süresini 3,9 ms alsam dezavantajı ne olur acaba?

Birde motor akımını denetim altında tutmaktan kasıt nedir acaba?

Proje teslimi 25 nisanda telaşımı mazur görün lütfen

25 nisan geçeli çok olmuş , ne yaptın projeyi verebildin mi ?

Çarpma nasıl yapılıyor bulabildin mi ?

ahfxg

Hocanın demek istediği şu aslında. Motor akımı 1ms'de tepe yapıyorsa, sen 50us'de bir yani 200 işlem yaparak rahat bir şekilde akım limitinin dışına çıkma.
16F serisi motor uygulamalarında çok zayıf kalır. Ha yapılabilinir mi elbette. Bir döngüyü dışa alıp analog devre gerçeklenebilir. Bu tür işlemleri 20MIPS üstü, DSP işlem ünitesi bulunan, hızlı ADC'ye sahip bir işlemci ile buna takiben binary ve integer nedir haberdar olan biri programlamalıdır.
Erkeklerin dünyasına başkaldıran bayan mühendis..