PIC16F84 İle Step Motor Kontrolü

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

SerkaN

Üye


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: 13
  • 2STEP1-hex.zip
    285 bayt · Görüntüleme: 18
  • PIC_Step_Motor-dsn.zip
    11 KB · Görüntüleme: 18
Moderatör tarafında düzenlendi:
Konu Sah

SerkaN

Üye
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
 

elektro_man

Üye
Bu programı deneyen varmı?Çalışıyormu devre?
 

Berdibek

Üye
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
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: 563
Moderatör tarafında düzenlendi:

mesutelb

Onursal Üye
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
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
güzel paylaşım. teşekkürler. bi paylaşımda benden; step motorları bilgisayar ile kontrol etmek isterseniz.

devre şeması



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)
 

mustafa levent

Üye
ö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
113,999
Mesajlar
802,321
Kullanıcılar
417,994
Son üye
Adnars

Yeni konular

Üst