matematiğim yetmedi ve yaptığın işlemden hiçbir şey anlamadım değeri bulsam bile işe yarayacağını düşünmüyorum çünkü geçen değeri uğraşa uğraşa bölme yöntemiyle buldum ve döndürdüm ama eşit dönmüyordu mesela ben 360 derece döndürdüğümde tam 360 derece dönüyordu ama bikaç tur döndürdükten sonra step motor adım kaçırıyordu titreyip yine şaşırıyordu konumunu o yüzden ikinci yöntemi kullanma kararı aldım onun için de tek yöntem sıfırlamak gibi geliyor onu nasıl yaparım anlatabilir misinVarsin saysin 65545'e kadar.
Count/1200 isleminde tam kisim Tam tur sayisi kalan ise senin aradigin pozisyon bilgisi.
Diyelimki counter 6500 degerine ulasti. 6500/1200=5.4
Demekki tam 5 tur donmus ve encoder degerin 6500- (5*1200)=500
sıfırlamayı denedim ama döngü sonunda değişkeni sıfırlasam da döngü başa geldiğinde enkoder verisi hala 2000 ise o değişken de yine 2000 oluyor çünkü değişkenin değeri enkoderden geliyor bu yöntemi nasıl kullanırsam düzgün çalışırenkoder verisini bir değişkene atayıp istediğiniz zaman kodla sıfırlayın.
İhtimal-1:her döndüğünde 1200 artıyor ama 65.535e kadar gidiyor. Short int limiti kadar.
İhtimal-2:yine 2000 oluyor çünkü değişkenin değeri enkoderden geliyor
Artımlı enkoder kullanıyorum nasıl sıfırlayacağımİhtimal-1:
Muhtemelen programlamada mantık hatası yapıyorsunuz.
İhtimal-2:
Tarifinizde bir anlatım yanlışı yoksa kullandığınız encoder absolute-mutlak- tip.
İncremental -artımlı- tip kullanın. Değeri kullandığınız programlama ortamında istediğiniz zaman sıfırlarsınız.
Kardeş ilk seferinde dogru çalışıyor diyorsunuz.Demekki işlem bittikten sonra encoderi okudugunuz registeri sıfırlamayı unutuyorsunuz.Kendi sayaç registerinizi sıfırlayınMotorlardan birisi asenkron trifaze motor, diğeri step motor. Bunları senkronize çalıştırmak istiyorum. Aynı anda dönüp aynı anda dursunlar aynı pozisyonda çalışsınlar.
Bunu nasıl yaparım çok çabaladım ama bir yolunu bulamadım rotary enkoder aldım onunla da yapamadım her döndüğü turda sıfırlanır sandım ama her döndüğünde 1200 artıyor ama 65.535e kadar gidiyor. Short int limiti kadar. Tur bittiği halde sıfırlanmıyor.
Alternatif bir yöntem de işimi görüyor. O da şu şekilde:
Örneğin asenkron motor 200 derece döndüğünde step motor harekete geçip ileri gitsin orda beklesin asenkron motor 300 dereceye geldiğinde step motor geri eski pozisyonuna dönsün. Bunu başardım gerekli kodu yazdım ama enkoder sıfırlanmadığı için sadece bi kez yapılıyor. Mesela her turda 1200 pulse veriyor. 500 pulse alınca ileri git 800 pulse alınca geri dön diyorum 500 olunca ileri gidiyor 800de geri dönüyor sonra 1200 olunca yani bi turu tamamlayınca sıfırlanmıyor 65.000e kadar enkoder sıfırlanmadığı için 50 tur falan boşa dönüyor hiçbir işime yaramıyor. Enkoder tekrar sıfırlanana kadar uzun bi süre bu sistem çalışmıyor. Nasıl çalışıyor bu enkoderler anlamadım. Mantıken bi tur dönüp belli bi sayıya gelip tur bitince sıfırlanıp baştan başlaması lazım aralıksız sürekli artarsa bi anlamı olmuyor ki kullanamıyorum.
Lütfen yardımcı olun önemli bi proje talep ederseniz ücret ödeyebilirim. Sorun çıkarmadan çalışmasını istiyorum. Senkronizasyonu hiç kaçmaması gerekiyor.
şu anda kodlama için arduino ve tüm step motorları düzenli bi yere toplamak için cnc shield kullanıyorum.
Rotary Encoder OVW6-06-2HC 600 PulseKullandığın rotary encoderin marka modelini yazar mısın? Kaç pin çıkış veriyor. En azından bu bilgiye sahip olmamız gerekli.
Register nasıl sıfırlanıyor anlatır mısınız?Kardeş ilk seferinde dogru çalışıyor diyorsunuz.Demekki işlem bittikten sonra encoderi okudugunuz registeri sıfırlamayı unutuyorsunuz.Kendi sayaç registerinizi sıfırlayın
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?