Can sıkıntısı Projesi

Başlatan Maxim, 24 Şubat 2011, 08:39:06

Maxim

evde holde kullanmak için bir gece lambası tarzında ışıklı bir şeyler bakındım,
hiç biri hoşuma gitmedi. Bende bunu kendim yapayım madem diyorum, çokmu zor sanki .

kabaca tasarlamak gerekirse:
1 adet çıkışı usb soketli minik smps adaptör, yani 5volt
1 adet kırmızı veya mavi led
1 adet ldr
transistorlü+opamplı devre VEYA 12F serisi pic
1 adet minik bir kutu ?

evet çok karışık birşey değil,
sadece ldr sayesinde ayarlanabilir eşik değeri aşıldığı anda devre aktif olup otomatik yanmaya başlayacak
yani gece kendi kendine yanacak, sabah sönecek, sokak lambası gibi .

sadece bunun kontrolünü neyle yapsam diye düşünüyorum
ticari ve adetli birşey olmadığı için maliyetin önemi yok, olsa ne olur kaç tane malzeme varki
acaba piclemi bir şeyler yapsam ?

bu konuda fikri veya katkısı olabilecek varmı? nasıl bir tasarım yapayım ?

smps Adaptör

t2

#1

Maxim

ama bunda ldr kontrolü yok t2

t2

#3
Tamam sonradan fark ettim. Başka devreye bakalım:



Alıntı YapR1_________________Photo resistor (any type)
R2________________100K   1/2W Trimmer Cermet
R3,R4______________10K   1/4W Resistors
R5________________470R   1/4W Resistor
R6_________________47R   1/4W Resistor

C1________________220µF   25V Electrolytic Capacitor

D1______________1N4148    75V 150mA Diode
D2_________________LED    Any type and color (See Notes)

Q1,Q2____________BC337    45V 800mA NPN Transistors

SW1_______________SPST Switch

B1__________________3V (Two 1.5V AA or AAA cells in series, etc.)
http://www.redcircuits.com/Page64.htm

t2

#4
 Titreme yapmaması için schmit tetiklemeli bir kapı ile de olur. yani ışık belli değerin üstüne çıkınca lamba sönecek başka değerin altına düşünce yanacak. Bu arada LED ışığının LDRye ulaşmaması gerek. Yoksa Sürekli yanıp sönen lamba elde etmiş oluruz. Son verdiğim transistörlü devre galiba bu özelliği içeriyor. R6 ucundan geribesleme yapılmış.

Aslında kutuya da gerek yok. Adaptörün üstüne delik delip ledi yerleştiririz. yan tarafına deleceğimiz başka bir deliğe bakacak şekide LDRyi silikonlarız.

Elektroemre

Hocam 12F PIC kullanacaksanız, 1 ucu kullanarak IR kumanda da ekleyebilirsiniz.
Şöyle farklı bir lamba olsun dersenizde küçük RBG ledlerden kullanın derim ( yavaş yavaş değişen renkler falan hoş olur), bi ucada yine LDR bağlarsınız.
Basit ve çok amaçlı güzel birşey olur.

Maxim

#6
karar verdim, pic kullanıyorum .
başka bir smps var, onun içi daha büyük.

12F675
220 ohm direnç
mavi led
100nf
ldr
smps adaptör

fakat başlayamıyorum, ldr ler kayıp bulamıyorum şu an


Maxim

#7
garip bir durum var

AN1 analog girişinde 5 volt görüyorum. (giriş boşken`de 5 volt)
sanki kaçak var

1.2mohm üzerinden şaseye verirsem etkilenmiyor, 5volt ölçüyorum gene.
direk şaseye bağlarsam tamam, o zaman sıfır oluyor... sanki pull-up var girişte ?




bu da kod.

Device 12F675
Xtal 4
Config CPD_OFF, CP_OFF, BODEN_ON, MCLRE_OFF, PWRTE_ON, WDT_OFF, INTRC_OSC_NOCLKOUT

TRISIO=%00111110
GPIO=%00000010
ADCON0=%10000101
ANSEL =%00110010

OPTION_REG.7=0
WPU=%00000000
VRCON.7=0
CMCON=7
DelayMS 250

Declare Adin_Res 10
Declare Adin_Tad FRC
Declare Adin_Stime 100

Dim ADC As Float
Dim SAY As Word
SAY=0
Symbol CIKIS =GPIO.0

LOOP:

For SAY = 0 To 2000 Step 1
ADC = ADIn 1
DelayMS 1
ADC = (ADC * 5.0) / 1023
Next
     
Select ADC
Case 4.5 To 5.0
CIKIS=1

Case <4.5
CIKIS=0
EndSelect

DelayMS 10
GoTo LOOP


Elektroemre

#8
Hocam bu Megaohm'luk değerler fazla yüksek. 100M ohm hele inanılmaz bi değer.
Yanlış hatırlamıyorsam ADC giriş empedansı zaten 100K civarı.
Farklı bir LDR ve 4.7K - 33 K  gibi değerlede gerilim bölücü dirençlerle deneyin.

Edit:
PIC12F675'in datasheetinin 45. sayfasını okursanız orada ayrıntılı bilgi var.

Maxim

yok hocam yok
girişte 5volt var diyorum
boş analog girişinde 5voltun ne işi var ?

10k ile şaseye veriyorum, öyle bile girişte 1.48 volt okuyorum ?

bigbey

Pull_up dirençleri içerden aktif durumda olabilir
pull_up özelliğini devre dışı bırakın
TA6R

Maxim

#11
evet pull-up dirençler aktifmiş ama pic bozuk...
ne yaptıysam kapatamadım pull-up ları,
zaten eski kodun WPU=%00000000 satırı pull-upları kapatıyordu.

başka yeni bir 12F675 ile denedim anında oldu .
bu da bize çöldeki kutup ayısı olarak hatıra kaldı !



programın son hali
merak etmeyin, bu programlada kapanmıyor ötekinin pull-up ları ..

Device 12F675
Xtal 4
Config CPD_OFF, CP_OFF, BODEN_ON, MCLRE_OFF, PWRTE_ON, WDT_OFF, INTRC_OSC_NOCLKOUT

TRISIO=%00111110
GPIO=%00000000
CMCON=7
ADCON0=%10000101
ANSEL =%00110010
OPTION_REG.7=1

Declare Adin_Res 10
Declare Adin_Tad FRC
Declare Adin_Stime 100

Dim ADC As Float
Dim SAY As Word
SAY=0
Symbol CIKIS =GPIO.0

LOOP:

For SAY = 0 To 500 Step 1
ADC = ADIn 1
DelayMS 1
ADC = (ADC * 5.0) / 1023  'Analog1 girişinde kaç volt var? (0-5 volt voltmetre) 
Next
     
Select ADC
Case 4.3 To 5.0  'Eğer giriş 4.3 volt ile 5 volt arasındaysa led yansın
CIKIS=1

Case <4.3  'Eğer giriş 4.3 volt altındaysa led sönsün
CIKIS=0
EndSelect

DelayMS 10
GoTo LOOP

Maxim

#12
nedendir bilmiyorum programda mantık hatası yapmışım gibi geliyor.

şu anda devreyi test ediyorum çalışıyor, sorun yok
ldr nin önünü kapatıyorum ,led yanıyor (gecikmeli olarak)
elimi çekiyorum led sönüyor (gecikmeli olarak)

tam voltaj değerlerini ölçmedim, yani gündüz vakti kaç volt? gece kaç volt göreceğim adc girişinde
ona göre programdaki voltaj değerlerinide değişicem (selectcase tanımlarındaki)

adc okumasını bilerek loop içinde geciktirdim
çünkü şöyle düşündüm,
bu alet duvarda yerden 30cm kadar yukarda prizde takılı duracak,
gündüz önünden yürüyerek birisi geçtimi, ldr nin önü gölge ile kapanacak ve belkide ışık yanıp sönecek ? (bu olmasın)
tamam ama ya bu durum tam adc gecikmesinin en sonuna denk gelirse ? gene aynı şey olacak.

o yüzden bana mantık hatası varmış gibi geliyor
istiyorumki ışık değişiklikleri gecikmeli olarak algılansın , mesela 2 sn geç tepki versin .

bu konuda fikri olan varmı ? başka bir yöntemmi kullansam ?

Elektroemre

Bu kadar hızlı tepki verirse PIC kullanmanın zaten bir manası kalmaz. Normal bir OP-AMP yada transistör kullanabilirsin.
Dediğinin sorunun önüne geçebilmen için hafızalı sitem yapacaksın.
Yani LDR'den 30 saniyede bir örnek alcaksın ve son 30 örneği hep hafızada tutacaksın.
Böylece son okuduğun örneğe göre değilde son 15 dakikadaki ışık bilgisine göre sistem tepki verecek. Anlık değişmelerden fazla etkilenmeyecek.
30 örneği değerlendirmeye alırkende yüksek ve en düşük uç değerleride işleme almazsın güzel bir algoritmayla.
(bu uç değerler önünden adam geçince veya yanlışlıkla odanın ışığı açılıp-kapanınca alınmış olabilir) Böylece ortamdaki gerçek ortalama aydınlık bilgisi elde edilip ona göre ışığın yanıp yanmamasına karar verebilirsin.

Maxim

30sn de bir örnek fazla yavaş olmazmı ?
30sn de bir örnek al , 10 tane alsak = 5 dakika eder