Yardim. Sağa Sola dönüş süresini iki buton kullanarak ayarlamak istiyorum.

Başlatan dragster_omer, 05 Ocak 2014, 22:58:41

dragster_omer

Arkadaşlar kolay gelsin öncelikle ben bir devre bularak biraz üzerinde uğraşıp istediğim sonucu elde ettim fakat ufak bir ekleme yapmak istiyorum öncelikle devreyi anlatayım Porta0 a bağlı butona basınca sağa dönüp duruyor tekrar basınca sola dönüp duruyor. Devrede PortA ya iki tane buton daha ekleyip bu dönme süresini ayarlamak istiyorum mesela birinci butona basınca sağa dönme süresi artacak ikinci butona basınca sola dönme sayısı artacak belli  bir sayıya ulaşınca aynı tuş ile en başa dönecek mesela ilk süre 2 sn olsun.

porta0 basılınca sola dön dur
porta0 basılınca saga dön dur
porta1 e basılınca sağa dönme süresini arttır
porta2 ye basılınca sola dönme süresini arttır
belli bir tuş hareketi sonunda ilk değerlere sıfırla yada ek bir butonla sıfırla


Burda isis ve asm kodları mevcut

http://www.speedyshare.com/4xszf/1dc-motor-tek-tusla-ileri-dur-geri-dur.rar



   LIST P=16F84      
              #include "P16F84.INC"
              __CONFIG _WDT_OFF &_XT_OSC &_PWRTE_ON &_CP_OFF
LSB    EQU    H'20'
MSB    EQU    H'21'
;**************
   ORG    0X00
   GOTO    BASLA
;*******************
BEKLE
   MOVLW .45
   MOVWF LSB
DON1
   MOVLW .95
   MOVWF MSB
DON2   
   DECFSZ  MSB,F
   GOTO DON2
   DECFSZ  LSB,F
   GOTO DON1
   RETURN
;****************

BASLA
   CLRF    MSB
   CLRF    LSB
   BSF    STATUS,5
   MOVLW     B'11111111'
   MOVWF    TRISA   
   CLRF    TRISB
   BCF    STATUS,5   
   CLRF    PORTB
;********************************************   
TEST
   BTFSC PORTA,0
   GOTO TEST2
   GOTO TEST
TEST2
   BTFSS PORTA,0
   GOTO    TEST
   GOTO    SOL
TEST3
   BTFSS PORTA,0
   GOTO TEST3
   GOTO SAG
;******************************
SOL   
   MOVLW B'10000010'
   MOVWF PORTB
   CALL BEKLE
   CLRF    PORTB
   GOTO TEST3

;*******************************
SAG
   MOVLW B'01000001'
   MOVWF PORTB
   CALL BEKLE
   CLRF PORTB
   GOTO TEST
   
   END



Bayramsumbul

Merhaba ve iyi çalışmalar.Yapmanız gereken pwm konusunu araştırmak.Daha sonra ise ya donanımsal/yazılımsal pwm kullanırsınız.Pwm ile motor hızında değişiklik yapabilirsiniz.Mesela %20 doluluk oranına sahip 50 hz'lik  bir pwm kodu şuna benzer(Motor,A0 da olsun);
(
Basla
A0=1
Bekle 4ms
A0=0
Bekle 16ms
Başlaya dön
)
Gibi.(Bu bir kod değildir sade fikir vermek amaçlıdır)
Bir Elektronik Meraklısının Serüveni...

dragster_omer

Hocam pwm koduna baktımda tam olarak istediğim gibi birsey elde etmem mümkü gibi gözükmuyor bir sayaç atayıp o sayacın içerigini değiştirerek yapmak mümkün mu acaba bunu? Mesela butona basınca sayacın içeriği artsın ve bu içerik kadar beklesin. Bunu düşündüm sayaçları tanımlamak kolay arttırıp azaltmakta kolayda tam olarak çıkamadım işin içinden.