Motor rampa kontrol

Başlatan torlaktr, 28 Ocak 2016, 17:46:16

torlaktr

Arkadaşlar merhaba

Motoru rampa ile belirli sürelerde kalkışını ayarlamak ıstıyorum
Alt sınır trigger değerim : 34500
Mesela :
1500 devir girersem set değeri olarak 10 saniyede ulaşsın
  500 devir girersem set değeri olarak 10 saniyede ulaşsın

Buradaki girmiş olduğum süre  değeri olan (10) u değiştirerek kalkış zamanını değiştirmek ıstıyorum nasıl yapabilirim fikri olan ?

F®T

Pwm duty değeri her arttırımda ayarlanabilir bir zaman alt programına yollarsın.Bu zaman sonunda pwm duty sini 1 arttırırsın.tekrar zmaana gider 1 arttırırsın.Bu şekilde rampa zamanı oluşur.Ayrıca timerıda bir değişken ile 10sn eşlersin.Bu değişkeni değiştirdiğin zaman rampa süreside ona göre ayarlanmış olur.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

torlaktr

Cevap verdıgın ıcın öncelıkle teşekkür ederim
Timerları kullanıyorum hepsini kesmelerde vs..
Ben konuyu tam anlatamadım sanırım
Derdim tam olarak şudur ;

Bır motor düşün ve bunun dıjıtal bır kontrol panelı var motor dc gırısınde tristör ve köprü diyot var şebekeyi kıyarak kontrol edıyorum

(deviri unutalım şu anlık )

Ben istiyorumki panelımden dc olarak 100 volt girdiğimde ve rampa suresı olarak 10 sn gırdıgımde
Motorum 10 sn de 100 volt a ulaşsın

bununla bırlıkte

Panelımden 50 volt gırdıgımde ve rampa suresı 10 sn gırdıgımde

10 sn de 50 volt değerine ulaşsın

Sorunum tam olarak budur

F®T

Anladığım kadarı ile sen ana kuvvet çıkış voltaj kısmını zaten ayarlıyorsun ama bu ayarlamayı yaparken istediğin sürede ayarlansın istiyorsun.Kuvvet çıkış voltajın ne olursa olsun ayarladığın süre zarfında bu voltaja ulaşmasını istiyorsun.
Bence senin tetikleme yaptığın tristöre uyguladığın gecikme süresi min değeri ve max değeri ile oluşan min max volt değerlerinle gireceğin zaman değişkeni arasında bir bağıntı kurman lazım.Ama nasıl.Alt sınır trigger değerin 34500 peki üst sınır nedir.Bunun birimi nedir.Bu değerleri girdiğin zaman oluşan min max çıkış voltajların nedir.
"Hakk" şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

ete

Yazılımın detaylarını bilmeden bu konuda nasıl yorum yapabilirizki.? Aslında dereyi geçip çayda boğulmak diye buna derler her halde işin zor kısmını halletmişsin kolay kısmında takılmışsın.
Neden yazılım detayı gerekli örnek ile açıklayayım.
Benzer işleri genellikle dc motor kalkışlarında kullanırım.
Sürmek için hpwm kullanırım. Genellikle 5-10 khz lik bir sinyal oluştururum ve maksimum duty değerim 1000 olur. Bu değeri verince motorum diyelimki 2000 devirde dönüyor olsun.
Şimdi bu motoru sıfırdan 2000 devire 10 sn de kaldırmak istersem , duty değerim olan 1000 değerine 10 sn (10.000 ms) lik peryot içinde çıkmalıyım. Duty değerimi birer birer artırıp arada 10 ms lik gecikme koyarsam 1000x10=10000 olacağı için motorum 10 snde maksimum devire çıkacaktır. Formül nedir peki (Maksimum süre/devir_duty değeri) yani 10000/1000 bu formül kuracağım döngüde kullanacağım gecikme miktarını verecektir.
Peki aynı işi 1000 devir için yapmış olsam nasıl bir sonuç elde ederim?
1000 devir için duty değerim 500 olacaktır. O halde 10000/500=20 o halde döngümü, 0 to 500 olarak kurup arada 20 ms lik gecikme verirsem motorum sıfır devirden 1000 devire kadar 10 sn de çıkacaktır. Gördüğün üzere süre değişmedi ama devir değişti.
Burada motor devrini pwm duty değeri ile değiştirdiğimiz için kullandığımız parametre devire karşın verilen pwm_duty değeridir. Senin yazılımında kullandığın parametre ne ise  sende benzer bir hesap yapabilirsin.

Ete

torlaktr

F.t Tekrar teşekkür ederim Buradaki 34500 değeri benım aslında tımer1 değerim ben timer1 değerini değiştirerek kesme zaman gecikmesini ayarlayarak tristörü kıyıyorum. üst değer 65550 bu değerde motoruma tam 230 vdc bınıyor.

Ete hoca benim sürme konusunda bir sıkıntım yok sıkıntım rampa kontrolü yazılım detayları demişsin css de yazdım ama basic de biliyorum örnek verecek olursam şöyle düşünelim basic icin.

zaman var byte
zaman = 0
sure var byte
sure = 0
girilendeger var byte
girilendeger = 100 ; volt olarak düşünelim
trigger_time var word
trigger_time = 34500;

basla


zaman = zaman +1
IF zaman > 5 then
sure=sure+1
zaman = 0
ENDIF


IF volt < girilendeger and sure <10 then
trigger_time = trigger_time +1
ENDIF

Buraya kadar 10 sanıyelik bir zaman diliminde moturum 100 volt değerine ulaşıyor

Şimdi sorunum şudur ki;

Ben buraya 200 yazdım volt hanesine burada istiyorumki 200 volt değerinede 10 saniyede ulaşsın bunu nasıl yapabilirim




ete

Motoru sürmede sıkıntın olduğunu söylemedim zaten. Ona kuşkum yok. Benim sormak istediğim nasıl sürdüğün idi.
Yazdıklarından yine pek bir şey anlamadım ve olayı kafamda canlandıramadım.

Benim için motor voltajın nasıl artırılıyor bir komut vererek mi? yoksa zamana bırakılmış halde zaman geçtikçemi?
Bu ikincisi ise istediğin işi yapmak zor bence. Ama birincisi ise onu zaman dilimine ayrıp ara gecikmeyi hesaplayarak bunu yapman lazım.
Elinde iki tane parametren var. ;
- Trigger Time ki ne işe yaradığını hala anlamış değilim!!!
- Motor Voltajı
Aslında bir üçüncü parmetren daha var ki oda motorun o voltaja ulaşma süresi ki bunuda;
- Rampa_Süresi olarak kullanmak lazım.
Trigger time parametresinin fonksiyonunu anlamadım. Bu nedenle onu devre dışı bırakacağım.
Bu işin istediğin gibi olabilmesi için Motor voltajını dilimler halinde sen komut ile yükseltebilmen gerekiyor.
Bütün yapılacak iş 100V tu dilimlere ayrıp 10 sn için kaç dilim gerektiğini hesaplayarak gereken miktar kadar bir döngü kurman ve bu döngü içinde motor voltajını artırman. Döngü sonunda da 10 sn geçmiş olacak ve motor voltajın da istenilen seviyeye gelmiş olacaktır.
Gerisini sen yapacaksın artık.

Ete


torlaktr

#7
Trigger_time değişkenım timer1 kesme gecikme sürem şöyleki ;

if(input(PIN_B1)==1 )
{
ext_int_edge( 1,H_TO_L );   
set_timer1(trigger_time); 
setup_timer_1(T1_INTERNAL | T1_DIV_BY_1);
}
else
{
ext_int_edge( 1,L_TO_H ); 
set_timer1(trigger_time); 
setup_timer_1(T1_INTERNAL | T1_DIV_BY_1);

Şu an üzerindeyim projenin durumu buraya yazacagım teşekkür ederim

Powered by EzPortal