potansiyometre ile step motor kontrolü

ysnkrsln

Üye
Katılım
31 Tem 2010
Mesajlar
45
Puanları
1
Yaş
35
Merhaba arkadaşlar.
Şöyle bir konu üzerinde çalışıyorum:
Pic 16f877 entegresinin analog girişlerinden bir tanesine potansiyometre bağladım.Potansiyometrenin açısı değiştikçe step motoru da aynı açı değerinde döndürmek istiyorum.
Fakat bir konuda sorun yaşadım.Analog girişin,giriş voltajının potansiyometre ile değişmesini sağladım.Daha sonra bu bilgiyi dijital bilgiye çevirdim.Ama bu dijital bilgiyi step motor için nasıl adım bilgisine dönüştüreceğimi bulamadım.
Bu konuda fikir verebilecek var mı?
Bunu çevrim tablosu gibi bir şeyle yapabilir miyim?

6 uçlu bir step motor kullanacağım.
 
ADC devresinin proteus çizimini printscreen ile gösterebildim ancak dosya yükleyemedim.
proteus_resim.jpg


Step motor sürme işlemini şimdilik 16f84'te denedim.ULN2003 kullandım.
step_deneme_proteus.jpg


Sorunum şu:Bu dijital çıkıştaki bilgiyi nasıl adım bilgisine dönüştürebilirim?
2.sorum:Motoru istenilen açı değerine geldiğinde nasıl durdurabilirim ve motorun hangi açı değerinde olduğunu nasıl anlarım?

Teşekkürler.
 
Belirli analog değere karşılık gelen belirli sayıda puls üretmelisin , ne eksik ne fazla.
Bu puls ile motorun step lerini belirlersin.
Aynı şekilde potun orta noktası sıfır gibi kabul edersek sağa sola değerlerine göre dir(direction) komutu elde etmelisin.

Motorun hangi pozisyonda olduğunu miline bağlı encoder ile okuyabilirsin.
Step sayılarını elde etti isen ve motorun adım kaçırmıyorsa hesapta doğru yerdedir ama kesin pozisyon gerekli ise servo sistem yani mesela encoder ile geri besleme yapmalısın.
Kabaca değerler yeterli ise mile bağlı bir potu okuyabilirsin...

Böyle sorularda proteus gibi çalışmaların resimleri hiç bir işe yaramaz kimse yeniden çizmek ile uğraşmaz.
Onun yerine proteus çalışmasını ve kodları çalıştığın dosyaları rar ile 1 paket haline getirip bir yere yüklersin ve indirme linkini soruna eklersin....
 
Öncelikle potun tam olarak kaç derece dönebildiğini bilmek lazım.
Diyelimki 270 derece dönebiliyor.
Bu durumda 200 adım/tur motor kullanıyorsan 200*270/360 = 150 adım da motor mili pot kadar yani 270 derece hareket eder.

Devrene göre ADC den okuyacağın değerler 0-1024 arasında olacak. 1024 değeri için 150 adım atmamız gerekecek.

Buna göre de ADCval * 150 / 1024 pota göre atman gereken adım olacak.

Motoru sağa-sola, istenilen sayıda adım ile döndürebildiğini varsayıyorum.

Motorun o anki pozisyonunu ve gitmesi gereken pozisyonu tutan iki adet değişkenin olsun.
Bunlara guncelPos, hedefPos diyelim.

hedefPos = ADCVal * 150 >> 10; şeklinde hesaplanır.
hedefPos-guncelPos farkı bulunulan pozisyondan istenen pozisyona gitmek için atılması gereken adım olur. fark pozitif ise CW negatif ise CWW yönde adım atarsın.

ADC den okumalarda salınımlar olabileceği için de ADC den okunan değerlerin tercihen 2'nin kuvvetleri şeklinde adet ile toplanıp ortalama almak da gerekir.

Dikkat edilecek bir konuda devrene ilk enerji verdiğinde motor milinin pozisyonu konusu. Ya enerji kesilmeden önce milin konumu sıfırlanmalı yada index bilgisi de olan bir enkoder yada resolver cinsi bir şey kullanılmalı.

Birde aynı pottan motor miline bağlanıp Voltajları eşitlemek şeklinde bir çözüm olabilir. RC servoların çalışma mantığı gibi..

Bu konu ne için, merakmı ödevmi?. Bildiğim kadarı ile araç göstergelerinde ibreler bu şekilde hareket ettiriliyor.
 
Böyle sorularda proteus gibi çalışmaların resimleri hiç bir işe yaramaz kimse yeniden çizmek ile uğraşmaz.
Onun yerine proteus çalışmasını ve kodları çalıştığın dosyaları rar ile 1 paket haline getirip bir yere yüklersin ve indirme linkini soruna eklersin....

Herhangi bir upload sitesinde üyeliğim yoktu o yüzden yükleyemedim.Bir sonraki sefer artık öyle yaparım.Teşekkürler.

Bu konu ne için, merakmı ödevmi?. Bildiğim kadarı ile araç göstergelerinde ibreler bu şekilde hareket ettiriliyor.
Bu Mikrokontrol uygulamaları dersi için yapmaya çalıştığım bir proje.Fakat PIC programlama konusunda hala biraz sıkıntım var.Ama araştırmaya devam edeceğim.Cevaplarınız için çok teşekkürler.
 
Tekrar merhaba arkadaşlar.
Bu bahsettiğim projeyle ugrasıyorum hala.Fakat bir sürü denemeden sonra tıkandım sorunuma çözüm bulamadım.(Tabi bunda benim yazılım konusundaki beceriksizliğimi de eklemek lazım.)
Girişe uygulanan 5v analog bilginin adc çözünürlüğü 5/256=19.53 mV. Ben giriş voltajındaki 20 değeri alarak bu değere karşılık gelen dijital değerleri,potansiyometrenin bu voltajdaki açısını,bu açı için step motora kaç adım vermem gerektiğini hesapladım.
Döndürme olayını sadece bu 20 değer için yapmak istiyorum.Örnek vermek gerekirse:
giriş gerilimi 3V ise step motor 180 derece dönecek.2V ise 120 derece dönecek.Sadece tek yönde dönmesi şimdilik bana yeterli.

2.sorum:
Önce ADC işlemi yapılsın daha sonra bir gecikmeden sonra step motor dönsün.Ben step motoru bir türlü gecikme ile başlatamadım.

Programdaki karşıklıklar için özür dilerim .(Benim ilk projem)
Dinlediğiniz için çok teşekkürler.Bana yol gösterip yazılım hatalarını söylerseniz sevinirim.
 
tamam arkadaşlar sorunu hallettim teşekkürler.
 
isisteki şemadan anlaşıldığı üzere adc 8 bit e kurulu.
 
Adc den okunan degeri belli bir aralığa nasıl cekilir
Örnek
0 1023 degerini 0 200 aralıgına nasıl çekebiliriz
 

Forum istatistikleri

Konular
129,867
Mesajlar
930,872
Kullanıcılar
452,732
Son üye
erencok

Yeni konular

Geri
Üst