21 Ocak 2014 Salı

EEE3205 Microprocessor Project

Bu proje okuldaki mikroişlemci dersinin projesidir. Bir odanın içindeki cihazların kontrol edilmesi için bir simülasyondur aslında. Bu projede amacımız odanın sıcaklığını ölçüp istenen sıcaklık değerlerin dışına çıktığında otomatik bir şekilde müdahale edilmesidir. Bu sıcaklık verisini LM35Z sıcaklık sensörü ile okuyoruz. Sıcaklık 32 santigrat derecenin üzerine çıktığı zaman tavan aspratoru çalışmaya başlar  ,23 derecenin altıda düştüğü zaman ise temsili Infrared ısıtıcılar çalışmaya başlar.



Işık sisteminde ise bir hareket sensoru birde LDR sensor bulunmakta .Işıklar için butonla ayarlanan  üç mod oluşturdum ; 1)Kapalı 2)Açık 3)Otomatik olmak üzere.Aklınıza gelen şey zaten böyle şeyler yapı marketlerde satılıyor olacaktır ama bu sistemin en büyük avantajı isterseniz tam acık olduğu bir modun bulunması ışık siz bilgisayarın başındayken gereksiz sönmeyecektir .Otomatik mod ise ışık siddeti algılayıp güneşli havada hareket olsa dahi ışığı yakmaz .


Başta bahsettiğin sıcaklık ve ışık (ldr) sensorunun verilerini Lcd ekran ile hocalara sunmaya karar verdim 16x2 mavi bir ekran kullandım .Bu ekranda 2 farklı lm35 den sıcaklık okuduk biri onanın üstü tarafından biri altı tarafından olmak üzere sonrasında bu iki değerin ortalaması alıp işlemleri bu son ortala değere göre yaptırdık. Ldr den okuduğumuz analog değeride direk olarak ekrana yazdırdık .


Bu bahsettiklerim dışında devrenin 5v ile calıştığı için güç regülatörü koyduk 7805 ,aspratoru temsil eden motoru çalıştırmak için L293d motor sürücü kullandık. Pic olarak 16f88 ihtiyaçlarımız karşıladı dışardan kristal bağlamadan internal 8Mhz kullandık

Parça listesi;
R1,2,4,5,6 10K
R3 10K  Pot
C1 100nf polyester
C2 470nf polyester
U1 7805
U2 L293D
U3 16F88
U4,5 LM35Z
Q1,2 BC547
B1,2 Buton(2 bacaklı)
J5 16x2 Lcd ekran

J3 Led işik çıkışı
J2 Ir ısıtıcı
J6 asprator

Bu devreyi tam ölçekli uygulamak isteyen arkadaşlar çıkışlardan direk röle sürebilirler (5v ile çalışan)
Devreyi yaptınız farz ederek anlatıyorum. devreyi ilk çalıştırdığınızda hiç bir otomatik fonksiyon çalışmaz,
B1'e basarsanız sıcaklık ile çalışanları aktif edersiniz , tekrar ayni tuşa basmanız halinde deaktif olur.
B2'e ilk basışta ışık açılır ,2.de otomatik moda geçer ,3.de deaktif olur.
Ekte ihtiyacınız olan hex ares pdf dosyalarını bulabilirsiniz.
INDIR
Lcd'ye degeri yazdırmak için kullandığımız fonksiyon;

void ShowADC1(int x, int y, unsigned int adcvalue)      {
car = adcvalue / 1000;
LCD_Chr(x,y,48+car);
adcvalue=adcvalue-1000*car;
car = (adcvalue / 100);
LCD_Chr_CP(48+car);
adcvalue=adcvalue-100*car;
car = (adcvalue / 10);
LCD_Chr_CP(48+car);
adcvalue=adcvalue-10*car;
car = adcvalue;
LCD_Chr_CP(48+car);
delay_ms(30);
}

analog okuma, derece hesabi;
temp1=ADC_Read(0);
 sc1= (5.0*temp1*100/1024);