Elektrotekno.com Ana Sayfa || Programlanabilir Cihaz ve Elemanlar || Microchip Pic Serisi


encoderla dc motor hız kontrolü

Açıklama:
Elektrik, Elektronik, Haberleşme ve Otomasyon konularının ağırlıklı olarak konuşulduğu, tartışıldığı ve bilgi paylaşımı yapıldığı forumumuza hoşgeldiniz.
Şu an Kod Paylaşım ve Soru Cevap Alanı kategorisi içerisindeki Microchip Pic Serisi forumunda bulunuyorsunuz.
Bu sayfada üyelerimizin "encoderla dc motor hız kontrolü" konusundaki problem, görüş ve önerileri okuyabilir ayrıca konu hakkındaki doküman, resim, proje, devre ve programlara ücretsiz olarak ulaşabilirsiniz. Üye olduktan sonra sizler de konu hakkında sorular sorabilir ya da yorum ve paylaşım yaparak birikimlerinizi aktarabilirsiniz.
Forumdan tam olarak yararlanabilmek için üye olmayı unutmayınız!
Kayıt: 18 Nis 2006
Mesajlar: 3

Offline
seba
Tarih: 16 05 2007 12:51

slm arkadaşlar
encoderlı dc motorun hızını 16f877 kullanarak kontrol etmeliyim.ama nasıl yapacağımı tamolarak bilmiyorum.
yapabildiğim kadarını size anlatayım sizde bana gerisini anlatın[Very Happy]

elimde 100lük encoder var.öncelikle belirli bir sürede encoderın kaç adım gittiğini saydım ve bunu referans hızım olarak kabul ettim. pwm üretip motora gönderdim.(ama sorun burda başlıo)motor pwmin H-L sürelerine göre hızlı yada yavaş dönecek.fakat motor dönerken encoderın kaç adım gittiğini nasıl sayacağımı bilmiyorum.bu konuda bilginiz varmı

1 Kullanıcı bu konu için seba arkadaşımıza teşekkür ettiler

Kayıt: 14 Nis 2006
Mesajlar: 39
Konum: izmir
Offline
kamilmavi
Tarih: 05 08 2007 22:25

en iyisi hpwm


Sevgili arkadaşım PIC in HPWM (donanımsal PWM) özelliğini kullanmalısın. HPWM programdan bağımsız çalışır, frekansı sadece osilatöre bağlıdır ve böylece sen sadece ona döngü içerisinde hızın şu dersin. Senin programın çalışırken o aynı frekansta çalışmaya devam eder. ve değiştirene kadar bozulmaz. 16f877 de 2 adet hpwm çıkışı var CCP1 ve CCP2 olacak portc.0 ve portc.1 e bağlı olması lazım. Detaylı bilgi için PIC BASIC pro derslerini indir. orada sanırım ders 9 veya 11 de ayrıntılı olarak anlatıyor. Kolay gelsin.
Başa dön
Kayıt: 22 Nis 2006
Mesajlar: 381

Offline
ete
Tarih: 06 08 2007 07:45

Öncelikle encoder palslerini okuyacak bir program parçası yazman gerek. Bunun için RB0 kesmesini kullanırsan pals kaçırmamış olacaksın. Programı yazdıktan sonra motor miline bağladığın encoder'in motor milinin her turunda kaç pals ürettiğini sayacaksın. Bunun için motor milini yavaşça tam tur attırman yeterli. Senin ifadenle tur başına 100 pals üreten bir encoderin var. Bu durumda motor milinin her turunda encoder 100 pals üretecektir.
Hız yada devir kontrolü birim zaman içindeki hız yada deviri ifade eder. Özellikle devir konusu bir dakika içindeki atılan turu ifade eder. O halde senin yapacağın iş , öncelikle 1 sn içinde motor milinin kaç tur attığına bakacaksın. Bulduğun tur sayısını 60 ile çarparsan sana kabaca motorun kaç dev/dak. hızla döndüğünü bulabilirsin. Tabiiki bu hassas bir hesap olmayacaktır. En doğrusu 1 dakikalık zaman diliminde encoder in kaç pals ürettiğine bak ve bulduğun rakamı 100'e böl. Böylece gerçek olarak motorun kaç tur/dak. hızla döndüğünü bulmuş olursun.
Formüller şöyle;

1 tur= 100 pals
Dev/dak= xxxx / 100 (burada xxxx sayısı 1 dakikada kaç pals üretildiğidir.)

Encoder palslerinin nasıl okunduğu konusunda bilgin varmı bilmiyorum. Encoderlerin A ve B diye en azından iki çıkışı vardır. Bu iki çıkış birbirinden 90 derece faz farkı ile sinyal üretirler. Bu faz farklı sinyal ile encoderin hangi yöne döndüğü tespit edilir. Şayet yön derdin yok ise direk A çıkışını portB0'a bağlarsan (encoder voltajının 0-5V olmasına dikkat etmen gerek ) gelen palsleri direk sayabilirsin.
Yön tespitide yapacak isen üst üste hem A hemde B çıkılarına bakacaksın. Üst üste yapılan okumalarda bir birinden farklı iki okumayı yakalamaya çalışacaksın. Yakaladığın anda ilk okumanın sıfırıncı biti ile ikinci okumanın birinci bitini XOR yapacaksın bulduğun değer ya sıfır yada bir olacaktır. Encoderin bir yöne dönmesi durumunda bulunan değer hep aynıdır. Ters yöne dönünce bulunan değer bir öncekinin hemen tersi olacaktır. Buradan encoderin hangi yöne döndüğünü anlayabilirsin.

Encoder palslerini saymanın daha kolay bir yoluda Tmr0 zamanlayıcısını kullanmaktır. Bu zamanlayıcıyı şayet harici paslerden tetik alacak şekilde kurarsan ve bölücü seçimini WatchDogTimer için ayarlarsan bire bir olarak Tmr0 dışarıdan gelen palsleri sayabilir. Bu sayıcının pals girişi PortA.4 dür. Böylece PortA.4 e bağlamış olduğun encoder için önce,
- Tmr0 değerini sıfırlarsın
- Sonra 1000 ms lik bir zaman tutarsın.
- Program zaman tutmada beklerken gelen palsler Tmr0 değerini sürekli geri planda artırır.
- 1000 ms sonunda Tmr0 değerini başka bir değişkene eşitlersen 1000 ms de encoderin kaç pals ürettiğini bulmuş olursun.

Ete
Başa dön
Kayıt: 14 Nis 2006
Mesajlar: 39
Konum: izmir
Offline
kamilmavi
Tarih: 17 08 2007 09:23

pic ile encoder okuma


Arkadaşlar, pic basic pro ile kesme kullanarak yazdığım programlardan verim alamadım. Yani sayma sırasında encoderden okunan değerlerde atlama oluyor. doğru olması için , encoderin çok yavaş dönmesi gerekiyor. Yabancı sitelerde de yaptığım araştırmada pic basic pro'nun interrupt özelliğinin çok hızlı saymalarda verimli olmadığı görünüyor. Hızlı kesme işlemlerinin assembly dili kullanılarak yazılması gerektiği vurgulanıyor. Zaten pic basic pro ' nun kendi yardımında da bu doğrultuda bir bilgi var. Eğer Bu konu da bildiğiniz farklı bilgiler varsa paylaşmanız çok faydalı olur. Teşekkürler
Başa dön
Kayıt: 22 Nis 2006
Mesajlar: 381

Offline
ete
Tarih: 19 08 2007 18:04

Pic Basic pro ile yazılmış bir programın nasıl encoder okuduğuna örnektir.
Encoder simulasyonu 2 adet D tipi flip flop kullanılarak gerçekleştirilmiştir.
Gerekirse Osiloskop bağlayarak A ve B girişleri arasındaki faz farkını görebilirsiniz.

http://www.4shared.com/file/22379128/f0...coder.html

KOlay Gelsin

Ete
Başa dön
Kayıt: 14 Nis 2006
Mesajlar: 39
Konum: izmir
Offline
kamilmavi
Tarih: 23 08 2007 19:05

ete usta'ya saygılar


Ete usta yardımların için çok teşekkür ederim. Bugüne kadar yazmış olduğun birçok yazıyı okudum ve çok faydalandım. Bu encoderi pic basic pro ile bir türlü hızlı okutamadım. Göndermiş olduğun devre çok güzel çalışıyor. Fakat basic kodlarını göndermemişsin. Eğer kodları gönderirsen çok işime yarayacak. Kafayı sıyırdım bu sayma işiyle. Yardımcı olursan çok sevinirim. Birde senin mail adresini veya iletişim kurabileceğimiz bir adres verebilirmisin. 2 gündür arıyorum ama bulamadım seninle ilgili şahsi bir bilgi yok proje sitelerinde Smile şimdiden Teşekkürler.
Başa dön
Kayıt: 22 Nis 2006
Mesajlar: 381

Offline
ete
Tarih: 23 08 2007 19:34

aslında programı bilerek vermedim. biraz kafa yorun diye. zorlanıyorsan program aşağıdadır;

Kod


bır var byte
onn var byte
yuz var byte
bınn var byte
old var byte
new var byte
yon var bıt
ledy var porta.2
ledk var porta.3

trısb =%00000000:trısa=%00011

start:    
   porta =0:portb =0:high portb.4:high portb.5:high portb.6:high portb.7:pauseus 10

bas:   gosub encoder:ıf yon = 1 then
       bır = bır + 1:endıf
       ıf bır = 10 then bırsıfır
       ıf yon = 0 then
       bır = bır - 1:endıf
       ıf bır = 255 then bıreksı

ekran:     portb = bır & 15:high portb.4:low portb.4
       portb = onn & 15:high portb.5:low portb.5
       portb = yuz & 15:high portb.6:low portb.6
       portb = bınn :   high portb.7:low portb.7:goto bas

encoder:   old = porta & %11
tekrar:      new = porta & %11
         ıf new = old then tekrar
         old = old >> 1:new = new & 1:yon = old ^ new
          ıf yon = 0 then
          high ledk:low ledy:endıf
          ıf yon = 1 then
          high ledy:low ledk:endıf
          return
           
bırsıfır:   bır = 0:onn = onn + 1
         ıf onn = 10 then onsıfır
          goto ekran

onsıfır:   onn =0:yuz = yuz + 1
         ıf yuz = 10 then yuzsıfır
         goto ekran

yuzsıfır:   yuz = 0:bınn = bınn + 1
         ıf bınn = 10 then
         bınn = 0:endıf
         goto ekran
      
bıreksı:   bır = 9:onn = onn - 1
         ıf onn = 255 then oneksı
         goto ekran

oneksı:      onn = 9:yuz = yuz - 1
          ıf yuz = 255 then yuzeksı
         goto ekran 
      
yuzeksı:   yuz = 9:bınn = bınn - 1
         ıf bınn = 255 then
         bınn = 9:endıf
         goto ekran

haberleşme adresimi direk vermek istemem. sonra bir sürü spam geliyor. lütfen özel mesaj atıver. orada veririm.
ete
Başa dön
Kayıt: 01 Şub 2008
Mesajlar: 10

Offline
eyazlik
Tarih: 07 08 2008 16:42

Verdiğiniz bilgiler için teşekkürler. Ben, pic 16f877 ile encoder palslerini saydırarak bir motora pozisyon kontrolü yaptırmak istiyorum. Örneğin encoder 1000 pals ürettikten sonra motoru durdursun. Buna benzer bir program parçası gönderebilir misiniz. (Pic basic pro ile yazılırsa gerçekten yararlı olacaktır.) Şimdiden teşekkürler.
Başa dön
Kayıt: 22 Nis 2006
Mesajlar: 381

Offline
ete
Tarih: 09 08 2008 17:04

aslında yukarıda verdiğim programı direk kullanabilirsin. Normalde encoder 1000'e kadar sayarsa Binler değişkeni değeri=1 (binler=1) olacaktır.
Programın başında motoru bir şekilde aktif edersin ve
Gosub Encoder satırı altına
If Binler=1 Then Motor_Dur

şeklinde bir satır koyup Motor_Dur alt programında da motoru nasıl çalştırdın ise aynı şekilde durdurursun olur biter.

Bunun dışında özel program yazmam mümkün değil. Bak görüyorsun ortada detay yok zaten. Motoru kim çalıştıracak nasıl durdurulacak vs.

Ete
Başa dön
Kayıt: 29 Mar 2008
Mesajlar: 2

Offline
yudum
Tarih: 09 08 2008 22:31

ifm electronic ten gerekli enkoder lari temin edebilrsin
Başa dön


Sayfaya git 1, 2  Sonraki

encoderla dc motor hız kontrolü


Benzer Konular

- STEP Motor ile ilgili

- Mikrokontroller ile servo motor kontrolü
- Usb ile step motor kontrolü
- dtfm tonu ile uzaktan cihaz kontrolü
- dtmf sinyali ile uzaktan cihaz kontrolü
- Asenkron motor sorusu
- Pic ile servo motor kontrol devresi
- Step Motor Kontrol Devresi Tasarımı
- Grafik lcd tuştakımlı picli step motor kontrol v1.0

- Ustalardan Acil yardım Lazım (step motor daha çok elektronikle ilgili)

- s7-200 ile motor sürmek istiyorum?

Sitemize üyelik ve içeriğin indirilmesi tamamen ücretsizdir. Sitemizde paylaşılan tüm dokümanlar (Tezler, makaleler, ders notları, sınav soru cevaplar, projeler) paylaşımcıların bireysel çalışmaları olup telif hakları kendilerine aittir ya da açık bir şekilde kamusal alana yerleştirilmiş dokümanların birer kopyalarıdır. Kişilerin bireysel çalışmalarını sitemizde yüklemesinde, sitemizde paylaşıma teşvik eden puanlama sisteminin de etkisi büyüktür. Bunlara rağmen hala size ait olan ve burada bulunmasına izin vermediğiniz dokümanlar varsa iletişim bölümünden yöneticilere bildirmeniz durumunda derhal silineceklerdir.
Powered by phpBB | Translated by phpBB Türkiye | Ads by Google Adsense | Design by Crazy Bat based
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72