Bu projede LDR ile ATMEGA8 mikrodenetleyicisi arasında arayüz oluşturacağız ve bununla bölgedeki IŞIK YOĞUNLUĞunu ölçebiliriz. ATMEGA8'de ışık yoğunluğunu ölçmek için 10 bit ADC (Analogdan Dijitale Dönüştürme) özelliğini kullanacağız.
Am LDR, IŞIK yüzeyinin üzerine düştüğünde direncini değiştiren bir dönüştürücüdür. LDR sensörü farklı boyut ve şekillerde mevcuttur.
LDR'ler, ışığa duyarlı özelliklerine sahip olmalarını sağlamak için yarı iletken malzemelerden yapılmıştır. Kullanılan birçok malzeme türü vardır, ancak popüler olan biri KADMYUM SÜLFİT'tir (CdS). Bu LDR'ler veya FOTOĞRAF REİSTÖRLERİ “Foto İletkenlik” ilkesine göre çalışır. Şimdi bu ilkenin söylediği şey, LDR'nin yüzeyine ışık düştüğünde (bu durumda), elemanın iletkenliği artar veya başka bir deyişle, ışık LDR'nin yüzeyine düştüğünde LDR'nin direnci azalır. LDR için direnç azalmasının bu özelliği, yüzeyde kullanılan yarı iletken malzemenin bir özelliği olduğu için elde edilir. LDR, çoğu zaman ışığın varlığını tespit etmek veya ışık yoğunluğunu ölçmek için kullanılır.
Yukarıdaki şekilde gösterildiği gibi farklı LDR türleri vardır ve her biri farklı özelliklere sahiptir. Tipik olarak bir LDR, tam karanlıkta 1MΩ-2MΩ, 10 LUX'ta 10-20KΩ, 100 LUX'ta 2-5KΩ olacaktır. Bir LDR'nin LUX grafiğine tipik direnci şekilde gösterilmektedir.
Yukarıdaki şekilde gösterildiği gibi, sensörün iki kontağı arasındaki direnç ışık yoğunluğuyla azalır veya sensörün iki kontağı arasındaki iletkenlik artar.
Şimdi dirençteki bu değişikliği voltajdaki değişime dönüştürmek için voltaj bölücü devresi kullanacağız. Bu dirençli ağda bir sabit direncimiz ve diğer değişken direncimiz var. Şekilde gösterildiği gibi, burada R1 sabit bir dirençtir ve R2 direnç görevi gören FORCE sensörüdür.
Dalın orta noktası ölçüme alınır. Direnç R2 değiştiğinde, Vout onunla doğrusal olarak değişir. Yani bununla, ağırlıkla değişen bir voltajımız var.
Şimdi burada dikkat edilmesi gereken önemli nokta, kontrolör tarafından ADC dönüşümü için alınan girişin 50µAmp kadar düşük olmasıdır. Direnç bazlı voltaj bölücünün bu yükleme etkisi önemlidir, çünkü voltaj bölücünün Vout'undan çekilen akım, hata yüzdesi artışlarını arttırır, çünkü artık yükleme etkisi konusunda endişelenmemize gerek yoktur.
Burada yapacağımız şey, iki direnç alıp bir bölücü devre oluşturacağız, böylece 25 Voltluk bir Vin için bir 5 Volt Vout elde edeceğiz. Yani gerçek giriş voltajını elde etmek için tek yapmamız gereken Vout değerini programdaki “5” ile çarpmak.
Bileşenler
Donanım: ATMEGA8, güç kaynağı (5v), AVR-ISP PROGRAMMER, JHD_162ALCD (16 * 2LCD), 100uF kapasitör, 100nF kapasitör (5 parça), 10KΩ direnç, LDR (Işık Bağımlı Direnç).
Yazılım: Atmel studio 6.1, progisp veya flash magic.
Devre Şeması ve Çalışma Açıklaması
ATMEGA8'in PORTD devresinde veri portu LCD'sine bağlanır. 16 * 2 LCD'de arka ışık varsa 16 pim vardır, arka ışık yoksa 14 pim olacaktır. Arka ışık pimlerine güç verebilir veya bırakabilirsiniz. Şimdi 14 pimde 8 veri pini (7-14 veya D0-D7), 2 güç kaynağı pini (1 ve 2 veya VSS ve VDD veya gnd ve + 5v), kontrast kontrolü için 3. pin (VEE-karakterlerin ne kadar kalın olması gerektiğini kontrol eder) gösterilmektedir) ve 3 kontrol pini (RS & RW & E)
Devrede sadece iki kontrol pini aldığımı gözlemleyebilirsiniz. Kontrast biti ve READ / WRITE sık kullanılmadığından toprağa kısa devre yapılabilir. Bu, LCD'yi en yüksek kontrast ve okuma moduna getirir. Karakterleri ve verileri buna göre göndermek için sadece ENABLE ve RS pinlerini kontrol etmemiz gerekiyor.
LCD için bağlantıları aşağıda verilmiştir:
PIN1 veya VSS ------------------ zemin
PIN2 veya VDD veya VCC ------------ + 5v güç
PIN3 veya VEE --------------- zemin (yeni başlayanlar için en iyi maksimum kontrastı verir)
PIN4 veya RS (Kayıt Seçimi) --------------- uC'nin PB0'ı
PIN5 veya RW (Okuma / Yazma) ----------------- zemin (LCD'yi okuma moduna getirir, kullanıcı için iletişimi kolaylaştırır)
PIN6 veya E (Etkinleştir) ------------------- PB1 / uC
PIN7 veya D0 ----------------------------- uC'nin PD0'ı
PIN8 veya D1 ----------------------------- uC'nin PD1'i
PIN9 veya D2 ----------------------------- uC'nin PD2'si
PIN10 veya D3 ----------------------------- uC'nin PD3'ü
PIN11 veya D4 ----------------------------- uC'nin PD4'ü
PIN12 veya D5 ----------------------------- uC'nin PD5'i
PIN13 veya D6 ----------------------------- uC'nin PD6'sı
PIN14 veya D7 ----------------------------- uC'nin PD7'si
Devrede 8 bit iletişim (D0-D7) kullandığımızı görebilirsiniz ancak bu zorunlu değildir, 4 bit iletişim (D4-D7) kullanabiliriz ancak 4 bit iletişim programı ile biraz karmaşık hale gelir. Bu nedenle, yukarıdaki tablodan sadece gözlemden, 10 pini LCD'yi 8 pinin veri pini ve kontrol için 2 pini olan denetleyiciye bağlıyoruz.
R2 üzerindeki voltaj tamamen doğrusal değildir; gürültülü olacak. Gürültü kapasitörlerini filtrelemek için, şekilde gösterildiği gibi bölücü devredeki her direnç boyunca yerleştirilir.
ATMEGA8'de PORTC'nin DÖRT kanalından herhangi birine Analog giriş verebiliriz, hepsi aynı olduğundan hangi kanalı seçtiğimiz önemli değil. PORTC'un 0 veya PIN0 kanalını seçeceğiz. ATMEGA8'de ADC 10 bit çözünürlüktedir, bu nedenle kontrolör minimum Vref / 2 ^ 10 değişimini algılayabilir, bu nedenle referans voltajı 5V ise her 5/2 ^ 10 = 5mV için bir dijital çıkış artışı elde ederiz. Dolayısıyla, girişteki her 5mV artış için dijital çıkışta bir artış elde edeceğiz.
Şimdi ADC sicilini aşağıdaki şartlara göre ayarlamamız gerekiyor:
1. Öncelikle ADC'de ADC özelliğini etkinleştirmemiz gerekiyor.
2. Buradan ADC dönüşümü için maksimum giriş voltajı + 5V olacak. Böylece ADC'nin maksimum değerini veya referansını 5V'a ayarlayabiliriz.
3. Kontrolör, ADC dönüşümünün yalnızca harici bir tetiklemeden sonra gerçekleştiği anlamına gelen bir tetikleme dönüştürme özelliğine sahiptir, çünkü ADC'nin sürekli serbest çalışma modunda çalışması için yazmaçları ayarlamamıza gerek kalmaz.
4. Herhangi bir ADC için, dönüştürme frekansı (Analog değerden Dijital değere) ve dijital çıktının doğruluğu ters orantılıdır. Bu nedenle, dijital çıktının daha iyi doğruluğu için daha az frekans seçmemiz gerekir. Normal ADC saati için ADC'nin ön satışını maksimum değere (2) ayarlıyoruz. 1MHZ'nin dahili saatini kullandığımız için, ADC'nin saati (1000000/2) olacaktır.
Bunlar ADC'ye başlamak için bilmemiz gereken dört şey.
Yukarıdaki dört özelliğin tümü iki kayıt tarafından belirlenir,
KIRMIZI (ADEN): Bu bit, ATMEGA'nın ADC özelliğini etkinleştirmek için ayarlanmalıdır.
MAVİ (REFS1, REFS0): Bu iki bit, referans voltajını (veya vereceğimiz maksimum giriş voltajını) ayarlamak için kullanılır. Referans voltajı 5V olmasını istediğimiz için REFS0 tablo ile ayarlanmalıdır.
SARI (ADFR): Bu bit, ADC'nin sürekli çalışması için ayarlanmalıdır (serbest çalışma modu).
PINK (MUX0-MUX3): Bu dört bit, giriş kanalını söylemek içindir. ADC0 veya PIN0 kullanacağımız için, tablodaki gibi herhangi bir bit ayarlamamıza gerek yoktur.
BROWN (ADPS0-ADPS2): bu üç bit, ADC için ön skaler ayarlamak içindir. Prescalar 2 kullandığımız için, bir bit ayarlamalıyız.
KOYU YEŞİL (ADSC): bu bit, ADC'nin dönüşümü başlatması için ayarlanır. Dönüştürmeyi durdurmamız gerektiğinde bu bit programda devre dışı bırakılabilir.
Bu yüzden 16x2 LCD ekranda LDR direnci ile ışık yoğunluğunu elde etmek için bunu LUX grafiği ile eşleştirebiliriz.