PIC16F84 İle Step Motor Kontrolü

SerkaN

Üye
Katılım
2 Mar 2006
Mesajlar
195
Puanları
6
Yaş
40
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: 26
  • 2STEP1-hex.zip
    285 bayt · Görüntüleme: 22
  • PIC_Step_Motor-dsn.zip
    11 KB · Görüntüleme: 23
Moderatör tarafında düzenlendi:
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
 
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ı ?
 
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: 572
Moderatör tarafında düzenlendi:
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: 134
Moderatör tarafında düzenlendi:
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
 
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)
 
öncelikle cevabınız için şimdiden teşekkür ederim. ben bu programı yüklüyorum ama devre çalışmıyor
 

Forum istatistikleri

Konular
127,956
Mesajlar
913,898
Kullanıcılar
449,606
Son üye
rasit.

Yeni konular

Geri
Üst