Şimdi Ara

pic c ile adım motor kontrolü

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
3 Misafir (1 Mobil) - 2 Masaüstü1 Mobil
5 sn
7
Cevap
0
Favori
1.350
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • merhaba argadaşlar.pic c'ye adım atalı birhayli zaman oldu, fakat daha yeni yeni alışıyorum.üç gündür uğraştığım bir konu var, adım motor için bir kod yazdım fakat sapıtıyor mudur nedir anlamadım gitti.kod aşağıda,

    #if defined(__PCM__) 
    #include <16F628.h>
    #use delay(clock=4000000)
    void main()
    {
    char i=0;
    output_a(0);
    kontrol:
    if(input(PIN_B0)==1)
    {
    i=i+1;
    if(i=='5')
    {
    i=1;
    goto motor;
    }
    else
    {
    goto motor;
    }
    }
    if(input(PIN_B1)==1)
    {
    if(i=='0')
    {
    i=4;
    goto motor;
    }
    else
    {
    i=i-1;
    goto motor;
    }
    }
    else
    {
    goto motor;
    }
    motor:
    switch(i)
    {
    case 0:output_a(0);
    goto kontrol;
    case 1:output_a(1);
    delay_ms(250);goto kontrol;
    case 2:output_a(2);
    delay_ms(250);goto kontrol;
    case 3:output_a(4);
    delay_ms(250);goto kontrol;
    case 4:output_a(8);
    delay_ms(250);goto kontrol;
    }
    goto kontrol;
    }


    oluşan hata:herhangi butona 0'dan fazla basıldıktan sonra bırakıldığında a çıkışlarının bırakıldığı yerde kalması gerekirken,bir süre kaldıktan sonra tamamen a portu çıkışları 0 oluyor.bu da adım motorun geri başa almasına sebep oluyor.ben istiyorum ki ileri butonuna her basıldığında 1 adım atsın, herhangi bir zamanda geriye basıldığında ise sekme yapmadan ters istikamete aynı şekilde adım adım dönsün. umarım anlatabildim ve inşallah tamamen mantık hatası yapmamışımdır. teşekkürler.



    < Bu mesaj bu kişi tarafından değiştirildi sinoo -- 21 Kasım 2006; 20:46:35 >







  • Devren bi süre sonra çıkışları 0 yapmak dışında normal çalışıyo mu peki??
  • çok nadir normal çalışıyor.ama bi süre sonra çıkışların 0 olması her zaman oluyor.(bi süre dediğim de yarım saniye falan).
  • nadir de olsa normal çalışması devre ile ilgili bi sorun bence..Butonlar için Pull up dirençleri kullanmadıysan bu şekilde çalışabilir..
  • devrede hiç bir sorun yok.hatta şüpelendim ve yeni bir pic aldım, durum aynı.
    ??
  •  
    if(input(PIN_B1)==1)
    {
    i=i-1;
    if(i=='0')
    {
    i=4;
    goto motor;
    }
    else
    {
    goto motor;
    }
    }


    programın adım azaltma kısmını yukarıdaki şekilde revize edip tekrak bi dener misin.Senin yazmış olduğun kod da sanırım bazı açıklar var
  • eğer böyle yazarsam bu kısmı.motor ilk önce geri adım atmak istediğimde sanırım sapıtacak. i zaten ilk başta 0 diye başlıyor.bu yüzden önce 0 diye mi kontrol ediyorum.

    çok teşekkür ederim, sorunu akşam üzeri arkadaş ile bulduk.winpic programında bir ayarı yanlış kullanıyormuşum.
    yarım adım metodu şeklinde ufak tefek değişiklik yaptım.kod aşağıdadır, başkalarının da işini görürse ne mutlu.
     
    #if defined(__PCM__)
    #include <16F628A.h>
    #use delay(clock=4000000)
    void main()
    {
    char i=0;
    kontrol:
    output_a(0);
    if(input(PIN_B0)==1)
    {
    i=i+1;
    if(i=='9')
    {
    i=1;
    goto motor;
    }
    else
    {
    goto motor;
    }
    }
    if(input(PIN_B1)==1)
    {
    if(i=='0')
    {
    i=8;
    goto motor;
    }
    else
    {
    i=i-1;
    goto motor;
    }
    }
    else
    {
    goto kontrol;
    }
    motor:
    switch(i)
    {
    case 0:output_a(0);
    goto kontrol;
    case 1:output_a(1);
    delay_ms(100);goto kontrol;
    case 2:output_a(3);
    delay_ms(100);goto kontrol;
    case 3:output_a(2);
    delay_ms(100);goto kontrol;
    case 4:output_a(6);
    delay_ms(100);goto kontrol;
    case 5:output_a(4);
    delay_ms(100);goto kontrol;
    case 6:output_a(12);
    delay_ms(100);goto kontrol;
    case 7:output_a(8);
    delay_ms(100);goto kontrol;
    case 8:output_a(9);
    delay_ms(100);goto kontrol;
    }
    goto kontrol;
    }




    < Bu mesaj bu kişi tarafından değiştirildi sinoo -- 22 Kasım 2006; 22:33:59 >




  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.