步进电机怎么加速与减速???

步进电机怎么加速与减速???,第1张

进电机的速度,取决于您的软件给步进电机发的脉冲信号的频度。一种固定的频度对应于一个固定的转速。如要减速度,只要把每个脉冲的间隔时间逐步加大一点;如要加速,只要把每个脉冲的间隔时间逐步缩短一点。如果要求高一些,需要考虑的问题就复杂一些:主要是加速度过猛有“失步”的可能,为避免失步通常需要根据步进电机的最大力矩、负载的惯性等等因素确定一个加速度的最大绝对值。按照这个加速度的**来设计软件算法。如此,程序实现就需要一定技巧。如果要求不高,把速度尽量放低就可以了。

#include "reg52.h"

void delay(unsigned int t)

//Motor

sbit F1 = P1^0

sbit F2 = P1^1

sbit F3 = P1^2

sbit F4 = P1^3

unsigned char code FFW[8]={0xfe,0xfc,0xfd,0xf9,0xfb,0xf3,0xf7,0xf6}//反转

unsigned char code FFZ[8]={0xf6,0xf7,0xf3,0xfb,0xf9,0xfd,0xfc,0xfe}//正转

unsigned int K

/**********************************************************************

* *

* 步进电机驱动 *

* *

***********************************************************************/

void motor_ffw()

{

unsigned char i

unsigned int j

for (j=0j<12j++) //转1*n圈

{

for (i=0i<8i++) //一个周期转30度

{

if(K==1) P1 = FFW[i]&0x1f //取数据

if(K==2) P1 = FFZ[i]&0x1f

delay(15) //调节转速

}

}

}

/******************************************************

*

* 延时程序

*

********************************************************/

void delay(unsigned int t)

{

unsigned int k

while(t--)

{

for(k=0k<100k++)

{ }

}

}

main()

{

while(1)

{

K=1

motor_ffw()

K=2

motor_ffw()

}

}

给你个例子,这是正反转的可以用这个修改出加减速程序

求采纳为满意回答。

内容:1、本程序用于测试4相步进电机常规驱动

2、需要用跳帽或者杜邦线把信号输出端和对应的步进电机信号输入端连接起来

3、速度不可以调节的过快,不然就没有力矩转动了

4、按s4(设置成独立按键模式)可以控制正反转

------------------------------------------------*/

#include <reg52.h>

bit Flag//定义正反转标志位

unsigned char code F_Rotation[4]={0xf1,0xf2,0xf4,0xf8}//正转表格

unsigned char code B_Rotation[4]={0xf8,0xf4,0xf2,0xf1}//反转表格

/******************************************************************/

/*延时函数*/

/******************************************************************/

void Delay(unsigned int i)//延时

{

while(--i)

}

/******************************************************************/

/* 主函数 */

/******************************************************************/

main()

{

unsigned char i

EX1=1//外部中断0开

IT1=1//边沿触发

EA=1 //全局中断开

while(!Flag)

{

P0=0x71//显示 F 标示正转

for(i=0i<4i++) //4相

{

P1=F_Rotation[i] //输出对应的相 可以自行换成反转表格

Delay(500) //改变这个参数可以调整电机转速 ,数字越小,转速越大

}

}

while(Flag)

{

P0=0x7C//显示 b 标示反转

for(i=0i<4i++) //4相

{

P1=B_Rotation[i] //输出对应的相

Delay(500) //改变这个参数可以调整电机转速 ,数字越小,转速越大

}

}

}

/******************************************************************/

/* 中断入口函数 */

/******************************************************************/

void ISR_Key(void) interrupt 2 using 1

{

Delay(300)

Flag=!Flag//s3按下触发一次,标志位取反

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7759189.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-09
下一篇 2023-04-09

发表评论

登录后才能评论

评论列表(0条)

保存