algoritma mantığı...?

Başlatan esco, 28 Kasım 2006, 17:28:50

esco

merhaba arkadaşlar.

8 bit hpwm kullanarak. lm317 ile istediğim gibi bir devre yaptım. lm 317 yi 741 opamp ile kontrol ediyorum ve hassas voltaj ayarı yapabiliyorum. daha önce akım ve gerilim okuyan bir çalışmada yapmıştım. ikisini birleştirdim. fakat bazı mantık sorunlarım var...

3 adet butonumuz var voltaj artırma , eksiltme ve set  butonu (set butonu farklı bir amaç için kullancam ileride)

program çalışınca sürekli akım gerilim okuyor lcd ye yazıyor butonlara basılıyormu kontrol ediyor.

basla:
.....
suply:

HPWM 1,VPALS,20000  'vpals önceden atanan ilk değer ile başlıyor

while SECIM = 0

IF UPBTN=1 THEN  vpals=vpals + 1 :SECIM=1 'vpals hpmw için değişken
IF DOWNBTN=1 THEN vpals=vpals -1 :SECIM=1
IF SETBTN =1 then SECIM=1 : goto BASLA
                     
   
gosub akımgerilimoku

LCDOUT $FE,$C0,#VOLT,",",# MVOLT,"V ",#AMPER ,",",#Mamper,"A"


PAUSE 50
wend

goto suply

akımgerilimoku:
..... analog girişten okuma komutları...
return
...
END

temel mantık bumudur? ben böye düşündüm hassas ayar yapabildiğim halde böyle olunca çok hızlı çalışıyor. araya pause koyarak voltaj ayarlama hassaiyetini yakalıyorum fakat LCD de voltaj değerleri geziniyor. lcd ye üst üste bilgi gidiyor tabi okunma zorlaşıyor zamanı uzatınca butona basmadığım ana denk geliyor vs. kafam karıştı. voltaj okumayı döngünün dışına çıkarıdığımda düğmelere basmadğım anlarda değişimi göremiyorum.

nasıl bir mantık kurmalıyım.

sdonmez

misal 1sn'de bir lcd rutinine timer kesmesi kullanarak gitseniz nasıl olur?

ftsahin

if upbtn=1 then
  while upbtn=1
     pause 10
  wend
  vpals=vpals + 1 
  secim=1
endif

şeklinde yazabilirsin. Bu yöntemde basılan buton bırakılana kadar hiçbir işlem yapılmaz. İşlemler buton bırakıldıktan sonra yapılır. Diğer iki butonu da buna benzer şekilde değiştirirsen sanırım sorun kalmaz. Kolay gelsin.

esco

loop:
IF UPBTN=1 THEN  vpals=vpals + 1
IF DOWNBTN=1 THEN vpals=vpals -1
IF setbtn =1 then goto BASLA
if vpals = 0 then vpals=vpals+1          ' pwm dışına çıkmamamk için kontrol
if vpals = 255 then vpals=vpals-1

HPWM 1,VPALS,20000
pause 100                      
gosub amperoku
gosub voltajoku
pause 100
LCDOUT $FE,$C0,#VOLT,",",# MVOLT,"V ",#AMPER ,",",#Mamper,"A"

goto loop

kodu boyle düzenleyince biraz düzeldi. sadece volt okuma geziniyor...

esco

SORUN çözüldü arkadaşlar. volt okuma kısmında lcd de mili volt düzeyinde dalgalanma oluyordu. digital ölçü aleti ile de kontrol yaptığımda dalgalanma görmüyordum. pic in ilgili analog girişine 100n kondansatör takınca iş düzeldi.

teşekkür ederim...