Stm32 Encoder Nasıl Kullanılır ?
Merhaba arkadaşlar bugun stm32 encoder uygulamasına değineceğiz. Bu yazımızda encoderin çalışma mantığı kullanım alanları ve kullanımı hakkında bilgi edinmiş olacağız..
Rotary Encoder Nedir ?

Encoderlar temel olarak uygulanan fizilsel haraketi dijital ortama aktarmaya yarayan materyallerdir. Encoderların bir çok çeşidi bulunmaktadır ancak biz bunları mutlak ve artırımlı olarak 2 sınıfa ayırabiliriz ki bizim encoderimiz artırımlıdır sadece çalıştığı zamanlarda pulse atarak mcu ye artım yada azaltım durumunu belirtir.

Encoder Nasıl Çalışır ??
Encoder içinde bulunan bir delikli yada renkli plakaya optik yada manyetik olarak aktarılan sinyalin kesilme aktarılma durumuna göre çalışmaktadır. genellikle içerisinde 2 tane sinyal kaynağı bulunup bu kaynakların ilk önce yada sonra hangisinin alındığına bakarak ise yönü tayin edilmektedir. Örnek resme bakarak ta tam olarak sistemi kafamızda canlandırabiliriz

Encoder Kullanım Alanları Nelerdir ?
Encoderlar günümüzde o kadar çok yerde kullanılır ki verdiğimiz örneklerden sonra çok şaşıracağınıza eminim. Bunlardan başlıcaları ;Araç teypleri ses açma kapatma,Radyolar,Joysticklerde,Bulaşık Çamaşır Makineler vs… Sonsuz dönen tüm butonlarda rotary encoderlar kullanılıyor desek yanlış söylemiş olmayız!! Bu kadar çok alanda kullanılan meteryalin uygulamasına geçme zamanı geldi diye düşünüyorum.
Kullanılacak Malzemeler
- Rotary Encoder Modülü
- Jumper
- Stm32 Herhangi bir Model
Stm32 Encoder Bağlantı Şeması

Stm32 Encoder Kodlama
Bağlantılarımızı uygun olararak yaptığımıza göre artık uygulamaya geçebiliriz.
STM32 Rotary Enkoder ayarlarından önce onun kadar önemli olan clock ayarlarımızı yapalım.

Şimdide Timer bölümünden Rotary Enkoder Seçeneğini aktif edip rotary enkoderimizin ince ayarlarına geçelim.

Arkadaşlar bu kısımda Etkinleştirdiğimiz STM32 rotary enkoder ince ayarlarını yapacağız . Bu kısımda dikkat etmemiz gereken kısım enkoder kaça kadar saysın nasıl davransın bunlar içinse dikkat etmemiz gereken bölüm şu oluyor.
Counter Period (Kaça kadar saydıracağız) : Bu bölümde yazdığım gibi kaça kadar saysın istiyorsak o rakamı yazmalıyız.
Encoder Mode: Bu kısımda Enkoder döndürüldüğünde hangi yöne döndürüldüğünü tespit edilmek üzere zamanlayıcı arkadaşlar t1 and t2 seçebilirsiniz.

Arkadalar Pull-up direnç ayarı yaparak daha da stabil çalımasını sağlayabiliriz.

CubeMX ile projemizi derlediğimize göre artık kodlama aşamasına geçelim. Keil veya attolic yada herhangi bir ide ile Kodlamaya başlayalım..
Global alana değişkenimizi tanımlayalim
uint16_t adim_sayisi=0;
Şimdi arkadaşlar Main fonksiyon bloğunun while üstünde kalan kısmında Encoder Servisini başlatan kodumuzu Dahil edeceğiz.
HAL_TIM_Encoder_Start(&htim2,TIM_CHANNEL_ALL);
Şimdi While Döngümüzün içerisine Enkoder dönüş değerini alacağımız kodlarımızı girelim.
adim_sayisi= __HAL_TIM_GET_COUNTER(&htim2);
Artık adım sayımız “Adim_sayisi” değişkenine aktardığını göreceksiniz.
Video Anlatım
Dilerseniz video izleyerekte Öğrenebilirsiniz.
Uygulamamız burada sona erdi arkadaşlar. Diğer uygulamalarda görüşmek üzere İyi Çalışmalar..
Tam Uygulama İndirmek için TIKLA