Arduino Uno ile Rotary Encoder Okuma

By | 12 Mayıs 2017

Çalıştığım fabrikanın laboratuarında kullanmak amacıyla iplik termal büzülme test cihazı (yarn thermal shrinkage tester) yapmak istedik. Yerli imalatı yok ve yurtdışı markaların fiyatları da oldukça yüksek. Fabrika içinde küçük bir ekip kurup cihazı imal ettik ve beklediğimizden çok daha başarılı sonuçlar üreten bir cihaz oldu. Bu noktada cihazı daha da geliştirmek istedik. Kullandığımız rotary endocer okuyucu bize sadece uzunluk cinsinden değer veriyordu. Bunu elle yüzde değerine çevirmek zorunda kalıyorduk. Bütçemiz gereği PLC kullanamadık. Bu noktada Arduion Uno ile encoder okuma işlemi yapıp hem ipliğin sıcaklık altındaki kısalma mesafesini hem de kısalma yüzdesini anlık olarak bir ekrana yazdırmayı düşündük. Sizlerle paylaşacağım kısım sadece rotary encoder ile Arduino Uno arasındaki bağlantıyı nasıl kurduğumuz ve ileri-geri dönüş açılarını alma yöntemimizdir.

Kullandığımız rotary encoder modeli piyasada en çok kullanılan modellerden biri olan e50s8-360-3-t-1. Şuradan google arama sonuçlarına ulaşabilirsiniz.

BAĞLANTI

Encoderin 5 tane ucu var. Kendi etiketi üzerinde de yazdığı gibi kahverengi olan +5v besleme, mavi olan GND ucu. Siyah olan  out-A, beyaz olan out-B, turuncu olan out-Z.

arduino-rotary-encoder

arduino uno ile rotary encoder bağlantısı

turuncu olan out-Z ucunu şimdilik kullanmıyoruz. Burada 2.pin ve 3.pine giden out-A ve out-B uçları encoderin dönüş yönünü saymamızı sağlayacak.

 KODLAMA

 Bu konuda iki farklı kod kullandık. Bunlardan birincisi kendi yazdığımız bir koddu fakat doğruluk problemleri oldu. İleri – geri dönüş açılarını okuyabildik ama sıfır noktasına geri geldiğimizde sıfır olmadı. Çok yavaş dönüşlerde problemsizdi ama hızlı çevrimlerde değer kaymaları gördük. Belki encoder markası ile problem olmuştur çünkü benzer bir kodu youtube‘da arduino encoderi ile çalıştırmışlar. Biraz araştırınca bu sorunu interrupt (kesme) işlemi ile çözebileceğimizi öğrendik. Bu konuda biraz bilgim zayıf olduğundan internetten bulduğum hazır bir kodu oynayarak aşağıdaki en yalın hale getirdim. Herhangi bir hassaslık problemi görmedik. Tam nokta atışı çalıştı.

Bu şekilde piyasada rahatlıkla bulunabilen ve endüstriyel amaçla kullanılabilen bir rotary encoderi arduino ile kullanabilirsiniz. Faydalı olması dileğiyle…

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir