Рет қаралды 22
【ステッピングモーター技術資料】
オリエンタルモーター(株):
www.orientalmo...
--------------------------------------------------------------------------------------------------------------------
*プログラムリストは、下記にあります↓
#C言語マイコン制御#ステッピングモータの駆動制御
【学習内容】
1:ステッピングモーターの駆動1
2:ステッピングモーターの駆動2
-----------------------------------------------------------------------------------
<プログラムリスト>(MPLABX Ver6.2)
コピー&ペーストでお使い下さい。
*”TABキー”でスペースの間隔の体裁を整えて下さい。
(プログラムの記述画面に”全角”のスペースが
含まれていると、ビルドに失敗します。)
-----------------------------------------------------------------------------------
[SW2=ON → ステッピングモーター加速・減速]
-----------------------------------------------------------------------------------
//**の部分の<、>を、半角文字に書き換えて下さい。
//PIC16F84A
#include "pic.h"
#pragma config FOSC=HS, WDTE=OFF, PWRTE=ON, CP=OFF
#define _XTAL_FREQ 10000000
#define max 25 //最高速度設定
#define acc 10 //加速度設定
volatile int exc;
volatile int k;
void delay(int k){
for(int m = k; m >= 0; m--) __delay_ms(0.1); //**
}
void drive(int k)
{
for(int i = 0 ;i < 4 ; i++ ) //**
{
PORTB = exc;
delay(k);
exc = exc >> 1; //**
}
exc = 0x80;
}
//メイン関数
void main (void)
{
TRISB = 0x00;
TRISA = 0b00100;
int exc = 0x80;
PORTB = exc;
do{ ; }while(RA2 == 0); //SW2 = ON?
while(1)
{
for( k = 100 ; k >= max ; k = k - k/acc){ //**
for(int rote = 12 ; rote > 0 ; rote--) drive(k); //**
}
do { drive(max); } while(RA2 == 0);
for( k = max ; k <= 100 ; k = k + k/acc){ //**
for(int rote = 12 ; rote > 0 ; rote--) drive(k); //**
}
do { drive(100); } while(RA2 == 0);
}
}