Pic 16F628A led PROBLEMİ ?

Başlatan pelitt, 01 Kasım 2014, 16:36:17

pelitt

Selamlar arkadaşlar pic 16f628a kullanarak bir maket evi gece lambasina donusturecegim programciyim programlama konusunu az çok anliyorum ama elektronikte amatör sayilirim. Ldr ile sadece karanlikta calismasini saglayacagim, pic ilede koyacağım kapasitif mic ile sese duyarlı yanmasini sagliyacagim neyse ldr olayini hallettim pic programladim olmadi bende basit bir sekilde pic i denemek icin su kodu yazdim

quote:

@ DEVICE pic16F628A 'hangi işlemciyi kullandığımızı belirliyor
@ DEVICE pic16F628A, WDT_ON 'bekçi köpeği denilen geri plan sayıcısının aktif ediyor, WDT_OFF olursa da kapatıyor
@ DEVICE pic16F628A, LVP_OFF '
@ DEVICE pic16F628A, PWRT_ON 'Power On Timer özelliğini aktif ediyor. Pic beslemesi belirli voltaja ulaşıncaya kadar pic reset de tutulur.
@ DEVICE pic16F628A, PROTECT_OFF 'kod koruması kapalı, açık olursa pic kopyalanamaz.
@ DEVICE pic16F628A, MCLR_OFF 'Reset bacağı iptal edilebiliyor bu picde. Dolayısıyla Pullup direncine gerek yok.
@ DEVICE pic16F628A, INTRC_OSC_NOCLKOUT 'Pic ini içindeki dahili OSC si kullanılıyor dolayısıyla kristal bağlanması gerekmez.

CMCON=7
TRISB=%00000000
TRISA=%00000000

high PORTB.0
PAUSE 5000





Ancak b0 daki led yanıp sönüyor sabit yanılı kalmıyor koda uymuyor anlamadığım bişey var ama çözemedim daha önce pic16f628a ile bir termometre saat yaptım. ilk yapmıyorum yardımcı olursanız sevinirim

Ldr yi bağımsız çalıştırıyorum şimdilik pic e bağlayacağım mic de bağlanacak ama pic arızalımı anlamadım. resimde b3 de takılı ama hepsini denedim hep yanıp sönüyor

rahman1445

#1
CMCON=7 
TRISB=%00000000
TRISA=%00000
PORTB=0
BASLA:
high PORTB.0
PAUSE 100
GOTO BASLA

olarak dene MCLR pinine 10k direnç bağladınmı?
Otomasyoncu çırağı

ete

Program bıraktığın yerde komut yazmadın diye beklemez. Bekletmek istiyorsan buna uygun komut yazmalısın.
PAUSE 5000
komut satırından sonra program ne yapacağına karar veremeyeceği için tekrar başa döner. En baştan başlar ve bu arada ilgili pin yeniden LOW olabilir.

Yapılacak iş o programı orada bekletmekten ibarettir. Şu satırları koy bekler sonsuza kadar.

While 1:wend

veya şöylede yapabilirsin.
BASLA:
PORTB.0=1
PAUSE 5000
Goto basla
bu da bir döngü yaratır ve o döngü içinde PortB.0=0 yapacak bir komut yer almayacağı için sürekli o pin HIGH da kalır.

Ete


pelitt

Alıntı yapılan: rahman1445 - 01 Kasım 2014, 18:14:15
CMCON=7 
TRISB=%00000000
TRISA=%00000
PORTB=0
BASLA:
high PORTB.0
PAUSE 100
GOTO BASLA

olarak dene MCLR pinine 10k direnç bağladınmı?

Evet MCLR pinine 10K bağladım koduda dediğiniz şekilde değiştirdim ama şimdide hiç yanmıyor diğer pinlerde ise sinyal şeklinde yanıp sönüyor anlamadım

ete

Bu bir program ise usulüne uygun yazılmalı eksikleri tamamlanmalıdır. Yok bir program parçası ile gerisinide görmeliyiz.
Buradaki haline bakılırsa bana parça olarak geliyor detayı konusuna bu yüzden girmedim. Ne yaptığını biliyorsun diye.
Ama bir programın bir işlemcide çalışabilmesi için bir sürü şartın yerine getirilmesi gerekiyor.

Ete

rahman1445

Alıntı yapılan: pelitt - 01 Kasım 2014, 18:57:03
Evet MCLR pinine 10K bağladım koduda dediğiniz şekilde değiştirdim ama şimdide hiç yanmıyor diğer pinlerde ise sinyal şeklinde yanıp sönüyor anlamadım
sadece bunları kullanıyosan kesinlikle çalışır, başka kodlar varsa engelliyor çakışıyor olabilir.

tamamını görmeden bişey diyemicem.
Otomasyoncu çırağı

pelitt

#6
Sabahtan berli bunla uğraşıyorum olmuyor şimdide b0 hariç diğer pinlerde ledi denediğimde yanıp sönüyor sinyal şeklinde ama b0 da hiç hareket yok anlamadım ben bikaç ay önce uğraşmıştım pic ile ozaman çok basit şekilde hepsini yapmıştım öğrenme maksatlı sonra bir termometre yapıp dahada ilgilenmedim ama şimdi lazım oldu bir türlü işin içinden çıkamadım şimdi termodaki pic i söküp (o çalışıyor ) onu deneyeceğim acaba pic mi arzalı (daha önce denedim ama bu kodlarla değil ozamanda sinyal şeklinde yanıyordu)

Yapmak istediğim şeyi yapmadan pic e bi hakim olabilsem ozaman devam edeceğim ama en basit kodu bile uygulamıyor
bu işi çözdükten sonra ldr ile gece karanlıkta sese duyarlı (bebek ağlaması :-)) hazırladığım makete

http://tapatalk.imageshack.com/v2/14/10/09/442dff7fdbfbd776bbe2d82f49596199.jpg

bir gece lambası olacak.

pelitt

çalışan bir pic ile denedim aynı kodları ama ondada çalışmadı

ete

Aşağıdakileri dene,
@ DEVICE pic16F628A
@ DEVICE pic16F628A, WDT_OFF
@ DEVICE pic16F628A, PWRT_ON
@ DEVICE Pic16F628A, BOD_OFF
@ DEVICE Pic16F628A, LVP_OFF
@ DEVICE pic16F628A, PROTECT_ON
@ DEVICE pic16F628A, MCLR_OFF
@ DEVICE pic16F628A, INTRC_OSC_NOCLKOUT

Define OSC 4

CMCON=7
PORTA=0:TRISA=%00000000
PORTB=0:TRISB=%00000000

pause 200

BASLA:
PORTB.0=1
PAUSE 100
GOTO BASLA


Ete

pelitt

#9
Tamam şimdi hallettim keşke inatlaşmayıp önce buraya yazsaydım ama neyse sorunun nekadar çözümü oldu bilmiyorum ama ETE hocam sizin verdiğiniz kodu denediğimde yine olmadı ama microcode den dosyayı bu defa farklı yere kaydedeyim dedim öyle deneyim farklı kaydedip ordaki hexi okutunca halloldu yardımlarınız için teşekkürler. yapacağım lamba için yeni konu açarak devam edeyimmi burdanmı devam edeyim çünkü soracağım bazı şeyler olacak

pelitt

#10
LDR yi bu şekilde kontrol edebilirmiyim ?

Define OSC 4

CMCON=7
TRISB=%000000000
TRISA=%00000
'PORTB=0
'BASLA:
'high PORTB.0
'PAUSE 100
'GOTO BASLA


SYMBOL LDR=PORTB.4 'ldr nin bir ayağı + da diğeri b4 de
SYMBOL LAMBA=PORTA.4
symbol lamb1=PORTB.1
symbol lamb2=PORTB.2
symbol lamb3=PORTB.3

if LDR=1 THEN

PORTB=0

BASLA:
high PORTB.0
PAUSE 100
GOTO BASLA
else

BASLAt:

low PORTB.0
PAUSE 100
GOTO BASLAt


ENDIF

ete

Bu günlerde de bu da moda oldu. Çalışmayan devreler mantığa ters gelen işlemler sonucunda çalışır hale geliyor. Bana kalırsa,
Dosyanın farklı yerde olması, olmaması bir şeyi değiştirmez.  Böyle açıklamalar komik oluyor. !!!!

LDR analog çalışan bir elemandır. Doğru olan bir analog port pininden okunmasıdır. Ama Yalnızca gece gündüz ayırımı yapılacak ise digital pinle de kullanılabilir. Karanlıkta direnci çok büyür ve GND ye yakın değer verir (LOW) aydınlıkta direnci küçülür ve Pozitif tarafa yakın değer verir (HIGH) böylece ayırım yapılabilir. LDR , 10K lık direnç ile GND ye bağlanır. LDR nin diğer ucundan +5V verilir. BU sistemde bağlanırsa ukarıda açıkladığım sonuçları verir. Ama unutmayınki arada  Pic in kararsız kalacağı bir bölge de vardır. Bu durumda okunan bu değerlerin dikkate alınmaması gerekir.

Ete

pelitt

#12
Alıntı yapılan: ete - 01 Kasım 2014, 20:40:03
Bu günlerde de bu da moda oldu. Çalışmayan devreler mantığa ters gelen işlemler sonucunda çalışır hale geliyor. Bana kalırsa,
Dosyanın farklı yerde olması, olmaması bir şeyi değiştirmez.  Böyle açıklamalar komik oluyor. !!!!

LDR analog çalışan bir elemandır. Doğru olan bir analog port pininden okunmasıdır. Ama Yalnızca gece gündüz ayırımı yapılacak ise digital pinle de kullanılabilir. Karanlıkta direnci çok büyür ve GND ye yakın değer verir (LOW) aydınlıkta direnci küçülür ve Pozitif tarafa yakın değer verir (HIGH) böylece ayırım yapılabilir. LDR , 10K lık direnç ile GND ye bağlanır. LDR nin diğer ucundan +5V verilir. BU sistemde bağlanırsa ukarıda açıkladığım sonuçları verir. Ama unutmayınki arada  Pic in kararsız kalacağı bir bölge de vardır. Bu durumda okunan bu değerlerin dikkate alınmaması gerekir.

Ete


Kodu aşşağıdaki şekilde düzenledim
@ DEVICE pic16F628A
@ DEVICE pic16F628A, WDT_ON
@ DEVICE pic16F628A, PWRT_ON
@ DEVICE Pic16F628A, BOD_OFF
@ DEVICE Pic16F628A, LVP_OFF
@ DEVICE pic16F628A, PROTECT_OFF
@ DEVICE pic16F628A, MCLR_OFF
@ DEVICE pic16F628A, INTRC_OSC_NOCLKOUT

Define OSC 4



TRISB=%000000000
TRISA=%00000
PORTB=0



SYMBOL LDR=PORTB.4

KONTROL:
if LDR=0 THEN
PORTB=0
high PORTB.0
PAUSE 100

GOTO KONTROL


else

low PORTB.0
PAUSE 100
GOTO KONTROL
ENDIF
GOTO KONTROL


Ete hocam yardımlarınız için sağolun hocam şimdi dediğiniz gibi LDR nin tek ayağı +5v da diğer ayağında GND ye bağlı 10K direnç var, dirençle ldr nin birleşiminden portB.4 de bağlı olacak şekilde bağlıyoruz değilmi bu şekilde denedim ama ldr yi okuyacak pine dışarıdan +5 veya gnd verince lamba yanıyor sönüyor ama LDR nin durumunda değişiklik olunca bunu görmüyor voltajmı az geliyor ondan oluyor anlamadım yardımcı olurmusunuz

bu şekilde birde kapasitif mic i denetlemem lazım anlatırsanız sevinirim ikisinden gelen değerlerle led leri yakıp karartacağım cevap için teşekkürler selamlar

İlyas KAYA

Koddaki
TRISB=%000000000
komutunu
TRISB=%000010000

ile değiştirip deneyiniz.
Göz odur ki dağ ardını görsün,
Akıl odur ki başa geleceği bilsin.!

pelitt

#14
TRISB=%000010000 şeklinde değiştirdim

Sağolun denedim istediğim şekilde çalıştı yardımlarınız için teşekkür ettim üstteki kodla giriş yaptık b.4 ü anladığım kadarı ile şimdi kapasitif mic nasıl bağlamam gerekli ses şiddetini nasıl ayarlamam gerekli onları anlatabilirmisiniz

Powered by EzPortal