IR Sensörleri Doğru Kullanıyor muyuz?

IR sensör devresinin gerçekleştirilmiş hali Bu sayfanın en sonundadır. Denenerek, Sonradan eklenmiştir. Önceki bilgiler TEORİ ve PROTOTİP devreye aittir.

IR sensörler aşağıdaki resimde gösterildiği gibi IŞIK tayfının İnfrared bölgesinde yer almaktadır. Bu ışık görünmez ışık kısmında yer aldığından Gözümüzle göremeyiz fakat kameralar vasıtasıyla görünür hale gelecektir. Visible light denilen bölge görebildiğimiz ışık bölgesidir. Dikkat ederseniz bu bölgenin her iki yanındaki frekanslar görülmeyen bölgelerdir.

Konumuz infrared ışık sistemi olduğuna göre bu bölgede yer alan ledlerin, dalga boyu nedir dersek. Ledlerin genellikle 900-940 nanometre dalga boyunda yapıldığını söyleyebiliriz. Bu Görünmez ışık bölgesi ve görünür ışık bölgesi yansıtma kurallarında, birbirine benzer şekilde davranırlar. Yani yansıtıcı özelliği iyi olan bir yüzey ile aynı devre ile daha fazla mesafe algılanabilir, ışığı emen bir yüzey ise, mesafe kısalacaktır.
Bunlara dikkat etmeniz gerekir. Yani yapacağınız devrenin neyi algılamasını istiyorsanız ona göre gücünü ayarlamanız gerekir. ( Bu videoda gösterilmiştir. )
Bu özelliği kullanılarak RENK ayırımı da yapılabilmektedir. Örnek olarak Bu sayfaya bakabilirsiniz. Devir sayacı olarak kullanılmış bir örnek mevcuttur.

OLYMPUS DIGITAL CAMERA

Devrelerimden birini kontrol etmek için Arduino IR sensör aldım ve devrem gayet güzel çalışmaya başladı. Sensör ğroblemi olan devrenin bulunduğu,  yazımın konusu olan aydınlatma kontrol devresine buradan bakabilirsiniz. 
Devre çalıştığında led florasanı çalıştırıyordu. Sensör Florasan ışığından etkilenmiyordu. Çünkü Florasan ışığında INFRARED dalga boyunda bir ışıma yoktu. Fakat bu devrenin olduğu yere GÜNEŞ ışığı geldiğinde devre kendi kendine tetikleniyordu. 
Bunun sebebi ise GÜNEŞ ışığı ile görünür bölge deki ışıma ve infrared bölgesindeki ışımanın, birlikte gelmesiydi. Tabii ki bu dalga boyu geldiğinde devremizi etkiliyordu.
Kendi kendine tetiklenen devre ise bir tetik daha gelmezse devamlı florasan devresini yanık bırakıyordu. Bu durum benim için tehlikeli sonuçlar doğurabilirdi. Sizlerinde yaptığınız devrelerde çevrede güneş ışığı olacaksa, ya da IR sinyal vericileri olursa, buna dikkat etmeniz gerekecektir. 

Devresiz ucuz sensör

Şimdi de piyasadaki IR sensörlere bakalım. Bu sensörler karşılıklı olabilir ya da yansımalı olabilir. Hangi tip kullanacaksanız, yukarıdaki bilgiler ışığında devrenizi oluşturmanız gerekmektedir. Bunun yanı sıra kullanacağınız sensörlerde, alıcı olarak foto diyot ve foto transistör kullanabilirsiniz. Burada dikkat etmeniz gereken durum ise fotodiyotlarda ışığa karşı çok küçük bir değişim olacağıdır.  Burada yukarıdaki sensorün kullanıldığı arduino uygulaması vardır. ADC kullanarak bu değişim hissedilebilir. Fakat değişim farkı sorun olabilir. Bundan dolayı daha hassas işlerinizde aşağıdaki gibi yükseltilmiş bir devre kullanabilirsiniz. Çünkü burada sadece IR led ve fototransistör vardır. Bu küçük değişimi hissetmek zordur. O halde, bu değişimi daha büyük bir değişim haline getirmemiz gerekebilir. Bir OPAMP dediğimiz yükseltici devresini kullanmanız gerekebilir.
Yukarıdaki sensörün OPAMP ile birleştirilmiş hali aşağıdaki resimdedir. 

Kullanılan devre ise bu tip devrelerdir. Benzer devreler, internette bulunabilmektedir.
Yukarıdaki devrede dikkat etmeniz gereken bir durum vardır. Bu da fotodiyotun devreye ters bağlanmasıdır. Bu devrenin çalışması ise şu şekildedir. Çalışmaya başladığında IR led devamlı çalışmaktadır. Şayet yansıma olursa fotodiyot üzerine düşen ışığa göre bir akım akışı olur, buna göre de R2 üzerinde bir gerilim oluşur. Bu gerilim RV1 ile ayarlanan gerilimden yüksek ise çıkış verir. Aşağıda ise çıkış vermez. Hassasiyet ayarını RV1 ile yaparsınız. Çıkışta bir değer alacaksınız. Bu değeri Arduino ya da diğer işlemcilere giriş olarak uygulayabilirsiniz.
Not: Tüm yarı iletkenler IŞIK aldığında bir gerilim üretir. Örnek olması açısından 2N3055 transistörü ile yapılan basit güneş pili deneyine bakabilirsiniz.
Foto diyot ve foto transistörler tabii ki hassasiyet açısından bu işler için dizayn edilmiştir. Bunları kullanmakta fayda vardır.

Gelelim bu sorunları tamamen giderebileceğimiz devremize. 

Devremizde IR led kullanılmaktadır. Fakat alıcı devremizde TSOP4436 veya TSOP4836 IR alıcı göz kullanılmaktadır. IR alıcı gözler 36khz, 38khz vs. gibi frekansları geçiren diğer frekanslara zorluk gösteren devrelerdir. İçinde bulunan band geçiren filtreler ile sadece belirlenmiş frekanslarda en yüksek kazancı gösterir. Burada kullandığımız 36Khz ise PWM ile oluşturulmuştur. Tam 36Khz olamayabilir, 36Khz e çok yakın olması yeterlidir.
Bu şekilde vericimizi çalıştırıyoruz. Yansımayı alıcı gözümüz gördüğünde bunu pals olarak algılaması gerekir. Bunun için ise bunu PWM sinyalini kesip, bir süre sonra tekrar başlatarak yapıyoruz. Aşağıdaki sinyal şekli çalışmasını anlatmaktadır. Sensör çıkışı alttaki sinyaldir ve mikroişlemciye giriş olarak verilir.

Alıcı gözümüz yansıma geldiğinde bunu pals olarak dijital girişe verir. Arduino ya da diğer işlemcilerle bu sinyali aldığımızda bir başka çıkışı 1 seviyesine çıkararak tetikleme veririz.
Devremiz ise PIC12F683 ile çalıştırılmıştır. Program dosyalarını konunun altında toplu halde bulabileceksiniz.

Yukarıdaki prototip devre basit bir programa sahiptir. Bu algoritmayı kullanarak, kendi programınızı yapabilirsiniz. Prototip devrenin, çalışması esnasında, verici led entegreden aldığı akıma göre çalışacağından 20ma den fazla entegre de veremeyeceğinden, verici mesafesi kısa oluyordu. Gerçek devrede verici led Transistörle sürüldü. IR ledler 50-100ma akımlarda çalışabilir. mesafe için bunun yüksek akımla sürülmesi transistörün kullanılmasını zorunlu kılıyor. Proteus çiziminde vericiden alıcıya giden sinyali buton ve sol taraftaki alıcı göz temsili devresi kullanıldı. Gerçek devrede IR sinyal geleceğinden bunlar kullanılmayacaktır. C1 kondansatörü istenirse GND ye bağlanır. Stabilite için kullanılabilir. Ben kullanmadım.

 

 DEFINE OSC 8

 
#config
 __config _FCMEN_OFF & _IESO_OFF & _CP_OFF & _CPD_OFF & _BOD_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _INTRC_OSC_NOCLKOUT
#ENDCONFIG

CMCON0 = 7
ADCON0=%00000000
ANSEL=0 ;ADC ler iptal

GPIO=0
TRISIO= %00101010          ; ************* gpio-5 input yapıldı senkron için 06.8.2015 ********************

                    
DUTY VAR WORD
don     var     byte


' ============= PWM Ayarları =========
T2CON =%00000101 'Bölücü 1/4 olarak verildi ve TMR2 aktif hale getirildi.
PR2=13      ; 36Khz için geçerlidir. 38Khz için 12 verilmesi yeterlidir. 
duty=28     ; 36Khz için geçerlidir. 38Khz için 26  verilmesi gerekir. 
 CCP1CON.4=DUTY.0
CCP1CON.5=DUTY.1
CCPR1L=duty>>2
CCP1CON.2=1 'bu iki komut ile PWM sinyali açılmış olacaktır
CCP1CON.3=1

 
BASLA:
don=don+1
if don>1 then 
    don=0
    CCP1CON.2=1 'bu iki komut ile PWM sinyali açılmış olacaktır
    CCP1CON.3=1
  else
       CCP1CON.2=0 'bu iki komut ile PWM sinyali kapanmış olacaktır
        CCP1CON.3=0
    endif
    pause 10        
 if gpio.5=0 then     ; Giriş portunu kontrol et. 
  gpio.0=0            ; Çıkış portunu 0 yap
 else
  gpio.0=1            ; Çıkış portunu 1 yap
 endif 

goto basla


end

Yukarıdaki programda 22. ve 23. satırları 38Khz için açıklamada olduğu gibi değiştirmeniz yeterlidir.Program 36Khz e göre ayarlıdır. PIC12F683 iç osilatörü kullanılmaktadır.

TSOP44xx alıcı gözün bilgileri Bu kaynak içerisinde çeşitli frekanslara ait alıcı gözlerin bilgilerini de bulabileceksiniz.
Çeşitli alıcı göz tipleri :

 

 

 

 

TSOP 1738

 

Daha farklı tipte de alıcı gözlere rastlayabilirsiniz.

 

 

Tüm dosyalara bu linkten ulaşabilirsiniz. 

Mikro kontrolcü kullanmadan, ben bu tip bir devre yapmak istiyorum diyorsanız, o da olur.
Bu sayfadaki devreyi inceleyebilirsiniz.

Bu devreye neden ihtiyaç oldu.

Gerçek devrenin çalışması ve yüzeye göre mesafe değişimi. 

Gerçek devrenin çizimleri, programı ve videosu aşağıdadır. 

PCB tek yüzlü olarak dizayn edildi. Bundan dolayı JUMPER yazan yerde bir atlama teli var. İsterseniz 2 yüzlü olarak çizebilirsiniz. Bu şekilde yaparsanız Tüm dirençleri SMD olarak kullanabilirsiniz.

Gerçek denenmiş devre için Tüm dokümanlara buradan ulaşabilirsiniz.

AYRICA BU MODÜL KULLANILARAK YAPILAN AYDINLATMA KONTROLÜ DE BU LİNKTEDİR. 

AYDINLATMA DEVRESİNDE İHTİYAÇ GÖSTEREN POWER ON RESET DEVRE AÇIKLAMASINA DA BURADAN ULAŞABİLİRSİNİZ.

Çalışma videosu :
Devreler hakkında görüş ve sorularınızı buradan ya da Facebook üzerinden iletebilirsiniz. Buradan görüş bildirmenizi tavsiye ederim. Konu hakkındaki görüşleriniz burada görünecek ve diğer okuyucular sizin görüşlerinizden faydalanacaktır.

16 Comments

  1. Verdiğiniz harika (Türkçe içerikli olanlara kıyasla detaylı) bilgiler için teşekkürler.
    IR alıcıyı seçerken son iki basamak bant geçiren frekans değerini gösteriyor.
    Aynı durum IR vericiyi seçerken geçerlimidir? Yoksa tüm IR verici ledler picin ürettiği PWM sinyalini gönderebilirmi?
    Diğer yandan bu PIC i seçmenizin sebebi dahili OSC si olan en ucuz PIC üyesinden biri olması mı?

    1. IR verici ledler IR ışık yayar. ve alıcının durumuna bağlı gibi görünse de ben sorun yaşamadım. ve ledler 900 930 960nm gibi IR dalga boyunda ışık yayarlar. bu güne kadar gördüğüm yerlerde 900-960nm gibi bir sorun yaşamadım. led IR olması yeterli diye düşünüyorum. PWM kısmında da sorun olmayacaktır. 12683 seçmemdeki amaç HPWM denilen donanımsal pwm çıkışı olması 36 ya da 38 khz e ayarlıyorum devamlı bu şekilde pwm çıkışı veriyor taşıyıcı frekansı elde ediyor. ben bu taşıyıcı frekansı lede gönderirken kodlama kullanmadığım için direkt veriyorum. gerekirse anahtarlama yapılabilir.

    1. ben pbp 3.0 ve yukarısın kullanıyorum. pbp3.0 altını kullanıyorsanız config satırı farklı yazılıyor. parametreler aynı bile olsa eski sürümlerde @ işareti ile başlayan şekilde kullanılıyor. bir de entegre yanlış seçildiğinde hata verebilir. entegre doğru seçilmiştir diye düşünüyorum versiyon farkı olabilir. 

  2. devre çalışıyor, breadboard üzerine kurdum.Ancak nedendir bilemedim; elinizi yavaşça yaklaştırınca algılamıyor tıpkı pır sensörleri gibi, ilginç. Sonuç olarak sağolun.

  3. bende yavaş sorunu yok ama ne kadar yavaştan bahsediyoruz. elimizi altından geçirmek yetiyor bende. sınırı bulmak için yavaş yapıyorsan kondansatör tam boşalamamış olabilir 1 ve 0 seviyeleri algılanamıyor olabilir.

  4. Hocam tekrar selamlar.
    bu devreyi tekrar yapmak istedim ve gerekli malzemeleri aldım,sensör olarak dp1838 alıcı göz kullandım ancak ne ettiysem çalıştıramadım.
    Yazılıma sadece 750 msn zaman gecilmesi ekledim çıkış aktif olunca. Daha öncede aynısını yapmış, saatlerce servodan el yapıp test etmiş, sıkıntı yaşamamıştım.
    if gpio.5=1 then

    gpio.0=0
    say=0
    else

    say=say+1
    if say>5 then
    gpio.0=1
    pause 750 ************************************
    say=0
    endif
    endif

    Ancak şimdi olmuyor. Osiloskopta sürekli verdiğiniz değerlere göre ya 18 khz, yada 19 khz okuyorum; yani olması gerekenin yarısı. Ölçümü ir led üzerinden yapıyorum. Yazılımda iyi değilim, hata varsa göremiyorum.
    Sizce aşağıdaki değerlerde düzeltmem gereken bir yer varmı?

    T2CON =%00000101 ;Bölücü 1/4 olarak verildi ve TMR2 aktif hale getirildi.
    PR2=13 ; 36Khz için geçerlidir. 38Khz için 12 verilmesi yeterlidir.
    duty=28 ; 36Khz için geçerlidir. 38Khz için 26 verilmesi gerekir.

    CCP1CON.4=DUTY.0
    CCP1CON.5=DUTY.1
    CCPR1L=duty>>2
    CCP1CON.2=1 ‘bu iki komut ile PWM sinyali açılmış olacaktır
    CCP1CON.3=1

  5. birincisi sanırım dp1838 alıcı göz 38 khz olarak çalışıyor hpwm frekansını 38khz ayarlamalısınız. ŞAyet frekans bölücüde hata varsa bunu yanlış hesaplar. T2CON registerinin durumlarına bir bakın. belki 1 0 hatası yapılmış olabilir. ya da int osc kısmı yanlış çalışıyordur. 8mhz 12F683 için olmalı 4Mhz ayarladıysanız yine yarısını alabilirsiniz.

  6. Öncelikle Ir alıcı verici sensörle ilgili bulabildiğim tek türkçe kaynak için size teşekkür ediyorum. Otomatik el dezenfektanı yaptım fakat aynı devreyi dışarı çıkarınca IR sensör engel olmaksızın çalışmakta ve elektriği kesene kadar çalışmasını sürdürmekte. Maliyeti düşürmek adına arduino, hcsr04 kullanmadan yaptım. Gece beyaz ışık altında projem çalışıyor, sabah okula aldım orda sıkıntı çıkardı. Bu sorunu nasıl halledebiliriz acaba? sensörün etrafını kapatıp karanlıkta bırakma veya projeyi okulun az ışık alan bir yerine yerleştirme iş görür mü acaba ? veya sizin önerebileceğiniz yöntem varsa öğrenmek isterim. Cevabınız için şimdiden teşekkür ederim….

    1. Tabii ki bu durumu engellemek sizin elinizde. IR alıcıya bir kodlama gönderirsiniz. Bu kodlama içinde data da bulunur. bu şekilde aynı yerde birden fazla bile ürün kullanabilirsiniz. birbirini etkilemez. Mesela seri olarak başlangıçta 1010 gönderip arkasından ise belirleyeeğiniz bir kod yollarsınız. alıcı kısım 1010 kodunu aldığında arkasındaki kodun dezenfektan cihazının numarası olduğunu anlar. kendisine ait ise çalıştırır. Kodsuz olduğunda güneş ışığında bulunan IR sinyaller var yok olarak gösterip etkiler. Benim yaptığım devrede 36-38khz bir sinyal varmı yok mu kontrol ettim alıcı olarak tv lerdeki gibi alıcı göz kullandım arduino alıcı göz modülü var. bunu kullanırsanız güneç etkilemez ama herhangi bir IR verici etkileyebilir. ilk başta dediğim gibi kod kullanırsanız o zaman size özel olur ve hiç etkilenmez.

  7. Şafak hocam, öncelikle tam bir öğretmen gibi detaylı açıklamalar yazdığınız için teşekkür ederim.
    devrenin benzerini bende kurdum. elimde hazırda 16f628A vardı onunla yaptım. ancak bir sorunla karşılaştım.
    IR verici ve alıcı olarakta Vishay hs0038Bd kullandım.
    devre pille çalışıyor.
    pil çabuk tükenmesin diye pwm sinyali sürekli vermek yerine 2 farklı senaryoda PWM i kestim ancak pwm sinyal her açıldığında IR alıcı kendi kendine çıkış verdi.
    1. senaryoda, pwm ver timer say, dolunca pwm kes, yine timer say süre dolunca yeniden ver şeklinde , timer süreleri sonunda IR alıcı önüne engel gelmesede çıkış verdi.
    2. senaryo pwm ver,Alıcıdan sinyal bekle, yoksa uyu, watchdogtimer bekle, uyan pwm ver şeklinde. ama yine bunda da uyku ve uyanma sonrasında IR alıcı yine çıkış verdi. bu sorunu aşamadım yardımınızı rica ederim.

  8. haklısın sinyalin olmadığı ve tekrar geldiği düşüncesine göre yapıldığından ilk enerji geldiğinde elle kontrol ediliyor gibi görüyor. bununla birlikte bunu iptal edebilirsin. bir parametre ekle. uyurken parametreyi 0 yapsın ve elle kontrol edildiğinde o parametre 1 olmasını kontrol etsin. Bu şöyle kullanılacak uyandığında ilk çalıştırmada 0 olacak ve tetikleme gerçekleşmeyecek. daha sonra ilk döngü yani kalkış bittiğinde o parametre 1 olacak ve elini ya da bir cismi görüyorsa parametre de 1 ise cisim için tetikleme verilir. yani araya 1 parametre koyup cisim geldiğinde bunu kontrol etmek. mantık bu olacak sanırım. deneyerek daha iyisini de bulabilirsiniz.

  9. Merhaba. ayrıntılı kaynak için size teşekkür ederim. Benim sorum biraz genel. IR Transmitter ın önündeki objenin rengi, tonu veya yapısı (mesela bir insansa üzerindeki kıyafetin rengi,tonu veya kumaş yapısı) çalışmasını yada mesafesini etkiler mi?

    1. Evet diyebilirim. Güçlü bir IR de belki mesafe fark etmiyor gibi düşünülse de yansıma testlerimde parlak cisimler ile koyu cisimler arasında fark gördüm. Bu videoyu incelerseniz arasındaki farkı anlattığımı görebilirsiniz.

      https://youtu.be/T-RMav84nFQ

      Ayrıca bu referans verdiğim videoyu mikrobotik sitemdeki diğer IR hakkındaki yazımdan aldığımdan Yazıyı okumak isterseniz detaylı bilgi için bu linki kullanabilirsiniz.

      https://www.mikrobotik.com/wp2/2019/04/09/ir_sensor_kullan/

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.