PIC16F84 İle Step Motor Kontrolü

  • Konbuyu başlatan SerkaN
  • Başlangıç tarihi

SerkaN

Üye
Katılım
2 Mar 2006
Mesajlar
195
Puanları
6
Yaş
38
stepmotor.gif


Devre PIC16F84 ile Step motor kontrol ediyor.Sağ Butonu Motoru Sağa Döndürmeyi,Sol Butonu Motoru Sola Döndürmeyi,Dur Butonu İse Motoru Durdurmayı Sağlar.Motorun hız ayarını osilatör frenkansını değiştirerek ayarlanır kristal yerine RC osilatör bağlanıp R direncinin değeri potla değiştirilerek hız ayarı eklenebilir
 

Ekli dosyalar

  • 2step1-asm.zip
    510 bayt · Görüntüleme: 19
  • 2STEP1-hex.zip
    285 bayt · Görüntüleme: 19
  • PIC_Step_Motor-dsn.zip
    11 KB · Görüntüleme: 20
Moderatör tarafında düzenlendi:
Konu Sah
SerkaN

SerkaN

Üye
Katılım
2 Mar 2006
Mesajlar
195
Puanları
6
Yaş
38
ASM VE HEX Kodları

ASM=



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
BTFSS PORTA,0
GOTO SAG
BTFSS PORTA,1
GOTO SOL
GOTO TEST

SOL
BTFSS PORTA,2
GOTO TEST

MOVLW B'11000110'
MOVWF PORTB
CALL BEKLE

MOVLW B'01000011'
MOVWF PORTB
CALL BEKLE

MOVLW B'01001001'
MOVWF PORTB
CALL BEKLE

MOVLW B'11001100'
MOVWF PORTB
CALL BEKLE
CLRF PORTB
BTFSS PORTA,0
GOTO SAG
GOTO SOL
;*******************************
SAG
BTFSS PORTA,2
GOTO TEST

MOVLW B'00110011'
MOVWF PORTB
CALL BEKLE

MOVLW B'00100110'
MOVWF PORTB
CALL BEKLE

MOVLW B'00101100'
MOVWF PORTB
CALL BEKLE

MOVLW B'00111001'
MOVWF PORTB
CALL BEKLE
CLRF PORTB
BTFSS PORTA,1
GOTO SOL
GOTO SAG

END



-----------------------------------------------------------------

HEX =


:020000040000FA
:100000000A282D30A0005F30A100A10B0528A00B0D
:1000100003280800A101A0018316FF308500860196
:1000200083128601051C2928851C17281228051D06
:100030001228C63086000120433086000120493056
:1000400086000120CC30860001208601051C29286D
:100050001728051D1228333086000120263086001F
:1000600001202C30860001203930860001208601D5
:06007000851C1728292859
:02400E00F13F80
:00000001FF

ALINTIDIR
 
Katılım
4 Eki 2006
Mesajlar
26
Puanları
1
Yaş
36
Bu programı deneyen varmı?Çalışıyormu devre?
 

Berdibek

Üye
Katılım
4 Eki 2006
Mesajlar
441
Puanları
1
Yaş
35
aslında program geliştirilebilir örneğin dışarıdan bir set değeri versek mesela 20 motor 20 kere dönse bir osilatör yardımı ile geliştirilebilir diye düşünüyorum farklı fikirleri olanlar varmı ?
 

mesutelb

Onursal Üye
Onursal Üye
Katılım
28 Eyl 2006
Mesajlar
1,189
Puanları
156
Biraz daha ayrıntılı ,denenmiş ve çalışıyor... Set olarak okulda yaptırıyoruz...
 

Ekli dosyalar

  • STEP MOTOR KONTROLÜ.rar
    277.3 KB · Görüntüleme: 568
Moderatör tarafında düzenlendi:

mesutelb

Onursal Üye
Onursal Üye
Katılım
28 Eyl 2006
Mesajlar
1,189
Puanları
156
PCW Compiler ile program daha kısa oluyor... (C )
PA0 butonuna basıldığında 2 fazlı sürülür
PA1 butonuna basıldığında saat yönünün tersine sürülür
PA2 butonu ile durur


#include<16f84A.h>
#use Delay(clock=4000000)
#fuses XT,NOWDT,NOPROTECT
#byte port_a=5
#byte port_b=6

int const a[4]={0x0C,0x06,0x03,0x09};
io_set(){
set_tris_a(0x1f);
set_tris_b(0x00);
}
main(){

int in,k;

io_set();

while(1) {
in=0;
port_b=0;
in=~port_a&0x01;

while(in==1)
{
for(k=0;k<4;k++){
port_b=a[k];delay_ms(50);

if(input(PIN_A2)==0)

break;
}
if(input(PIN_A2)==0)

break;



}
}
}

Diğer bir çözüm C ile


#include<16f84A.h>
#use Delay(clock=4000000)
#fuses XT,NOWDT,NOPROTECT
#byte port_a=5
#byte port_b=6



int const a[4]={0x0C,0x06,0x03,0x09};
int const d[4]={0x09,0x03,0x06,0x0C};

io_set(){
set_tris_a(0x1f);
set_tris_b(0x00);
}
main(){

int in,k,an;

io_set();

while(1) {
in=port_a&0x01;
an=port_a&0x02;


while(in==0){
if(INPUT(PIN_A2)==0)
break;

for(k=0;k<4;k++){
port_b=a[k];delay_ms(20);
}}

while(an==0){
if(INPUT(PIN_A2)==0)
break;

for(k=0;k<4;k++){
port_b=d[k];delay_ms(20);
}} }}
 

Ekli dosyalar

  • step1.rar
    10 KB · Görüntüleme: 132
Moderatör tarafında düzenlendi:

qwes

Üye
Katılım
9 Ara 2006
Mesajlar
8
Puanları
1
pratik için sakıncalı bende sağa veya sola dallanma yapıldıktan sonra, etiketin altına bi gecikme daha yazın,,yoksa düşünün sağa dönen motor anında sola dönüş yapması bekleniyo,bu imkansız , motoru yakarsınız amann
 

kpasali

Üye
Katılım
16 Şub 2007
Mesajlar
19
Puanları
1
Yaş
36
güzel paylaşım. teşekkürler. bi paylaşımda benden; step motorları bilgisayar ile kontrol etmek isterseniz.

devre şeması
stepdrive.gif



1 pic ile 2 motor sürebiliyorsun. yön ve adım pulslerini printer porttan alıyor.
programcılık bilginiz varsa kendi yazdığınız küçük bir programla devreyi çalıştırabilirsiniz. programcılıktan anlamam derseniz verdiğim siteden indireceğiniz programla çalıştırabilirsiniz
alıntı yaptığım site devreyi cnc ler için tasarlamış, işte adresi

www.dakeng.com

(yalnız orjinal cnc kontrol programı xp ile uyumlu değil, ya dos'tan açmanız veya başka bir işletim sistemi kullanmanız gerekli)
 
Katılım
31 Eki 2008
Mesajlar
1
Puanları
1
Yaş
36
öncelikle cevabınız için şimdiden teşekkür ederim. ben bu programı yüklüyorum ama devre çalışmıyor
 

Benzer Konular

Forum istatistikleri

Konular
117,244
Mesajlar
826,122
Kullanıcılar
426,855
Son üye
Mustafa6127

Yeni konular

Üst