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
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);