STEP MOTOR PROGRAM HATASI

Başlatan pwm3434, 12 Şubat 2012, 23:18:27

pwm3434

herkese kolay  gelsin    bu  program niçin  hatalı  çalıyor  ustalar. pic  enerjilendiği an  butonlara dokunmadan step motor  dönmeye  başlıyor.

@ DEVICE pic16F628                      'işlemci 16F628                                
@ DEVICE pic16F628, WDT_ON              'Watch Dog timer açık
@ DEVICE pic16F628, PWRT_ON             'Power on timer açık
@ DEVICE pic16F628, PROTECT_OFF         'Kod Koruma kapalı
@ DEVICE pic16F628, MCLR_OFF             'MCLR pini kullanılıyor.
@ DEVICE pic16F628, INTRC_OSC_NOCLKOUT
PORTA=0
PORTB=0
TRISA=255   
TRISB=%01110000
OPTION_REG.7=1
I VAR BYTE
Z VAR BYTE
Z=50

BASLA:
IF PORTB.5=0 THEN
FOR I=1 TO 6
HIGH PORTB.0
PAUSE Z
LOW PORTB.0
PAUSE Z

HIGH PORTB.1
PAUSE Z
LOW PORTB.1
PAUSE Z

HIGH PORTB.2
PAUSE Z
LOW PORTB.2
PAUSE Z


HIGH PORTB.3
PAUSE Z
LOW PORTB.3
PAUSE Z
NEXT
ENDIF

IF PORTB.6=0 THEN
FOR I=1 TO 13
HIGH PORTB.0
PAUSE Z
LOW PORTB.0
PAUSE Z

HIGH PORTB.1
PAUSE Z
LOW PORTB.1
PAUSE Z

HIGH PORTB.2
PAUSE Z
LOW PORTB.2
PAUSE Z


HIGH PORTB.3
PAUSE Z
LOW PORTB.3
PAUSE Z

NEXT
ENDIF
GOTO BASLA

END

ete

BU komutu,
OPTION_REG.7=1
şöyle değiştir düzelir
OPTION_REG.7=0

ete



pwm3434

teşekkür ederim  hocam sorun çözüldü. ete hocam zengin olamadınızmı acaba  çünkü  çok  kişi  size  dua  ediyor :)

ete


Mucit23

Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

pwm3434

Tamam anladım hocam,ne diyeyim ki acizane, hayatta ki  mutluluğun  daha da ziyade olsun dileklerimle.

pwm3434

#6
lookup komutu uygulaması ile yaptım yukarıdaki  devreyi  hocam , gereksiz program satırlarından kurtuldum, program daha sade okunaklı oldu. ama bilmiyorum lookup komutunun dezavantajları varmıdır.
deger var byte
say var byte
i var byte
say=0
trisa=%00000000
trisb=%00000000
Main:
say=0:deger=0:i=0
For i=0 to 4
lookup say,[2,4,8,16],deger
pause 200
portb=deger
say=say+1
next i
goto main

end

ete

Lookup komutunun bir dezavantajı yok. Ama programında iki ufak bir kusur var bana kalırsa.
Birincisi tek döngü yetecek iken iki döngü çalıştırmışsın.
Bunlar SAY döngüsü ve I döngüsü.
İkinci kusur ise motora verilecek değer sayısı 4 adet olmasına rağmen sen döngüyü 5 addetlik çalıştırmışsın.
Bunları göz önüne alarak programı aşağıdaki gibi yazarsak daha iyi olurdu.

Ete



MAIN:
For SAY=0 to 3
lookup say,[2,4,8,16],deger
pause 200
portb=deger
next
goto main


pwm3434

pause 3' te tahminimce 4-6 aralığında devir yapıyor hocam program, pause 2 veya 1 yapınca hiç dönmüyor, motordan inilti geliyor. deviriri dahada yükseltebilmem için nasıl bir devre yapmalıyım hocam. 
Kullandığım sürücü ULN2003
BESLEME VOLTAJI 12 VOLT
STEP MOTOR küçük amatörler için 7 tl lik motor

bu motorla ancak bu kadar deviremi çıkılıyor hocam.


ELZEMEFE

UCN5804 gibi sürücü kullanman gerekiyor  hocam ..
inilti gelmesinin sebebi  motor blokları arası geçiş  çok hızlı olduğu için  motor bi sonraki adıma yetiştiremiyor..
bu daha  önce bende de oldu ..  ama motorun özellikleride  öenmli ..

ete

Step motorlarda devir frekans artırılarak artar. Ancak direkkalkışta yüksek frekans verirsen motor yerinden kımıldayamaz.
Bu nedenle pek çok kişinin rampa tabir ettiği kalkış sistemini uygulaman gerekiyor.
Motoru en düşük devirde kaldıracak sonra yavaş yavaş hızlandıracaksın.
Mesela orada yer alan pause değerini bir değişken ile ver (Pause sure şeklinde)
Başlangıçta SURE=200 olsun
Sonra her bir puls döngüsü (4 adetlik değer motora verildikten ) tamamlandıktan sonra SURE=SURE-10 şeklinde süreyi kısaltırsın.
Ancak SURE değeri 1 den küçük olmasın Yani sıfırlanmasın. hatat bana göre 10 dan küçük olmasın en başta bu şekilde dene bakalım ne sonuç alacaksın.
Ete

pwm3434

Hocam  bu şekildemi anlatmak isteniz acaba.  saniye/devir 1 hocam bu programla.
SURE VAR BYTE
deger var byte
say var byte
i var byte
say=0
trisa=%00000000
trisb=%00000000
SURE=200
Main:
say=0:deger=0
For SAY=0 to 4
lookup say,[2,4,8,32],deger
pause SURE
portb=deger
SURE=SURE-10
IF SURE<=10 THEN
SURE=20
ENDIF
next SAY
goto main
end

amacım max. devir görmek. pause'i 3 yaptığım zaman  ancak en yüksek devir  elde edebiliyorum  saniyede tahnimi olarak 3-6 arası bir  devir hocam  dahada  beceremedim   şimdilik.
SURE VAR BYTE
deger var byte
say var byte
i var byte
say=0
trisa=%00000000
trisb=%00000000
SURE=3
Main:
say=0:deger=0
For SAY=0 to 4
lookup say,[2,4,8,32],deger
pause SURE
portb=deger
next SAY
goto main
end

yukarıda  devirin frekansla artacağını  söylediniz hocam. frekans  demekten  kasıt pause  değeriyle oynamakmı yoksa  FREQOUT  komutuyla frekansmı üretmekmi.

KAZIMUGUR

Step motorlarda yeni başlayanlarca göz önüne alınmayan ama çok önemli olan bir olay var.
Özellikle yüksek devirler için kesinlikle şarttır.
Artan devirle birlikde motor torkunu ya da akımını sabit tutabilmek için uygulanan gerilim arttırılmalıdır.
Örnek , 5 V de 4A ile yaklaşık 4Nm veren motor 1000 devirde yaklaşık 40-50V ile beslenmelidir.
Bunun için bir nevi akım regülatörü kullanılır.
Motordan geçen akım küçük bir dirençle ölçülür ve değerlendirilir.
Genel olarak chopper deniliyor bu tip devrelere...

Mucit23

L297 bu işi yapıyor ama diyelim biz motoru 0 ile 3000 RPM arası çalıştırmak istiyorum. Besleme voltajını nasıl ayarlamamız gerekiyor. Yani farzedelimki motoru max 24V ile besleyebiliyoruz. Ozaman sizin dediğinize göre mesela motor dakikada 10RPM hızla dönüyorken voltajın düşük olması gerekiyor.  Ben bu gelirim nasıl ayarlarım. Mesela L297 chopper enteğresi olarak geçiyor. Ben bu enteğrenin motor besleme ucuna 40-50V versem eğer motor devrine göre besleme voltajını ayarlıyormu bu enteğre.
Bir ulusu yok etmenin En iyi yolu o ulusun dilini yok etmektir.

www.arectron.com/

KAZIMUGUR

#14
Akım regülatörü : Akım değerini belirlenmiş değerde sabit tutan devre.
Bunu ancak uyguladığı gerilimi değiştirerek yapar.
İster klasik analog ister pwm...
Gerilim regülatörü : Belirlenen gerilim değerini akım ne olursa olsun kaynak imkanları nisbetince limitsiz veren devre....

L297 , TB6560(bu çok iyi bir entegredir) bu işi yapıyorlar.
Ayrıca allegro nunda bir çok elemanı var.
Evet motor besleme girişlerine izin verilen max gerilim uygulanır.
O motora gereği kadarını pwm ile verir.
TB6560AHQ pdf incelerseniz çok güzel bilgiler var.

Tabi isterseniz ayrık elemanlarla da yapabilirsiniz...

Edit :

L297 dinasorların devrinden kalma dandik bir elemandır.
TB6560 inceleyince ne demek istediğimi daha iyi anlarsınız.

Bir örnekde Allegro dan olsun A3986
Çıkış moslarını sizin seçebileceğiniz bir chip.

Diğerleri için :
http://www.allegromicro.com/SearchResults.aspx?q=Dual%20Full-Bridge%20MOSFET%20Driver

Powered by EzPortal