Şimdi Ara

PWM ile DC Motor Hız Kontrolü (877)

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
1 Misafir - 1 Masaüstü
5 sn
12
Cevap
0
Favori
5.377
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Herkese Selam,

    Öncelikle projeden biraz bahsedeyim. Bir dc motoru PIC den gelecek PWM sinyali ile kontrol edeceğim. Ek olarak 2 buton ile devir hızı arttırılıp azaltılacak ve devir, LCD de gösterilecek..

    Şu ana kadar gelinen noktada
    PWM ile %50duty cycle ve 1000Hz lik bir işaret ile motor u sürmeyi başardık
    ancak
    butonlar ile CCPR1L içindeki değeri arttırıp azaltmam suretiyle pek bir sonuç elde edemedim :(

     ;1000 Hz %50 puls genisligiyle kare dalga 

    list P=16F877
    #include <P16F877.INC>
    __CONFIG _CP_OFF &_WDT_OFF &_PWRTE_ON &_XT_OSC

    org H'00'
    goto BASLANGIC
    org H'04'
    goto BASLANGIC




    BASLANGIC call BASLA

    BASLA bsf STATUS,RP0
    movlw d'249' ; TMR2=249=periyot sonu
    movwf PR2
    bcf STATUS,RP0
    movlw b'01111101' ; 9 - 2 bitleri ayarlandı
    movwf CCPR1L
    bcf CCP1CON,CCP1X ; bit 1 ayarlandı
    bcf CCP1CON,CCP1Y ; bit 0 ayarlandı
    bsf STATUS,RP0
    movlw b'11111011'
    andwf TRISC
    bcf STATUS,RP0
    movlw b'00000101' ; TMR2 acik, prescale = 1:4
    movwf T2CON
    movf CCP1CON,W
    andlw b'00110000' ; hepsini maskele fakat oncesinde Duty Cycle bitlerini ayarla
    iorlw b'00001111' ; ve PWM mode ac
    movwf CCP1CON

    return

    end

    yukarıda ki code buton ilave edersek
     
    KONTROL btfss PORTB,0
    goto ARTTIR
    btfss PORTB,1
    goto AZALT
    return


     
    ARTTIR
    incf CCPR1L
    return


     
    AZALT
    decf CCPR1L
    return


    Kontrol için kesme kullanmak istemedim. kodların arasına serpiştirdim. call ile çağırdım belki hatam burada olabilir. Kesme ile yapsam düzelir mi?_

    şema
     PWM ile DC Motor Hız Kontrolü (877)


    LCD de bir el atalım mümkün ise..

    Burak







  • hocam motordan pic'e geri beslemeyi nasıl sağlayabiliriz?


  • aslında ben biraz daha basite kaçacağım. sadece arttırma ve azaltma işini yapacağım. deviri kontrol etmek istemiyorum ancak senin istediğin şey kapalı çevrim ile alakalı. ADC kullanman gerekecek...
  • quote:

    Orjinalden alıntı: anubis

    hocam motordan pic'e geri beslemeyi nasıl sağlayabiliriz?


    motor miline bağlı delikli bir disk ile motor devrini f frekanslı sinyale, f frekanslı sinyali gerilime, gerilimi ADC ile digitale ve sonrasında PICe. çok mu uzattım
    saygılar...
  • sanırım c1 kondansatorunun üzerindeki voltajı değerlendireceğiz. teşekkürler
  • motoru doğru mu sürüyorum acaba*
  • iki butonlu hız kontrolü. ( sadece 2 değer için)
    çalışıyor
    pic16f877

     
    ;1000 Hz %50 puls genisligiyle kare dalga

    list P=16F877
    #include <P16F877.INC>
    __CONFIG _CP_OFF &_WDT_OFF &_PWRTE_ON &_XT_OSC

    org H'00'
    goto BASLANGIC
    org H'04'
    goto BASLANGIC




    BASLANGIC call BASLA
    LOOOP call KONTROL
    goto LOOOP

    KONTROL btfss PORTB,0
    goto ART
    btfss PORTB,1
    goto AZ
    return

    ART movlw B'11111111'
    movwf CCPR1L
    return

    AZ movlw B'00001000'
    movwf CCPR1L
    return

    BASLA bsf STATUS,RP0
    movlw d'249' ; TMR2=249=periyot sonu
    movwf PR2
    bcf STATUS,RP0
    movlw b'11110101' ; 9 - 2 bitleri ayarlandı
    movwf CCPR1L
    bcf CCP1CON,CCP1X ; bit 1 ayarlandı
    bcf CCP1CON,CCP1Y ; bit 0 ayarlandı
    bsf STATUS,RP0
    movlw b'11111011'
    andwf TRISC
    bcf STATUS,RP0
    movlw b'00000101' ; TMR2 acik, prescale = 1:4
    movwf T2CON
    movf CCP1CON,W
    andlw b'00110000' ; hepsini maskele fakat oncesinde Duty Cycle bitlerini ayarla
    iorlw b'00001111' ; ve PWM mode ac
    movwf CCP1CON
    return

    end



    http://img305.imageshack.us/my.php?image=scheme24si.jpg



    < Bu mesaj bu kişi tarafından değiştirildi Vodka -- 20 Mayıs 2006; 22:24:51 >




  • quote:

    Orijinalden alıntı: Vodka

    iki butonlu hız kontrolü. ( sadece 2 değer için)
    çalışıyor
    pic16f877

     
    ;1000 Hz %50 puls genisligiyle kare dalga

    list P=16F877
    #include <P16F877.INC>
    __CONFIG _CP_OFF &_WDT_OFF &_PWRTE_ON &_XT_OSC

    org H'00'
    goto BASLANGIC
    org H'04'
    goto BASLANGIC




    BASLANGIC call BASLA
    LOOOP call KONTROL
    goto LOOOP

    KONTROL btfss PORTB,0
    goto ART
    btfss PORTB,1
    goto AZ
    return

    ART movlw B'11111111'
    movwf CCPR1L
    return

    AZ movlw B'00001000'
    movwf CCPR1L
    return

    BASLA bsf STATUS,RP0
    movlw d'249' ; TMR2=249=periyot sonu
    movwf PR2
    bcf STATUS,RP0
    movlw b'11110101' ; 9 - 2 bitleri ayarlandı
    movwf CCPR1L
    bcf CCP1CON,CCP1X ; bit 1 ayarlandı
    bcf CCP1CON,CCP1Y ; bit 0 ayarlandı
    bsf STATUS,RP0
    movlw b'11111011'
    andwf TRISC
    bcf STATUS,RP0
    movlw b'00000101' ; TMR2 acik, prescale = 1:4
    movwf T2CON
    movf CCP1CON,W
    andlw b'00110000' ; hepsini maskele fakat oncesinde Duty Cycle bitlerini ayarla
    iorlw b'00001111' ; ve PWM mode ac
    movwf CCP1CON
    return

    end



    http://img305.imageshack.us/my.php?image=scheme24si.jpg



    Bu programın şemasına nasıl ulaşabiliriz?

    Teşekkürler




  • optik encoder lar ile tekerleğin yada diskin dönüş hızını ölçebilirsin. Dönen cismin üzerindeki delikler (yada siyah-beyaz bölgeler) aletin çıkışında 0 ve 1 olarak gözüküyor. Bu 0-1 değişim hızlarından cismin dönüş hızını hesaplamak mikroişlemci ile kolay oluyor.
  • PIC Basic ya da Proton kullanmalısın.Daha rahat edersin.
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.