PID Servo DC Motor Hız Kontrolü

Başlatan _MOD_, 19 Şubat 2011, 12:04:04

_MOD_

Selam. Bu dönem bana Sanyo Denki Servo DC 48V 3A' lik bir motorun hız kontrolü projesi verildi.

Projede, bir lcd olacak. LCD'de tasarlanan menü aracığıyla sistemin Kp Kd Ki değerleri girilecek.

Ayrıca bu ana motoru zorlayan, miline bağlanmış daha düşük güçlü bir dc motor olacak. Amaç ana motora uygulanan yükü dengeleyerek LCD'den girilen referansda dönüş sağlamak.

Kafama takılan şeyleri sormak istiyorum. Yardımcı olursanız sevinirim.

Öncelikle; Sistemin düzgün çalışması için gerekli Kp Kd Ki değerlerini şimdiden bulmama gerek varmı? Çünkü bu değerleri lcd'den girip değiştirebiliyo olmam lazım. Sonradan sistem kuruluyken de tespit edebilirmiyim?

2.si; LCD'den girilen Kp Kd Ki değerleri için kaç basamak ayırayım. Yani Kp Kd Ki değerleri en fazla kaç olsun?

3.sü; PID formülündeki sampling periyodunu nasıl tespit edeceğim?

klax

- pid degerlerı sistem calısmadan olusturamassın.simulasyon ile gercek uygulamada cok farklılıklar olusuyor.
- kp kd ki degerlerını gelınce istersen char veye integer 16 bit yapabılırsin
- samle timede milisanıyelerden dakıkalara kadar  degişebilir.bunun sebebı sisteminin ne kadar hızlı veya yavas olmasına baglı.
-  dc servo miline baglı olan kucuk dedıgım dc motor ıle fren yaparak sistemde ne ayarlamak ısıtıyon.?
TB2EOS

_MOD_

#2
Alıntı yapılan: klax - 19 Şubat 2011, 12:45:22
-  dc servo miline baglı olan kucuk dedıgım dc motor ıle fren yaparak sistemde ne ayarlamak ısıtıyon.?
Küçük motor, ana motoru zorlayacakmış, bizim pic de pid ile ana motorun dönüşünü istenilen rpm de tutacakmış.

Alıntı yapılan: klax - 19 Şubat 2011, 12:45:22
- pid degerlerı sistem calısmadan olusturamassın.simulasyon ile gercek uygulamada cok farklılıklar olusuyor.

Peki ben programı yazsam. Pid algoritmasını kursam. Sistemi kursam. Sonra butonlarla kp kd ki değerlerini girip, bu değerleri çıkışdaki değişimleri gözlemleyerek belirlesem olmazmı?

Alıntı yapılan: klax - 19 Şubat 2011, 12:45:22
- kp kd ki degerlerını gelınce istersen char veye integer 16 bit yapabılırsin

Assembly' ye daha alışkın olduğum için assembly ile yazmaya çalışıyorum :(

Alıntı yapılan: klax - 19 Şubat 2011, 12:45:22
- samle timede milisanıyelerden dakıkalara kadar  degişebilir.bunun sebebı sisteminin ne kadar hızlı veya yavas olmasına baglı.

Peki ben bu değeri nerden belirlicem. Benim yazdığım programda bunun kaç olduğunu nasıl anlayacağım veya belli bir değere nasıl ayarlayacağım? Sample time analog dijital çeviricinin çevirme süresimidir?



Tagli

Tam aradığın şey değilse de AN964 sana baya fikir verecektir. Ayrıca, AN937'nin de işine yarayacağını düşünüyorum. Güzel anlatımlarının yanında her ikisinin de kodları mevcut.
Gökçe Tağlıoğlu

_MOD_

Alıntı yapılan: Tagli - 19 Şubat 2011, 14:19:51
Tam aradığın şey değilse de AN964 sana baya fikir verecektir. Ayrıca, AN937'nin de işine yarayacağını düşünüyorum. Güzel anlatımlarının yanında her ikisinin de kodları mevcut.

AN964' e baktım. Ama işaretli işlem yaptıkları için bazı yerler kafama takıldı. Bazı değerlerde sınırlamalar kullanmışlar.

klax

pid control ile bu isi yaparsın istediğin rpm hızlı bır sekılde ulasırsın ve set degerınde sabıt bır rpm elde edersın.
fren nıyetine kulanacagın motorada gerek kalmaz.
servo motor ne ıs yapacak detaylı anlatırsan daha iyi yardımcı olurum.
TB2EOS

_MOD_

#6
Servo motor un yaptığı pek bir iş yok. Sadece binen yüke rağmen devir sayısı referansta tutalacak.

Yük de küçük motor aracılığı ile bindirilecek.

Küçük motor picden bağımsız olacak. Pot la üzerindeki gerilim ayarlancak