Motor Yon Sorunu

Başlatan ilhuns, 27 Eylül 2017, 15:13:19

ilhuns

Merhaba Ete hocanin derslerinden faydalanarak kendime manyetik karistirici yapmaya calistim sorunsuz olarak calisiyor hiz kontrolu vs ama motor tek yonde calisiyor bir turlu geri yonde calistiramadim yardimci olabilirseniz sevinirim sorunu bulamadim proteusta hic bir sorun yok ancak kurulu devrede ters yone donmuyor

ilhuns

Yardım edebilecek kimse yok mu?

ete

Dosyan açılmıyor. Yeniden yükle istersen.
Ayrıca isis te çalışıp da gerçekte çalışmayan bir devre için söylenebilecek çok şey yok. Bu konu ile ilgili olarak be tartışmamız olmuş idi. Aşağıdaki linki de incele istersen,
http://etepic.com/index.php/topic,1670.0.html
Ete

onurinci

Isis dosya'n ileri sürüm,bu durumda açamıyoruz,export etme seçeneği mevcut ise öneririm...

ilhuns

'OPTION_REG =%00111111
PORTA=0:TRISA=%00000001
PORTB=0:TRISB=%00000000
PORTC=0:TRISC=%00000000
PORTD=0:TRISD=%00000000
ADCON1= %10001110 '
T2CON = %00000101
PR2=249
'-----------------------------------------------------------------
@ DEVICE PIC16F877                                                   
@ DEVICE PIC16F877, WDT_OFF             
@ DEVICE PIC16F877, PWRT_OFF           
@ DEVICE PIC16F877, PROTECT_OFF       
@ DEVICE PIC16F877, XT_OSC             
'-----------------------------------------------------------------
DEFINE OSC 4
'**************** ADC chanel setting  ************************
DEFINE ADC_BITS 10    ' ADCIN   çözünürlük  (Bits)
DEFINE ADC_CLOCK 1    ' ADC clock kaynaðý  (Fosc/8)
DEFINE ADC_SAMPLEUS 3 ' ADC örnekleme zamaný (uSec)
'****************HPWM PRESETÝNG*********************
DEFINE CCP1_REG   PORTC    'Hpwm 1 pin port
DEFINE CCP1_BIT     2      'Hpwm 1 pin bit
DEFINE CCP2_REG   PORTC    'Hpwm 2 pin port
DEFINE CCP2_BIT     1      'Hpwm 2 pin bit
'******************* DEÐÝÞKENLER  ********************
HAM var word
X   VAR WORD
DUTY VAR BYTE   
'---------------------------------------------------------------------------

CCP1CON.2=1    'birinci kanalý açtýk
CCP1CON.3=1

CCP2CON.2=1  'ikinci kanalý açtýk
CCP2CON.3=1


BASLA:
      DUTY=50
      GOSUB POTOKU
     
      GOTO BASLA
     
POTOKU:
       ADCIN 0,HAM
       PR2=((1024-HAM)*/5625)/100+24
       
       X=(PR2+1)* DUTY /25
       CCP1CON.4=X.0
       CCP1CON.5=X.1
       
       CCP2CON.4=X.0
       CCP2CON.5=X.1
     
       CCPR1L=X>>2

      CCPR2L=X>>2
       RETURN


ilhuns

#5
pwm konusunu hic blmiyordum ete beyin hpwm-2 dersinden kodlari aldim calismayan bolum sag_calis etiketinin oldugu bolum

ete

Mesajlarına özen göstermiyorsun. Verdiğin dosya hala açılmıyor. Bozuk dosya ikazı veriyor. Onu düzelt bir kere. Ayrıca Verdiğin kodlara bir bak istersen o söylediğin etiket varmı? Ayrıca bu kodların bu şema ile bir alakasıda yok sanırım. Kopyala yapıştır ile bir yere varamazsın. Önce mantığını kullan sana ne lazım onları tespit et örnek programı yorumla sana lazım olanları alıp bir program oluştur.  Yapman gerekeni bilmiyor isen öncelikle 1 nolı HPWM kanalını aktive etmeyi öğren. Sonra bu kanaldan çıkan sinyale Duty vermeyi öğren. Sonrada aşağıdaki önerime kulak ver.

Öneri olarak söylüyorum,
PWM çıkışlarına birisini L293D nin EN1 pinine bağla. PWM sinyalini bu pinden ver.
IN1 ve IN2 girişlerini ise yön kontrolü için kullan.
IN1=1 ve IN2=0 iken EN1=PWM %100 verirsen motor son sürat bir yöne döner.
IN2=0 ve IN2=1 iken EN1=PWM %100 verirsen motor diğer yöne tam hızda döner.
PWM duty değerini %99 - %0 aralığında kullanman daha doğru olacaktır. PWM yi %0 yaptığın zaman PWM sinyalini CCP1CON registerinden iptal etmen gerekir aksi halde çıkış pininde sabit high kalabilir.

Ete



ilhuns

#7
Merhaba kusura bakmayin yanlis kodlari vermisim dosyalar bende sorunsuz aciliyor :( onerilerinize istinaden tekrar bastan deniyecegim
'****************************************************************
'*  Name    : MANYETIK.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2017 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 9/3/2017                                          *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
@ __config _XT_OSC & _WDT_ON & _LVP_OFF & _CP_OFF

PORTA=0:TRISA=%00000000
PORTB=1:TRISB=%00000000
PORTC=0:TRISC=%00000000
PORTD=0:TRISD=%00001111
T2CON = %00000101
PR2=24

DEFINE OSC 4

'HPWM AYARLARI
DEFINE CCP1_REG   PORTC   
DEFINE CCP1_BIT     2     
DEFINE CCP2_REG   PORTC   
DEFINE CCP2_BIT     1       

'DEGISKENLER
HAM var word
X   VAR WORD
DUTY VAR BYTE
YONA VAR BYTE


HAM=0
YONA=0

ANA:
if YONA=0 THEN
    PORTB.1=1
    PORTB.0=0
    ENDIF
IF YONA=1 THEN
    PORTB.1=0
    PORTB.0=1
    ENDIF
  IF PORTD.1=1 THEN
    SELECT CASE YONA
    CASE 0
    PAUSE 500
    YONA=1
    CASE 1
    PAUSE 500
    YONA=0
    END SELECT
    ENDIF
   
  IF PORTD.0=1 THEN
    SELECT CASE YONA
    CASE 0
    PAUSE 500
    GOTO SOL_CALIS
    CASE 1
    PAUSE 500
    GOTO SAG_CALIS
    END SELECT
   
    ENDIF
    PORTB.2=0
    PORTB.3=1
GOTO ANA 
 
 
  SOL_CALIS:
       PORTB.2=1
       PORTB.3=0
       DUTY=50
       
       CCP1CON.2=1   
       CCP1CON.3=1
       
     
       X=(PR2+1)* DUTY /25
       CCP1CON.4=X.0
       CCP1CON.5=X.1
       CCPR1L=X>>2
       
       if PORTD.2=1 THEN
       PR2=PR2+24
       PAUSE 300
       ENDIF
       IF PORTD.3=1 THEN
       PR2=PR2-24
       PAUSE 300
       ENDIF
       IF PR2<=24 THEN
       PR2=24
       ENDIF
       IF PR2=>240 THEN
       PR2=240
       ENDIF
       
       IF PORTD.0=1 THEN
       PAUSE 500
       CCP1CON.2=0
       CCP1CON.3=0
       CCP1CON=0
       PR2=24
       GOTO ANA
       ENDIF
       
       GOTO SOL_CALIS
       
SAG_CALIS:
     PORTB.2=1
     PORTB.3=0
     DUTY=50
       
       CCP2CON.2=1   
       CCP2CON.3=1
       
     
       PR2=((1024-HAM)*/5625)/100+24
       
       X=(PR2+1)* DUTY /25
       CCP2CON.4=X.0
       CCP2CON.5=X.1
       CCPR2L=X>>2
       
       if PORTD.2=1 THEN
       PR2=PR2+24
       PAUSE 300
       ENDIF
       IF PORTD.3=1 THEN
       PR2=PR2-24
       PAUSE 300
       ENDIF
       IF PR2<=24 THEN
       PR2=24
       ENDIF
       IF PR2=>240 THEN
       PR2=240
       ENDIF
       
       IF PORTD.0=1 THEN
       PAUSE 500
       CCP2CON.2=0
       CCP2CON.3=0
       CCP2CON=0
       PR2=24
       GOTO ANA
       ENDIF
GOTO SAG_CALIS

END

ete

Bana kalırsa buraya koyduğun rar dosyasını açmaya çalış. Açılmıyor dosya hatası veriyor.

Sağ_Calış kısmındaki hata olsa olsa
PR2=((1024-HAM)*/5625)/100+24
komut satırından olur. Bence bu satırı oradan sil. Eski programdan kalmış muhtemelen. Çünki yeni bir pr2 değeri hesaplıyor. HAM adc den okunup hesaplanıypr ama sende ADC yok. Satırı sil bence.
Birde PR2=PR2+24 veya PR2=PR2-24  komut satırları bence tehlike arzediyor. PR2 8 bitlik bir registerdir. Değerini 24 ekleyerek değiştirmeye kalkarsan ipin ucunu kaçırırsın. Nedenmi? aşağıdaki açıklamaya bak o zaman.
PR2=24 ile program açılıyor. Buna sürekli 24 eklersek ne olur bir bakalım.
24-48-72-96-120-144-168-192-216-240-264 olmaya çalışacak ama değer 255 den büyük olamayacağı için 264-256=8 değerini alır otomatikman. Bu noktadan sonra senin sistemin şaşar. çünki bu noktadan sonra artır tuşuna basıldıkça 24 rakamı 8 üzerine eklenip o şekilde devam eder.

Benzer şekilde diyelimki 120 desin ve eksiltme tuşuna basıyorsun.
120 - 96 - 72 - 48 -24 - 0  bu noktadan sonra senin kontrol satırın if pr2<=24 then pr2=24 şeklinde olan değerin 24 den aşağı düşmesini engeller.
Bu durumda artırma kısmına da  IF PR2<24 then pr2=240 şeklinde bir sınırlama koyman daha doğru olur.

ete

ilhuns

Yardimlariniz icin cok tesekkurler. Kodlarimi su sekilde duzenledim

@ __config _XT_OSC & _WDT_ON & _LVP_OFF & _CP_OFF

PORTA=0:TRISA=%00000000
PORTB=1:TRISB=%00000000
PORTC=0:TRISC=%00000000
PORTD=0:TRISD=%00001111
T2CON = %00000101
PR2=24

DEFINE OSC 20

'HPWM AYARLARI
DEFINE CCP1_REG   PORTC   
DEFINE CCP1_BIT     2     
DEFINE CCP2_REG   PORTC   
DEFINE CCP2_BIT     1       

'DEGISKENLER
X   VAR WORD
HIZ VAR WORD
YONA VAR BYTE


hiz=10
YONA=0

ANA:
if YONA=0 THEN
    PORTB.1=0
    PORTB.0=1
    ENDIF
IF YONA=1 THEN
    PORTB.1=1
    PORTB.0=0
    ENDIF
  IF PORTD.1=1 THEN
    SELECT CASE YONA
    CASE 0
    PAUSE 500
    YONA=1
    CASE 1
    PAUSE 500
    YONA=0
    END SELECT
    ENDIF
   
  IF PORTD.0=1 THEN
    SELECT CASE YONA
    CASE 0
    PAUSE 500
    GOTO SOL_CALIS
    CASE 1
    PAUSE 500
    GOTO SAG_CALIS
    END SELECT
   
    ENDIF
    PORTB.2=0
    PORTB.3=1
GOTO ANA 
 
 
  SOL_CALIS:
       PORTB.2=1
       PORTB.3=0
       PORTB.4=0
       PORTB.5=1
       
       CCP1CON.2=1   
       CCP1CON.3=1
       
     
       X=50 * 4 * hiz/100
       CCP1CON.4=X.0
       CCP1CON.5=X.1
       CCPR1L=X>>2
       
       if PORTD.2=1 THEN
       HIZ=HIZ+10
       PAUSE 300
       ENDIF
       IF PORTD.3=1 THEN
       HIZ=HIZ-10
       PAUSE 300
       ENDIF
       IF HIZ<10 THEN
       HIZ=10
       ENDIF
       IF HIZ>100 THEN
       HIZ=100
       ENDIF
       
       IF PORTD.0=1 THEN
       PAUSE 500
       CCP1CON.2=0
       CCP1CON.3=0
       CCP1CON=0
       CCPR1L=0
       hiz=10
       GOTO ANA
       ENDIF
       
       GOTO SOL_CALIS
       
  SAG_CALIS:
       
       PORTB.2=1
       PORTB.3=0
       PORTB.4=1
       PORTB.5=0
       
       CCP1CON.2=1   
       CCP1CON.3=1
       
     
       X=50 * 4 * hiz/100
       CCP1CON.4=X.0
       CCP1CON.5=X.1
       CCPR1L=X>>2
       
       if PORTD.2=1 THEN
       HIZ=HIZ+10
       PAUSE 300
       ENDIF
       IF PORTD.3=1 THEN
       HIZ=HIZ-10
       PAUSE 300
       ENDIF
       IF HIZ<10 THEN
       HIZ=10
       ENDIF
       IF HIZ>100 THEN
       HIZ=100
       ENDIF
       
       IF PORTD.0=1 THEN
       PAUSE 500
       CCP1CON.2=0
       CCP1CON.3=0
       CCP1CON=0
       CCPR1L=0
       HIZ=10
       GOTO ANA
       ENDIF
       
      GOTO SAG_CALIS
END


PWM sinyalinide tavsiyeniz uzerine en1 pininden veriyorum motor yon kontrolu icinde IN1 ve IN2 pinlerini kullaniyorum ancak bu sefer simulasyonda su hatayi almaktayim

Simulation is not running in real time due to excessive CPU load.


ete

O bir hata değil ikaz. Pc nin işlemcisi çok güçlü olmadığından simulasyonun beklenenden yavaş yapıldığını söylüyor. Bu da normal bir durum.
Ete

Powered by EzPortal