avatar_ete

Zaman Ayarlı Start-Stop Rölesi

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

ete

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.

mekatronikk

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.

ete

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

mekatronikk

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...

ete

#4
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

mekatronikk

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...

mekatronikk

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.

ete

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

mekatronikk

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...

ete

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

mekatronikk

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ı

ete

#11
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

mekatronikk

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...

ete

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

mekatronikk

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 ...

Powered by EzPortal