avatar_Mucit23

PID kontrol Sistemleri

Başlatan Mucit23, 30 Kasım 2011, 11:30:30

Mucit23

#30
Aslında PID ile motor kontrolü yapsak görsellik açısından daha kalıcı olur diye düşünüyorum. Yazılımla P kontrol PI kontrol ve PID kontrolün işlevini ve farklarını görebileceğimiz bir sistem olsun derim ben..
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

Mucit23

Hocam Aklıma geldi. PID cihazlarında Self Tune Adı verilen bir işlem var.  PID parametelerini orotmatik hesaplıyor. Bu konu hakkında bi bilginiz varmı?
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

inventor

#32
Self Tune dediğiniz olay aslında tuning işlemidir. Bizim prosese bakarak yaptığımız ayarları ya da matlab kullanılarak bulduğumuz değerleri kendi başına bulabilen cihazlar vardır. Bu özellik her cihazda olmuyor. Bizim prosesi takip etmemize gerek kalmadan cihaz set değeri etrafında iniş çıkışlar oluşturuyor ve tepki süresine göre katsayıları belirliyor.

Daha detaylı anlatmak gerekirse;

Bu işi yapmanın iki yolu var ( Cihazlar için );

Ya sistemi ilk enerji verdiğinizde SET noktasına gelene kadar yüklersiniz ve set noktasından sonra tuning yaparsınız, ya da sisteme enerji verdiğiniz anda tuning başlatırsınız ve SET noktasına ulaşınca bitirirsiniz. Önce SET noktasını göreyim derseniz bunun adına AUTO TUNING diyoruz, enerji verir vermez başlatayım diyorsanız bunun adına da SELF TUNING diyoruz. Auto  yavaş oluyor ama sağlam,SELF hızlı buluyor ama sapma olabiliyor.

İstersen yeri gelmişken bu işlemin nasıl yapıldığını anlatayım;

AUTO TUNUNG ;

Cihaza enerji verdikten sonra SET değerini ayarlar ve AUTO TUNING işlemini başlatırız. Bu işlemden sonra cihaz çıkışı on- off gibi çalışır ve direk on konumda SET noktasına ulaşmaya çalışır. SET i görünce hemen OFF yapılır ama bu arada sistem ileri doğru bir salınım yaparak SET noktasını geçer. Bir süre sonra tekrar SET değerine geri düşer. Tam bu sırada tekrar çıkış ON yapılır.Sistem haliyle tekrar SET noktasına gelir ve çıkış OFF yapılır. Yine ileriye doğru bir salınım olur ve sistem SET noktasına geriler.

Şimdi elimizde iki adet bilgi vardır. Çkış OFF yapıldığı anda sistemin bir süre daha artış göterdiğini ve sonra gerilediğini söylemiştik. Biz iki defa OFF yaptık ve haliyle sistem iki defa max. değere ulaşıp tekrar geriledi. İşte bu iki defa max. çıktığı anlar arasındaki zaman farkı bilgisi , bizim birinci bilgimiz oluyor.

Sistem SET değerine ilk kez ulaştıktan sonra çıkış OFF yapılıyordu ve SET değerine düşmesi bekleniyordu. SET değeri görülür görülmez çıkış ON yapılıyordu. Ama biz çıkışı ON yapsak bile değer bir süre daha düşmeye devam edecek ve SET noktasının altına gelecektir. İşte tam bu alt nokta ile , ikinci kez ON yaptığımızda çıkılan en üst nokta arasındaki değer farkı da bizim ikinci bilgimiz oluyor.

Bu iki bilgi kullanılarak Kp - Ki - Kd sayıları hesaplanıyor. Ancak bu tuning işlemi sadece ısı gibi yavaş tepki veren sistemlerde kullanılır. Motor devir kontrolü gibi saniyelik tepki gerektiren durumlarda kullanılamaz.


SELF TUNING

Bu yöntemde , cihaza enerji verir vermez çıkış sinyalimiz şu şekilde olur;

SİSTEM ( ÖLÇÜLEN DEĞER ) = ÖLÇÜM+((SET - ÖLÇÜM) / 2)

Yani sistemin sıcaklığı yukarıdaki formül değerine ulaşıncaya kadar ÇIKIŞ=%100 olur. Sistemin değeri ilgili noktaya geldiğinde ÇIKIŞ = %0 yapılır. PID TUNING işlemi artık başlamıştır. Sıcaklık bir süre sonra gerilemeye başlar ve taban yapar. Tam bu sırada TUNUNG işlemi durdurulur.

Bu aradaki süre ve değer farklarına göre Kp - Ki - Kd  değerleri hesaplanır ve işleme koyulur.

Dediğim gibi bu tuning fonksiyonları yavaş değişim gösteren sistemler içindir. Tepki hızı fazla ve ara değerleri uçuk olan sistemlerde sürekli hata mesajı üretir.

Bazı cihazlarda 3. bir seçenek olarak hem auto hem de self tuning bir arada kullanılabilir. İşlem self tuningle başlar ve katsayılar hesaplanarak normal çalışma moduna geçilir. Eğer sistemdeki sapmalar tolerans değerlerinin dışına çıkarsa hemen auto tuning devreye girer ve katsayıları değiştirir.

Hepsi bu kadar. Daha detaylı anlatabilirz ama konu uzar.

Bu arada aklıma gelmişken yazayım, Aslında PID anlatımında yazmak gerekiyordu ama atladık.

Bazı arkadaşlar PID katsayılarının nasıl ilk defa ayarlanacağını düşünüyor olabilirler. Pratikte ayarlar şöyle yapılır ( Matlap yok, tuning yok kabul ediyoruz ):

Kp = 1
Ki = 1
Kd= 0,01

Bu değerleri ön değer olarak veriyoruz. Kd değerini yüksek verirseniz sistem sürekli sallanacaktır. Genelde birin altı rakamlar çıkıyor ama bu sistemin hızı ile de yakından alakalı bir konu.

İlk olarak ölçüm  değeri setin altında bir yerlerde sabitleniyorsa Kp değerini arttırmanız gerekiyor demektir.. Eğer set değerini geçtikten sonra  sabitleniyorsa Kp değerini düşürmek gerekiyor demektir.

Ölçüm değerindeki artış beklenenden daha yavaş veya daha hızlı artıyor ve  set değerini geçiyorsa Ki değerinden kaynaklanıyordur.

Ölçüm değeri  sürekli salınım yapıyorsa Kd sayınızda sorun var demektir. Bu rakamı düşürmeniz yeterli olacaktır.


İlmin en büyük düşmanı, sabırsızlıktır. (Şems-i Tırmizi)

huzame

Herkese merhabalar  aslında ben de Mucid23 arkadaşımızın dediği gibi DC Motor hız ve pozisyon kontrolu ile ilgili bir uygulama
yapalım diye düşünüyorum. Bu uygulamayı yaparken benim aklıma şöyle bir şey geldi DC motoru step motor gibi adım pulsları ile surebilir miyiz? Mesela Dc motorun devrini sinyalin frekansı ile hızlandırmayı yavaşlatmayı yapabilir miyiz?  ??? Herkese kolay gelsin.

ete

Adım pals leri ile sürme işine PWM deniliyor ve kullanılıyor zaten. Tabiiki demek istediğini yanlış anlamadı isem.
Tabiiki motor sinyalin frekansı ile hızlanmaz puls süresinin uzaması ile hızlanır ve puls süresinin kısalması ile de yavaşlar.

PID kontrol ile bir DC motor Hız kontrol sistemi yapılacak ise lazım olanlar şunlar olacaktır.
Bir adet DC motor.
Bir adet motor devir kontrol sistemi. Bu motor miline bağlı bir encoder olabilir.  Daha büyük ve güçlü motorlarda genelde tako jenaratör kullanılmaktadır. Bu ise küçük bir dinamodan başka bir şey değildir. Motorun devrine göre bir voltaj üretir sizde bu voltajı ADC ilke okutup devire çevirirsiniz.
Bir H köprü devresi veya tek yönde motoru sürecek şekilde hazılanmış değişken PWM değerine sahip bir sürücü sistem.

Yazılacak program motora bir set değeri verecek ve daha sonra motor devirini ölçerek set değer den ne kadar uzaklaşmış (error) onu hesaplayıp yukarıki bölümlerde açıklandığı şekilde sonuçta PWM sinyalinin %Duty değeri olarak 0-100 arası bir değer hesaplayacaktır. Buda PWM sinyaline parametre olarak girilerek motorun set devrinde dönmesi sağlanmış olacaktır.

Bu ekipmanlara sahip olanlar var ise bir proje başlatabiliriz. Ama havadan proje yapılmasını istiyorsanız bir adım bile yol alamayız onuda bilesiniz.

Ete

inventor

Mesajları yeni gördüm. Her türlü proje için her türlü donanım bulabilirim. ( Büyük çoğunluğunu ) . Projenin adını koyup uygulamaya başlayalım. Şu anda uygun zamanım yok ama akşama bir karar verelim. Ortak proje olsun.
İlmin en büyük düşmanı, sabırsızlıktır. (Şems-i Tırmizi)

Mucit23

Bu işte bende yardımcı olabilirim. Hem yazılım kısmını öğrenirim hemde PCB çizimi ve diğer konularda yardımcı olabileceğimi düşünüyorum.
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

huzame

Alıntı yapılan: ete - 10 Aralık 2011, 12:00:58
Adım pals leri ile sürme işine PWM deniliyor ve kullanılıyor zaten. Tabiiki demek istediğini yanlış anlamadı isem.
Tabiiki motor sinyalin frekansı ile hızlanmaz puls süresinin uzaması ile hızlanır ve puls süresinin kısalması ile de yavaşlar.

PID kontrol ile bir DC motor Hız kontrol sistemi yapılacak ise lazım olanlar şunlar olacaktır.
Bir adet DC motor.
Bir adet motor devir kontrol sistemi. Bu motor miline bağlı bir encoder olabilir.  Daha büyük ve güçlü motorlarda genelde tako jenaratör kullanılmaktadır. Bu ise küçük bir dinamodan başka bir şey değildir. Motorun devrine göre bir voltaj üretir sizde bu voltajı ADC ilke okutup devire çevirirsiniz.
Bir H köprü devresi veya tek yönde motoru sürecek şekilde hazılanmış değişken PWM değerine sahip bir sürücü sistem.

Yazılacak program motora bir set değeri verecek ve daha sonra motor devirini ölçerek set değer den ne kadar uzaklaşmış (error) onu hesaplayıp yukarıki bölümlerde açıklandığı şekilde sonuçta PWM sinyalinin %Duty değeri olarak 0-100 arası bir değer hesaplayacaktır. Buda PWM sinyaline parametre olarak girilerek motorun set devrinde dönmesi sağlanmış olacaktır.

Bu ekipmanlara sahip olanlar var ise bir proje başlatabiliriz. Ama havadan proje yapılmasını istiyorsanız bir adım bile yol alamayız onuda bilesiniz.

Ete


Ete hocam benim anlatmaya çalıştığım şey mesela cnc routurlarda step motor yerine dc motor kullanalım. Bunun için dc motoru dir ve puls sinyalleri ile nasıl surerim  bunun mantığını öğrenmek istiyorum araştırdıgım bazı profesionel sürücülerin özeliklerini sıralarken DIR ve PULS ile kontrol edilir diye belirtiyorlar ben bunun mantıgı nedir öğrenmek isterim acizane...! Ayrca başta siz olmak üzere PID konusundaki paylaşımlarından dolayı inovator'a daha önce teşekkur edememiştim çok teşekkur etmek istiyorum. Herkese kolay gelsin.

ete

DC motorun DIR ve PULS ile kontrol edilmesi mümkün değil. DIR işi bir yere kadar çözülebilr. Normalde DC motora yön değiştirmek için iki uç kullanılması gerekir. Ama siz bunu programa ekstra özllikler katarak yada ilave devre elemanı kullanarak tek uca düşürebilirsiniz. BU mümkün ama DC motorun tek puls yada ard arda verilen bir kaç puls ile çalıştırılması mümkün değil maalesef. Bu yüzden step motor icad edilmiş zaten. Yoksa dc motor puls ile çalışsa idi onu geliştirirler step motoru yapmazlardı. Kısaca her şeyi yapacağız diye bir kural yo maalesef. Teknik imkanların verdiği olanaklar ile çalışmamız sınırlandırılır. Bu sınırı illa yapacağım diye aşmaya çalışam boşuna çabadan öteye geçmez.

Bu açıklamaları yaparken anlattığın DIR  kavramını motora yön değiştirme işaretinin verileceği uç, puls kavramınıda motoru adımlar şeklinde yürütebilmek için verilen sinyalin ucu olarak varsayıyorum. Bu isimleri farklı yorumluyorsan o zaman yeniden konu üzerinde düşünmemiz gerekir.

Ete

huzame

Bu açıklamaları yaparken anlattığın DIR  kavramını motora yön değiştirme işaretinin verileceği uç, puls kavramınıda motoru adımlar şeklinde yürütebilmek için verilen sinyalin ucu olarak varsayıyorum. Bu isimleri farklı yorumluyorsan o zaman yeniden konu üzerinde düşünmemiz gerekir.

Evet anlatmaya çalıştığım DIR ve PULS ( pulslar ) ile sizin anlattıgınız şeyler aynı konu.  O zaman yukarıda bahsettigim cnc router eksen suruculeri DC servo deniyor dc servo kontrol ile pid kontrol farklı şeyler mi?

inventor

PID kontrol konusunda şöyle bir uygulama yapılabilir;

Bilgisayarlarda kullanılan CPU fanlarını sanırım herkes biliyordur. Bu fanlarda 3 adet kablo bulunuyor.
1. +
2. -
3. sesnse ( Devir bilgisi )

Bu fanlarla yapılacak bir uygulama hem motor hemde encoder sorununu çözecektir. Ayrıca herkes uygulama yapabilir.

3 nolu uçtan çıkan bilgiyi şu formülle devire çevirebiliriz;

Devir ( d /dak. ) = (Frekans / 2) *60

Sense ucundan her tur için iki adet kare dalga çıkıyor bu fanlarda. Bizim için oldukça uygun bir ekipman olur diye düşünüyorum. Tek sorun fan uygulamalarında PID işleminin sağlıklı olmaması. Nedeni de şu;

Fanlar enerji kesildikten sonrada bir süre dönmeye devam ederler. Buna serbest duruş deniliyor. Bu nedenle devir yükseltirken sorun olmuyor ancak düşürmeye geldiğinde fan hızlı cevap veremediği için sorun çıkıyor. Tek yapmamız gereken şey; fanı zorlayacak bir sistem o0luşturmak. İster fan göbeğine sürtünen birşey olsun, ister kanatları kırıp kayış kasnak gibi bir düzen olsun. Basit bir şekilde fanı yüke sokabiliriz.

Bence hem uygulaması kolay,hem bulunabilirliği fazla, hemde maliyet düşük. Siz ne dersiniz?
İlmin en büyük düşmanı, sabırsızlıktır. (Şems-i Tırmizi)

ete

Huzame,

DC servo farklı bir motordur ve puls ile çalışır. Buna kısaca servo derler. Bildiğin DC motor gibi davranmaz.
Belirli uzunlukta bir puls uygularsın motor hemen palsa uygun olarak bir pozisyon alır ve durur. Artık aynı puls'ı versende motor yerinden kımıldamaz çünki yerine gelmiştir. Başka bir konuma getirmek için yeniden bir başka puls vermen lazım. Bu motorların hobby servo tipleri vardır ben daha ziyade onlarla uğraştım.
Genelde 0-180 derecelik pozisyon kontrolleri için kullanılırlar. Endüstriyel tipleri brushless yani fırçasız motor diyede geçiyor. BU motorlar hiç bir zaman tam bir tur atmazlar. Genelde 90 derece veya nadir olarak da 180 derecelik harket alanı içinde dolaşırlar.
Bu sistemde PID kontrol kullanılmaz. Çünki amaç motora pozisyon vermektir ve verdiğin puls bu işi rahatlıkla yapar.

Ete

M_B

Alıntı yapılan: inventor - 11 Aralık 2011, 14:51:20
PID kontrol konusunda şöyle bir uygulama yapılabilir;

Bilgisayarlarda kullanılan CPU fanlarını sanırım herkes biliyordur. Bu fanlarda 3 adet kablo bulunuyor.
1. +
2. -
3. sesnse ( Devir bilgisi )

Bu fanlarla yapılacak bir uygulama hem motor hemde encoder sorununu çözecektir. Ayrıca herkes uygulama yapabilir.

3 nolu uçtan çıkan bilgiyi şu formülle devire çevirebiliriz;

Devir ( d /dak. ) = (Frekans / 2) *60

Sense ucundan her tur için iki adet kare dalga çıkıyor bu fanlarda. Bizim için oldukça uygun bir ekipman olur diye düşünüyorum. Tek sorun fan uygulamalarında PID işleminin sağlıklı olmaması. Nedeni de şu;

Fanlar enerji kesildikten sonrada bir süre dönmeye devam ederler. Buna serbest duruş deniliyor. Bu nedenle devir yükseltirken sorun olmuyor ancak düşürmeye geldiğinde fan hızlı cevap veremediği için sorun çıkıyor. Tek yapmamız gereken şey; fanı zorlayacak bir sistem o0luşturmak. İster fan göbeğine sürtünen birşey olsun, ister kanatları kırıp kayış kasnak gibi bir düzen olsun. Basit bir şekilde fanı yüke sokabiliriz.

Bence hem uygulaması kolay,hem bulunabilirliği fazla, hemde maliyet düşük. Siz ne dersiniz?
inventor hocam benim için uygun. Diğer arkadaslarda goruslerını bildirsinler duruma gore davranılır.

Mucit23

#43
Bence çok mantıklı. Fanlar tüm bilgisayar tamircilerinde mutlaka bulunur. Eski malzeme satan hurdacıları bi tarasan bir sürü bulunur. Yani bulunması kolay fanlar.

Ben yazın resimdeki CPU fanlarıyla çok uğraştım.

jpeg image hosting
Fanda 4 adet kablo var. İkisi besleme için bir devri bilgisi çıkışı diğeri ise devir bilgisi girişi. Ben devrini kontrol etmek için çok uğraşmıştım. Fakat bir sonuca ulaşamaştım. Enerji verdiğimde fan hep default devrinde dönüyordu. Eğer bu fanların nasıl haberleştiğini çözersek Daha verimli bir sistem olur kanaatindeyim. Diğer Fanda sanırım beslemeyi değiştireceğiz. Bunda böyle bir sorun yok herşeyi yazılımla hallederiz.  Sonuçta PWM ile kontrol ediliyor.

Edit; Fanın Datasheedi de vardı bende.
http://www.formfactors.org/developer/specs/REV1_2_Public.pdf
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

inventor

Dört kablolu fanlarda sizin de dediğiniz gibi iki uç bersleme olarak kullanılır. Birisi devir bilgisi çıkış ,diğeri de PWM girişidir. 10 Khz - 30 Khz arasında frekansı olan PWM sinyal uygulanır. PWM isinyalin DUTY değerine göre fan hız kazanır.

3 Kablolu olanlarda ise besleme gerilimi ile oynanarak devir ayarlaması yapılıyor. İki sistemi de kullanabiliriz ancak fana biraz yük vermek şartıyla.
İlmin en büyük düşmanı, sabırsızlıktır. (Şems-i Tırmizi)

Powered by EzPortal