首先你要搞明白步进电动机的原理:它是一种把电脉冲控制信号转换成角位移或直线位移的控制元件,它同专用电源供给电脉,每输入一个脉冲电机就前进一步.
通过控制脉冲数实现步进电机的位移,通过控制脉冲频率实现步进电机转速控制。如果采用内置控制脉冲发生器的驱动器,可以通过电位器或模拟信号实现电机转速控制。
脉冲数决定电机的位移;频率决定电机的转速。
步进电机的主要特性:
1、 步进电机必须加驱动才可以运转, 驱动信号必须为脉冲信号,没有脉冲的时候,
步进电机静止, 如果加入适当的脉冲信号, 就会以一定的角度(称为步角)转动。转
动的速度和脉冲的频率成正比。
2、 黑金刚配套的是 28BYJ48 5V 驱动的4 相5 线的步进电机,而且是减速步进电
机,减速比为1:64,步进角为5.625/64 度。如果需要转动1 圈,那么需要
360/5.625*64=4096 个脉冲信号。
3、 步进电机具有瞬间启动和急速停止的优越特性。
4、 改变脉冲的顺序, 可以方便的改变转动的方向。
给个程序你吧,参考参考
4、C 语言驱动程序:
/******************************步进电机的驱动*************************************
;FOSC = 12MHz
;---------------------------------------------------------------------------------
; 步进电机的驱动信号必须为脉冲信号!!! 转动的速度和脉冲的频率成正比!!!
; 本步进电机步进角为 5.625 度 . 一圈 360 度 , 需要64 个脉冲完成!!!
;---------------------------------------------------------------------------------
; A 组线圈对应 P0.0
; B 组线圈对应 P0.1
; C 组线圈对应 P0.2
; D 组线圈对应 P0.3
; 正转次序: AB 组--BC 组--CD 组--DA组 (即一个脉冲,正转5.625 度)
;----------------------------------------------------------------------------------
**********************************************************************************/
/*头文件*/
#include
#include
#define uint unsigned int
#define uchar unsigned char
#define nop() _nop_()
uchar code table1[]={0x03,0x06,0x0c,0x09}; /*正转表*/
uchar code table2[]={0x03,0x09,0x0c,0x06}; /*反转表*/
#define motor P0
void delay(uchar ms) /*延时*/
{
uchar j;
while(ms--){
for(j=0;j<250;j++)
{;}
}
}
void main()
{
uchar i,j;
while(1){
//正转3 圈共192 个脉冲
j=0;
for(i=0;i<192;i++){
motor = 0x00;
motor = table1[j];
j++;
if(j>=4) j=0;
delay(2);
}
delay(200);
delay(200);
delay(200);
delay(200);
delay(200);
//正转2 圈共128 个脉冲
j=0;
for(i=0;i<128;i++){
motor = 0x00;
motor = table2[j];
j++;
if(j>=4) j=0;
delay(2);
}
delay(200);
delay(200);
delay(200);
delay(200);
delay(200);
}
}