Raspberry Pi Dersleri serimizde kullanacağımız malzemelerin tamamına sizler için hazırladığımız setler ile kolayca sahip olabilirsiniz. Raspberry Pi’ye Uzaktan Bağlantı Yöntemleri (VNC,SSH,TTL) #4 dersimize kadar olan malzemeler için Kombo Kit, Raspberry Pi 3 Röle Kartı İle Alarm Devresi Yapımı #11 dersimize kadar olan malzemeler için Süper Başlangıç Seti, tüm derslerdeki malzemeler için Proje Seti tercih edebilirsiniz.

Merhabalar. Bu dersimizde Raspberry Pi’miz ile LDR kullanarak ışık şiddeti ölçmeyi öğreneceğiz.

Gerekli Malzemeler:

LDR Nedir?

LDR, çoğunlukla fotosel diye bildiğimiz ışık şiddetini ölçmeye yarayan iki uçlu bir devre elemanıdır. Üzerine düşen ışık miktarına göre iki ucun arasındaki direnç değeri değişir. Bu özelliği sayesinde ışık miktarını ölçebiliriz.

Eğer daha önce Arduino ile benzer bir uygulama yaptıysanız LDR’yi analog girişe bağlandığını biliyorsunuzdur. Fakat Raspberry Pi’mizde analog giriş mevcut değil. Bu duruma bir çözüm olarak bir RC devresi kurmamız gerekiyor.

LDR ölçümü için RC devresi:

RC devresi, bir kapasitör ve dirençten oluşur. Kapasitörler, elektrik devrelerinde yük depolama görevinde kullanılırlar. Akım, kapasitörü şarj ederek geriliminin yükselmesine sebep olur. Direnç ise kapasitöre giden akımı limitleyerek, kapasitörün şarj olmasını yavaşlatır. Yani kapasitörün dolacağı süreyi, direncin değeri belirler. LDR’nin direnci üzerine düşen ışığa göre değişeceği için, kapasitörün şarj olma süresini ışık miktarı belirleyecektir. Kapasitör 1.8V değerine ulaştığında Raspberry Pi’miz bunu lojik 1 seviyesi olarak algılayacağından, GPIO pininin lojik 1 seviyesine gelme süresi bize ışık seviyesini bildirecektir.

Raspberry Pi – LDR RC devre şeması:

rpi-ldr
Raspberry Pi – LDR devre şeması

Raspberry Pi – LDR ölçümü Python kodu:

Alternatif kod linki:https://zerobin.net/?f00504abb6c64e96#qq211wc+u+VvhQvyREMpG2LniL8kpBD/vSmkSN+wb7o=

import time 
import RPi.GPIO as GPIO

GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)

ldr_pin = 3

def RCtime (RCpin):
 reading = 0
 GPIO.setup(RCpin, GPIO.OUT)
 GPIO.output(RCpin, GPIO.LOW)
 time.sleep(.1)
 
 GPIO.setup(RCpin, GPIO.IN)
 while (GPIO.input(RCpin) == GPIO.LOW):
 reading += 1
 return reading
 
while True: 
 LDRReading = RCtime(3)
 print LDRReading
 time.sleep(1)

Kodumuz aslında çok basitçe GPIO3 nolu pin lojik 1 olana kadar geçen süreyi ölçüyor. LDR’nin üzerine düşen ışık miktarı arttıkça direnci azalacağından dolayı, kapasitör daha hızlı şarj olacak; dolayısıyla ölçüm değeri düşecektir.

Program kodunun detaylı anlatımına aşağıdaki videodan ulaşabilirsiniz:

Kodu çalıştırmak için

python ldr.py

komutunu veriyoruz.

3 Yorumlar

  1. File “ldr.py”, line 18
    reading + = 1
    ^
    IndentationError: expected an indented block

    böyle bir hata alıyorum sürekli…

CEVAP VER