Analog okuma ve hafızaya alma

Başlatan erhang, 20 Şubat 2020, 14:24:01

erhang

Merhaba herkese iyi günler bi konu hakkında yardım almak istiyorum yardımcı olacak arkadaslar varsa sevinirim
Ben potansiyometre ile analog deger okuyarak röle kontrolü yapıyorm ama bu röle kontrolü esnasın set olarak ayarladıgım ham degeri degişken olarak  istediğim bi degerde  bi buton yardımı ile hafızaya alamak istiyorum ve  bu degere görede - +10 deger aralıgında calıstırmak istiyorum
Örneğin
Calısacagı set deger 200 olsun
HAM>180 AND HAM 210<THEN
ROLE=1
ELSE
ROLE=O
ENDIF
Seklinde calıstırıyorum
Yani bu 200 olan set degerini ben herhangi bi degerde oldugunda  buton ile hafizaya alarak - +10 deger aralıgında calıstırmak istiyorum bunu nasıl yaparım

ete

Pek meramını anlatamamışsın ama sürekli yaptığım br şey olduğu için ne istediğini ancak tahmin edebiliyorum.

Kısaca set değeri butonlar yardımı ile ayarlayayım ve ayarladığım değeri de hafızaya alayım istiyorsun.
Kısaca anlatmaya çalışayım nasıl olacağını.
Öncelikle işin donanım kısmına bakacak olursak; bir ARTIR butonun , bir AZALT butonun ve birde SET/AYAR butonun olmalı.
Program SET ayarına SET/AYAR tuşuna basıldığı zaman girmeli. Bunun için AYAR başlığı altında bir bölüm olmalı programda. SET tuşuna basılınca program bu bölüme gelmeli.
Önce ekrana SET_DEGER: xxx şeklinde bir bilgi getirilip xxx yerine o andaki SET değeri yerleştirilmeli.
Ardından Tuş kontrolü yapılmalı.
Şayet ARTIR tuşuna basmış isem SET değeri 1 artır ama maksimum değeride aşma demeli Mesela,
IF ARTIR=0 THEN
  SET=SET+1
  IF SET>MAX_DEGER THEN SET=MAX_DEGER
  WHILE ARTIR=0:WEND
  PAUSE 80
  YAZ=1  'bu YAZ bir bit değişkeni olacaktır. YAZ=1 ise SET kayıt edilecek demektir. Değilse edilmeyecek. 
ENDIF
şeklinde olabilir. Benzer şekilde aynı işi birde AZALT butonu için yazar ve butona basıldıkça Set değeri bir azaltırız. Onda da Min set değer neyse ondan aşağı düşmemesini sağlarız. Yine YAZ=1 yaparak değerin değiştiğine işaret ederiz.
Daha sonra Şayet SET/AYAR tuşuna basılmış ise, önce Set değeri bir eprom adresine kayıt eder ardından da Başlangıç kısmına döneriz.
Böyle bir sistemin var ise programın ilk çalıştırılmasında önce epromdan SET değer okuması yapılıp sonra BASLA kısmına geçilir. Böylece güncel set değeri sürekli hafızada tutmuş olursun.

Takıldığın yada anlamadığın yer olursa sorarsın.

Ete


erhang

İlginiz için tesekkur ederim hocam ben anlatamadım galiba aslında beni yapmak istediğim analog giristen okudugum degeri bir buton ile kaydetmek ve bu kaydettiğim degerin - 10 degeri ile +10 degeri arasında bifark vererek yani 20 rakam aralıgında calıstırmaktı
Ornegin ben analog giristen deger okuyorum okudugum bu deger 40 olsun ben kayıt  butona bastım bu okunan 40 degerini kaydedip hafızaya aldım bu hafızaya aldıgım deger üzerinden  hesaplama yapılarak calısma aralıgını 30 ile 50 degerleri arasında bi deger olarak belirledik ve  bidahaki okumalarda bu aralıkta bi deger okuma yaptıgımızda calısın istiyorum hocam

ete

#3
Seni anlamakta zorlanıyorum. Yine anlamadım. Çünki bir tuşa bastın 40 sayısını hafızaya aldın diyelim. 30-50 aralığıda nereden çıkıyor yani 40 sayısını kayıt edince 30-50 aralığını bir nevi hesaplamı bulacaksın. Hadi buldun diyelim. Bir dahaki okumanın bu aralıkta olması durumunda çalışsın ne anlama geliyor?. Burayı açıkla bari. Ne çalışacak yada çalışma dediğin şey nedir.

Şöyle bir öneride bulunsam işine yararmı acaba?
40 sayısını hafızaya aldın ve gerekli hesapları yaptın diyelim. Alt aralık için 30 sayısını üst aralık içinde 50 sayısını buldun diyelim. Bunlara birer değişken adı verelim. Alt_limit diğeride Ust_Limit olsun.
Okuma yaptırdığın zaman,
IF ADC_OKUNAN>Alt_Limit and ADC_OKUNAN<Ust_limit then Goto CALIS (yani okunan değer aralık içinde git çalış diyoruz. )
Program bu satırı atlarsa yani aralık okunan değer aralık dışında kalırsa bir şeypmadan geri dönmesi gerekir. Bu nedenle buraya RETURN yazıyoruz (ADC okumaya GOSUB ile geldiğimizi düşünerek).

Ete

İlyas KAYA

#4
Anladığım kadarı ile 2 tane analog değer var. 1nci analog değer set 2nci analog değer ise veri.

Aslında yapmanız gereken çok basit.


Butona basıldığında 1nci analog değeri okuyun
Set değeri analog sifirda olduğunu var sayıyorum.

Programı kabaca yazıyorum.



If buton=0 then
Adcin 0,setdegeri
Write 0,setdegeri

Endif

Butona basıldığını oku , analog kanal 0 daki set değerini oku , epromda 0 inci adrese yaz.


Şimdi kontrol edelim.


Adcin 1,ham

If ham >setdegeri- 10 and ham < setdegeri +10 then
...
Yapilacak işlemler.
Endif


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

erhang

Evet hocam bu sekılde olacak benim istediğim bu ama benim set degerinide veri degeride aynı analog  uctan okuyarak olacak tesekkurler

İlyas KAYA

Öyle ise Adcin 1 yerine Adcin 0 yapmak yeterli gelir. Yani hangi kanalı okuyacaksanız 2 adcin de aynı olacak.
Göz odur ki dağ ardını görsün,
Akıl odur ki başa geleceği bilsin.!

erhang

Anladım hocam tesekkurler  yardımlarınızdan dolayı tesekkur ederim hepinize sagolun

Powered by EzPortal