16f84 ile LDR

Başlatan W-O-L-F, 13 Eylül 2005, 03:29:01

W-O-L-F

arkadaşalr C dilinde elinde LDR yi okumak için kod olan varmı pic basic de şöyle bir komut var
Pot 3,255.b0
pot değerini okumak için bunun benzeri bir kod CCS ve ya C de yazılmış kod varmı  teşekkürler

SpeedyX

ADC ile yapılır o işler, malesef C de basic gibi hazır macrolar azınlıkta.

Ersin

RC  devre ile yapiliyo ADC ye gerek yok.Ama tabii CCS te farkli.Su an ugrastigim devrede LDR de olacak ( 16f628 ) ama daha oraya gelmedim .
haftaya tatile gidecem biraz, 2hafta sonra umarim bir cozum bulacam.
CCS te yazilmis kod ben sahsen bulamadim ama calisma mantigi pulse lari olcmak ( kondansatorun sarz ve desarz olmasi ile).Birde sunu soyleyim bu metod cok hasas bir metod değil,yani bana sadece gece gunduz icin gerekli karanlik oldugunda switch edecek ama biseyler olceceksen kesinlikle adc.

SpeedyX

@swordman, iyi hatırlattın
RC olayını biraz anlatayım, bununla termostat yapmıştım.


şekildeki devrede pic e giden pini giriş çıkış yaparak kondansatörün şarj deşarj süresine göre ldr ölçülüyor, pot un kullanım amacı ise her pic in "1" algılama seviyesi aynı değil, bazıları 1,5 bazıları 1,7... aynı tip ldr kullanacağınız için ölçüm değerleri aynı olacak(töleransı az seçmek gerekiyor) pot ile "1" seviyesini ayarlarsanız yaptığınız tüm devreler aynı ortamda aynı değeri ölçebilir.
pic pinini dış kesme bacağına verebilirsiniz(ext_int), kondansatör deşarj edildikten sonra tmr0 ı aktif edip dış kesme geldiğinde tmr0 ın değeri okunarak ve ona göre bir çevrim tablosu yapılarak RC devre ile ADC işlemi yaptırmak mümkün. pot çok turlu trimpot olabilir.
680 ohm luk direnç ise pic pini üzerinden deşarj sırasında pini korumak için kullanılmıştır, daha güvenli bir yolda kondansatörü başka bir pin ile kontrol edilen bir transistör üzerinden deşarj etmektir ama bu şekilde de bir sorun yaşamadım.

hazır pot okuma komutu arayan birisi için bu işlem nekadar kullanışlı ve kolay olur bilemiyorum.

Erol YILMAZ

Microchip amcamlar bu tip bir okumanin daha saglikli olmasi icin daha iyi bir devre oneriyor.

Cok mu farkli?  

Evet cok farkli ama devre elemanlari ayni :)  Sadece 0'dan 1'e gecisi değil de,    1'den 0'a gecisi olcun diyorlar, boylece bu sure daha uzun olacak, dinamik alan genisleyecek.

Yani 0.0 mV tan 1200 mV seviyesini değil. 5000 mV tan 1200 mV a dususu olcun diyorlar. yaptim mi? Yapmadim lazim olmadi, simdiye kadar. Ama Speedyx (evet dogru yazdim :) ) bunu zevkle dener ve bize doner tahmin ediyorum. Tabii sema nin bu mantikla bastan tasarlanmasi lazim. Evet Speedyx bu zor gorev icin cevabini bekliyoruz...

SpeedyX

Alıntı yapılan: "SpeedyX"hemende yıkmışsın bakıyorumda işi :)
şunu W-O-L-F arkadaşa yaptırsak olmazmı? şimdilerde biraz paraya ihtiyacım var başka bişeylerle uğraşmam gerekiyor...
aslında hiç bir fark yok yine herşey aynı belki araya bi devrecik daha koyarak pic int i kullanabiliriz, orası "0" olduğunda ext int "1" yapacak bir devrecik...

ext_int in H to L veya L to H özelliği varmış, araya devrecik koymaya gerek yok, herşey aynı, yani deneyecek bişey yok, aynı olacak.

erkan614

iyi çalışmalar
bu konunun üstünden çok zaman geçmiş ama merak ettiğim bi konu var
ldr nin karakteristiğini neye göre hesapladınız liner olmadığını söylüyorlar

SpeedyX

"tablo oluşturarak" (bkz. lookup table).

erkan614

@SpeedyX benim sorum şu manadaydı ldr nin karakteristikleri sabit değil farklılıklar arz edio bu sebepten hangi ldr nin hangi ışık şiddetinde hangi drenci gösereceğini nerden buluyorsunuz ?
ben uzun zamandır basit lüxmetre yapmaya çalışıyorum ldr nin drencini okuyup ekrana veriyorum fakat bu değerin kaç lüx olduğunu bilemiorum bu konuda ne tavsiye edersiniz?