avatar_ete

Zaman Ayarlı Start-Stop Rölesi

Başlatan ete, 04 Eylül 2011, 10:40:25

ete

Aslında ben dün programı yazdım bitirdim. Gayet güzel çalışıyor. Ama şimdilik sana vermeyeceğim. Biraz çalışıp kendini geliştirmeni istiyorum. Hatta kendi projeni kendin bitirmeni istiyorum. Zira sana epeyce ip ucu verdim. Bununla işini göreceğini umuyorum. Takıldığın yerde ne olması gerektiğini yinede söyleyeceğim.

Konu bana biraz enteresan geldi. Enteresanlık tabiiki program içinde güzel bir menü çalışması olmasından, 0-10V çıkış özelliği olmasından ve RTC ye bağlı fan zamanlaması gibi konulardan geliyor.
Bu nedenle bu konuyu sen bitirdikten sonra Algoritma çalışması altında yayınlayacağım. Ama sen bitirdikten sonra.....
Böylece üyelerimiz, bir menü çalışmasının safhalarını menü seçeneklerine bağlı işlem yapma özelliklerini, iki ayrı 4 bitlik DAC sistemine 8 bitlik port üzerinden nasıl hükmetttiğimize dair bilgi sahibi olacaklardır.

Arada bir yaptıklarını buraya koyarsan ne yolda olduğunu görme imkanım olur. Varsa yanlışlarını düzeltirim hemde ne durumdasın haberim olur.

Biraz daha ip ucu vereyim ve neler yapman gerektiğini söyleyeyim.

1. Programın Başla satırından evvel epromdan;
    - HIZA ve HIZB bilgilerini okuman gerek. Okunan bilgiler 255 ise (önceden kayıt yapılmamış ise onlara default olarak 5 (ortalarda bir hız veya 1-15 arası bir değer vermen gerek).
    - Aynı yerde fan rölesinin önceden kayıtlı olan ACIK ve KAPALI kalma sürelerini (dakika cinsinden) epromdan okuman gerekiyor. Burada da okunan süreler 255 ise onları 1 yapmak gerek (Yani 1 dak. açık 1 dak. kapalı gibi)

2.  Dört adet röle kontrolü için F1-F4 fonksiyon tuşlarının kullanımını en başta yapacaksın. Buna ait ikisinin örneğini verdim diğerlerini onlara bakarak sen yazacaksın.
Unutmaman gerekenbir husus var. Fan motoru aktif edilmiş ise aç-kapa sistemi devreye gireceği için Fan motorunun açık yada kapalı olduğunu belirleyen bir BIT değişkeni kullanman gerekiyor. Buna AKTIF diyebiliriz. Aktif=1 ise fan motoru aktif, AKTIF=0 ise aktif değil anlamına gelecektir. O halde F3 fonksiyon tuşuna basıldığı zaman FAN=1 oluyor ise aynı zamanda aktif=1 olmalıdır. Bir konuyu daha unutmamak gerek. Aktif=1 ise SN=0:DAK=0 yapıp bunu RTC ye kayıt etmen ve böylece zaman sayacını başlatman gerekiyor.

3. Başla satırından sonra fonskiyon tuşlarına ilave olarak, Fan aktif ise zamanlama kontrolü yapman gerekecek. Şayet Aktif=1 ise GOSUB ZAMANOKU deyip  FAN=1 ise (yani Açık konumda ise) DAK=ACIK oldumu diye bakman olmuş ise FAN=1-FAN diyerek fanı kapatman ve yeniden zaman değerlerini sıfırlaman gerekecek. Böylece AKTIF=1 ve FAN=0 konumunda yani fan aktif ama kaplı konumda iken bu seferde DAK=KAPALI süresine eşdeğermidir ona bakacaksın. Sonuç evet ise yeniden Zaman sayaclarını sıfırlayıp FAN=1-FAN yaparak fan motoruna konum değştireceksin.

4. Bu bölümde bakman gereken bir husus daha var ki oda MENU butonuna basılmışmı basılmamışmı bakmak olacaktır.
    Basılmış ise sistem normal çalışma peryodundan çıkıp Menü kısmına geçecektir. Orada ekrana 4 adet seçenek vereceksin.
    - Elevatör Hız ayarı
    - Makina Hız ayarı
    - Fan motoru aç kapa zaman ayarları
    - Menü den çıkış.
    Elinde tuş takımı olmadığına göre menü seçeneklerinde hangisinin SEC tuşu ile seçileceğini görsel olarak anlamak için seçili satıra bir işaret koyman gerekir. Ben şöyle yaptım. Her satır başın bir "-" işareti yerleştirdim. Hangi satır aktif ise o satırı <-> şeklinde flash yaparak gösterdim. Yukarı aşağı tuşları seçili satırın değiştirilmesini sağladı ve sonuçta ne yapacak isem seçili satırı o konuma getirip SEC tuşuna basarak o satırın seçilmesini sağladım.

Menü seçeneklerinde ise işlemler dahada basit. Hız ayarlarında birinde HIZA diğerinde HIZB değeişkenlerini kullandım. Bunlara ait ayar alt programlarını yazıp sana vermiştim zaten. Yalnızca değeişen değerlerin ekranda gözükmesini sağladım ayardan sonra SEC tuşu ile işlemi sona erdirip son değerleri eproma kayıt ederek başlangıç kısmına geçtim.
Fan rölesi açma kapama ayarları için tek satır kullanıp üzerine AÇMA ve KAPAMA yazdım. Altlarınada süreleri koyup yukarı ve aşağı tuşları ile sürelerin değişmini sağladım. SEC tuşu ile çıkıp oluşan değerleri eproma kayıt ettim.
SOn seçenek zaten menüden çıkış olacak ki onu seçtiğinde hiç bir işlem yapmadan direk başlangıç kısmına atlayacak program.

Geriye yalnızca RTC okuması yada yazması kalıyorki onuda dediğim gibi önceden yazdığım bir programdan satırları aldım. Bize yalnızca sn ve dak lazım olacağı için diğer kontrolleri (saat-AY-Yıl vs) çıkardım.
Böylece işlem tamam oldu.

Ete


mekatronikk

tek kelimeyle harika ellerine saglık ete hocam.bu projeyi bir bitireyim hayırlısıyla.yolda iki tane daha projem var.hep beraber nasıl güzel olması geriyorsa yaparız.yazılımda da kendimi geliştirdikten sonra cok guzel seyler yapacagımıza inanıyorum.projede eeproma kayıt etme ile ilgili calısmam gerekiyor.bir iki gün calısıp bu hafta programı bitirmeyi düsünüyorum.her gelişmeyi sana gönderirim.yalnıs giden bir yol varmı diye kontrol edersin.saygılar giray...

mekatronikk

ete hocam merhaba projede bir tek zamanlamayı yapamadım o kadar ugrasmama ragmen.aslında amacım ds1307 kullanmadan bunu yapabilmek.bir yol gösterir misin hocam tesekkurler giray...

ete

BU projede RTC kullanmadan zaman kontrolü yapmak biraz zor gözüküyor.
Bunun için kesme kullanarak sn palslerini elde etmek gerekir. Kesme kullanıca program içinde hiç Pause kullanmamak gerekiyor.
Bu ise programın diğer bölümlerinde sorun yaratır. Bu nedenle sağlıklı bir şey yapılacak ise bu programda RTC kullanılması en doğrusudur. Ben kendi yazdığıma baktım ve RTC siz hale çevirebilirmiyim diye düşündüm ama sanırım imkansız. Yeniden başka mantıkla program yazmak gerekiki işi daha fazla uzatır.

Yazdıklarınıda görmek isterdim doğrusu.

Ete

mekatronikk

merhaba hocam yaptıgım calısmayı buraya ekliyorum sadece sayıcı kısmını ekledim.sayıcı sıfırlandıgında girmiş oldugum degeri nasıl kayıt edebilirim o kısmını yapamıyorum.ve bu donguyu sureklı olmasını istiyorum yanı yeni bir deger girilene kadar.basla kısmını yapsam bitiş te aynısı olacak o yuzden sadece basla kısmını gonderdim size.yardımlarınıza cok tesekkur ederim saygılarımla giray...

ete

Bütün yaptığın bu ise hiç bir şey yapmadığınbelli oluyor. eproma kayıt işlemi son derece kolay. Derslerde buna bir çok kere değindim.
WRITE Adres, VERI:PAUSE 10

WRITE komutu eproma yazar. Yazamkiçin hangi adrese yazacağını Adres değişkeni içinde veya direk oraya adresi yazarak belirtmek gerekir. Adreste belli olduktan sonra ne yazılacağı belirtilmesi gerekir ki onuda VERI değişkeni içinde belirtiriz.
Örnek: Epromun 10 nolu adresine  234 bilgisini yazalım. Bu durumda VERI=234 olacaktır.
WRITE 10,VERI:PAUSE 10   şeklinde komut verdinmi epromun 10 nolu adresine 234 bilgisi yazılmış olur. Pause 10 yazma süresidir. Mutlaka verilmesi gerekir.

Yazılmış bilginin geri okunması ise READ komutu ile yapılır. READ 10, ALINAN şeklinde komut verildimi epromun 10 nolu adresinde kayıtlı olan bilgi okunur ve ALINAN isimli değişkene yerleştirilir.

Ete

mekatronikk

tesekkur ederim hocam bu konuda dahili eepromu kullanabilirim degıl mi

ete

Elbette Kullanabilirsin. Verdiğim komutlar dahili eproma aittir zaten.

Ete


mekatronikk

ustunde calısıp tekrar size gonderecegım devreyı hocam saygılar.

s.atak

ete hocam merhaba

konuyu buraya yazıyorum, belki yanlış yere yazıyorum isterseniz başka bir alana taşıyabilirsiniz,
hocam buton ile motor çalışma zamanını ayarlamak istiyorum. daha önce başka konuda başka bir işlemci ile yaptığım çalışmamı yayınlamıştım.
bu devrede ise 16f628a kullandım. şemadan da anlaşılacağı gibi 2 adet buton ile motor çalışma zamanını tayin etmek istiyorum. 5 sn ile 60 sn arasında önceden ayarlanmış zamanda çalışacak ve otomotik motor duracak( bir nevi sonlandırma sw leri çalışmadığında motoru koruması amaçlı olacak) 16f628 de adc olmadığı için butonler ile nasıl yapabilirim??
dışarıdan harici bir rtc mi kullanmak gerekecek, yada kesme yoluylamı zaman saydırılacak ve değişkenlere atanacak..
işin mantığını vaktiniz varsa anlatabilirmisiniz ??
vereceğiniz cevaplara şimdiden teşekkür ederim.
suat


ete

Sorunun bir bölümü zamanın nasıl tutulacağı ile ilgilidir. İKi yolu var ki sende bahsini etmişsin. 60 sn maksimum değer çok fazla bir süre değil ve kesme yolu ile halledilebilir.
Hassas bir şekilde yapılsın ve benim programı meşgul etmesin diyorsan RTC kullanmanı öneririm.

İşin asıl zor olanı 5-60 sn arasında seçilecek değerin ne olduğunu nasıl algılayacaksın.
Benim aklıma bir yöntem gelmiyor. Fikri olan varsa beyan etsin.

Ete

s.atak

ete hocam merhaba

yukardaki projeyi 16f88 ile değiştirmeye karar verdim.
2 pinden adc okuması yapıp, biriyle pwm kontrolü, diğeriyle de motorun çalışma zamanını belirlemeye çalışacağım.
yalnız bir sıkıntım var, yarım yamalak ingilizce ile 16f88 in kullanım klavuzunu inceliyorum. a/d sayfalarında bazı ayarlardan bahsediyor, daha önce de başka sitelerse sorunlara cevap veridiğiniz dökümaları inceledim, derslerinizden 5. dersi de baya bir inceledim, daha önce tek pot ile pwm modülünü kontrol etmeyi başardım. fakat bu 16f88 de 2 adet pot kullanılabilmesi için a/d ayarları nasıl olmalı ??
adcon ve adcin ayarları özellikle kafamı çok karıştırdı.
5.dersinizde de sadece tek pot ile kontroller anlatılmış, 2 adet yada daha fazla pot ile değişik kontrol uygulamakları için ana ayarlar nasıl olmalı ??
cevaplarını için teşekkür ederim.
s.atak

s.atak

ete hocam

zamanında başka bir sitede bir arkadaşın sorununu verdiğiniz cevap aşağıda

Dahili osilatör kullanınca OSCON registerine seçtiğin frekansa uygun değeride vermen gerekiyor.
Diyelimki dahili 4Mhz ile çalışacaksın o zaman ;
DEFINE OSC 4
OSCCON=%01100000
komut ikilisinide kullanman gerekiyor. Diğer frekans seçenekleri için Data sheete bakarsın.

Gelelim diğer ayarlamalara. F88 de hem komparatör hemde analog pinler mevcuttur.
Komparatörleri iptal etmek için CMCON=7 komutunu kullanman gerekiyor.
ADC leri de iptal etmek istersen diğerlerinden farklı olarak bu işlemcide ANSEL registerini sıfırlaman gerekiyor. Yani ANSEL=0 dedinmi bütün analog girişler iptal ediliyor.
Bir veya bir kaç analog giriş kullanmak istersen ANSEL registerinin uygun bitini set etmen gerek. Kullanabileceğin bitler ANSEL=%0xxxxxx.
X lerden hangisini 1 yaparsan o bite ait Analog girişi aktif olacaktır.

Hepsi bu kadar. Bu noktadan sonra diğer piclerden farkı yok bu işlemcinin.


şimdi anladığım kadarıyla ; ANSEL=%00000011 yapmakla RA0 ve RA1 pinlerini analog okuma için ayarlamış oluyoruz, diğer pinler ise dijital I/O oluyor. fakat bu 2 pinin ham değerlerini nasıl okuyoruz ve değişkenlere akratıyoruz?? ADCIN0 ve ADCIN1 şeklinde mi ??



Mucit23

#28
0. kanalı okumak için  ADCIN 0,DEGISKEN   
1. kanalı okumak için ADCIN 1,DEGISKEN
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

s.atak

ete hocam merhaba

daha öncede aceminin otomotik kapı çalışması adı altında size bazı sorular sormuştum.
şimdi aynı projeyi birazdaha geliştirmek istiyorum ve bunu da sanırım en uygun işlemci 16f876 yada 16f88 .
bu işlemcilerde 2 adet pot ile (biri pwm ayarı için, diğeri motorun çalışma zamanını belirlemek için) adc ayarları nasıl olmalı ??
kullanım klavuzlarını baya bir inceledim ama malesef başarılı olamadım.
sizin zaman rölesi projesi çok güzel  fakat buradaki kodları bir türlü uyarlayamadım,
pot ile zaman oluşturma ve bu değeri nasıl kullanacağımız hakkında bilgi verirseniz sevirim.
saygılar

Powered by EzPortal