PIC18f452 CCS C İle Devremde 4 Adet Encoder Okuma

Başlatan stronger_ht, 25 Kasım 2010, 15:48:12

z

Alıntı yapılan: yucelcem - 25 Kasım 2010, 17:07:58
anladım, sonuçta dönüşü sınırlı, peki sınırsız dönen pot'lar var mı? 360'lık turu tamamladıktan sonra yeniden başa dönen?

Bu potlar cok eski tarihlerde ozellikle askeri elektronik cihazlarda kullaniliyordu. Simdilerde ureticisi oldukca azalmistir ve siradan saticilarda bulamazsin.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

iyildirim

#16
Alıntı yapılan: yucelcem - 25 Kasım 2010, 18:46:24
helikopter modelcileri helikopterlere gyro takarlar, onları da bir inceleyebilirsiniz

Gyro lar anlık açısal dönüş hızı verdikleri için hesabı oldukça karışık.  O tip  bir sensor kullanılacaksa tek eksenli bir manyetik pusula sensörü çok daha uygun olur. Genellikle I2C ile çalışıyorlar. önceki mesajımda bahsettiğim sensörler 0.5 dereceye kadar hassas yön bilgisi verebiliyorlar. Kötü tarafları ise daha pahalı olmaları. Birde türbin üzerinde çalışacakları için manyetik alan bozulmaları olabilir. İyi tarafı ise direkt yöne ayarlı olduğu için başlangıçtaki kalibrasyondan sonra enerji kesilmelerinde tekrar kalibrasyona ihtiyaç duymaması.

@stronger_ht

3. ve 4. enkoderler ne için kullanılacak, biraz açabilirmisin.

stronger_ht

iyildirim, peki bir sorum olacak, bu bahsettiğin pusula sensörü bu değişimi algılayabilecek midir?

Şöyle hemen Photoshop'da iğrenç bir şema çizerek anlatayım problemimi :)

[IMG]http://img217.imageshack.us/img217/2200/trbin.jpg[/img]

Uploaded with ImageShack.us

Bu şemada görüldüğü üzere, türbin tam karşıya bakıyor, ancak o an geldi ve rüzgar yön değiştirdi artık sağdan esmeye başlıyor, ancak türbin sağa dönemez çünkü 360 derecelik açıda, geriden takip etmesi lazım.
Yani mavi renkle çizdiğim oku değil de, siyah renkle çizdiğim oku takip etmesi lazım.
Bu bağlamda pusula sensörü normalde kendisi mavi renkli okun güzergahını mı gönderecek pic'e yoksa siyah okun güzergahını mı.
Eğer siyah oku takip ediyorsa, beni şuan mutluluktan uçurmuş olacaksınız, hemen bu ürünün teminine başlayacağım.
Eğer değilse, bu problemi en sağlam nasıl çözerim :)

stronger_ht

Ayrıca bir sorum olacak.
Şuan Proteus'ta simülasyonda denemeler yapıyorum. Burada MOTOR-ENCODER isimli bir encoderli motor var. Benim alacağım rotary encoder'den bilgileri okumam için encoder'i bir motormuş gibi çevirmeme gerek yok değil mi?
Besleme gerilimini verip, encoder'in ucunu da redüktörlü diğer motoruma bağladığımda encoder çalışmış olacak değil mi?

İkilemde kaldım, daha önce hiç encoder kullanmadım da :)

iyildirim

#19
Türbinin doğal olarak serbestlik limitine geldiğinde siyah oku takip etmesi gerekir. Zaten mekanik olarak bir noktadan sonra dönemeyecek.  Türbinin serbestliğini sınırlamak mekanik olarak değil de motor ile yapılması daha iyi olacak sanırım. Eğer dişlili bir mekanik kilitleme kullanmıyorsak, kör bir açı bölgesi kalacaktır. Eğer rüzgar yönü çok genel olarak çok belirli ise bu çok büyük problem teşkil etmeyebilir. Ancak Türbinin 360 derecenin üzerinde serbestliği olması daha iyi.  Kullandığınız kablo boylarını uygun hale getirip ;

(Türbin dikmesi üzerinde rahatça bir yada iki tur sarılabilirse ki rüzgarın kör bölge açısından esmesi durumunda örneğin kör açı 45 derece olsun, rüzgarda  35 ile 55 derece açılarından esiyorsa sürekli bir tam tura yakın dönüşler yapması gerekir. Yani 5 derece yerine 355 derece dönmesi gerekir. )

720 dereceye yakın bir serbestlik sağlanması çok daha verimli olacaktır. Bu durumda ancak 2 turun sonunda bir tur geriye atmak zorunda kalınır. Kısaca +- 360 derece serbestlik olması hem uygulamayı hemde mekanik performansı artıracak.

Sisteme genel olarak bakınca;
        --Bir adet türbinden bağımsız ve serbest olarak hareket edebilen rüzgar gülümüz ve üzerinde sensorümüz var. Rüzgar gülü radyal olarak sonsuz serbestlik derecesine sahip olduğunda enerji  beslemesi ile ilgili sorun çıkacaktır. Motor ile belli bir bir serbestlik derecesinde tutulmalı. Ancak motor da rüzgarın çevirebileceği kadar yumuşak olmalı. Diğer bir seçenek de rüzgar gülü için kullanılan sensörün APS00B  gibi bir sensör olup sabit olarak montajının yapılması ve rüzgar gülüne bir çubuk miknatıs takarak yön bulmak.

        --Birde üzerinde sensor olan ve motorla yönü ayarlanabilen ve üzerinde buna bağlı sensör olan türbinimiz var.

Bundan sonrası iki sensörden gelen bilgileri okumak uygun bir filtreden geçirmek ve turbin için yumuşak hareket etmesini sağlayacak bir PID kullanarak iki sensörün aynı açıya bakmalarını sağlamak ve serbestlik derecesinin limitine gelince 360 derece geriye döndürmekten ibaret olur.

Hoşçakalın

justice_for_all

Alıntı yapılan: stronger_ht - 25 Kasım 2010, 18:43:42
#int_ext
void ext_kesmesi()
{
   if (input(pin_b1)==0)
   {
      yon=1;
   }
   if (input(pin_b1)==1)
   {
      yon=0;
   }
   encoder++;
}



arkadasim yukaridaki koddaki hatayi soyleyim sana int0 kesmesinde sadece yukaridaki if kosullarindan birine girer....

yukaridaki yaptigin rb4-rb7 kesmelerinde calisir ancak..rb4-rb7 kesmelerinde pinde olusan her degisiklikte kesme olusur (1'den 0'a veya 0'dan 1'e)

Fakat int0 kesmesinde ise donaniminiza gore ya her yukselen kenarda yada her dusen kenarda meydana gelir...
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

stlg

Burada senin icin en onemli nokta encoder secimi, incremental olanlar ile calısman cok zor olur, cunku elektrik gittiginde bulundugu konumu unutur, sen elektrik kesintisini algılayıp konumu hafızaya almalısın ,buda bircok problemi beraberinde getirir, ama absolute tur kullanırsan,okuma sorunların ortadan kalkar, elektrik geldiginde bulundugun konum ile ilgili bilgileri yeniden cok kolay bir sekilde okursun
ALLAHA EMANET OLUNUZ Hoştur bana senden gelen,  Ya gonca gül yahut diken,  Ya kaftandır yahut kefen,  Kereminde hoş lütfunda hoş.

necati

[email]entegreterbiyecisi@yahoo.com[/email]

stronger_ht

Alıntı yapılan: stlg - 26 Kasım 2010, 00:19:08
Burada senin icin en onemli nokta encoder secimi, incremental olanlar ile calısman cok zor olur, cunku elektrik gittiginde bulundugu konumu unutur, sen elektrik kesintisini algılayıp konumu hafızaya almalısın ,buda bircok problemi beraberinde getirir, ama absolute tur kullanırsan,okuma sorunların ortadan kalkar, elektrik geldiginde bulundugun konum ile ilgili bilgileri yeniden cok kolay bir sekilde okursun

Üstat, benim kullanacağım encoder bu. Rotary Encoder. Sence işimi görür mü, elektrik kesintilerinde vs. sorunsuz çalışır mı?

http://image.ec21.com/image/kwangwo/oimg_GC01295367_CA01295467/Rotary_Encoder.jpg

stlg

 Senin encoder sanırım artımlı tip elektrik kesintilerinde buyuk sorunlar cıkar, bulundugun konumu hafızaya almalısın ,oncelikle bu encoder yapılarını cok iyi incele ,optik yapacagın sistemlerdede aynı sorunu yasayacaksın, yukarda arkadasların belirttigi gib pot turu bir uygulama daha basit ve kararlı olur
ALLAHA EMANET OLUNUZ Hoştur bana senden gelen,  Ya gonca gül yahut diken,  Ya kaftandır yahut kefen,  Kereminde hoş lütfunda hoş.

KAZIMUGUR

Gray code li bir encoder ile her zaman tam yönünü okuyabilirsin.
Elektrik gitti gidiyor gelirmi demezsin.
Basit bir encoder fazla bir şey çekmez ups bağlarsın , pille çalıştırırsın vsvsvsvs.

....mil arasında olan mekanizma zamanla kömürleşerek zarar görebiliyormuş....

Muş 49 plakalı ilimiz.
Bebe şebe yaptı ise bir şey diyemem.
Yıllardır sayısız sistemde hemde dakikada 1500-3000 devir gibi hızlarda , hareketli sistemlerden durağan sistemlere , hemde binlece kilowat enerji akratılabiliyor.
Basitce bakır halka ve "zaten kömür" fırçalar şimdiye kadar hiç şikayet etmeden vazifelerini yaptılar yapıyorlar.

Gray code li basit ama etkili kendi yap kendin kullan disk hesapları filan , daha önce verilmişti diye hatırlıyorum...

stronger_ht

Alıntı yapılan: stlg - 26 Kasım 2010, 11:38:03
Senin encoder sanırım artımlı tip elektrik kesintilerinde buyuk sorunlar cıkar, bulundugun konumu hafızaya almalısın ,oncelikle bu encoder yapılarını cok iyi incele ,optik yapacagın sistemlerdede aynı sorunu yasayacaksın, yukarda arkadasların belirttigi gib pot turu bir uygulama daha basit ve kararlı olur

Üstat, şu şekilde bir mantık kurdum;
Öncelikli olarak bir kalibrasyon ayarı yaptıracağım sisteme. Örneğin motoru çalıştırdık, A noktasından B noktasına kadar motor çalıştığı için encoder sayacak. Diyelim 500 sayısı ortaya çıktı. Bu 500 sayısını PIC'in hafızasında bulunduracağım. Daha sonra motoru çalıştıracağım zaman hafızadaki 500 sayısını tamamlamak üzere çalıştıracağım. Her işlem tamamlandığında ise encoder'den gelen bilgiyi sıfırlayacağım.

Yani;

A......B arası 500 ise;
Motor A noktasındayken B noktasına gitmek için encoder'den 500 sayısını tamamlayacak. Tamamlandığında enerji kesilecek.
B......A arası gitmek istiyorsa yine hafızada sakladığım 500 sayısı kadar motoru ters çevireceğim .

Sisteminde çok hassas verilere ihtiyacım yok ve motor A.....B arası bir yerlerde stop etmeyecek. Ya A noktasında ya da B noktasında olacak. Bu yüzden konum bilgisine çok da ihtiyacım yok açıkcası.

Bu durumda sanırım elimdeki rotary encoder işimi görmüş olacak.


KAZIMUGUR hocam, bilemiyorum nasıl bir yöntemle yaptılar ama, böyle birşeyin söz konusu olduğunu söylemişlerdi, çok tecrübeli olmadığım için birşey söyleyemeyeceğim.


stronger_ht

Alıntı yapılan: mufitsozen - 25 Kasım 2010, 17:41:52
sparkfundaki rotart encoder isinizi gorur, cikisi gray-code uretir (mekanik imkaniniz varsa, wikipediadan baska orneklere bakip, kendinizde yapabilirsiniz)

http://www.sparkfun.com/products/9117 encoder

http://www.sparkfun.com/products/9209 encoder set.

daha profesyonel birsey olsun derseniz (endustriyel) http://www.gpi-encoders.com/

Projede bir değişiklik söz konusu oldu :)
İstediğim encoder'lar oldukça pahalı çıktı. İzmir'de 100 TL'yi aşan civarlarda bulabildim ancak.
Alternatif olarak Sparkfun'daki ürün ilgimi çekti. Bu ürün tam olarak encoder gibi mi çalışır? İngilizcem olmadığı için tam olarak anlayamadım.
Yani encoder deki gibi A,B,Z uçları mevcut mudur. Encoder yerine direk bu ürünü bağlasam sorunsuz çalışır mı?

picmanya

100 pals quadrature enkoder
dc 5 volt
A ve B uçlu index yok
toplam 2 besleme 2 de kontrol ucu olmak üzere 4 telli
bu enkoder sizin işinizi çözmezmi?