Step Motor kullanımı????

Başlatan lovely_man, 04 Şubat 2005, 22:56:30

lovely_man

Arkadaşlar,ben bir step motoru pbp ile kontrol etmek istiyorum.Bana yardımcı olacal olan var mı?Şimdiden çok teşekkür ederim..

SpeedyX

arkadaşım
step motorunun özelliklerinden bahset öncelikle.

victor

arkadaşlar bende aynı şekilde
step motorlar hakkında benimde bilgiye ihtiyacım var
acaba bütün step motorlar
1-2-4-8 sayılarının ikilik düzendeki karşılıkları ile mi kontrol ediliyor?

1 = 0 0 0 1
2 = 0 0 1 0
4 = 0 1 0 0
8 = 1 0 0 0

gibi


hangi sitede denk geldiğimi hatırlamıyorum  ama
sanki şu şekilde kontrol edilen step motorlarda var galiba

3  =  0 0 1 1
6  =  0 1 1 0
12 = 1 1 0 0
9  = 1 0 0 1

bu ikilik sayı sistemi kodlarıyla
kontrol edilen motorlar var mı
acaba ben mi yanlış anladım?
bu konuda yardımcı olursanız sevinirim
şimdiden teşekkürler

herkezzlere kolay gelsin

lovely_man

@SpeedyX
  Elimde 7.5 derecelik bir tane step motor var.Bunu kontrol etmek istiyorum.Yardımlarınız olursa çok sevinirim...

victor

benimde tam bir bilgim yok ama
tahminimce
1 = 0001
bilgisi verildiğinde step motorun o anki pozisyonundan
7,5 derecelik bir hareket sağlarsın
daha sonra
2=0010
bilgisinde ise ilk hareketten sonra bir 7,5 derecelik bir hareket daha elde ediyorsun
bu şekilde
1-2-4-8 bilgilerini arka arkaya verdikten sonra
7,5 X 4 = 30 derecelik bir hareket elde edersin
tam döndürmek için
az önce yapılan işlemleri
bir döngüye sokarak
1-2-4-8-1-2-4-8-1-2-4-8-1-2-4-8 gibi
istediğin hareketi elde etmek mümkün
yada en azından ben böyle biliyorum
denersen sonuç hakkında banada bilgi verirsen
dediklerin doğru yada yanlışmış gibilerinde
memnun olurum
benim aklıma bu geldi

SpeedyX

eğer step motorun bu şekildeyse, yani 4 uçlu ise;


şekildeki gibi kontrol ediliyor.


bir çok transistör yerine, pic ile direk sürebileceğin ULN2003 ü tavsiye edebilirim.

tabiki yukarıdaki animasyonda gördüğün, benim tercihimdir.
eğer sen istersen
sadece tek veya sadece çift olarak ta hareket ettirebilirsin.



data 1,2,3,4 pinleriyle 1,2,3,4 pinleri eştir. buradan pic ile bir sıra oluşturarak bişeyler yapabilirsin.

http://www.doc.ic.ac.uk/~ih/doc/stepper/control2/sequence.html
burada da basit bir uygulamanın geniş olarak anlatımı var.
adam paralel porta bağlayarak kullanmış step motoru.
yazılımı ve bağlantı şemasıda mevcut.
Kolay gelsin.

victor

teşekkür
tam olarak doğru olmasada yanlış hatırlamıyormuşum

soru1:
peki bu nokta vuruşlu yazıcılardaki
merdaneyi döndüren motor
step motor mu?
step motor ise boyutlarına göre
bayağı güçlü sayılabilecek bir motor olması lazım.
benim bu konularda çok fazla bir bilgim yok
o yüzden soruyorum

soru2:sadece pic + direnç + transistör veya tristör
kullanılarak kontrol imkanı varmı?
yoksa ekstra bir entegre  mi kullanmak gerekiyor ?

teşekkürler kolay gelsin

SpeedyX

1. cevap
evet o bir step motor.
güçlü sayılır ama oradaki ray sisteminde sürtünme yağ ile ve mekanik olarak azaltıldığından rahatlıkla çalışıyor sistem.

2.cevap
onada evet
ben bunu örnek olarak verdim.
tabiki transistörler ile şaseye veya vcc ye çekerek kullanılabilir.
4 çıkışlı bir step motor için (iç bağlantısı da önemli ama genelde) 8 adet transistör gerekli.
ve tabi 8adet çıkış pini gerekli pic de. yada 4adet çıkış pini ve bir adet dijital invertör entegresi.
bunların hepsinin yerine uln2003 yeterli oluyor.
ben olsam uln2003 ü tercih ederdim. son olarak uln2003 ü farklı bağlantı şekilleri ile 2pin ile bile kullanabilirsiniz.

lovely_man

@SpeedyX
 Dostum bana bunun basic kodu asıl lazım olanı?Onu bir türlü bulamıyorum.Verdiğin bilgilerde çok işime yaradı.Bunun içinde sağol.Yanlız Basic koduda elinde varsa sana minnettar kalırım...

SpeedyX

dostum aslında bukadar anlatımdan sonra kendin yapmalıydın bunu.
işin kısası şu aslında
pbp ile çok ilgili değilim, c veya asm olsa neyse de
ben yine bişeyler yazmaya çalışayım sana.

senin motorun rb0-3 e bağlı olsun.
portb con 6
btnSag con portb.6
btnSol  con portb.7

x var byte    ' bu bizim adım numaramız.
yon var boolean 'true ise saga

stepx[7] = {0001,1001,1000,1100,
                  0100,0110,0010,0011} ' buda adımlarımızın adı

main:
    if btnSag then yon = True
    if btnSol then yon = False

    if yon then
        x=x+1
    else
        x=x-1
    Endif

     if x<0 then x=7
     if x>7 then x=0

     portb = stepx[x]
goto main


bilgim kadarıyla bişeyler yazmaya çalıştım. olayın özü bu. kodlarda noktalama işaretleri veya tanımlamalar hatalıysa affola.


buda çok önceleri başka bir motor için yazdığım assembly kodudur.
bir hız uygulaması. en son hızda benim elimdeki motorum yanmıştı. ;)
;	4 uçlu bipolar step motor kontrol programi (type: deney)
;
;	Butonlar	Pinler
;	Yön		PORTA,0
;	Dur/Çalis	PORTA,1
;	hiz +		PORTA,2
;	hiz -		PORTA,3
;
;	Motor Baglantisi
;	PORTB,0 -> -OOOO-|
;	PORTB,1 -> ------|
;	PORTB,2 -> -OOOO-|
;	PORTB,3 -> ------|
;	PORTB,4 -> inverter gate enable : "1"
;
;	yonreg: b'00000000' = "saga" | b'11111111' = "sola"
;
;	Yazan: Eray ÖZTÜRK <-> 17/02/2004
;

	LIST	P=16F84
	INCLUDE	"P16F84.INC"

	__CONFIG _WDT_OFF&_XT_OSC&_CP_OFF&_PWRTE_OFF
	
	CBLOCK	0x0C
		sayac1, sayac2, adim, yonreg, BEK1, BEK3, BEK4
	ENDC

 #define	tusYon		PORTA,0
 #define	tusPlayPause	PORTA,1
 #define	tusHizInc	PORTA,2
 #define	tusHizDec	PORTA,3
 #define	Power		PORTB,4
 #define	PowerLed	PORTB,5
 #define	SonLed		PORTB,6

	clrf	PORTB
	bsf	STATUS,5
	MOVLW	H'FF'
	MOVWF	TRISA
	CLRF	TRISB
	bcf	STATUS,5
	movlw	H'FF'
	movwf	adim
	movwf	sayac1
	clrf	PORTB
	clrf	yonreg
	goto	basla
	
basla	bsf	PowerLed
	btfss	tusPlayPause
	goto	basla
	incf	sayac1,F
	bsf	Power
	goto	hazirla
	
hazirla	bsf	Power
	bcf	PowerLed
	btfsc	tusYon
	call	azalt
	btfsc	tusHizInc
	goto	sag
	btfsc	tusHizDec
	goto	sol
	bsf	SonLed
	goto	hazirla

azalt	movlw	d'10'
	addwf	sayac1,F
	call	yarimsn
	return

sag	incf	adim,F
	call	dondur
	goto	hazirla

sol	decf	adim,F
	call	dondur
	goto	hazirla

dondur	movf	adim,W
	andlw	b'00000111'
	call	adimtbl
	andlw	b'00001111'
	movwf	PORTB
	bsf	Power
	call	gecikme
	return
	
adimtbl	addwf	PCL,F
	retlw	b'0001'
	retlw	b'1001'
	retlw	b'1000'
	retlw	b'1010'
	retlw	b'0010'
	retlw	b'0110'
	retlw	b'0100'
	retlw	b'0101'

gecikme	movlw	H'ff'
	movwf	sayac2
	decfsz	sayac2,F
	goto	$-1
	decfsz	sayac1,F
	goto	$-5
	return

yarimsn	movlw	d'5'		; ~ yarim sn gecikme
	movwf	bek1
bk3	movlw	h'dd'
	movwf	bek3
bk0	movlw	h'ff'
	movwf	bek4
bk1	decfsz	bek4,F
	goto	bk1
bk2	decfsz	bek3,F
	goto	bk0
	decfsz	bek1,F
	goto	bk3
	return

	end


kolay gelsin.
bundan sonrasında başarmamanız için bir neden göremiyorum.

lovely_man

Dostum sana ne kadar teşekkür etsem azdır.Bende kendim yapmaya çalıştım fakat bilgi eksikliği buna engel oldu ne yazık ki.Tekrar teşekkür ederim.Başarılar.

SpeedyX

yalnız ben ilk programda unutmuşum.
en son
"goto main"
den önce
biraz bekleme koy mesela 100ms veya daha az.

lovely_man

Tamam SpeedyX.Teşekkürler...

microcozmoz

Arkadaşım,

Aleegro micronun UCN5804 entegresini kullanmanı tavsiye ederim.Kullanımı başlangıç için gerçekten kolay...

Zamanında türkiyedeki temsilciden sample istemiştim..Allegro micronun sitesinden öğrenebilirsin firmayı...

Kolay gelsin
"Bütün bu şerâitten daha elîm ve daha vahim olmak üzere, memleketin dahilinde, iktidara sahip olanlar gaflet ve dalâlet ve hattâ hıyanet içinde bulunabilirler."

lovely_man

Önerin için teşekkür ederin arkadaşım.Fakat ben bu projeyi pic ile yapmak zorundayım.İlgilendiğin için teşekkür ederim.BAşarılar...