Picproje Elektronik Sitesi

DERLEYİCİLER => PIC C => Konuyu başlatan: jaco33 - 24 Nisan 2009, 16:55:23

Başlık: Rotary Encoder
Gönderen: jaco33 - 24 Nisan 2009, 16:55:23
merhaba

micro c nin forumundan aldıgım aşağıdaki rotary encoder kodu gayet güzel çalışıyor ama RB0 ve RB1 için set edilmiş.
bunun içinde :
PORTB & 0x03;
kullanılmış.
//////////////////////////////////////////////////////////////////////////////

// Value changes up or down as encoder is turned.
// encoder 2 outputs are PORTB.F1 and PORTB.F0
// logic; if newA == oldB, encoder turned clockwise
// if newA != oldB, encoder turned counterclockwise
// example; (AB) 00 01 11 10 00 01 11 10 00

char value;
char new_encoder;
char last_encoder;

  new_encoder = (PORTB & 0x03);      // keep only 2 bits
  if(new_encoder != last_encoder)      // if encoder has changed
  {
     if(new_encoder.F1 == last_encoder.F0) value++;
     else value--;

     last_encoder = new_encoder;   // save for next time
  }
//////////////////////////////////////////////////////////////////////////////

ben RB4 ve RB5 ile de bir rotary encoder kodu yazmak istiyorum ama bir türlü o bacakları giriş yapamadım.

  new_encoder = (PORTB & 0x03);      // keep only 2 bits
satırında & ifadesi ne işe yarar ve RB4/5 yada RB6/7 uçları için bu satıra kaç yazmam gerekir?

0b11000000 ve 0b00110000 yazdım ve bu ikiside olmadı.

şimdiden teşekkurler.
Başlık: Rotary Encoder
Gönderen: Tagli - 24 Nisan 2009, 17:04:06
PORTB'deki mevcut değer b'00000011' ile AND'lenerek encoder'ların bağlı olduğu B0 ve B1 bacakları dışındaki bitlerin sıfırlanmaları sağlanmış. Senin yazdığın b'11000000' ifadesi doğru, ancak kodun geriye kalan kısmı, hesaplamaları halen 0. ve 1. bit üzerinde yaptığı için sorun çıkıyor olmalı. PIC C bilmediğim için kesin bir yorum yapamayacağım ama sanırım altta geçen F1 ve F0 değerlerini değiştirmen gerekli, mesela F6 ve F7 olacak şekilde. Veya bu AND'lenmiş sonuçları kaydırma işlemiyle programın geriye kalanıyla uyumlu hale de getirebilirsin. Yapman gereken şey new_encoder değişkenini 6 defa sağa kaydırmak. Ama dikkat et, carry bit içindeki değer diğer taraftan çıkabilir. Kaydırmadan sonra new_encoder = new_encoder & h'03' yazarak geriye kalan kısmın 0 olmasını garantileyebilirsin.
Başlık: Rotary Encoder
Gönderen: jaco33 - 24 Nisan 2009, 17:16:17
çok teşekkür ederim. oh be ne güzel cevap geldi. yanıtını henüz bilmeyip; nasıl gidereceğimi bilmiyor olsam da.

micro c'nin forumunda sabahtan beri advice alıyorum adamın birinden. aradığım bu cevaptan gayrı her gereksiz şeyi söyledi:
"bir sorunu çözmek için adım adım ilerlemelisin" mır mır mır. hııııırrrrrrrr :evil:

tekrar çok teşekkür ederim.

selamlar
Başlık: Rotary Encoder
Gönderen: jaco33 - 24 Nisan 2009, 17:48:25
ŞİMDİ ÇALIŞIYOR(RB4 VE RB5 İÇİN)
// Value changes up or down as encoder is turned.
// encoder 2 outputs are PORTB.F1 and PORTB.F0
// logic; if newA == oldB, encoder turned clockwise
// if newA != oldB, encoder turned counterclockwise
// example; (AB) 00 01 11 10 00 01 11 10 00

char value;
char new_encoder;
char last_encoder;

new_encoder = (PORTB & 0b00110000); // keep only 2 bits
if(new_encoder != last_encoder) // if encoder has changed
{
if(new_encoder.F5 == last_encoder.F4) value++;
else value--;

last_encoder = new_encoder; // save for next time
}

sayın Tagli,
sizi abim olarak ilan ediyorum.

saygılar
Başlık: Rotary Encoder
Gönderen: jaco33 - 22 Aralık 2009, 16:26:37
merhaba,
aşagıdaki devreyi yapıyorum ama 3 ay sonra rotary encoder'ler sagırlaşmaya algılamamaya başlıyorlar.

devrede 4 adet rotary encoder var.

ilk taktıgımda çok güzel çalışıyorlar ama bir süre sonra çevirirken her palsı yakalayamıyorlar.

rotary encoderler arasına bir kondansatör mü atmalıyım yoksa? kaç nano olmalı?

internette yardımcı olacak bir kaynak da bulamadım.

rotary encoder'leri daha önce kullanmış uzmanların yardımını istirham ederim.
(http://img32.imageshack.us/img32/3748/rotencscheme.jpg)
Başlık: Rotary Encoder
Gönderen: arslan74 - 22 Aralık 2009, 18:24:45
Merhaba,

Microchip'in sitesinde rotary encoder ile yapılmış örnek uygulamalar var onları incele.

Daha hassas birşeyler istiyorsan Motor control özellikli PICleri kullan onların doğrudan rotary encoder okuma bacağı özelliği var.


Selamlar
Başlık: Rotary Encoder
Gönderen: jaco33 - 22 Aralık 2009, 18:33:45
teşekkürler.

bir link tasaydınız sevinirdim. site çok karışık ve elimde de sadece 16f628 var.
Başlık: Rotary Encoder
Gönderen: jaco33 - 22 Aralık 2009, 18:47:52
2 resim buldum. galiba direnç degerlerini arttırmalıyım.
(http://www.robh.nl/art/quadrh4s.gif)

(http://www.qsl.net/pa3ckr/signalgenerator/dds16c.gif)
Başlık: Rotary Encoder
Gönderen: arslan74 - 22 Aralık 2009, 19:01:01
Merhaba,

Aşağıdaki pdf iyice oku bu devreyi yap.

http://ww1.microchip.com/downloads/en/AppNotes/00718a.pdf

Selamlar
Başlık: Rotary Encoder
Gönderen: jaco33 - 22 Aralık 2009, 19:44:28
74HC74 bağla diyo pdf.

direnç mi kondansatör mü derken hadise nereye geldi.

neyse. vakit ayırıp cevap verdiğiniz için teşekkürler.

bu haliyle ne yapalım. 3 ayda bir sağırlaştırdıkça degiştircez artık.
Başlık: Rotary Encoder
Gönderen: z - 22 Aralık 2009, 19:47:41
Muhtemelen kullandığın enkoderlar mekanik kontaklı tipten.
Bir süre sonra kontaklarda pislenme, metal kusması, temassızlık gibi sorunlar çıkar.

Buda encoderın yalan yanlış çalışmasına neden olur.

Sağırlaşma dediğin olayın sebebi budur.
Başlık: Rotary Encoder
Gönderen: jaco33 - 22 Aralık 2009, 19:53:53
teşekkürler yanıtınız için abi diyeceğim size.

evet mekanik kontaklı.

abi şimdi bu encoderler 3 ayda sağırlaşıyosa...

ototeyplerindekiler niye sağırlaşmıyo? niye pislenmiyo?
bu yaptıgım 3.tur değişim. 9 ayda...

ürün uydurukda değil. taiwan malı iyi bişey. çin işi değil.

gerçi araştırdım. cts288 diye bi mekanik enkoder var. o çok iyi. ama o da memlekette yok.

devredeki seçimimde bi hata var ama bilemiyorum nerde. o kadar bu işten anlayamıyorum maalesef.

bıktım bu arada 3 ayda bir 3 ayda bir.

satıcı bıkmadı ama :lol:
Başlık: Rotary Encoder
Gönderen: KAZIMUGUR - 22 Aralık 2009, 20:43:45
x-750 farenin içerisinde var.
Çok kullanırım.3-5 ayda bir tırtlar.Ya aldırmaz ya da çok çevrilmiş gibi sıçrar.
Tabanı ve fırçaları temizleyip azıcık eğip büküyorum.
Duracağı konumu kesinleştirmek için arkasında minik çıkıntılar ve tırnak var.Tırnağıda azıcık gıdıklayıp devam ediyorum.
Optiklerde bu dert yoktu...
Başlık: Rotary Encoder
Gönderen: jaco33 - 22 Aralık 2009, 20:47:39
bendeki aldırmayanı  :)

ama şemadan mı kendinden mi emin olamadıgım için bu foruma yazmıştım.

siz encoder'den diyorsunuz yani. içini açamıyorum ben ama onun.

cevabınız için teşekkürler.
Başlık: Rotary Encoder
Gönderen: jaco33 - 22 Aralık 2009, 21:06:08
o zaman elektroniğin daha yalın yoluna çevireyim benim sorunumu ki bu encoder'la ugraşmamış olanlar da bana yardımcı olabilsin:

şimdi bunun orta bacagı (-)'ye bağlı. düğmesini çevirdikçe 10K dirençler üzerinden (+)alıyor.

bu her bir buluşmada muhakkak bir ark oluyor. bu arkı engellemeli miyim?
yoksa encoderlerin kontakları bu arklamalardan ötürü mü bozuluyor.

ve asıl soru :lol:

nasıl engelleyeceğim? orta bacakla diğer bacaga 1 nano baglasam olur mu?
hangi uçlara ve kaç değerde...
Başlık: Rotary Encoder
Gönderen: arslan74 - 22 Aralık 2009, 23:49:03
Encoderin resmini koyarmısın. Daha sağlıklı cevap verebiliriz.
Başlık: Rotary Encoder
Gönderen: jaco33 - 23 Aralık 2009, 07:13:25
tabii ki.
(http://cnmat.berkeley.edu/system/files/sensor_modules/G16267B.jpg)
(http://www.germes-online.com/direct/dbimage/50217005/Rotary_Encoder.jpg)
dış görüntü aynen potansa benzer ama bu sonsuz turdur.
Başlık: Rotary Encoder
Gönderen: M_B - 23 Aralık 2009, 07:37:16
Alıntı yapılan: "jaco33"bendeki aldırmayanı  :)

siz encoder'den diyorsunuz yani. içini açamıyorum ben ama onun.

.
Eger resimdekinden kullanıyorsan bunlar sokulebiliyor.
yandaki metal tırnakları kaldırıyorsun. Soktugun zaman ıcını guzelcene temızleyıp pini azıcık acacaksın sonrada azıcık vazelin surup kapatıyorsun. Ondan sonra herhangi bir sorunla karşılaşmazsın.
Başlık: Rotary Encoder
Gönderen: ahmet2004 - 23 Aralık 2009, 08:01:53
Bu şemada 74hct166 ya bağlanma şekli 4 adet rotary kontrol:

(http://img32.imageshack.us/img32/933/onpanel.jpg)
Başlık: Rotary Encoder
Gönderen: jaco33 - 23 Aralık 2009, 08:07:27
Alıntı yapılan: "M_B"
Eger resimdekinden kullanıyorsan bunlar sokulebiliyor.
yandaki metal tırnakları kaldırıyorsun. Soktugun zaman ıcını guzelcene temızleyıp pini azıcık acacaksın sonrada azıcık vazelin surup kapatıyorsun.
benim için sorun yok ama 3-5 eşe-dosta veriyoruz kullansınlar diye. onlar da hayatta beceremezler bu işi. vermeyelim o zaman onlara n'apalım.

teşekkürler.


Alıntı yapılan: "ahmet2004"Bu şemada 74hct166 ya bağlanma şekli 4 adet rotary kontrol:

(Resim gizlendi görmek için tıklayın.)
o da 10 K bağlamış demek ki.

şaştım kaldım.

size de teşekkürler.
Başlık: Rotary Encoder
Gönderen: jaco33 - 23 Aralık 2009, 08:34:49
Alıntı yapılan: "M_B"
Eger resimdekinden kullanıyorsan bunlar sokulebiliyor.
yandaki metal tırnakları kaldırıyorsun. Soktugun zaman ıcını guzelcene temızleyıp pini azıcık acacaksın sonrada azıcık vazelin surup kapatıyorsun. Ondan sonra herhangi bir sorunla karşılaşmazsın.
biraz geri toplaması zor oldu ama açtım sayenizde. çok teşekkürler.

o kaldırdıgımız kontaklar üzerine mi süreceğiz vazelini?

bu şekilde ne kadar idare eder acaba? sizde ne kadar ömür sürmüşlerdi?
1-2 daha açmaya dayanmazlar sanırım çünki.
Başlık: Rotary Encoder
Gönderen: z - 23 Aralık 2009, 08:54:31
Sagirlasmis encoderlerin A-B cikislarina sirayla 1n - 10n - 100n baglamayi deneyip okumaya calis. Sorunu cozebilir. Ancak eklenen kapasitorlerden dolayi mili hizli cevirdiginde okunamama sorunu olabilir.
Başlık: Rotary Encoder
Gönderen: M_B - 23 Aralık 2009, 09:29:06
o kaldırdıgımız kontaklar üzerine mi süreceğiz vazelini?

Yuzeye ince olacak sekılde surmen yeterlidir.
Başlık: Rotary Encoder
Gönderen: jaco33 - 23 Aralık 2009, 09:31:08
Sahibimiz ve Öğreticimiz(c.c.)sizden razı olsun.
Başlık: Rotary Encoder
Gönderen: jaco33 - 23 Aralık 2009, 09:35:18
Alıntı yapılan: "bunalmis"Sagirlasmis encoderlerin A-B cikislarina sirayla 1n - 10n - 100n baglamayi deneyip okumaya calis. Sorunu cozebilir. Ancak eklenen kapasitorlerden dolayi mili hizli cevirdiginde okunamama sorunu olabilir.
abi mal uyduruk herhalde. 5 tl veriyorum hep ama.

içini açtıgımda kontaklarda ark kömürleşmesi görmedim. bunların içinde
dahili buton da var. ortasına basınca buton oluyor yani. onda kömürleşme vardı, enkoder kısmında yoktu.

demek kullandıkça kontakları esneyip temassızlık yapıyor.

teşekkürler
Başlık: Rotary Encoder
Gönderen: arslan74 - 23 Aralık 2009, 11:21:38
Bu rotary encoderleri ne amac için kullaniyorsunuz ve nereden aldığınız yazabilirmisiniz.
Başlık: Rotary Encoder
Gönderen: jaco33 - 23 Aralık 2009, 12:52:52
çogu yerde var ama aşagıdakiler benim bildiklerim.

bu 2 yerde de var:
http://elektrocelebi.com/iletisim.php
http://www.kilavuzelektronik.net/icerik.asp?cat=iletisim

biraz flight simulatör hastalıgı var. bikere kaptıran kurtulamıyo ne yazık ki :lol:

(ee pc başından kalkmadan gerçek bir boeing 737'nin neredeyse %80'i kadar aynı hazzı verince böyle oluyor normal olarak.)

ufak tefekte bir iki orjinal boeing'e benzer kokpit gereci yaptım kendime. bu devrede şu işe yarıyor:
bu devreyi bir joystiğe bağlıyorum. mesela 1.enkoderi düşünün. onu sağa çevirdikçe joystiğinbir butonuna basıp bırakıyor, sola cevirdikçe de başka bir butona basıyor.

böylece bir uçağın otopilot cihazının bir bölümünü kopya ederek masaüstünde biyere koyuyorsunuz. kutusunu da gerçek ölçülerde yaptınız mı tadından yenmez tabi
:D
Başlık: Rotary Encoder
Gönderen: Analyzer - 23 Aralık 2009, 14:20:24
Alıntı yapılan: "jaco33"çogu yerde var ama aşagıdakiler benim bildiklerim.

bu 2 yerde de var:
http://elektrocelebi.com/iletisim.php
http://www.kilavuzelektronik.net/icerik.asp?cat=iletisim

biraz flight simulatör hastalıgı var. bikere kaptıran kurtulamıyo ne yazık ki :lol:

(ee pc başından kalkmadan gerçek bir boeing 737'nin neredeyse %80'i kadar aynı hazzı verince böyle oluyor normal olarak.)

ufak tefekte bir iki orjinal boeing'e benzer kokpit gereci yaptım kendime. bu devrede şu işe yarıyor:
bu devreyi bir joystiğe bağlıyorum. mesela 1.enkoderi düşünün. onu sağa çevirdikçe joystiğinbir butonuna basıp bırakıyor, sola cevirdikçe de başka bir butona basıyor.

böylece bir uçağın otopilot cihazının bir bölümünü kopya ederek masaüstünde biyere koyuyorsunuz. kutusunu da gerçek ölçülerde yaptınız mı tadından yenmez tabi
:D
Selam,

Eh sana o zaman denemediysen TrackIr videoları, VR3D gözlükleri ve kokpit şasesini oluşturup ona motor takan arkadaşları youtube dan izlemeni tavsiye ederim :)

Analyzer
Başlık: Rotary Encoder
Gönderen: jaco33 - 23 Aralık 2009, 15:01:33
uu

bi fs'ci daha varmış  :D

eskiyis bu işlerde biras. biliyos elbet :D

teşekkürler.

trackIr yapacaktım el yapımı kendime ama malum VC kokpit zaten fps düşmanı. bi de o devamlı tarama yapçak. satıcıya gittim 30 fps/rgb format kamera sordum. fiyatlarıysa yanına yaklaşılmıyo.

gerçi normal kamerayla da randıman alıyolarmış ama...

http://www.lockontr.com/index.php?option=com_content&task=view&id=168&Itemid=1