Etepic

Dökümanlar - Makaleler ve Projeler => Ete Projeleri => Konuyu başlatan: ete - 04 Eylül 2011, 10:40:25

Başlık: Zaman Ayarlı Start-Stop Rölesi
Gönderen: ete - 04 Eylül 2011, 10:40:25
Bu proje konusunu bir başka sitede gördüm. Baktım bir sürü mesaj olmuş ortaya somut bir şey koyamamışlar. Hemen oturup bir tasarım yaptım. Bu tasarım ve programlama süreci yaklaşık 15 dakikada bitti. Belki birinin işine yarar diye siteye de koyayım dedim.
Projenin esasları şöyle;
Elimizde bir buton var. Bu hem start hemde Stop işini görüyor.
Bir kere basınca devreye bağlı olan röle start alıyor. Şayet tekrra butona basarsam stop anlamına gelip röleyi bıraktırıyor. Ama butona basmaz isem devrede bağlı olan pot yada trimpotun belirlediği (1-5 dakika) süre kadar bekledikten sonra röle kendiliğinden stop konumuna geçiyor.

Bu sistemin daha hassas bir zamanlama ile çalışması için TMR1 sayacını 500 ms lik dilimler halinde kullanmak mümkün. Bu şekilde çalışan program ektedir.  26-11-2015 de eklenmiştir .  03-03-2016 da programda iyileştirme yapılmıştır.
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: mekatronikk - 06 Nisan 2012, 09:53:02
hocam merhaba verdiğiniz dersler aracılıgı ile picbasic pro ögrenerek bir devre tasarladım ve sorunsuz calsıtırıyorum.Size bu konuda cok tesekkur ederim. devremde vermiş oldugunuz devreyi dijital zamanlayıcı olarak kullanmak istiyorum ve bu durumu lcd de nasıl dijital olarak gösterebilirim.yardımlarınızı bekliyorum tesekkurler.
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: ete - 06 Nisan 2012, 10:26:16
Bu soruyu genel anlamda sorduğuna göre daha derleri iyice kavramamışsın demektir. Biraz daha çalışman gerekiyor.
Çalışmalarına şu araştırmaları ekle,
- Bir devreye LCD nasıl bağlanır. Kaç tane pin gerekir. Hangi işlemciler bu iş için kullanılamaz
- LCD de istenilen sabit yazılar nasıl gösterilir.
- Lcd de değişkenlere bağlı sayı değerleri nasıl gösterilir.

Bunlar senin çalışmalarında eksik kalmış konular. Bu sistemde 12f675 kullanılmış olup LCD bağlamak için yeterli pinsayısına sahip değildir. O halde yapılacak iş aynı programı 16F628 gibi bir işlemciye aktarmak ve bunun için gerekli değişiklikleri yapmak olacaktır.
Daha sonra ekranda ne göstermeyi düşünüyorsan onu yazdırıp izleyebilirsin.

Ete
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: mekatronikk - 07 Nisan 2012, 09:15:47
ilgine tesekkur ederim lcd kullanıyorum pin baglantılarını ogrendim sadece acemilik var onu biraz daha atabilirsem düzeltecegim pic olarak 16f877a kullanıyorum bir projemde yapmıs oldugum devremde kullandım ve gayet guzel calısıyor. sadece zaman rolesi eklememı istediler.istenilen roleye start verildikten sonra sure girilecek geri saydıktan sonra role kapanacak ve girilen sure kadar bekleyıp tekrar girdiğimiz sure arasında devamlı olarak dongude calısacak.yapamadıgım yer ise sure girisleri ve kaydetme sanırım eeprom kullanacagım.baya bir takılınca sana danısmak istedim umarım derdimi anlatabilmişimdir.tesekkur ederim giray...
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: ete - 07 Nisan 2012, 10:02:47
Yazdıklarını buraya koy bakayım eksiklerini tamamlarım. Şemayıda eklemeyi unutma.

İstersen biraz daha bilgi vereyim işinnasıl yapılacağı hakkında belki kendin de halledersin.

Örnek projede olduğu gibi kesme yolu ile saat bilgisi (saniye bilgisi) elde edilecektir.

Süre girmenin iki yolu var. Birincisi örnek projede olduğu gibi pot kullanmak. BU sistemi kullandığın zaman potun değerinin karşılığı olan süreyi kolaylıkla ekrana yazdırırsın. Kullanıcı potu çevirerek süreyi ekranda izleyerek ayarlayabilir.

İkinci yöntem ise iki adet buton kullanmaktır. Birisi süreyi artırır , diğeri süreyi azaltır.
Bunun için iki tus tanımlarsın birisi "ARTIR" diğeri "AZALT" olur. Şöyle yaparsın SYMBOL ARTIR=PORTB.0 ve SYMBOL AZALT=PORTB.1 gibi.

Ekrana Süre ve süre değerini yazarsın.
LCDOUT $fe,$02,"SURE : ",dec SURE,"   "
Altına tuş kontrolünü yazarsın.
IF ARTIR=0 then SURE=SURE+1 : IF SURE>999 then SURE=999  (Tusa basılınca Tuş pini LOW olacaktır)
IF AZALT=0 THEN SURE=SURE-1: IF SURE=65535 THEN SURE=0 
PAUSE 130
GOTO YENIDEN
Yeniden isimli etiket tabiiki ilk ekrana SURE yi yazdırdığın satır olacaktır.
Böylece süre girildikçe süre değerinin arttığı ekrandan görülmüş olacaktır.
Bir defa süre girildikten sonra sistemi start etmek için bir yöntem düşüneceksin. Belkide bir üçüncü buton bu işi yapabilir.
IF START=0 then BASLAT
Baslat isimli satırda ise işin kontrolünü yaparsın.
Önce röleyi aktif edersin
Yani her saniye değiştiğinde sen SURE=SURE-1 dersin.
IF SURE=0 then ROLE=0
Biraz program artı teorik bilgi şeklinde verdim açıklamaları ama bir yandan da ezber olmasın bir şeyler öğrenesin diye özen gösteriyorum. Yoksa bütün kodu buraya yazarsam bir anlamı kalmaz değilmi.
Gerisi çok zor değil başarırsın umarım. Takıldığın yerde sorarsın.

Ete
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: mekatronikk - 07 Nisan 2012, 10:33:02
dosyaları ekledım yardımlarını beklıyorum kafayı yemek uzereyım anlatamam :( . Mekatronik mezunuyum ama yazılım dersi almadım mekanik ve elektronik uzerine yeni yeni ogrenmeye calısıyorum.ilgine cok tesekkur ederim ete saygılar Giray...
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: mekatronikk - 07 Nisan 2012, 10:38:09
zaten programa bakınca iyice corba oldugun farkına varacaksın :) ögrenmek istiyorum.iş yerinde birden fazla iş yapınca üstüne düşemiyorum.anlayısına ve yardımlarrına cok tesekkur ederim.
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: ete - 07 Nisan 2012, 11:02:56
Gerçekten çorba gibi bir program. Neyin ne işe yaradığı belli değil. Bir tertip düzen yok. Kıçı bir yerde başı ayrı yerde.
Böyle program olmaz. Ayrıca bana açıklamış olduğun zaman sayacı fonksiyonundan daha fazla şeyler yapılmaya çalışılıyor gibi geldi bana. Nedir makina hız ayarı vs. Bu programın tam amacını net olarak madde madde açıklarmısın.
Açıklamayı düzgünce net bir şekilde yaparsan önce devreyi yeniden düzenlemekle işe başlamak gerekir.
Her zaman söylerim öyle rastgele program yazmaya başlanmaması gerekir. Önce oturur bir plan yaparsın.
Program ne iş yapacak. Birden fazla iş yapılacak ise öncelik sırasına göre madde madde yazarsın. Sonra her bir maddenin nasıl kontrol edileceğine karar verir buna ait senaryoyu yazarsın. Zaten maddeleri yazdığın zaman lafla da olsa programı yazmış sayılırsın. Gerisi yazılanları koda dönüştürmekten başka bir şey olmaz. Ben senin yazdıklarını ancak çöp olarak nitelendirebilirim şu anda. Çünki onlardan bir şey anlamam kesinlikle mümkün değil. Hepsini silerim yazacağın madde madde senaryoya göre yeniden kod yazmaya başlarım. En doğrusu bu olur. Yanlış anlama senin işin için ancak kısmi kod yazar ve düzeltme yaparım. Programı seninyazman gerekiyor. Ben akıl veririm yol gösteririm ve kodlarını düzletirim. Sıkıştığın yerde seni düze çıkartırım. Ama işi sen başarmalısın. İşin çok vey abirden çok işle uğraşıyorsan bu senin sorunun. Madem yola çıktın yapacaksın . Yapamıyorsan öğreninceye kadar erteliyeceksin bu işi.

Şimdi senden projenin amacını yada amaçlarını ve işin nasıl yapılacağına dair madde madde program senaryosunu bekliyorum.
Bu kadar kod yazdığına göre aklından bir şeyler geçiyor yada geçmiş.
Forumda Algoritma çalışmalarında benzer senaryo çalışmaları yapmıştık. Oku oraları ve nasıl yapıldığına dair bilgi edinmeye çalış.

Ete
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: mekatronikk - 07 Nisan 2012, 12:26:55
niyetim seni kızdırmak degıl hatalarımı gormektı ve sana tesekkur ederim elestrin için.sonuna kadar da haklısın.kusura bakma lutfen sadece hatalarımı gormem gerekıyordu ve programı gercekten ben yazmak istiyorum sadece yol gosterenım olmadıgı için sana danısmak istedim. amacımı hemen acıklıyorum sana
1)mikroişlemci ve role ile 2 ayrı motor kontrol edilecek(asenkron motor)plcye giriş
2)tek butonla start stop olacak
3)F1,F2,F3,F4 butonları start stop butonlarıdır
F1 ve F2 butonları motorlar için start-stop olacak
F3 ve F4 butonları ise Fan ve aydınlatma için ac/kapa butonu olacak
ve hepsi birer role ile kontrol edilecek
Menu butonu ile menuye girilecek sec butonu onay vermek için
*elevator ve motor hız kontrol menusu digital potansiyometre (0-10V) 
yukarı ve asagı butonları ıle komut verilecek
*fan zamanı ayarlanabilir zaman rolesi olarak kullanılacak
*aydınlatma sadece ac/kapa olarak
gercekten kusura bakma ete saygılarımla giray...
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: ete - 07 Nisan 2012, 17:13:00
Hala eksik bilgi var. Konumuz zamanlama işi ama hiç bahsetmemişsin. Kimi zamanlayacaksın. Ne olacak zaman tutup?
Yoksa yol verirken yıldız üçgen geçişlerinimi yapacaksın bu zamanlama ile onuda açıver biraz.

Ete
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: mekatronikk - 07 Nisan 2012, 17:47:31
röleyi zamanlayacagım,(mesela 5dk calıs 3dk dur ) girilen süre kadar calısıp ve yine girilen sure kadar duracak.degerleri girdikten sonra yeni bir deger girilene kadar böyle devam edecek.amac makına calısırken fan belli bir sure calısıp belli bir sure durduktan sonra tekrar calısacak.makına uzerinde dort ayrı bolge var motor1-motor2-fan motoru ve aydınlatma.bunlar dort ayrı buton ile kontrol edilecek. motorlar tek butonla start-stop ile calısacak ve menudeki hız kontrol ile hızları ayarlanacak(Elevator Motoru ve Makına motoru(motor1 ve motor2)(0-10v)),fan motoru role cıkısı ile ayarlanan   zamanda calsıp duracak ve surekli olacak, aydınlatma tek butonla ac/kapat olacak ve bunlar röle ile cıkıs alacak röle cıkıslarından plc ye baglanacak. F1-2-3-4 tusları sadece start-stop olarak kullanılacak
diger işlemler menuden kontrol edilecek.
butonlar;
F1-elevator
F2-makına
F3-fan motoru
F4-aydınlatma
Menu
sec
yukarı
asagı
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: ete - 07 Nisan 2012, 22:27:28
En azından işi başlatmak amacı ile bir şeyler karaladım.
Öncelikle devre şemasını değiştirdim. Sİsteme zamanı okuması için bir RTC (DS1307) ilave ettim.
İşin gereği çok fazla pause kullanılması gerekecek. Bu nedenle kesme yolu ile saat bilgisi elde edilmesi sakıncalı geldi bana.
Çok gerekli değil ise zaman işini RTC ye bırakmak projenin selameti açısından daha uygun.

PLC den gelecek girişlerin tamamını PORTB ye girdim. Pullup dirençleri aktif ettim dolayısıyla PLC den gelecek pulslar LOW (aktivasyon için) olmalıdır. Bekleme konumunda bu girişlerin tamamı HIGH da bekleyecektir.

LCD yi PortD ye aldım. fazlasını (R/W) çıkardım eksiği ilave ettim.
Senaryo demiştim yalnızca açıklama verdin. Bu nedenle kafama göre bir senaryo düşündüm. Buna göre ilk açılışta bir normal çalışma ekranı gelecek. Bu ekranda F1-F4 girişlerinin ne işe yaradıkları ve ayrıca bunlara bağlı çıkışların (rölelerin açık yada kapalı olduklarını görebileceksin). Menü tuşuna basılması halinde ise 3 adet ayar menüsüne girilecektir.
Bunlar ELV. Hız ayarı, MKINA Hız ayarı ve FAN için Zaman ayarları.

Hız ayarı iki ünite için yapılıyor ve sen 4 bitlik DAC kullanmışsın. Bunların nasıl ayarlanacağını yazdığım alt programlarda gösterdim. Sana düşen buraya gosub ile gidilmesini sağlamak olacaktır.

Aslında önemli kısımları yazdım. Sen yalnızca RTC nin program komutlarını yazacaksın. Bunun için örnek projelerden yararlanabilirsin.  Muhtemelen haftalık Timer projemizde DS1307 kulanmış idik. Oradan yararlanabilirsin.

İşi biraz daha ilerlet takıldığın yerde sorunu sorarsın.
Ete
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: mekatronikk - 07 Nisan 2012, 23:08:31
cok tesekkur ederim hocam yardımlarınız için takılgım yer olursa tekrar danısırım size.gelişmelerden haberdar edecgim .cok tesekkur ederim tekrar saygılarımla giray...
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: ete - 08 Nisan 2012, 17:06:59
DS1307 nin data ve clock hatlarına birer 10 K lık pullup direnci takılması gerekiyorç Onu unutmuşum devreye ilave ediver.
Ayrıca Röle devrelerinde transistör sürme dirençleri hepsi 1K olacaktır. Onlarıda düzeltiver.

Programın son derece kolay. Biraz uğraşırsan bütün doneler elinde. Bitirebilirsin.

Bir iki konu eksik kalmış. Mesela, Hız ayarı yapılan motorların hız değerleri kayıt edilecekmidir. Ayrıca ilk çalıştırmada bu hız değerleri otomatik olarak  C portuna verilecekmidir?. Yoksa yalnızca menüden hız ayarı yapılırkenmi verilecektir?

Ayrıca Fan rölesinin açık kalma ve kapalı kalma süreside sanırım kayıt edilmesi gerekecek. Program çalıştığında epromdan bu değerleri okuyup kullanacak her halde. Aksi halde saçma sonuçlar ortaya çıkıyor.

Ete
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: mekatronikk - 09 Nisan 2012, 09:14:31
fan rölesinin dediğin gibi eeproma kayıt edilmesi gerekiyor.hız ayarı baslangıcta 0 volt olarak acılacak direnc uzerinden lm358n kullandıgımızda bu sorun olmadı hiç menu baslangıc sıfır olacagı için menuden ayar yapılacak denemelerinde sorun yasamadım hiç.sorunla karsılasırsam haber veririm sana tesekkurler giray ...
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: ete - 09 Nisan 2012, 10:38:53
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

Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: mekatronikk - 09 Nisan 2012, 17:55:20
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...
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: mekatronikk - 24 Nisan 2012, 08:09:10
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...
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: ete - 24 Nisan 2012, 08:39:03
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
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: mekatronikk - 24 Nisan 2012, 11:26:52
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...
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: ete - 24 Nisan 2012, 11:36:00
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
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: mekatronikk - 24 Nisan 2012, 11:40:36
tesekkur ederim hocam bu konuda dahili eepromu kullanabilirim degıl mi
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: ete - 24 Nisan 2012, 11:42:00
Elbette Kullanabilirsin. Verdiğim komutlar dahili eproma aittir zaten.

Ete

Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: mekatronikk - 24 Nisan 2012, 11:50:53
ustunde calısıp tekrar size gonderecegım devreyı hocam saygılar.
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: s.atak - 04 Ağustos 2012, 11:55:00
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

Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: ete - 04 Ağustos 2012, 18:31:56
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
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: s.atak - 06 Ağustos 2012, 15:38:03
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
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: s.atak - 06 Ağustos 2012, 15:44:05
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 ??


Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: Mucit23 - 06 Ağustos 2012, 16:47:28
0. kanalı okumak için  ADCIN 0,DEGISKEN   
1. kanalı okumak için ADCIN 1,DEGISKEN
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: s.atak - 09 Ağustos 2012, 18:36:04
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
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: ete - 09 Ağustos 2012, 18:42:15
Dersler kisminda adc konusunu okursan anlatacagim bilgilerin hepsi orada var. Benden olan şeyleri istemeyin lütfen.. Zaten zaman kısıtlı birde siz sıkıştırmayın lütfen..
Dersleri okuduktan sonra yinede anlamaz isen tekrardan genel olarak değilde neresini anlamadı isen orayı sor.

Ete
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: yavuz timur - 03 Şubat 2013, 17:16:49
sayın ete:benim bu projeye benzer bir projeya ihtiyacım var.devre kısaca şöyle.4 roleli devre var.röle  cektigi zaman 1 saniye sonra 1 saniye sürede led yakacak.diyelimki role kapandı yine 1 saniye sonra 1 saniye süre led yakacak.şimdiden tşk ederim.
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: ete - 03 Şubat 2013, 19:56:46
Özel  program isteklerini yerine getirmem mümkün değil maalesef.
Ete
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: muyat - 26 Kasım 2015, 01:54:41
FOR SN= 1 TO 117  'MS SÜRESİ  TOPLAMDA 1 ms SAYAR
            NEXT SN

Zaman ayarlı start stop rölesinde bu kısmın hesabını nasıl yapıyoruz?1ms için 117 kez sn sayılmasının hesabı nasıldır?
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: ete - 26 Kasım 2015, 07:45:47
O bölümde yer alan komut gecikmeleri , 1000 ms (1sn) lik sürenin bir kısmını gecikme olarak sağlamaktadır. Ancak gecikme miktarını 1000 ms ye ye tamamlamak için biraz daha oyalanmak gerekiyor ki bu döngüde o farkı sağlamaktadır.
Belirli bir hesabı yok deneme yanılma yöntemi ile bulunmuştur.

Ete
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: ete - 26 Kasım 2015, 09:36:05
Sistemin daha hassas bir zamanlama ile çalışabilmesi için zaman tutma işini TMR1 sayacına verdim. 500 ms lik dilimler halinde çalışan bu sayaç ile zaman tutma kısmını değiştirip yeni dosyayı ilk mesaj ekine ekledim. Oradan bakabilirsiniz.
500 ms lik zaman dilimi içinde yapmak istediğiniz diğer iişlemleri yapabilirsiniz. Bu örnekte sadece tuş kontrolü vardı onu yapıyoruz. Böylece sistem hem zaman tutacak hemde diğer işleri halletmiş olacaktır
Ete
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: muyat - 26 Kasım 2015, 10:14:43
Hocam bu konuyu dünden beri inceliyorum...
Öncelikle TMR1 siz olanla yapılmış olanında sormak istediklerim şu:
Program aşagıdaki saybir etiketine atlayınca önce 117 kez sayıyor.Saymayı bitirdikten sonra tuşa basılmamışsa DAK=DAK-1 kısmına atlıyor.Daha sonra orda 998 oluyor ve  ıf komutuyla 998 sıfırdan büyük oldugundan tekrar sn bölümüne gelip 117 defa sayıyor..Sonra tekrar aşagıya atlıyor 997 oluyor ve tekrar yukarı çıkıp 117 kez sayıyor...... Ta ki 999 sayısı 1 olana kadar.
Bu durumda 117 kez sayma işlemini ben 999 defa yaptıgım için  117X999=116766 gibi bir sonuç çıkıyor...
Bu 116766 sayısının anlamı veya birimi süre bazında nedir? Nasıl oluyorda 116766 sayısından  yaklaşık olarak 1saniye=1000ms=1000.000 us çıkıyor. Çünkü deneme yanılmayla yapmış bile olsanız hemen hemen yakın degerleri çok rahat yakalayabilirsunuz.Demekki deneme yanılmayla konulan degeri de az çok hesap edebiliyorsunuz.Bu kısmı açıklar  mısınız?


SAYBIR:       
            FOR SN= 1 TO 117  'MS SÜRESİ  TOPLAMDA 1 ms SAYAR
            NEXT SN
              

                IF TUS=0 THEN
                ROLE=0:LED=0
                WHILE TUS=0:WEND
                pause 100
                GOTO BASLA
               
ENDIF            
          DAK=DAK-1
          IF DAK>0 THEN SAYBIR   'BURASI 1000 MS YANİ 1 SN SAYDIRIR.
          DAK=999
          ZAMAN=ZAMAN-1        'BUNUN HER 60 TANESİ 1 DAK SAYDIRIR.
          IF ZAMAN>0 THEN SAYBIR    
          ROLE=0:LED=0
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: ete - 26 Kasım 2015, 11:29:36
Bir önceki yanıtım biraz yanlış olmuş sanırım.
For next döngüsü 1 to 117 sayımı yaklaşık 1 ms lik bir süre alıyor. DAK=999 verdiğimiz için sıfır dahil 1000 defa dak sayacından bir eksiltilecek demektir. Bu durumda her DAK=0 olduğunda 1000 defa döngü saydırılmış olacaktır. Her biri 1ms olduğuna göre toplamda 1000 ms süre geçmiş olacaktır.

Gelelim deneme yanılma nasıl bulunuyor. Simulasyonda bu sistemi çalıştırınca pot ile bir süre veriyorum. Ekranda watch window dan ayrıca değişken değerlerini de takip ediyorum. Simulasyonda sol altta birde gerçek zaman saati var. O saat de SN değeri sıfırlandığı anda butona basıyorum. Diyelimki 2 dak lık bir süre verdim. tam 2dak sonra röleninbırakması ve ledin sönmesi gerekir. Göz ucu ile led'e bakarken bir yandan da gerçek zaman saatini takip ediyorum. Oradan zamanda şaşma var ise gözlemleyebiliyorum. Dolayısıyla döngü süresi ile oynayarak bu süreyi gerçek zaman saati ile eşitlemeye çalışıyorum.
Anlayacağın ip ucu sol alttaki gerçek zaman saatidir. O saat saat-dak-sn-ms olarak sayıyor zaten. Diyelimki 1 dak zaman tuttum gerçek zaman saati 00:02:00 dan başladı diyelim 00:03:00 olunca ledin sönmesi gerekir. Erken sönüyor ise döngü az geldi , geç sönüyor ise döngü çok geldi şeklinde değerlendirme yapıp döngü değerleri ile oynayarak gerçeğe en yakın süreyi bulmaya çalışıyorum.

Ete
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: muyat - 26 Kasım 2015, 11:58:09
For next döngüsü 1 to 117 sayımının yaklaşık 1mslik süre alıyor demişsiniz.İşte püf nokta bana göre burası.
Bu döngünün 1ms yani yaklaşık 1000us nasıl ettiğini hesap ederek bulmanın bir yöntemi var.
Çünkü açıkçası böyle bir uygulama da deneme yanılmayla kolay kolay beceremem...
Byte olarak tanımlanan sn bitini yaklaşık 117 kez saydırınca 1ms nasıl elde edebiliyoruz?
4mhzde 1 komut 1us ise ,117 kez saydırmak 117us süre elde etmek değil midir?Değilse neden?
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: muyat - 26 Kasım 2015, 12:28:55
Soruyu düzellttim.
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: ete - 26 Kasım 2015, 13:03:17
Yalnızca 117 ye kadar saymanın 1 ms tuttuğunu belirleyecek bir yöntem yok maalesef. ncak çok miktarda zaman içinde değerlendirme yapıp uyup uymadığına bakmak gerek. Bende öyle yapıyorum.
Veya döngüden önce TMR1' sıfırlayıp bölme oranını 1/1 olarak alıp döngü bitince TMR1'i durdurursan o döngünüün ne kadar süre tuttuğunu bulabilirsin.
Şöyle;
TMR1H=0:TMRL=0:T1CON=1
FOR I=1 to 117
Next
T1CON=0
Sure.byte0=TMR1L:Sure.Byte1=TMRH
Sure değişkeni döngünün ne kadar süre aldığını sana verecektir. Bu dediklerim 4 Mhz çalışma frekansı için geçerlidir.
Zira bu frekansta 1clock palsi 1us olarak çalışır. Farklı frekanslar iiçin ayrıca hesap yapmak gerekir. Mesela 10Mhz frekansta 1 clk palsi 0,4us tutar. Bu durumda SURE=1200 ise (mesela) geçen süre 1200x0,4=480us olmuş olur.
10 mhz için 1 clk süresini şöyle buluyoruz. 10/4=2,5 Mhz pic in kullandığı frekans oluyor. 1/2,5=0,4 us ise bir clk pals süresini verir.

Ete

Edit: Şimdi denedim yaklaşık 945 us tutuyor. Altta yer alan if satırları ve sonrasında Dak=Dak-1 komutunuda dahil edersek 955us gibi bir değer tutyor. Demekki biraz daha artırmak gerekir döngüyü.123 sanırım daha iyi olur.

Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: muyat - 26 Kasım 2015, 16:29:42
Hocam ön deger olarak 3036 vermişsiniz.Demekki 62500den sayıyor.
Aşagıdaki son güncel yazılımda hesapları nasıl yaptıgınızı yazar mısınız?120 adet kesme nasıl 1 saniye ediyor?

sure=((raw+1)*/125)/100+1 

ve SAYBIR:
       T1CON=%00110101:PIR1.0=0:SN=0
SAYIKI:
       TMR1H=$0B:TMR1L=$DC:PIR1.0=0  
       WHILE PIR1.0=0
         

        IF TUS=0 THEN
            ROLE=0:LED=0
            WHILE TUS=0:WEND
            pause 100
            GOTO BASLA
         ENDIF                         
        WEND
       
 SN=SN+1:IF SN<120 THEN SAYIKI '120 ADET KESME 1 DAK EDİYOR

Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: ete - 26 Kasım 2015, 16:49:52
TMR1 de bölme oranı 1/8 olduğu için her 8 clok palsinde TMR1 bir artar. O hlade 62500 sayınca aslında 62500x8=500.000us yani 500 ms saymış olur. 2x500 ms=1 sn edeceği için 120 adedi 1 dakika eder. Bak en alt satıra ne yazmışım;
"SN=SN+1:IF SN<120 THEN SAYIKI '120 ADET KESME 1 DAK EDİYOR"

Ete

Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: muyat - 26 Kasım 2015, 22:29:21
Edit.Devre güzel çalışıyor.
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: onurinci - 02 Mart 2016, 04:05:08
Hocam saygılar bu devrenin eski versiyonunu kullanıyordum.5 dakikayı 15 dakika maximuma çıkarmaya çalıştım,ve farkettimki bton start yapıyor stop yapmıyor,birde hocam boştaki Pinlerin birine bir buton daha koysanız basıldığında sürekli çıkış versin,stop'a bastığınızda dursun pek yararlı olur mekanik anahtardan kurtuluruz..

Ete

Edit: Bu sistemin daha hassas bir zamanlama ile çalışması için TMR1 sayacını 500 ms lik dilimler halinde kullanmak mümkün. Bu şekilde çalışan program ektedir.  26-11-2015 de eklenmiştir
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: ete - 02 Mart 2016, 09:29:51
Alıntı YapHocam saygılar bu devrenin eski versiyonunu kullanıyordum.5 dakikayı 15 dakika maximuma çıkarmaya çalıştım,ve farkettimki bton start yapıyor stop yapmıyor,
Sebebi ne acaba?. Böyle bir şey olamaz diye genelleme yapabilirim.
Alet ne emir verirsen onu yapar. Yapmıyor ise yaptıramıyorsundur. Biraz sesli düşünelim.
Maksimum 15 dakika min ise 1 dakika lık süre vereceğiz pot ayarlayarak. Formülün sonunda 1 dakika ekleyeceğimiz için 14 dak üzerinden hesabımızı yapacağız.
14/1024=0,013671875  çıkıyor. Bunu 256 ile çarpalım 3,5 çıkıyor. Bunu 35 olarak kullanalım sonucu 10'a böleceğiz.
O halde formül, SURE=((HAM+1)*/35)/10+1 şeklinde olacaktır.
Pot değerine bağlı olarak bu formül sistemin ne kadar süre çalışacağını belirleyecek.
BASLA ile Goto BASLA arasındaki program satırları süre hesabını yapıp tuşa basılıp basılmadığını kontrol ediyor. Basıldığını kolayca tespit edebilecek demektir. Zira başka işi yok gibi zaten. Basılır basılmaz program SAYDIR isimli etikete gidecek.
Bu etiket altında sistem , TMR1 sayacını kullanarak 500ms lik zaman dilimleri yaratıyor ve her 120 adetlik dilim 1 dakika ediyor. Sonuçta bu dakikaları sayarak SURE değerine ulaşılıp ulaşılmadığını kontrol ediyor. Arada da sadece Tuşa basılıyormu onu kontrol ediyor. O halde burada da hemen hemen bir işi yok programın. Zira TMR1 sayacı geri planda sayıyor biz sadece zaman aşımı olmuşmu diye TMR1 sayaç kesme bayrağına (PIR1.0) bakıyoruz. Bu durumda durdurma komutununda çok verimli çalışması gerekir.
Çalışmamazlık yapıyor ise mutlaka SAYDIR etiketi altındaki while wend komutundan sonra bir gecikme istiyordur. Zira tuş titremesi buna sebep oluyor ve programın hemen başa dönmesine sebep oluyordur. Bu nedenle tedbir olarak;
SAYDIR:
       WHILE TUS=0:WEND
       ZAMAN=SURE:DAK=999
yerine
SAYDIR:
       WHILE TUS=0:WEND
       ZAMAN=SURE:DAK=999
       pause 100
yazmak sorunu çözecektir.

Bu sistemde zaten fazladan buton kullanımından kaçmak istiyorduk. Bir buton daha eklemek bana mantıklı gelmedi.
Tek butonu çalışır hale getirmek daha mantıklı bence. Sen yukarıdakileri dene bence.

Ete
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: onurinci - 03 Mart 2016, 14:24:09
hocam
çok sağolun verdiğiniz formülle 15 dakikayı yakaladım,ve stop butonunda önerdiğiniz değişikliği yapınca buttonda ki stop sorunuda çözüldü klavyenize sağlık,
mutfaktaki aspiratör'ün elektronik devresi yandı çat çat butonlar var ben minik bir yayı yerinden çıkararak bas bırak yaptım bordun üzerinde damlacık işlemci var ve bu gitmiş,deldim pot taktım içinde ssr röle var sistem ellerinize sağlık gayet güzel çalıştı,ve cihazın üzerinde tek buton sağlam aç kapa timing yapabiliyoruz,o yüzden ikinci bir button ile sürekli çalışma modu isteğinde bulunmuştum,neyse bir delik daha delip sadece SSR'yi uyarırım..
hocam o zaman bu URL'deki stop butonunuda düzeltip tekrar yükler iseniz ,indiren'de stop sorunu ile uğraşmaz..iyi günler dilerim..   http://etepic.com/index.php?action=dlattach;topic=53.0;attach=4474
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: yanuma000 - 08 Mart 2016, 12:10:26
 RAW    VAR WORD 56    sn 59 saydıktan sonra 1 üst dakikaya mı yol veriyor
WPU.2=1          bu ne işe yarıyor 


bunların açıklaması nedir diye sorsam kusura bakmayın  saygılarımla
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: onurinci - 08 Mart 2016, 14:14:12
 RAW    VAR WORD 56    sn 59 saydıktan sonra 1 üst dakikaya mı yol veriyor
WPU.2=1          bu ne işe yarıyor 




WPU.2=1 12F675 'te dahili PullUp'tan GPIO 2'yi içeriden aktif ediyor,yani dışarıdan direnç koymaya gerek kalmıyor..

RAW    VAR WORD 56 buradaki 56 sanıyorum simulasyonda registerlerin aldığı değeri gözlemleyebilmek için,hocam daha net açıklayabilir...
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: yanuma000 - 08 Mart 2016, 14:20:30
teşekkür ederim onur inci
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: ete - 08 Mart 2016, 17:27:10
RAW değişkenini sormuyorsundur her halde. yanında yer alan 56 rakamı onun 56 nolu hafızaya (aslında 56-57 nolu adreslere)  yerleştiğini gösteriyor. Bu özelliği zaman zaman kullanıyoruz zira bu sayede simulasyonda değişkenin aldığı değerleri izleyebilme imkanımız oluyor. Gerçek devrede hiç bir işe yaramaz.

Ete
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: yanuma000 - 09 Mart 2016, 14:49:33
teşekkür ederim erol hocam
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: tiviki - 20 Eylül 2017, 20:49:47
ekte verdiğiniz devrenin süresini 0 ile 10 saniye arasında ayar yapacak şekilde olan programı varsa rica etsem paylaşabilirmisiniz?
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: ete - 20 Eylül 2017, 22:06:22
Program deneysel amaçlı ve algoritma göstermek amacı ile yazıldı. Farklı süreler için versiyonu mevcut değil maalesef. Süre için formül verdim aklı eren uygular istediği süreyi uygular.
Ete
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: tiviki - 23 Eylül 2017, 13:30:15
Aklı eren arkadaşlara rica ederim yardımcı olabilirlermi acaba
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: muyat - 07 Nisan 2018, 22:55:11
Tekrar bi şey sormak istiyorum bu konuyla ilgili.
Güncellenen dosyayı yeniden indirdim...
Fakat watch window ekranından geçen süreyi göremiyorum.
Watch window ekranından izlemem için ne yapmam gerekli?
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: ete - 07 Nisan 2018, 23:10:10
İzlemek istediğin değişkenin adını, yanında yer alan hafıza rakamını ve tipini bir yere not et. Sonra simülasyonu çalıştırıp pause tuşuna bas. Yukarıda debug butonuna tıkla ve açılan ek, adres kısmına hafıza adresini yaz ve değişken tipini seçip paus u kaldır. Böylece program çalışırken ilgili değişkenin aldığı değerleri izleyebilirsin.
Ete
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: muyat - 08 Nisan 2018, 03:27:27
Hocam bi soru daha sorayım
Butona basınca 0-6 saniye arasında röle çektircez diyelim.Ve potansiyometre tam orta konumda veya potansiyometre sürekli sabit bir konumda olsun diyelim.Saniyelerin kesinlikle her defasında dogru ölçüm yapmasını istiyoruz diyelim.
Potansiyometrenin pozisyonu sürekli sabit kalsa bile tmr1 kullanmazsam çıkıştaki sürenin her defasında milisaniye bile olsa değişme ihtimali var mıdır? Çünkü ben net ve her defasında aynı sonucu almak istiyorum.
Veben bu işlemi TMR1 kullanmadan da yapıyorum (sitede 12f675 10k pot konusundaki bilgilerle)
Ama bir ara fırsat bulursam çıkışa kronometre takıp hem normal yolla,hem de TMR1 ile yapılan yazılım arasındaki farkı görmeye çalışacagım.
Yani asıl soru şu:Karmaşık olmayan sade bir yazılımda TMR1 kullanmazsak süre şaşırabilir mi?


Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: ete - 08 Nisan 2018, 10:29:12
Timer kullanmadan süre her zaman aynı olmayanilir. Tabiiki ms cinsinden olur farklılık. Burada şöyle düşünmek gerekir. Timer kullanmadan yaptığın taktirde komut gecikmeleri devreye girecek ve sürenin bailangıç ve bitişi seni kontrolünden çıkacaktır. Ama Timer kullanınca kontrol senin elinde olacak komut gecikmesine bakılmaksızın timer gibi net süre değeri veren bir ölçüm birimine bakarak süre tayini yapacaksın.
Ete
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: muyat - 16 Aralık 2018, 16:10:39
Hocam
Programa şöyle bi tekrar inceleyim dedim...
Diyelimki ben maksimum sürem 5 saniye istiyorum diyelim.
Sizin eklediginiz kodlarda sadece 120 sayısını 1 yaptıgımda 1 adet kesme 500 ms yapıyor.
sure=((raw+1)*/225)/100+1 ' burdaki 100 degerini 225 olarak değiştirdigimde sure maksimum degerde 10 çıkıp 500 ile çarpılarak
500x10=5000 yani 5 saniye elde edebiliyoruz fakat 500 milisaniyelik zaman dilimleri halinde oluyor bu.
Peki benim çok hassas bir devrem var ve 100 milisaniye bile önemli dersem o zaman nasıl yapacagız?Yani kesme kullanarak 100 milisaniyelik zaman dilimini nasıl elde ederiz bu durumda?




@ __config _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _CP_OFF 

DEFINE OSCCAL_1K 1  

DEFINE OSC 4

DEFINE ADC_BITS 10    
'DEFINE ADC_CLOCK 1    
DEFINE ADC_SAMPLEUS 10 
CMCON = 7

RAW    VAR WORD 56
SURE   VAR WORD 58
ZAMAN  VAR WORD 60
DAK    VAR WORD 62
X      VAR BYTE 64
SN     VAR BYTE 65


symbol TUS=GPIO.2
SYMBOL LED=GPIO.1
SYMBOL ROLE=GPIO.5

OPTION_REG.7=0
GPIO=0
TRISIO=%00000101
ANSEL =%01010001
ADCON0.7=1
WPU.2=1
ROLE=0
PAUSE 300
BASLA:     
        ADCIN 0,RAW

        sure=((raw+1)*/225)/100+1 '
        
        IF TUS=0 THEN
           TOGGLE ROLE 
           pause 100       
           IF ROLE=1 THEN 
             LED=1
             GOTO SAYDIR
           ELSE
             ROLE=0:LED=0  
           ENDIF   
        ENDIF
        
        GOTO BASLA
           
SAYDIR:
       WHILE TUS=0:WEND
       ZAMAN=SURE:DAK=999
       pause 100
       
SAYBIR:
       T1CON=%00110101:PIR1.0=0:SN=0
SAYIKI:
       TMR1H=$0B:TMR1L=$DC:PIR1.0=0  
       WHILE PIR1.0=0
         IF TUS=0 THEN
            ROLE=0:LED=0
            WHILE TUS=0:WEND
            pause 100
            GOTO BASLA
         ENDIF                         
        WEND
        SN=SN+1:IF SN<1 THEN SAYIKI 
        ZAMAN=ZAMAN-1:IF ZAMAN>0 THEN SAYBIR   
        ROLE=0:LED=0 
GOTO BASLA
 
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: ete - 16 Aralık 2018, 20:06:28
100 ms lik dilimler için en güzeli PicMulticalc programına sorun gerekli parametreleri ondan almak. Ama bizde şöyle bir hesap yaparak bulabiliriz parametreleri,
Sayılacak süre 100 ms. Bu aynı zamanda 100.000us dir. 4Mhz işlemci frekansında her bir komut çevrimi 1us olduğuna göre bu 100.000 sayıma denk gelirki bu max sayma değeri olan 65535 den büyük olduğu için sayma işleminde en azından 1/2 bölme oranını kullanmamız gerekecktir. Bu durumda sıylacak miktar 50.000 olacaktır. Sayacın belirli bir sayıdanbaşlayarak 50000 sayıp 65535 e ulaşması gerekiyorki kesme yaratabilsin. O halde 65535-50.000=15535 den saymaya başlaması gerekecektir.
Bu durumda 1/2 bölme oranı ile 15535 den başlayıp 50.000 sayarsa geçecek süre 100000 us yani 100 ms olacaktır.

İşin diğer kısmında ise bu sefer 1 sn lik süreyi aşabilmek için bu dilimlerden 10 adet kullanmak gerekecektir. Önceki hesabımızda 2 dilim 1 sn ederken şimdi 10 dilim 1 sn edecektir. Pot ile süre hesabında bulunacak değerleri en azından 5 misli artırmak gerekir.

Ete
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: mali4242 - 12 Kasım 2024, 17:44:15
Burada led  röleyle birlikte sabit yanıyor. acaba kodda değişiklik yaparak flash yaparak yanmasını sağlayabilir miyiz?
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: mali4242 - 12 Kasım 2024, 23:20:50
Alıntı yapılan: mali4242 - 12 Kasım 2024, 17:44:15Burada led  röleyle birlikte sabit yanıyor. acaba kodda değişiklik yaparak flash yaparak yanmasını sağlayabilir miyiz?

mümkünmüş. led flash yapacak, 5. pin low oldu zaman çalışmaya başlayacak ve 1-15 saniye zaman aralığında olacak şekilde değiştirildi.

'@ DEVICE pic12F675
'@ DEVICE pic12F675, WDT_ON
'@ DEVICE pic12F675, PWRT_ON
'@ DEVICE pic12F675, PROTECT_OFF
'@ DEVICE pic12F675, MCLR_off
'@ DEVICE pic12F675, INTRC_OSC_NOCLKOUT
@ __config _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _CP_OFF

DEFINE OSCCAL_1K 1
DEFINE OSC 4

DEFINE ADC_BITS 10
DEFINE ADC_SAMPLEUS 10
CMCON = 7

RAW    VAR WORD
SURE  VAR WORD
ZAMAN  VAR WORD
SN    VAR BYTE
FLAG  VAR BIT ' Durum değişkeni

SYMBOL TUS = GPIO.2
SYMBOL LED = GPIO.1
SYMBOL ROLE = GPIO.5

OPTION_REG.7 = 0
GPIO = 0
TRISIO = %00000101
ANSEL = %01010001
ADCON0.7 = 1
WPU.2 = 1
ROLE = 0
FLAG = 0
PAUSE 300

BASLA:
    ADCIN 0, RAW
    ' Potansiyometre değeri 0-1023 arasında, süreyi 1-15 saniye arasında ayarlıyoruz
    SURE = (RAW / 68) + 1  ' Bu formül ile süre 1 ila 15 saniye arasında olur

    ' 5. pin high ise flag sıfırlanır, LED ve ROLE kapatılır
    IF TUS = 1 THEN
        LED = 0
        ROLE = 0
        FLAG = 0
        GOTO BASLA
    ENDIF

    ' 5. pin low ve flag sıfır ise sayma başlar
    IF TUS = 0 AND FLAG = 0 THEN
        ROLE = 1
        FLAG = 1 ' Sayma başladığında flag 1 yapılır
        ZAMAN = SURE
        GOTO SAYDIR
    ENDIF

    GOTO BASLA

SAYDIR:
    T1CON = %00110101
    PIR1.0 = 0
    SN = 0

SAYIKI:
    TMR1H = $0B
    TMR1L = $DC
    PIR1.0 = 0

    WHILE PIR1.0 = 0
        ' Sayma sırasında buton kontrolü yapılmıyor
    WEND

    ' LED'in yanıp sönmesi
    LED = 1
    PAUSE 100  ' LED yanık kalma süresi
    LED = 0
    PAUSE 100  ' LED sönük kalma süresi

    SN = SN + 1
    IF SN < 2 THEN SAYIKI ' 2 kesme 1 saniye yapıyor

    ZAMAN = ZAMAN - 1
    IF ZAMAN > 0 THEN GOTO SAYDIR

    ' Süre bittiğinde ROLE ve LED'i kapat, flag değiştir
    ROLE = 0
    LED = 0
    PAUSE 100
    GOTO BASLA
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: ete - 13 Kasım 2024, 08:19:59
Daha güzeli olabilir. SAYIKI etiketi altında zaten TMR1 sayacı ile zaman sayılıyor. O led'in en azından her saniye yada 500ms de bir flash yaptırılması o kısımda mümkün olabilir. Wend satırından sonra oraya koyduğun pause ler sistemin doğru zaman saymasını engelleyecek nitelikte her sefer 200 ms şaşacaktır zaman sayacı.
O kısımda Sn değeri her 500 ms de bir artıyor. Zaman değeri ise her sn de bir artıyor. Bu aralıklarda istediğin yere yani sn artırımından sonrasına veya zaman artırımından sonrasına Led=1-Led komutunu yerleştirirsen ve o eklediğin komutları kaldırırsan istediğin olacak zamanda şaşmayacaktır.

Ete
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: mali4242 - 13 Kasım 2024, 14:23:10
Alıntı yapılan: ete - 13 Kasım 2024, 08:19:59Daha güzeli olabilir. SAYIKI etiketi altında zaten TMR1 sayacı ile zaman sayılıyor. O led'in en azından her saniye yada 500ms de bir flash yaptırılması o kısımda mümkün olabilir. Wend satırından sonra oraya koyduğun pause ler sistemin doğru zaman saymasını engelleyecek nitelikte her sefer 200 ms şaşacaktır zaman sayacı.
O kısımda Sn değeri her 500 ms de bir artıyor. Zaman değeri ise her sn de bir artıyor. Bu aralıklarda istediğin yere yani sn artırımından sonrasına veya zaman artırımından sonrasına Led=1-Led komutunu yerleştirirsen ve o eklediğin komutları kaldırırsan istediğin olacak zamanda şaşmayacaktır.

Ete
şu şekilde mi hocam?
'@ DEVICE pic12F683
'@ DEVICE pic12F683, WDT_ON
'@ DEVICE pic12F683, PWRT_ON
'@ DEVICE pic12F683, PROTECT_OFF
'@ DEVICE pic12F683, MCLR_off
'@ DEVICE pic12F683, INTRC_OSC_NOCLKOUT
@ __config _INTRC_OSC_NOCLKOUT & _WDT_OFF & _PWRTE_ON & _MCLRE_OFF & _CP_OFF

DEFINE OSC 4  ' Dahili osilatör frekansı 4 MHz

DEFINE ADC_BITS 10
DEFINE ADC_SAMPLEUS 10
CMCON0 = 7  ' PIC12F683'te komparatör kapatma ayarı

RAW    VAR WORD
SURE   VAR WORD
ZAMAN  VAR WORD
SN     VAR BYTE
FLAG   VAR BIT ' Durum değişkeni

SYMBOL TUS = GPIO.2
SYMBOL LED = GPIO.1
SYMBOL ROLE = GPIO.5

OPTION_REG.7 = 0
GPIO = 0
TRISIO = %00000101
ANSEL = %01010001
ADCON0.7 = 1
WPU.2 = 1
ROLE = 0
FLAG = 0
PAUSE 300

BASLA:
    ADCIN 0, RAW
    ' Potansiyometre değeri 0-1023 arasında, süreyi 1-15 saniye arasında ayarlıyoruz
    SURE = (RAW / 68) + 1  ' Bu formül ile süre 1 ila 15 saniye arasında olur

    ' 5. pin high ise flag sıfırlanır, LED ve ROLE kapatılır
    IF TUS = 1 THEN
        LED = 0
        ROLE = 0
        FLAG = 0
        GOTO BASLA
    ENDIF

    ' 5. pin low ve flag sıfır ise sayma başlar
    IF TUS = 0 AND FLAG = 0 THEN
        ROLE = 1
        FLAG = 1 ' Sayma başladığında flag 1 yapılır
        ZAMAN = SURE
        GOTO SAYDIR
    ENDIF

    GOTO BASLA

SAYDIR:
    T1CON = %00110101
    PIR1.0 = 0
    SN = 0

SAYIKI:
    TMR1H = $0B
    TMR1L = $DC
    PIR1.0 = 0

     LED = 1
    PAUSE 100  ' LED yanık kalma süresi
    LED = 0
    PAUSE 100  ' LED sönük kalma süresi
    WHILE PIR1.0 = 0
         
         ' Sayma sırasında buton kontrolü yapılmıyor
    WEND

    ' LED'in yanıp sönmesi
   

    SN = SN + 1
    IF SN < 2 THEN SAYIKI ' 2 kesme 1 saniye yapıyor

    ZAMAN = ZAMAN - 1
    IF ZAMAN > 0 THEN GOTO SAYDIR

    ' Süre bittiğinde ROLE ve LED'i kapat, flag değiştir
    ROLE = 0
    LED = 0
    PAUSE 100
    GOTO BASLA
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: ete - 14 Kasım 2024, 10:09:40
Açık ve net bu işi bilmiyorsun. Bilgin eksik.
Bir timer-1 döngüsü geri planda işlemcinin clok palsleri ile sayar. 16bitlik sayac olduğu için değeri 65535 i aştığı anda PIR1.0 bitini otomatik 1 yapar yani set eder.
Şimdi sen o sayac döngüsü içine pause yerleştirirsen bütün işi berbat etmiş olursun. Sayac değeri 65535 i aşsa bile bayrak set edilemeyebilir. Çünki bir başka kural daha var. Basic komutu olan Pause işlenir iken kesme, flag bitleri gibi şeylere bakılamaz. Bu kadar bilgi yeterli anlayabiliyor isen.
Benim anlatmak istediğim timer-1 döngüsü (while -wend arası) zaten bir zaman sayacı daha doğresu belirli bir zamanın geçmesi burada bekleniyor. Program wend komutunu geçerse anlaki 500ms dolmuştur.
O halde  programa tekrar dönelim ve bundan nasıl yararlanacağımıza bakalım.
SAYIKI:
	    TMR1H = $0B
	    TMR1L = $DC
	    PIR1.0 = 0
	 
	    WHILE PIR1.0 = 0
	        ' Sayma sırasında buton kontrolü yapılmıyor
	    WEND
	 'şayet gereken kodu buraya eklersem led her 500ms de bir flash yapacaktır.
             Led=1-Led  'buda flash yapmasını sağlayacak komut toggle komutunun bir başka şekli.
	 
	    SN = SN + 1
	    IF SN < 2 THEN SAYIKI ' 2 kesme 1 saniye yapıyor
	 
'Şayet gereken kodu bu aralığa yazarsam led her 1 sn de bir flash yapacaktır.
'eklemen gereken kod yine aynı aşağıdaki şekilde. Hepsi bu kadar.
'            Led=1-led birisinden biri açık olacak o nedenle bunu kapadım.
	    ZAMAN = ZAMAN - 1
	    IF ZAMAN > 0 THEN GOTO SAYDIR
Sistem nasıl çalışıyor anlatayım yinede.
While PIR1.0=0
Wend
aralığında program PIR1.0=1 oluncaya kadar wend satırını geçmeden arada bekler.
Tam 500ms sonra PIR1.0=1 olur ve program wend satırını geçer. İşte o anda 500ms lik süre geçmş olacaktır. Led konum değiştirir 1 iken sıfır olur yada sıfır iken 1 olur.
Anlayacağın her 500ms sonunda led konum değiştirir. Böylece pause kullanmadan o lede konum değiştirtmiş olursun ki bunda flash yaptırma deniliyor.


Ete
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: mali4242 - 14 Kasım 2024, 23:22:57
Alıntı YapAçık ve net bu işi bilmiyorsun. Bilgin eksik.

benim böyle bir iddiam olmadı zaten. önce sordum, cevap veren olmayınca imkanlar dahinlinde yardım alarak bişey yaptım ve yükledim. hatta özellikle mesajımda değiştirdim bile demedim "değiştirildi" yazdım.
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: ete - 15 Kasım 2024, 10:34:41
İddian olduğu için söylemedim o lafı zaten. Eksikliğini gör ve tamamla diye söyledim.
Ete
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: mali4242 - 15 Kasım 2024, 11:18:38
Alıntı yapılan: ete - 15 Kasım 2024, 10:34:41İddian olduğu için söylemedim o lafı zaten. Eksikliğini gör ve tamamla diye söyledim.
Ete


çok gereksiz bir laf ve kırıcı hitap.
mesela siz ATM8 işlemciye program atma başlığında sormuşsunuz ama kimse sizinle alakalı böyle yorum yapmamış çünkü gerek yok. konuyu bilen yazmış, bilmeyen bakmış öğrenmiş.
her neyse, iyi günler.
Başlık: Ynt: Zaman Ayarlı Start-Stop Rölesi
Gönderen: ete - 16 Kasım 2024, 08:25:17
Bana göre gereksiz tepki ve alınganlık alınacağın kelimelere bakacağına işin özüne baksan daha iyi olmazmıydı sana cevap vermiş ve çözümüde sunmuşmuyum sen ona bak neden laflara bu kadar takıntılısın. Art niyetle söylesem çözümde sunmazdım öyle düşün. İşe odaklan yan unsurlara değil. Asıl kusurunda bu olsa gerek.

Ete