标题:
关于步进电机加快转速就抖动的问题
[打印本页]
作者:
蓝琪
时间:
2018-12-6 10:34
标题:
关于步进电机加快转速就抖动的问题
步进电机加快电机转速就会发生只抖动现象,有什么解决办法吗
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
#define MotorData P1 //步进电机控制接口定义
//uchar phasecw[4] ={0x08,0x04,0x02,0x01};//正转 电机导通相序 D-C-B-A
//uchar phaseccw[4]={0x01,0x02,0x04,0x08};//反转 电机导通相序 A-B-C-D
uchar phasecw[8] ={0x06,0x07,0x03,0x0b,0x09,0x0d,0x0c,0x0e};//正转 电机导通相序 D-C-B-A
uchar phaseccw[8]={0x0e,0x0c,0x0d,0x09,0x0b,0x03,0x07,0x06};//反转 电机导通相序 A-B-C-D
//ms延时函数
void Delay_xms(uint x)
{
uint i,j;
for(i=0;i<x;i++)
for(j=0;j<112;j++);
}
//顺时针转动
void MotorCW(void)
{
uchar i;
for(i=0;i<8;i++)
{
MotorData=phasecw[i];
Delay_xms(1);//转速调节
}
}
//逆时针转动
void MotorCCW(void)
{
uchar i;
for(i=0;i<8;i++)
{
MotorData=phaseccw[i];
Delay_xms(1);//转速调节
}
}
//停止转动
void MotorStop(void)
{
MotorData=0x00;
}
//主函数
void main(void)
{
uint i;
Delay_xms(50);//等待系统稳定
while(1)
{
for(i=0;i<500;i++)
{
MotorCW(); //顺时针转动
}
MotorStop(); //停止转动
Delay_xms(500);
for(i=0;i<500;i++)
{
MotorCCW(); //逆时针转动
}
MotorStop(); //停止转动
Delay_xms(500);
}
}
复制代码
作者:
黑五类
时间:
2018-12-6 11:44
帮你找了个回答:
肯定是转速过高的问题,重新看一下步进电机和驱动器的矩频特性,和你的负载力矩,重新计算一下,是否满足负载力矩的要求,负载力矩包含本身的力矩和加减速力矩,启动力矩小了也能解决一部分问题,如果最终不行的话,只能换步进电机或驱动器了(在额定范围内提高驱动器的电源电压也能适当提高点转矩)
作者:
sxhwdz
时间:
2018-12-6 15:18
做成变频启动,频率逐渐升高
作者:
qwrjnb
时间:
2018-12-6 16:24
跟频率有一定关系,也有可能频率过低。
作者:
bucker
时间:
2018-12-6 21:22
转速高了发生抖动说明扭矩不足了,只能降低最高的驱动频率、换大功率电机或加大驱动器的功率。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1