RB0 Harici Kesme !

Başlatan HeCToR, 24 Eylül 2015, 23:54:47

OnderGrmz

#15
Alıntı yapılan: mehmet - 25 Eylül 2015, 10:52:19
Sınır anahtarlarının normalde kapalı
kontakları yön rollerinin bobinlerine seri
bağlanır.

Haklısınız hocam. Kumanda mantığına göre devrenin belirttiğiniz şekilde olması lazım. Fakat @CORTEX hocanın belirttiği şemada fiziksel olarak böyle bir koruma yok.
Şu anda yazılımsal olarak nasıl bir yol izleneceğini tartışıyoruz. Bahsettiğinize benzer bir önlemi yazılımsal olarak koydum.
Elbette donanımsal olarak ek önlemler alınması lazım.

mehmet

O halde; donanımsal olarak, sınır anahtarı ve
kontaklar vs. nasıl bir dijital kapı oluşturuyor?
Ve kapısı değil mi? O halde buton ve sınır
anahtarı her zaman ve şartı ile kontrol
edilmeli.
Donanımsal olarak yapabileceklerinizi
ortaya çıkarın. Zaten kod kendiliğinden bu
şekilde ortaya çıkacaktır.
Kolaylıklar.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

HeCToR

#17
@OnderGrmz Hocam @huseyin67 @mehmet @vitruvius @Baran Ekrem Şöyle Bur yol izledim ADC üzerinden kontrol ettim gayet sağlıklı çalışıyor ama bir noktada sorun yaşanabilir !
if(adc_deger==696){


output_low(yukarı_motor);

}

Burada ==696 değeri switch'e bağlı kablo uzunluğundan 1 yada 2 volt aşağı yada yukarı çıkarsa voltaj çalışmayabilir !!! Var ise farklı tavsiyeleriniz uygulayabilirim.





RESİMDEKİ ŞEMADA YANLIŞLIK VAR ALT KISIMDAKİ SWITCH YUKARI YAZMIŞIM ORASI ALT SWITCH OLACAK.

if(!input(yukarı_buton)==1) 
{
while(!input(yukarı_buton)==0);
output_high(yukarı_motor);

if(adc_deger==696){


output_low(yukarı_motor);

}
}


else
output_low(yukarı_motor);

if(!input(asagi_buton)==1)
{
while(!input(asagi_buton)==0);
output_high(asagi_motor);

if(adc_deger>820){


output_low(asagi_motor);

}
}
else
output_low(asagi_motor);
Bilginin Efendisi Olmak İçin Çalışmanın Kölesi Olmak Gerekir

vitruvius

"==" diye kontrol etmemelisin zaten. Sistem çalışırken güç kaynağının gerilimini takip et. Hangi değer aralığında değişiyor gör. Ona göre hesaplamalarını yap, okuyacağın iki gerilim için de ayrı aralıklar oluştur. Gerekirse dirençleri değiştir, iki aralığın arasını aç ki ufak dalgalanmalarda ters durumda çalışmasın.

if(adc_deger>600) && (adc_deger<700)
{
   output_low(yukarı_motor);
}


gibi.

OnderGrmz

Merhaba @CORTEX  Hocam;
Geçen gün paylaştığım koda baktım ve birkaç düzenleme yaptım.  Şu anda çalışır durumda. İstediğiniz özellikleri sağlıyor mu bir bakın.
https://drive.google.com/file/d/0B2oFvlGxv_WGZnRqMEhMVGxORHM/view?usp=sharing

Not: Asansör aşağı indiğinde, yukarı çık butonuna basıldığında yukarı çıkmaya başlar. Bundan sonra aşağı yön sınır anahtarının el ile açılması lazım.
         Asansör yukarı çıktığında, aşağı in butonuna basıldığında aşağı inmeye başlar. Bundan sonra yukarı yön sınır anahtarının el ile açılması lazım.
Gerçek sistemde bu otomatik olarak olacaktır zaten. Söylediğim sadece simülasyon için geçerli.

HeCToR

@OnderGrmz Hocam Öncelikle Teşekkürler Birebir bahsettiğim durumu çalışır hale getirmişsiniz aynen bu şekilde olacak yalnız butona bir defa bastığımızda motor sürekli iletimde kalmayacak butona basılı tuttuğumuz sürece motor iletimde kalacak elimizi butondan çektiğimizde motor iletimden çıkacak.

@vitruvius Hocam Teşekkürler ancak bir problem var derleyici bu komutta neden hata veriyor
if(adc_deger>600) && (adc_deger<700)
{
   output_low(yukarı_motor);
}
Bilginin Efendisi Olmak İçin Çalışmanın Kölesi Olmak Gerekir

baran123

if ((adc_deger>600) && (adc_deger<700))

HeCToR

Bilginin Efendisi Olmak İçin Çalışmanın Kölesi Olmak Gerekir

OnderGrmz

Alıntı yapılan: CORTEX - 26 Eylül 2015, 23:28:54
butona bir defa bastığımızda motor sürekli iletimde kalmayacak butona basılı tuttuğumuz sürece motor iletimde kalacak elimizi butondan çektiğimizde motor iletimden çıkacak.
if(!input(yukarı_buton)==1) 
{
while(!input(yukarı_buton)==0);
output_high(yukarı_motor);

if(adc_deger==696){
output_low(yukarı_motor);
} }

@CORTEX Hocam butona basıldığı sürece işlem yapılmasını istiyorsanız bile, yukardaki şekilde bir kod yapısı sizi projenin ilerleyen aşamalarında sıkıntıya sokar. Bekleme fonksiyonu veya yukarıdaki gibi bir while döngüsü istenen bir durum değildir.

Burun yerine tarama yöntemi ile mikro işlemcinin beklemesine neden olmadan butonun durumunu kontrol edebilirsiniz.

Birde bu sistem asansör ise neden buton basıldığı sürece sistemin çalışması gerekiyor ?

HeCToR

@OnderGrmz Hocam Tam asansör sistemi değil ben açıklayıcı olması için örnek verdim sadece bunu inşaatçıların yukarı çimento indirip çıkarması gibi düşünebilirsiniz bekleme konusunda evet haklısınız ama işlemciyi yoracak ve kasacak kadar geniş bir proje değil sizin öneriniz daha sağlıklı teşekkürler Hocam Sağolun
Bilginin Efendisi Olmak İçin Çalışmanın Kölesi Olmak Gerekir