motor hızlanma-yavaşlama

Başlatan sdonmez, 11 Aralık 2006, 17:44:01

sdonmez

motor sürücülerinde kullanılan rampalı hızlanma yavaşlama nasıl yapılıyor? mantığı nedir? Nasıl yapılır?  İstenilen değer nasıl saniye cinsinden giriliyor da bu iş oluyor? digital olarak mı, analog olarak mı yapılıyor? bilgisi olanlardan yardım bekliyorum.

teşekkür ederim...

paradox

rampalı hızlanmayı gecikme ile yapıyorum hocam mikroişlemciyle ben.yazılımla yani.siz ne ile sürmek istiyosunuz motoru.picle falanmı.sabit bir gecikme yazıp süreki uygulamalısınız.yani başlangıç değerini sıfırdan alıp geciktirip 1 ekleyin sonra tekrar gecikme +1 böle sonuç mesela hexadecimal ff oluncaya kadar döngü yaparsınız.


biraz kabaca anlattım fakat uygulama yapmak isterseniz yardımcı olabilirim belki.mikroişlemci mantığı ile yaklaştım picde de aynı olması lazım...

sdonmez

misal PI kontrollü PIC tabanlı basit low side mosfet veya tek faz tristör kontrollü dc motor sürücü var diyelim.  PI veya PID yönteminde yükselme süresi falan var ama biz direkt onlara ait bir süre katsayısı giremiyoruz.  Kp, Ki, Kd katsayıları bunu kendi ayarlıyor.  Ama sürücülerde sn cinsinden değer girilip PI ya da PID ile kontrol yapılıyormuş.  Yani öğrenmek istediğim hem PID hem rampa işlemi nasıl oluyor?

saygılarımla...

sdonmez

bu konu hakkında bilgisi olan yok mu? motor sürücüleri konusunda tecrübeli arkadaşlar, yardımınızı bekliyorum.

saygılarımla...

picusta

öncelikle PI ve PID ile ne kontrol ettigin önemli hiz mi pozisyon mu? Diyelim ki kontrol ettigin hiz. Birinci seçenek önce rampa sonra PID:
O zaman denetleyicinin girisine (komut)rampa koyman gerekir ki hiz da rampa seklinde olsun. Bu rampayi yapmak için de belli bir süre sonunda komutu artirabilirsin. Ne kadar artirman gerektigini ufak bir hesapla bulursun. :   max hiz * artirim süresi / rampa süresi.
PI'de takip atasi olabilir tabii (PID'de de olabilir fakat sistemin (motor+sürücü) yapisina göre olmayabilir) bunun için sistemin transfer fonksyonunu incele.

sdonmez

şunu biraz daha açabilir misiniz? yani PID yönteminde hızın yükselmesi ve yükselme süresi bizim elimizde değil ki, katsayılara bağlı. anlattığınızdan şunu anladım; PID'den çıkan sonuç rampanın o andaki değerinden büyükse bekletme gibi bir yöntemle bu hızı sınırla. Doğru anlamışmıyım? bana bu iş böyle yapılmıyor gibi geliyor ama hala net yanıt bulamadım.

z

PID katsayılarla bu işin herhangi bir alakası yok. PID katsayıları motorun istenen kriterlere gore denetimimiz altında tutulmasını sağlar. Bu kriterler  örnegin basamak girişine karşılık basta aşım, yükselme zamanı, yerleşme zamanı gibi kriterlerdir.  Buradaki yukselme zamanı ve yerleşme zamanı ile sizin istediğiniz zaman kriterleri çok farklı şeylerdir.

Sistemin katsayılarını bir kez ayarladınızmı artik PID katsayılari ile ilgilenmezsiniz.

PID kontrol girişine sinyal vererek motoru çevirirsiniz. Motorun ne kadar zamanda hızlanacağı ne kadar zamanda duracağı giriş sinyalinin yapısı ile ilgilidir.

Hız servosu olan bir düzenekte PID referans girişine üçgen dalga sinyal verirsek sistem motoru sıfırdan itibaren üçgen sinyale gore hızlandırır üçgen sinyal tepe yapınca motor da max hıza ulaşmış olur.

Üçgen sinyal inişe geçtiğinde motor da yavaslama sürecine girer. Üçgen sinyal sıfıra ulaştığında motor da sıfır devire ulaşmış olur.

Üçgen sinyal burada motora doğrusal hızlanma ve yavaşlama yaptırmış olur. Üçgen yerine parapolik, sinusoidal ya da tamamen farklı bir fonsksiyon hızlandırma sinyali olarak kullanılabilir.

Birim zamandaki hızlanma miktari ivme demektir şayet sabit  ivme sozkonusu ise hız sinyalinin dalga forumu üçgen demektir ve uçgenin eğimi ivme anlamına gelir.

Eğer ivme basit bir fonksiyon değilse hareket denklemleri diferansiyel denklemler şeklinde yazilir ve cozulur.

Sonuçta ivmenin integrali hız, hızın integrali de pozisyondur.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

sdonmez

PID olayını biliyorum, daha önce bilgisayardan dc motorun hızını PID ile kontrol de etmiştim. bana rampa&PID işleminin pratik olarak PIC ile nasıl yapabileceğimi de anlatırsanız tam süper olacak :)

saygılarımla...

picusta

Alıntı YapPID yönteminde hızın yükselmesi ve yükselme süresi bizim elimizde değil ki, katsayılara bağlı. anlattığınızdan şunu anladım; PID'den çıkan sonuç rampanın o andaki değerinden büyükse bekletme gibi bir yöntemle bu hızı sınırla. Doğru anlamışmıyım?
Tamamen yanlis anlamissin (veya açik anlatamamisim). Neyse ki z daha açik anlatmis.
Sistemi blok olarak ele alirsak, önce rampa sonra PID:
HIz komutu ------> Rampa-------> PID---------> motor sürücüsü------>motor
Alıntı Yapbana rampa&PID işleminin pratik olarak PIC ile nasıl yapabileceğimi de anlatırsanız tam süper olacak
En zevkli kismi hazir yapilmis olarak istiyorsun.
Mantigi anladiktan sonra programi yazmak o kadar sorun değil.
Hazir olarak yapilmis istiyorsan microchip'in application note'u var ona bir bak.

sdonmez

hazır kod isteyen zaten yok, ben olayın mantığını anlamaya çalışıyorum. ben sürücüyü yaptım PID sini de yaptım, sadece rampa işini PID ile beraber nasıl uygulayacağımı tam kavrayamadım. istediğim şey sizin yazdığınız gibi blok diagram değil yani  misal ------> Rampa dediğiniz alanda "Hız komutu" nasıl etkileniyor? Rampa kısımında benim sisteme girdiğim hız değerine ne oluyor? PID'ye rampadan çıkan "ne" giriyor?
Ben mi derdimi anlatamadın ki? Varsa link yazarsanız çok iyi olacak.

saygılarımla...

picusta

Simdi söyle diyeyim,
örnegin sen hiz komutunu veriyorsun (veya otomatik üretiliyor)
sonra bu rampa denilen blok islevine giriyor, bunun çikisi da PID islevine gidiyor.
örnegin:
komut = HIz komutunu al;
rampalanmis_komut = rampa(komut, rampa_açisi);
motor_çikis = PID(rampalanmis_komut);

Simdi asil soru bu rampa bloku nedir, nasil çalisir?
kisaca sinyalin yükselme hizini sinirlar.
Bunun için hafizada bir önceki çikisini bilmeli.
algoritmasi:
eger ( mutlak_deger(giris-önceki_çikis) < rampa_açisi ) ozaman çikis=giris;

yoksa çikis = önceki_çikis +(veya - yöne göre) rampa_açisi;

hafiyayi kaydir(); //(önceki_çikis=çikis)

Benim rampadan anladigim bu.

sky76

Bu adreste satılan motorlar yokuş çıkabiliyor.

edit:Reklam kokan hareketler olmasın

zamzam23

#12
Alıntı yapılan: sdonmez - 14 Aralık 2006, 08:38:13
şunu biraz daha açabilir misiniz? yani PID yönteminde hızın yükselmesi ve yükselme süresi bizim elimizde değil ki, katsayılara bağlı. anlattığınızdan şunu anladım; PID'den çıkan sonuç rampanın o andaki değerinden büyükse bekletme gibi bir yöntemle bu hızı sınırla. Doğru anlamışmıyım? bana bu iş böyle yapılmıyor gibi geliyor ama hala net yanıt bulamadım.

kardeş rampa olayını çözebildiniz mi? ben de aynı şeyle ugrasıyorum suan.picusta rampa degerleını diziye aktar ordan cek demıstı. ancak rampa degelerı kullanıcının girdigi degerlere göre değişiyor.bu yöntem calısmaz.ancak şöyle calısır:dizi elemanlarını yine kullanıcın verdıgı degerlere göre yenıden sekıllenmesı olabılır. bunun bi formulü bişiyi olmalı. baska türlü olmaz heralde.  bu sekılde kullanıcının belırledıgı bır rampayı nasıl olusturabılırım. rampa dedıgım de tam rampa egıl. S şeklınde. parabolık rampa diyorlar ondan.