hareket sensörü hakkında

MoSTaR

Üye
Katılım
17 Ara 2007
Mesajlar
82
Puanları
1
Merhaba arkadaşlar. Benim yaklasık 30cm mesafeden el hareketlerine duyarlı bir devreye ihtiyacım var. hareketi algılamak için bu resimde görülen pir sensörünü kullanıyorum. bu sensör hareketi görünce çıkış veriyor fakat elimi çektiğim halde çıkışında ki gerilim belli bir süre devam ediyor. buda benim uygulamamı bozuyor. sadece bu resimdeki pir'i satın alarak sensör devresini kendim de yaptım ama yine aynı şekilde çalıştı. benim istediğim elimi gördüğünde çıkış versin çektiğimde ise gerilim hemen sıfıra düşsün ve denetlemeye devam etsin. bu uygulama için pic kullanıyorum. Yanlış bir sensör mü kullanıyorum acaba? devre loş ışıklı bir ortamda çalışacak. nasıl yapacağıma dair önerilerinizi alabilirmiyim.
 
Yapacağınız işte size tavsiyem şu olur. Elinizi oynattığınızda diyelim ki yükselen kenar bir sinyal verdi sensör. Bu sinyali aldığınızda yapacağınız işlem neyse onu yapın ama bu sırada tekrar algılamayacağı için yani sinyal yüksek seviyede olduğu için bir gecikme verin (delay_ms(2000) gibi). Hani pic ile uygulama yapanların butonların tek basışta birkaç kez algılamasını önlemek için verdiğimiz gecikmenin tam tersi. Bende dışarıdan aldığım ve süresinde oynama yapamadığım sinyaller için bu yöntemi kullanıyorum.. Kolay gelsin...
 
Hız ölçümü için hareket sensörü kullanmıştım. Aynı problemle karşılaştım. R.K nin dediği şekilde yapabilirsin ancak bu durumda 2 saniye böyunca bir şey algılamazsın ya da gecikmeyi kısaltırsan bir tane hareket algılayacağına birden çok algılayabilirsin.
Ben en son şu çözümü bulmuştum.
Sensör belirlediğim çıkışı verince programımdaki "a" değişkeni 1 değerini alıyor. Hareket sensörü aynı çıkışı vermeye devam ederken değişkenim 1 olarak kalıyor. Sensör çıkış vermeyi kesince "a" değişkenim 0 oluyor.
Ve yapacağım işlemi yalnızca "a" 0 dan 1 e geçince yapıyorum.
 
Arkadaşlar teşekkür ederim. Aslında bu yükselen kenar ile işlem yapmayı bende düşündüm. fakat pic ile programlamaya yeni başladığım için nasıl yapacagımı bilemedim. ben ilk etapta pic16f84a ile programladım. ASM kodlarına baktıgımda yükselen kenarı algılayabilecek bir kod göremedim. Harici bir kesme girişi var, o giriş yükselen kenara göre çalışıyormuş ama bana normal giriş uçlarında yükselen kenarları algılayabilecek bir sey lazım. Çünkü pic'e 4 adet sensör bağlayacagım ve dört giriş ucundan ayrı ayrı yükselen kenarları denetleyeceğim. Bu uygulama için 16F84A uygun degil sanırım öyle mi?
Birde şu var zaten yazdıgım program pic'in hafızasını doldurdu yani artık daha iyi bir pic'e geçmem gerekli. 16f628 'e geçmeyi düşünüyorum. Bu picte bu yükselen kenarları giriş uclarından algılayabilirmiyim yada nasıl yapabilirim?
 
Darbe akımı rölesine bağlı olan armatürlerin anahtarlarını iptal edip nasıl hareket sensörü takabiliriz..Saygılarımla
 
16f628 'e geçmeyi düşünüyorum. Bu picte bu yükselen kenarları giriş uclarından algılayabilirmiyim yada nasıl yapabilirim?
sensör kullanırken yükselen kenar algılayamayabilirsin. pic'in yükselen kenar algılayabilmesi için girişin 0V tan +5V a yükselmesi gerekir. kullanacağın uygulamada sensör çıkışı 0V tan +0.6V a yükseliyorsa, yükselen kenar algılamak işine yaramaz. önceki mesajımda söylediğim gibi programın içinde bir değişken kullanman gerekir.

if(bilgi>130)
{
if(!(cont_1))
{
cont_1=1;
counter++;
}
}

else
{
cont_1=0;
}

Burada "cont_1" kontrol değişkenim, "bilgi" ise ADCden aldığım değerdir. Analog giriş belirlediğim sınırı geçince eğer "cont_1" değişkenim 1 değilse ( if(!(cont_1)) )
o değişkenimi 1 yapıyorum ve yapmak istediğim işlemi yapıyorum.
Eğer analag giriş, belirlediğim değerin üstünde olmaya devam ederse "cont_1" değişkenim 1 olarak kaldığından dolayı aynı işlemi bir daha yapmıyorum.

Analog giriş belirlediğim değerin altına indiğinde "cont_1" değişkenimi 0 yapıyorum.

C dilinde yazdım assemblyde de aynı mantığı kullanabilirsin diye düşünüyorum.
Umarım işine yarar.
 
Teşekkür ederim sn arkadasım. sizin uygulamanızı anladım. bunu assembly diline çevirebilirim ve çevirip deneyeceğim.

Bu sensör devresinde de aslında ben çıkış olarak 3,5V gibi bir çıkış alıyorum yükselen kenar için uygunmu bilmiyorum hiç yapmadım ama eger 5V gerekli ise sensörün çıkış gerilimini bir transistör ile anahtarlayıp lazım gelen 5V'u elde edebilirim. Bu sayede yükselen kenarla da bir çözüm elde edebilirim ama hala yükselen kenar nasıl kullanılır bulamadım. Bazı pic'lerde CCP (capture compare pwm) diye modüller var sanırım yükselen kenarları bu modüllerin "capture" özelliği ile algılıyoruz. daha arastırıyorum bilen arkadaslar yardımcı olurlarsa sevinirim.

Fakat ben bu işlemlerle ugrasırken bir eksigimin daha oldugunu farkettim. onu da şöyle özetleyeyim; pic'te 4 adet giriş ve 4 adet cıkıs kullanacagız varsayalım. girişlerin herbirinde bir adet buton var ve cıkısların herbirinde de 20'ser adet led baglı. 1. giriş butonuna basılınca, 1. cıkısa baglı ledler belli bir senaryoya göre hazırlanmıs ısık oyunları meydana getiriyor. aynı sekilde 2., 3. ve 4. butonlarda diger cıkıslarda yine aynı ısık oyununu gerceklestirecek.
Diyelimki 1. butona bastık ve 1. cıkıstaki ledler bu ısık oyununu yapmaya basladılar. işlemin %50 sine geldiğinde ben 2. butona basacagım ve 2. gurup ledler ısık oyununa baslayacak ama 1. grup ledlerin calısmasınıda engellemeyecek. 1. grup ledler geri kalan %50'lik islemi hiç ara vermeden yapıp bitirecekler. Her grup led farklı zaman dilimlerinde aynı ısık oyununu yapacak ama hiç biri birbirini beklemeyecek ve etkilemeyecek. Düşününce bu biraz mikrokontroller'ın calısma yapısına aykırı imiş gibi geliyor ama umarım bir yolu vardır. Kesme işlemleri ile olurmu acaba diye araştırıyorum. Biraz uzun oldu arkadaslar kusura bakmayın:)
 
Biraz araştırma yaptımda sanırım benim sorunum paralel işlem ile alakalı. yani mikrokontroller'ın aynı anda iki işlemi birlikte yapmasını istiyorum. Ve buda imkansız gibi duruyor. FPGA denen entegreler var bunlar paralel işlem yapabiliyorlarmış. onları araştırıyorum şimdi.
 

Forum istatistikleri

Konular
128,215
Mesajlar
915,867
Kullanıcılar
449,996
Son üye
Serhan10

Yeni konular

Geri
Üst