E

16f628A ile pot kontrollü led uygulaması

Başlatan endo16, 20 Şubat 2014, 15:10:47

endo16

Selam arkadaşlar
Projenin amacı potun direnç durumuna göre ledlerin seviyesinin değişmesi. Proje isis üzerinden yaptığım simulasyonda çalışıyor. Baskı devreye kurmadan önce board üzerinde denediğimde ise hiç bir tepki alamadım. Pic i proton dili ile programladım. Sizce hata nerede olabilir.
Devre 1

Devre 2

Simulasyon Devresi


Alıntı YapDevice 16F628A
Declare Xtal=4
TRISA = %00000001
TRISB = %00000000
PORTB = 0
Dim pota As Byte
pota = 0
DelayMS 25
AnaP:
pota = Pot PORTA.0, 127
If pota >= 106 Then
GoTo Seviye7
ElseIf pota >= 91 And pota < 106 Then
GoTo Seviye6
ElseIf pota >= 76 And pota < 91 Then
GoTo Seviye5
ElseIf pota >= 61 And pota < 76 Then
GoTo Seviye4
ElseIf pota >= 46 And pota < 61 Then
GoTo Seviye3
ElseIf pota >= 31 And pota < 46 Then
GoTo Seviye2
ElseIf pota >= 16 And pota < 31 Then
GoTo Seviye1
ElseIf pota < 16 Then
GoTo Seviye0
EndIf
GoTo AnaP

Seviye7:
PORTB= 127
GoTo AnaP
Seviye6:
PORTB=63
GoTo AnaP
Seviye5:
PORTB=31
GoTo AnaP
Seviye4:
PORTB=15
GoTo AnaP
Seviye3:
PORTB=7
GoTo AnaP
Seviye2:
PORTB=3
GoTo AnaP
Seviye1:
PORTB=1
GoTo AnaP
Seviye0:
PORTB=0
GoTo AnaP
End


Hattuşa

işelmciye kristal bağladınız mı? bağlamadınız ise config ayarlarından dahili kristali tanımladınız mı

İlyas KAYA

Çizimde MCLR bacağı boş görünüyor. Ya pull up drenci ile vcc ye çekin yada sigorta ayarlarından MCLR_OFF yapın.
Ayrıca osilatör seçiminin XT olduğundan emin olun.

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

endo16

işlemciye kristal bağlı durumda. Mclr çizimde bağlı değil ancak boardta bağlamışım.

Hattuşa

slm;
kodu eklemişsiniz ama isisi eklememişsiniz ben isisi çizip case komutu ile tekrar düzenledim. potun değeri önemli 1K potta isis çalışmadı, yerine 10K pot yaptım çalıştı ancak scaleyi 127 aldığınız için potun yarısında çalışıyor. birde xtal 4 mhz olacaksa işlemcinin dahili kristalini kullanabilirisiniz.

endo16

aslında isis ekli ben proteus 8 kullanıyorum uzantısı farklı olduğundan çıkmadı sanırım. simulasyonda bende sonuç alıyorum ancak boardta çalışmadı. baskı devresi hazırdı ona montaj yapıp bashkı devre üzerinden denemeleri sürdürücem eğer bakmak isterseniz baskı devrede bu

İlyas KAYA

MCLR pcb de de boş görünüyor. Kendiniz direnç mi attınız ?
Göz odur ki dağ ardını görsün,
Akıl odur ki başa geleceği bilsin.!

est32

Bence uygulamada bi sorun var.
Öncelikle yazılımda CMCON=7 değerini göremedim, bence sorun bundan.
Kristale ve pot'a bağlı olan kondansatörlerin hiçbiri GND'ye bağlı görünmüyor. Bu yapıldıktan sonra "pota = Pot PORTA.0, 127" komutunda bulunan 127 değeri pota göre(belki kondansatöre göre de olabilir) değişiyor. Bu değeri bulmak için aynı pot ve kondansatör bir bord üzerinde lcd ile denenerek kalibrasyon yapılmalı ve ekranda görünen değerler not alınmalı, buna göre ayar yapılmalı.
Ayrıca pot değeri belli bir değer aralığında olmalı, fazlasında veya eksiğinde ölçüm yapılamıyor.
Bir diğer ihtimal de aynı kod bir de PBP ile yazılmalı ve denenmeli, malum proton bazen ne zorluk çıkarsam diye de çok zırvalıyor.
Bir diğer ihtimal de

MS_59

potun iki kenar uçlarının birine +5 volt diğerinede gnd ver pcb'deki gibi çalışmaz birde picin herbir çıkışına 1 adet led bağlayacaksan transistöre gerek yok direk direnç üzerinden sür zaten transistör bağlantılarıda yanlış
mehmet

est32

Alıntı yapılan: proteus - 20 Şubat 2014, 21:46:50
potun iki kenar uçlarının birine +5 volt diğerinede gnd ver
Hocam pot komutunun işleyişi biraz farklı.
Eğer analog voltaj ölçümü olsaydı dediğiniz doğruydu, potun her iki ucu vcc ve gnd bağlanacaktı ama pot komutunda bu tür bağlantı hatalı ölçüme sebep oluyor. zaten manualde de arkadaşın yaptığı şekilde gösteriliyor.
Daha önce lcd ekranlısını bir öğrenci projesi için tasarlamıştım. Ayrıca yukarıda da yazdım o 127 değeri bende 40 olarak çıktı. Doğru sonucu ben 40 ile elde ettim. Projemi paylaşayım yardımım dokunsun, ekte tüm dosyalar mevcut;
'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [ESAT METİN ERDOĞAN]                              *
'*  Notice  : Copyright (c) 2011 [İZİNSİZ KULLANMAK HARAMDIR]   *
'*          : All Rights Reserved                               *
'*  Date    : 22.02.2011                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
@ DEVICE pic16F84A
@ DEVICE pic16F84A, WDT_OFF 'Watch Dog timer açık
@ DEVICE pic16F84A, PWRT_ON 'Power on timer açık
@ DEVICE pic16F84A, PROTECT_OFF 'Kod Protek kapalı
DEFINE LCD_DREG PORTB 'LCD data bacakları PortB de bağlı
DEFINE LCD_DBIT 4 'LCD data bacakları 4. bitten başlıyor
DEFINE LCD_EREG PORTB 'LCD Enable Bacağı PortB de bağlı
DEFINE LCD_EBIT 3 'LCD Enable Bacağı 3. bite bağlı
DEFINE LCD_RSREG PORTB 'LCD RS Bacağı PortB de bağlı
DEFINE LCD_RSBIT 2 'LCD RS bacağı 1. Bite bağlı
DEFINE LCD_BITS 4 'LCD 4 bit olarak bağlı
DEFINE LCD_LINES 2 'LCD 2 sıra olarak çalışıyor.
LCDOUT $FE,$40,0,14,17,17,17,10,27,0'OHM İŞARETİ
X VAR BYTE : DIRENC VAR WORD
PAUSE 250
'**************************************************************************************
BASLA:
          POT PORTB.0,40,X
          DIRENC=50000/255*X
          LCDOUT $FE,1,"HAM:",DEC X
          LCDOUT $FE,$C0,"POT:",DEC DIRENC,0
          PAUSE 100
          GOTO BASLA
          END


MS_59

evet hocam haklısınız ben biyerde bir ucuna artı bir ucu 100nf uzerinden gndye bağlanıyordu diye görmüştüm
manuele baktım simdi sizin dediğiniz gibi sagolun
mehmet

endo16

yanıtlarınız için çok teşekkürler, esat hocam sizede ayrıca teşekkür ederim. Bende lcd üzerinden deneyerek gideceğim umarım o zaman sonuca ulaşırım.

est32

Rica ederim arkadaşlarım.
Ayrıca bu yöntemi butonlara seri direnç yöntemiyle uygularsanız tek dijital kanaldan çoklu buton okursunuz. Nadiren de olsa bu yöntemi kullanıyorum eğer işlemci pini buton okumaya yetecek kadar yoksa. Tabii dirençlerin ve kondansatörün ısı değişimlerinden çok fazla etkilenmemesi lazım, bir de kullandığınız direnç değerleri birbirine uzak olursa daha iyi olur.
Bununla da bir öğrenci devresi yapmıştım eğer ihtiyacı olan varsa bildirsin yollayayım.

Powered by EzPortal