proton ile saat bazında röle aktif etme?

Başlatan mc_307, 16 Mayıs 2015, 23:36:15

mc_307

selam arkadaşlar. bu proton işinin en başındayım yani device ... :D
ben şöyle bir devre yapmak istiyorum, isiste de deneyeceğim :  yazılım en ucuz mcu ile olacak , protonda bir kez ayar vereceğim ve mesela devreye elektrik verilince röle 12 saniye açık kalacak ve kapanacak, bundan sonra 3 saat bekleyip tekrar 12 saniye çalışacak. ve bu döngü böyle sürüp gidecek.
şimdi yeni olduğum için; 10 saniye çalış 30 saniye bekle diyerek bi döngü oluşturdum ve çalıştı. yalnız 65.... küsür saniye delayms ile sınırmış ve ben saatlik yapmak istemiştim. burda tıkandım. nasıl saatlik yapabiliriz. ayrı bir komut mu gerekiyor yoksa. 3 saati delayms şeklinde mi yazcaz.? ama sınır var işte ?

baran123

Şöyle bir kulanım yapabilirsiniz.
for(int sayac = 0; sayac < 10; sayac++)
{
   1 saniye bekle
}

böylelikle 10 saniye beklemiş olursunuz.İsterseniz 10 sayısını arttırıp daha çok bekleme yapabilirsiniz.

mc_307

Alıntı yapılan: Baran Ekrem - 16 Mayıs 2015, 23:42:01
Şöyle bir kulanım yapabilirsiniz.
for(int sayac = 0; sayac < 10; sayac++)
{
   1 saniye bekle
}

böylelikle 10 saniye beklemiş olursunuz.İsterseniz 10 sayısını arttırıp daha çok bekleme yapabilirsiniz.
Baran hocam ilk kez gördüm bu tarZ bi proton yazısı.
Protonla mı yazılmış bu.
bekleme saat süresini ve rölenin aktif olma süresini de ayarlayabilirmiyiz. Ve nasıl olacak.
Peki nasıl aşıyoruz bu 65553 müydü neydi o süreyi bunla.

baran123

Proton bilmiyorum ama "protonda for döngüsü"  diye aratırsanız bulursunuz.Ben standart C ye göre örnek verdim.For belirli sayıda işlemler yapmayı sağlayan bir döngü.Ama şöyle bir örnek vereyim üstten baktığım kadarıyla.

basla : //etiket tanımlandı
For Sayi=0 To 9      '0 dan başlayarak 10 a kadar For ile Next 'arasındaki kodları Çalıştır.10 kez
   DelayMS 1000 	    '1 saniye bekle
Next 
//10 kere 1 saniye bekleyecek yani 10 saniye sonra aşşağıdan devam edecek
röle aç 


For Sayi=0 To 29      '0 dan başlayarak 10 a kadar For ile Next 'arasındaki kodları Çalıştır.10 kez
   DelayMS 1000 	    '1 saniye bekle
Next 
//29 kere 1 saniye bekleyecek yani 30 saniye sonra aşşağıdan devam edecek
röle kapat
goto basla //başa döner


ben rasgele bir şey yazdım siz protona uyarlarsınız.

Cemre.

RTC entegrelerini araştırabilirsiniz. Eğer süreyi unutmasını istemiyorsanız bu daha çok işinize yarayacaktır. Ayrıca daha hassas bir zaman ölçümü yapabilirsiniz.

baran123

Bende RTC önerecektim ama önce programlamadaki eksikliklerinizi giderirseniz çok daha faydalı olur.

mc_307

Hocam peki şu sekilde yapsak nasıl olur.
Delayms 50000
Delayms 50000
.
.
Diyerek 3 saate tamamlasam olur mu. Bu şekilde bu sınırı aşabilirmiyiz.  Rtc işi beni baya bir aşar şimdilik

Maxim

60 dk * 60 = 1 saat 3600sn
3600 * 3 saat =10800sn

delayms 50000 = 50sn demek
10800 / 50 = 216
216 kere delayms 50000 mi yazacaksınız?

for-next döngüsü kolaydır, nasıl çalıştığını deneyin.

mc_307

Alıntı yapılan: Maxim - 17 Mayıs 2015, 09:44:46
60 dk * 60 = 1 saat 3600sn
3600 * 3 saat =10800sn

delayms 50000 = 50sn demek
10800 / 50 = 216
216 kere delayms 50000 mi yazacaksınız?

for-next döngüsü kolaydır, nasıl çalıştığını deneyin.
Tamam maxim hocam. Yani saat entegresine gerek kalmadan yapabiliyorsak cok güzel olcak. Kulucka makinesi olan bir arkadaşıma cok ucuza mesela 3 saatte bir 12 saniye kadar calısan röle yapacağım. Ekran falan olmadan en ucuz mcu ve ekipmanla. İnş for next döngüsü kolaydır

Maxim

burada önemli olan 3 saat gecikme değil
röle çektiği zaman işlemcinin resetlemeden stabil çalışmasını sağlayacak tasarım ve alt yapıdır.
3 saat gecikme işin en kolayı

mc_307

İşlemci resetleme nedir hocam.
Bu for next komutunda sayi degerini dakika mi veriyoruz.
Yani bekleme süresini for next yapacak .
Rölenin açık kalma suresini de delayms 12000 halletmezmi,?
Ama bu for next bölümüne o 3 saatlik zmani nasil yazagimi anlayamiyorum. Ornekler led yak söndür olduğu icin kafam basmadı

mc_307

Rölenin saat bazında kapalı kalması  ile alakali zamanlama yapılmış bir for next örneği var mı acaba

mehmet

1sn. x 108 x 10 x 10 = 10800sn. / 3600 = 3sa.
FOR a = 1 TO 108
     FOR b = 1 TO 10
         FOR c = 1 TO 10 
              DelayMs 1000
         NEXT
     NEXT
NEXT
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr
https://creativecommons.org/licenses/by/4.0/deed.tr "CC BY"

F.T

Eğer kesme kullanımı yapılacaksa delayda verilen uzun gecikmeker sorun oluşturur.
Hakk şerleri hayr eyler Zannetme ki gayr eyler Ârif anı seyreyler Mevlâ görelim neyler Neylerse güzel eyler.

mc_307

Alıntı yapılan: F.T - 17 Mayıs 2015, 13:02:25
Eğer kesme kullanımı yapılacaksa delayda verilen uzun gecikmeker sorun oluşturur.
Kesme olayinida bilmiyorum. En basit şekilde halletmeye çalışcam. Örnek bu tarz bir uygulama varmı acaba.