当前位置:文档之家› 步进电机-插补算法stm32

步进电机-插补算法stm32

步进电机-插补算法stm32
步进电机-插补算法stm32

#include "stm32f10x.h"

#include "delay.h"

#include "misc.h"

#include

#include "stm32f10x_tim.h"

#include "stm32f10x_rcc.h"

#include "stm32f10x_usart.h"

#include

voidRCC_Configuration(void);

voidGPIO_Configuration(void);

voidNVIC_Configuration(void);

voidTIM_Configuration(void);

voidUSART_Configuration(void);

intfputc(intch,FILE *f);

intfgetc(FILE *f);

float Mx=1.44f,My=2.88f;//起点

float Nx=10.0f,Ny=7.61f;//终点

float X1,Y1;

float X2,Y2;

float X3,Y3;//三种方法走后的坐标

float k;//斜率

float b;//y=kx+b

float X,Y;//实际运行的坐标

float Delta1,Delta2,Delta3,Delta4;//三种方法的误差,4为不走最后一步的误差float Delta;//实际误差

// float DeltaMax;//最大误差

char way;//选择的走法

int a;//TIM6 中断次数

intnum=0;//总步数

inttx=1,ty=1;//用来判断中断是否发生

intnumx,numy;//计XY的步数

int counter=0;//计数值

float time;//时间

float nxd,nyd;//开始减速坐标

floatnx,ny;//nx=Nx-0.0144f;

float fenmu;//公式中分母

// intfrex[20]={2,10,30,60,100,150,220,300,390,500};

// intfrey[20]={2,10,30,60,100,150,220,300,390,500};

int frex[20]={1098,2931,7585,18242,37754,62245,81757,92414,97068,98901}; int frey[20]={1098,2931,7585,18242,37754,62245,81757,92414,97068,98901}; intprex[20]={0};

int prey[20]={0};

int main(void)

{

inti,j;

intnpwm=10; //加减速每段脉冲数

//算出预分频值

for(i=0;i<10;i++)

{

prex[i]=72000000/(frex[i]*200);

prey[i]=72000000/(frey[i]*200);

}

//配置,初始化

RCC_Configuration();

GPIO_Configuration();

USART_Configuration();

TIM_Configuration();

NVIC_Configuration();

Delay_Init();

TIM_Cmd(TIM2, ENABLE);//catch X Y

TIM_Cmd(TIM6, ENABLE);//计时

// TIM_SetCounter(TIM6,0);

//开始运行

{

//计算相关量

X=Mx;

Y=My;

k=(Ny-My)/(Nx-Mx);

b=My-k*Mx; //y=kx+b

nxd=Nx-90*0.0144f;

nyd=Ny-90*0.0144f;

nx=Nx-0.0144f;

ny=Ny-0.0144f;

fenmu=sqrt(k*k+1);

for(i=1;i<10;i++) //加速阶段,分10段

{

while(j

{

X1=X+0.0144f;

Y1=Y;

X2=X;

Y2=Y+0.0144f;

X3=X+0.0144f;

Y3=Y+0.0144f;

Delta1=fabs(k*X1-Y1+b)/fenmu;

Delta2=fabs(k*X2-Y2+b)/fenmu;

Delta3=fabs(k*X3-Y3+b)/fenmu; //三种走法的误差

//选择最小误差走法

if(Delta1

{way=1;Delta=Delta1;}

else

{way=2;Delta=Delta2;}

if(Delta3

{way=3;Delta=Delta3;}

switch (way) //实际走法,while()为等待中断发生(中断失能),以确保一步一脉冲{

case 1: X=X+0.0144f; TIM_Cmd(TIM3,ENABLE); while(tx); tx=1; break;

case 2: Y=Y+0.0144f; TIM_Cmd(TIM4,ENABLE); while(ty); ty=1; break;

case 3: X=X+0.0144f; Y=Y+0.0144f; TIM_Cmd(TIM3,ENABLE);TIM_Cmd(TIM4,ENABLE);while(tx||ty);tx=1;ty=1;break;

}

num++;

j++;

}

TIM_PrescalerConfig(TIM3, prex[i]-1,TIM_PSCReloadMode_Immediate); //改预分频,频率

TIM_PrescalerConfig(TIM4, prey[i]-1,TIM_PSCReloadMode_Immediate);

j=0;

}

while(X

{

X1=X+0.0144f;

Y1=Y;

X2=X;

Y2=Y+0.0144f;

X3=X+0.0144f;

Y3=Y+0.0144f;

Delta1=fabs(k*X1-Y1+b)/fenmu;

Delta2=fabs(k*X2-Y2+b)/fenmu;

Delta3=fabs(k*X3-Y3+b)/fenmu;

if(Delta1

{way=1;Delta=Delta1;}

else

{way=2;Delta=Delta2;}

if(Delta3

{way=3;Delta=Delta3;}

switch (way)

{

case 1: X=X+0.0144f; TIM_Cmd(TIM3,ENABLE); while(tx); tx=1; break;

case 2: Y=Y+0.0144f; TIM_Cmd(TIM4,ENABLE); while(ty); ty=1; break;

case 3: X=X+0.0144f; Y=Y+0.0144f; TIM_Cmd(TIM3,ENABLE);TIM_Cmd(TIM4,ENABLE);while(tx||ty);tx=1;ty=1;break;

}

num++;

// if(Delta>DeltaMax)

// DeltaMax=Delta;

}

for(i=8;i>=0;i--) //减速阶段,分10段

{

TIM_PrescalerConfig(TIM3, prex[i]-1,TIM_PSCReloadMode_Immediate); //改预分频,频率

TIM_PrescalerConfig(TIM4, prey[i]-1,TIM_PSCReloadMode_Immediate);

while(j

{

X1=X+0.0144f;

Y1=Y;

X2=X;

Y2=Y+0.0144f;

X3=X+0.0144f;

Y3=Y+0.0144f;

Delta1=fabs(k*X1-Y1+b)/fenmu;

Delta2=fabs(k*X2-Y2+b)/fenmu;

Delta3=fabs(k*X3-Y3+b)/fenmu; //三种走法的误差

//选择最小误差走法

if(Delta1

{way=1;Delta=Delta1;}

else

{way=2;Delta=Delta2;}

if(Delta3

{way=3;Delta=Delta3;}

switch (way) //实际走法,while()为等待中断发生(中断失能),以确保一步一脉冲{

case 1: X=X+0.0144f; TIM_Cmd(TIM3,ENABLE); while(tx); tx=1; break;

case 2: Y=Y+0.0144f; TIM_Cmd(TIM4,ENABLE); while(ty); ty=1; break;

case 3: X=X+0.0144f; Y=Y+0.0144f; TIM_Cmd(TIM3,ENABLE);TIM_Cmd(TIM4,ENABLE);while(tx||ty);tx=1;ty=1;break;

}

num++;

j++;

}

j=0;

}

while(X

{

X1=X+0.0144f;

Y1=Y;

X2=X;

Y2=Y+0.0144f;

X3=X+0.0144f;

Y3=Y+0.0144f;

Delta1=fabs(k*X1-Y1+b)/fenmu;

Delta2=fabs(k*X2-Y2+b)/fenmu;

Delta3=fabs(k*X3-Y3+b)/fenmu;

if(Delta1

{way=1;Delta=Delta1;}

else

{way=2;Delta=Delta2;}

if(Delta3

{way=3;Delta=Delta3;}

switch (way)

{

case 1: X=X+0.0144f; TIM_Cmd(TIM3,ENABLE); while(tx); tx=1; break;

case 2: Y=Y+0.0144f; TIM_Cmd(TIM4,ENABLE); while(ty); ty=1; break;

case 3: X=X+0.0144f; Y=Y+0.0144f; TIM_Cmd(TIM3,ENABLE);TIM_Cmd(TIM4,ENABLE);while(tx||ty);tx=1;ty=1;break;

}

num++;

// if(Delta>DeltaMax)

// DeltaMax=Delta;

}

//判断是否要走超出终点

{

X1=X+0.0144f;

Y1=Y;

X2=X;

Y2=Y+0.0144f;

X3=X+0.0144f;

Y3=Y+0.0144f;

Delta1=sqrt((Nx-X1)*(Nx-X1)+(Ny-Y1)*(Ny-Y1));

Delta2=sqrt((Nx-X2)*(Nx-X2)+(Ny-Y2)*(Ny-Y2));

Delta3=sqrt((Nx-X3)*(Nx-X3)+(Ny-Y3)*(Ny-Y3));

if(Delta1

{way=1;Delta=Delta1;}

else

{way=2;Delta=Delta2;}

if(Delta3

{way=3;Delta=Delta3;}

Delta4=sqrt((Nx-X)*(Nx-X)+(Ny-Y)*(Ny-Y));

if(Delta

{

switch (way)

{

case 1:X=X+0.0144f; TIM_Cmd(TIM3, ENABLE); while(tx==1); break;

case 2:Y=Y+0.0144f; TIM_Cmd(TIM4, ENABLE); while(ty==1); break;

case 3:X=X+0.0144f; Y=Y+0.0144f; TIM_Cmd(TIM3, ENABLE);TIM_Cmd(TIM4, ENABLE);while(tx==1&&ty==1); break;

}

num++;

}

}

}

counter=TIM_GetCounter(TIM6);

TIM_Cmd(TIM6, DISABLE);

time=a*65536/72.0f+counter/72.0f;//us

// delay_ms(500);

printf(" 总长度:%f mm\n",sqrt((Nx-Mx)*(Nx-Mx)+(Ny-My)*(Ny-My)));

printf(" 总时间:%f us\n",time);

printf("总步数=%d\n",num);

// printf("numx=%d\n",numx);

// printf("numy=%d\n\n",numy);

while(1)

{}

}

voidRCC_Configuration(void)

{

SystemInit();

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2|RCC_APB1Periph_TIM3|RCC_APB1Perip h_TIM4

|RCC_APB1Periph_TIM6,ENABLE);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB , ENABLE);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);

}

voidGPIO_Configuration(void)

{

GPIO_InitTypeDefGPIO_InitStructure;

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF_PP;

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

GPIO_Init(GPIOB,&GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_7|GPIO_Pin_9;

GPIO_Init(GPIOA,&GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2|GPIO_Pin_3|GPIO_Pin_10;

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;

GPIO_Init(GPIOA,&GPIO_InitStructure);

}

voidTIM_Configuration()

{

TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;

TIM_OCInitTypeDefTIM_OCInitStructure;

TIM_ICInitTypeDefTIM_ICInitStructure;

TIM_TimeBaseStructure.TIM_Prescaler=0;

TIM_TimeBaseStructure.TIM_ClockDivision=0;

TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;

TIM_TimeBaseStructure.TIM_Period=65536-1;

TIM_TimeBaseInit(TIM6,&TIM_TimeBaseStructure);

TIM_TimeBaseStructure.TIM_Prescaler=prex[0]-1;//X

TIM_TimeBaseStructure.TIM_Period=200-1;

TIM_TimeBaseInit(TIM4,&TIM_TimeBaseStructure);

TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM1;

TIM_OCInitStructure.TIM_OutputState=TIM_OutputState_Enable;

TIM_OCInitStructure.TIM_Pulse=100-1;

TIM_OCInitStructure.TIM_OCPolarity=TIM_OCPolarity_Low;

TIM_OC2Init(TIM4,&TIM_OCInitStructure);

TIM_CtrlPWMOutputs(TIM4,ENABLE);

TIM_TimeBaseStructure.TIM_Prescaler=prey[0]-1;//Y

TIM_TimeBaseStructure.TIM_Period=200-1;

TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);

TIM_OCInitStructure.TIM_Pulse=100-1;

TIM_OC2Init(TIM3,&TIM_OCInitStructure);

TIM_CtrlPWMOutputs(TIM3,ENABLE);

TIM_DeInit(TIM2);

TIM_ICStructInit(&TIM_ICInitStructure);

TIM_ICInitStructure.TIM_Channel = TIM_Channel_3;//X

TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;

TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;

TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;

TIM_ICInitStructure.TIM_ICFilter = 0x0;

TIM_ICInit(TIM2, &TIM_ICInitStructure);

TIM_ICInitStructure.TIM_Channel = TIM_Channel_4;//Y

TIM_ICInit(TIM2, &TIM_ICInitStructure);

}

voidNVIC_Configuration(void)

{

NVIC_InitTypeDefNVIC_InitStructure;

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

NVIC_InitStructure.NVIC_IRQChannel = TIM6_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_Init(&NVIC_InitStructure);

NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2;

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_Init(&NVIC_InitStructure);

TIM_ITConfig(TIM2,TIM_IT_CC3,ENABLE);

TIM_ITConfig(TIM2,TIM_IT_CC4,ENABLE);

TIM_ITConfig(TIM6,TIM_FLAG_Update,ENABLE);

}

voidUSART_Configuration(void)

{

USART_InitTypeDefUSART_InitStructure;

USART_https://www.doczj.com/doc/dc2463124.html,ART_BaudRate =115200;

USART_https://www.doczj.com/doc/dc2463124.html,ART_WordLength = USART_WordLength_8b; USART_https://www.doczj.com/doc/dc2463124.html,ART_StopBits = USART_StopBits_1;

USART_https://www.doczj.com/doc/dc2463124.html,ART_Parity = USART_Parity_No;

USART_https://www.doczj.com/doc/dc2463124.html,ART_HardwareFlowControl =

USART_HardwareFlowControl_None;

USART_https://www.doczj.com/doc/dc2463124.html,ART_Mode = USART_Mode_Tx|USART_Mode_Rx; USART_Init(USART1, &USART_InitStructure);

USART_Cmd(USART1,ENABLE);

}

intfputc(intch,FILE *f)

{

if(ch=='\n')

{

while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET);

USART_SendData(USART1,'\r');

}

while(USART_GetFlagStatus(USART1,USART_FLAG_TC)==RESET); USART_SendData(USART1,ch);

returnch;

}

中断函数程序:

/**

****************************************************************************** * @file Project/Template/stm32f10x_it.c

* @author MCD Application Team

* @version V3.0.0

* @date 04/06/2009

* @brief Main Interrupt Service Routines.

* This file provides template for all exceptions handler and

* peripherals interrupt service routine.

****************************************************************************** * @copy

*

* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS * WITH CODING INFORMATION REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE * TIME. AS A RESULT, STMICROELECTRONICS SHALL NOT BE HELD LIABLE FOR ANY

* DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING * FROM THE CONTENT OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE * CODING INFORMATION CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.

*

*

© COPYRIGHT 2009 STMicroelectronics

*/

/* Includes ------------------------------------------------------------------*/

#include "stm32f10x_it.h"

#include "stm32f10x_exti.h"

#include "stm32f10x_rcc.h"

#include "misc.h"

#include "stm32f10x_dma.h"

#include "stm32f10x_usart.h"

#include

/** @addtogroupTemplate_Project

* @{

*/

/* Private typedef -----------------------------------------------------------*/

/* Private define ------------------------------------------------------------*/

/* Private macro -------------------------------------------------------------*/

/* Private variables ---------------------------------------------------------*/

/* Private function prototypes -----------------------------------------------*/

/* Private functions ---------------------------------------------------------*/

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

/* Cortex-M3 Processor Exceptions Handlers */

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

/**

* @brief This function handles NMI exception.

* @param None

* @retval : None

*/

voidNMI_Handler(void)

{

}

/**

* @brief This function handles Hard Fault exception.

* @param None

* @retval : None

*/

voidHardFault_Handler(void)

{

/* Go to infinite loop when Hard Fault exception occurs */

// while (1)

{

}

}

/**

* @brief This function handles Memory Manage exception.

* @param None

* @retval : None

*/

voidMemManage_Handler(void)

{

/* Go to infinite loop when Memory Manage exception occurs */

while (1)

{

}

/**

* @brief This function handles Bus Fault exception.

* @param None

* @retval : None

*/

voidBusFault_Handler(void)

{

/* Go to infinite loop when Bus Fault exception occurs */ while (1)

{

}

}

/**

* @brief This function handles Usage Fault exception.

* @param None

* @retval : None

*/

voidUsageFault_Handler(void)

{

/* Go to infinite loop when Usage Fault exception occurs */ while (1)

{

}

}

/**

* @brief This function handles SVCall exception.

* @param None

* @retval : None

*/

voidSVC_Handler(void)

{

}

/**

* @brief This function handles Debug Monitor exception. * @param None

* @retval : None

*/

voidDebugMon_Handler(void)

}

/**

* @brief This function handles PendSVC exception.

* @param None

* @retval : None

*/

voidPendSV_Handler(void)

{

}

/**

* @brief This function handles SysTick Handler.

* @param None

* @retval : None

*/

extern void TimingDelay_Decrement(void);

voidSysTick_Handler(void)

{

}

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

/* STM32F10x Peripherals Interrupt Handlers */

/* Add here the Interrupt Handler for the used peripheral(s) (PPP), for the */

/* available peripheral interrupt handler's name please refer to the startup */

/* file (startup_stm32f10x_xx.s). */

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

/**

* @brief This function handles PPP interrupt request.

* @param None

* @retval : None

*/

/*void PPP_IRQHandler(void)

{

}*/

/**

* @}

*/

/******************* (C) COPYRIGHT 2009 STMicroelectronics *****END OF FILE****/ void DMA1_Channel4_IRQHandler(void)

{

}

externint counter;

extern double time;

externint a;

externintnumx,numy,a,tx,ty;

void TIM2_IRQHandler(void)//catch x

{

if(TIM_GetITStatus(TIM2,TIM_IT_CC3)==SET)

{

TIM_Cmd(TIM3, DISABLE);//X

// numx++;//走的步数

tx=0;

TIM_ClearITPendingBit(TIM2,TIM_IT_CC3);

}

if(TIM_GetITStatus(TIM2,TIM_IT_CC4)==SET)

{

TIM_Cmd(TIM4, DISABLE);//y

// numy++;//走的步数

ty=0;

TIM_ClearITPendingBit(TIM2,TIM_IT_CC4);

}

}

void TIM6_IRQHandler(void)

{

if(TIM_GetITStatus(TIM6, TIM_IT_Update)== SET)

{

a++;

// counter=TIM_GetCounter(TIM6);

// TIM_Cmd(TIM6, DISABLE);

// time=a*65536/72.0+counter/72.0;

// printf("%d \n",a);

// printf("%d \n",counter);

// printf("%f us\n",time);

TIM_ClearITPendingBit(TIM6 , TIM_FLAG_Update); }

}

步进电机的计算与选型---实用计算

步进电机的计算与选型 对于步进电动机的计算与选型,通常可以按照以下几个步骤: 1) 根据机械系统结构,求得加在步进电动机转轴上的总转动惯量eq J ; 2) 计算不同工况下加在步进电动机转轴上的等效负载转矩eq T ; 3) 取其中最大的等效负载转矩,作为确定步进电动机最大静转矩的依据; 4) 根据运行矩频特性、起动惯频特性等,对初选的步进电动机进行校核。 1. 步进电动机转轴上的总转动惯量eq J 的计算 加在步进电动机转轴上的总转动惯量eq J 是进给伺服系统的主要参数之一,它对选择电动机具有重要意义。eq J 主要包括电动机转子的转动惯量、减速装置与滚珠丝杠以及移动部件等折算到电动机转轴上的转动惯量等。 2. 步进电动机转轴上的等效负载转矩eq T 的计算 步进电动机转轴所承受的负载转矩在不同的工况下是不同的。通常考虑两种情况:一种情况是快速空载起动(工作负载为0),另一种情况是承受最大工作负载。 (1)快速空载起动时电动机转轴所承受的负载转矩eq1T eq1amax f 0T =T +T +T (4-8) 式中 amax T ——快速空载起动时折算到电动机转轴上的最大加速转矩,单位为N ·m ; f T ——移动部件运动时折算到电动机转轴上的摩擦转矩,单位N ·m ; 0T ——滚珠丝杠预紧后折算到电动机转轴上的附加摩擦转矩,单位为N ·m 。 具体计算过程如下: 1)快速空载起动时折算到电动机转轴上的最大加速转矩: amax eq 2T =J =60eq m a J n t πε (4-9) 式中 eq J ——步进电动机转轴上的总转动惯量,单位为2kg m ?; ε——电动机转轴的角加速度,单位为2/rad s ; m n ——电动机的转速,单位r/min ; a t ——电动机加速所用时间,单位为s ,一般在0.3~1s 之间选取。 2)移动部件运动时折算到电动机转轴上的摩擦转矩: f T =2F i πη摩h P (4-10)

步进电机脉冲数计算

步进电机脉冲数计算 Company Document number:WTUT-WT88Y-W8BBGB-BWYTT-19998

步进电机一个脉冲运动距离怎么算 步进电机一个脉冲运动距离怎么算能不能给个公式在举个例子 答案: 用360度去除以步距角,就是电机转一圈的脉冲数,当然如果细分的话,还要乘以细分倍数。电机转一圈丝杠前进一个导程,用导程除以一圈的脉冲数就是脉冲运动距离。 第一步确定步进电机的步距角,这个电机上会标明的。比如说,度,则一个圆周360/=200,也就是说电机旋转一周需要200个脉冲。第二步确定电机驱动器设了细分细分没有,查清细分数,可以看驱动器上的拨码。比如说4细分,则承上所述,200*4=800,等于说800个脉冲电机才旋转一周。第三步确定电机轴一周的长度或者说导程:如果是丝杠,螺距*螺纹头数=导程,如果是齿轮齿条传动,分度圆直径(m*z)即为导程,导程/脉冲个数=一个脉冲的线位移。什么是细分呢和几相是一个意思吗和 几相没关系吗 细分和相数没关系。以度为例,原来一个脉冲走度,现在改为4细分,那么现在一个脉冲只能走4度了。细分越多,每个脉冲的步进长度越短。细分的多少可由驱动器设置。 控制步进电机转多少最主要你得通过步进电机步距角度计算出电机转一圈需要多少脉冲,比如步距角度为°则电机转一圈需要给步进电机驱动器360/=400个脉冲,转半圈就是200个脉冲。步进电机驱动器资料你先了解下! 步进电机转速则通过改变脉冲频率来控制,用plc的pwm输出控制是比较方便的,速度的快慢不影响步进电机的行程,行程多少取决于脉冲数量。

注意一点步进电机速度越快转矩越小,请根据你的应用调节速度以防失步,造成走位不准确。步进电机是接收步进驱动器给过来的脉冲信号,比如两相的步进,AB相分别轮流输出正反脉冲(按一定顺序),步进电机就可以运行了,相当于一定的脉冲步进马达对应走一定旋转角度。而PLC也可以发出脉冲,但脉冲电压不够,所以需要把PLC输出的脉冲给步进驱动器放大来驱动步进驱动器,相当于PLC的脉冲就是指令脉冲。一般PLC驱动步进时候有两路信号,一路是角度脉冲,另外一路是方向脉冲,PLC里边一般配所谓位移指令,发梯形脉冲给步进驱动器,这样可以缓冲启动带来的力冲击。

步进电机选用计算方法

步进电机的选用计算方法 步进电机是一种能将数字输入脉冲转换成旋转或直线增量运动的电磁执行元件。每输入一个脉冲电机转轴步进一个步距角增量。电机总的回转角与输入脉冲数成正比例,相应的转速取决于输入脉冲频率。 关键词:步进电机,选择,工作原理,控制电路 选择步进电机时,首先要保证步进电机的输出功率大于负载所需的功率。而在选用功率步进电机时,首先要计算机械系统的负载转矩,电机的矩频特性能满足机械负载并有一定的余量保证其运行可靠。在实际工作过程中,各种频率下的负载力矩必须在矩频特性曲线的范围内。一般地说最大静力矩Mjmax大的电机,负载力矩大。 选择步进电机时,应使步距角和机械系统匹配,这样可以得到机床所需的脉冲当量。在机械传动过程中为了使得有更小的脉冲当量,一是可以改变丝杆的导程,二是可以通过步进电机的细分驱动来完成。但细分只能改变其分辨率,不改变其精度。精度是由电机的固有特性所决定。 选择功率步进电机时,应当估算机械负载的负载惯量和机床要求的启动频率,使之与步进电机的惯性频率特性相匹配还有一定的余量,使之最高速连续工作频率能满足机床快速移动的需要。 选择步进电机需要进行以下计算: (1)计算齿轮的减速比 根据所要求脉冲当量,齿轮减速比i计算如下: i=(φ.S)/(360.Δ) (1-1) 式中φ ---步进电机的步距角(o/脉冲) S ---丝杆螺距(mm) Δ---(mm/脉冲) (2)计算工作台,丝杆以及齿轮折算至电机轴上的惯量Jt。 Jt=J1+(1/i2)[(J2+Js)+W/g(S/2π)2] (1-2) 式中Jt ---折算至电机轴上的惯量(Kg.cm.s2) J1、J2 ---齿轮惯量(Kg.cm.s2) Js ----丝杆惯量(Kg.cm.s2) W---工作台重量(N) S ---丝杆螺距(cm) (3)计算电机输出的总力矩M M=Ma+Mf+Mt (1-3)

步进电机——步进电机选型的计算方法

步进电机——步进电机选型的计算方法 步进电机选型表中有部分参数需要计算来得到。但是实际计算中许多情况我们都无法得到确切的机械参数,因此,这里只给出比较简单的计算方法。 ◎驱动模式的选择 驱动模式是指如何将传送装置的运动转换为步进电机的旋转。 下图所示的驱动模式包括了电机的加/减速时间,驱动和定位时间,电机的选型基于模式图。 ●必要脉冲数的计算 必要脉冲数是指传动装置将物体从起始位置传送到目标位置所需要提供给步进电机的脉冲数。必要脉冲数按下面公式计算: 必要脉冲数= 物体移动的距离 距离电机旋转一周移动的距离× 360 o 步进角 ●驱动脉冲速度的计算 驱动脉冲速度是指在设定的定位时间中电机旋转过一定角度所需要的脉冲数。 驱动脉冲数可以根据必要脉冲数、定位时间和加/减速时间计算得出。 (1)自启动运行方式 自启动运行方式是指在驱动电机旋转和停止时不经过加速、减速阶段,而直接以驱动脉冲速度启动和停止的运行方式。 自启动运行方式通常在转速较低的时候使用。同时,因为在启动/停止时存在一个突然的速度变化,所以这种方式需要较大的加/减速力矩。 自启动运行方式的驱动脉冲速度计算方法如下: 驱动脉冲速度[Hz]= 必要脉冲数[脉冲]

定位时间[秒] (2)加/减速运行方式 加//减速运行方式是指电机首先以一个较低的速度启动,经过一个加速过程后达到正常的驱动脉冲速度,运行一段时间之后再经过一个减速过程后电机停止的运行方式。其定位时间包括加速时间、减速时间和以驱动脉冲速度运行的时间。 加/减速时间需要根据传送距离、速度和定位时间来计算。在加/减速运行方式中,因为速度变化较小,所以需要的力矩要比自启动方式下的力矩小。加/减速运行方式下的驱动脉冲速度计算方法如下: 必要脉冲数-启动脉冲数[Hz]×加/减速时间[秒] 驱动脉冲速度[Hz]= 定位时间[秒]-加/减速时间[秒] ◎电机力矩的简单计算示例 必要的电机力矩=(负载力矩+加/减速力矩)×安全系数 ●负载力矩的计算(TL) 负载力矩是指传送装置上与负载接触部分所受到的摩擦力矩。步进电机驱动过程中始终需要此力矩。负载力矩根据传动装置和物体的重量的不同而不同。许多情况下我们无法得到精确的系统参数,所以下面只给出了简单的计算方法。 负载力矩可以根据下面的图表和公式来计算。 (1)滚轴丝杆驱动

怎么确定步进电机脉冲频率

怎么确定步进电机脉冲频率 步进电机驱动及控制技术解答 南京步进电机厂技术部 1.步进电机为什么要配步进电机驱动器才能工作? 步进电机作为一种控制精密位移及大范围调速专用的电机, 它的旋转是以自身固有的步距角角(转子与定子的机械结构所决定)一步一步运行的, 其特点是每旋转一步,步距角始终不变,能够保持精密准确的位置。所以无论旋转多少次,始终没有积累误差。由于控制方法简单,成本低廉,广泛应用于各种开环控制。步进电机的运行需要有脉冲分配的功率型电子装置进行驱动, 这就是步进电机驱动器。它接收控制系统发出的脉冲信号,按照步进电机的结构特点,顺序分配脉冲,实现控制角位移、旋转速度、旋转方向、制动加载状态、自由状态。控制系统每发一个脉冲信号, 通过驱动器就能够驱动步进电机旋转一个步距角。步进电机的转速与脉冲信号的频率成正比。角位移量与脉冲个数相关。步进电机停止旋转时,能够产生两种状态:制动加载能够产生最大或部分保持转矩(通常称为刹车保持,无需电磁制动或机械制动)及转子处于自由状态(能够被外部推力带动轻松旋转)。步进电机驱动器,必须与步进电机的型号相匹配。否则,将会损坏步进电机及驱动器。 2.什么是驱动器的细分?运行拍数与步距角是什么关系? “细分”是针对“步距角”而言的。没有细分状态,控制系统每发一个步进脉冲信号,步进电机就按照整步旋转一个特定的角度。步进电机的参数,都会给出一个步距角的值。如110BYG250A型电机给出的值为0.9°/1.8°(表示半步工作时为0.9°、整步工作时为1.8°),这是步进电机固有步距角。通过步进电机驱动器设置的细分状态,步进电机将会按照细分的步距角旋转位移角度,从而实现更为精密的定位。以110BYG25 0A电机为例,列表说明: 电机固有步距角运行拍数细分数电机运行时的真正步距角 0.9°/1.8°8 2细分,即半步状态0.9° 0.9°/1.8°20 5细分状态0.36° 0.9°/1.8°40 10细分状态0.18° 0.9°/1.8°80 20细分状态0.09° 0.9°/1.8°160 40细分状态0.045° 可用看出,细分数就是指电机运行时的真正步距角是固有步距角(整步)的几分指一。例如,驱动器工作

步进电机选型的计算方法[1]

步进电机选型表中有部分参数需要计算来得到。但是实际计算中许多情况我们都无法得到确切的机械参数,因此,这里只给出比较简单的计算方法。 ◎驱动模式的选择 驱动模式是指如何将传送装置的运动转换为步进电机的旋转。 下图所示的驱动模式包括了电机的加/减速时间,驱动和定位时间,电机的选型基于模式图。 ●必要脉冲数的计算 必要脉冲数是指传动装置将物体从起始位置传送到目标位置所需要提供给步进电机的脉冲数。必要脉冲数按下面公式计算: 必要脉冲数= 物体移动的距离 距离电机旋转一周移动的距离× 360 o 步进角 ●驱动脉冲速度的计算 驱动脉冲速度是指在设定的定位时间中电机旋转过一定角度所需要的脉冲数。 驱动脉冲数可以根据必要脉冲数、定位时间和加/减速时间计算得出。 (1)自启动运行方式 自启动运行方式是指在驱动电机旋转和停止时不经过加速、减速阶段,而直接以驱动脉冲速度启动和停止的运行方式。 自启动运行方式通常在转速较低的时候使用。同时,因为在启动/停止时存在一个突然的速度变化,所以这种方式需要较大的加/减速力矩。 自启动运行方式的驱动脉冲速度计算方法如下: 驱动脉冲速度[Hz]= 必要脉冲数[脉冲] 定位时间[秒]

(2)加/减速运行方式 加//减速运行方式是指电机首先以一个较低的速度启动,经过一个加速过程后达到正常的驱动脉冲速度,运行一段时间之后再经过一个减速过程后电机停止的运行方式。其定位时间包括加速时间、减速时间和以驱动脉冲速度运行的时间。 加/减速时间需要根据传送距离、速度和定位时间来计算。在加/减速运行方式中,因为速度变化较小, 所以需要的力矩要比自启动方式下的力矩小。加/减速运行方式下的驱动脉冲速度计算方法如下: 必要脉冲数-启动脉冲数[Hz]×加/减速时间[秒] 驱动脉冲速度[Hz]= 定位时间[秒]-加/减速时间[秒] ◎电机力矩的简单计算示例 必要的电机力矩=(负载力矩+加/减速力矩)×安全系数 ●负载力矩的计算(T L) 负载力矩是指传送装置上与负载接触部分所受到的摩擦力矩。步进电机驱动过程中始终需要此力矩。负载力矩根据传动装置和物体的重量的不同而不同。许多情况下我们无法得到精确的系统参数,所以下面只给出了简单的计算方法。 负载力矩可以根据下面的图表和公式来计算。 (1)滚轴丝杆驱动

步进电机脉冲计算方法

步进电机的脉冲数的计算-1 2009-06-28 09:38 步进电机——步进电机选型的计算方法 步进电机——步进电机选型的计算方法 步进电机选型表中有部分参数需要计算来得到。但是实际计算中许多情况我们都无法得到确切的机械参数,因此,这里只给出比较简单的计算方法。 ◎驱动模式的选择 驱动模式是指如何将传送装置的运动转换为步进电机的旋转。 下图所示的驱动模式包括了电机的加/减速时间,驱动和定位时间,电机的选型基于模式图。 ●必要脉冲数的计算 必要脉冲数是指传动装置将物体从起始位置传送到目标位置所需要提供给步进电机的脉冲数。必要脉冲数按下面公式计算: 必要脉冲数=物体移动的距离 距离电机旋转一周移动的距离 × 360 o 步进角 ●驱动脉冲速度的计算 驱动脉冲速度是指在设定的定位时间中电机旋转过一定角度所需要的脉冲数。 驱动脉冲数可以根据必要脉冲数、定位时间和加/减速时间计算得出。 (1)自启动运行方式 自启动运行方式是指在驱动电机旋转和停止时不经过加速、减速阶段,而直接以驱动脉冲速度启动和停止的运行方式。 自启动运行方式通常在转速较低的时候使用。同时,因为在启动/停止时存在一个突然的速度变化,所以这种方式需要较大的加/减速力矩。 自启动运行方式的驱动脉冲速度计算方法如下: 驱动脉冲速度[Hz]=必要脉冲数[脉冲]定位时间[秒] (2)加/减速运行方式加

号接口: CP+ 步进脉冲信号正端 CP- 步进脉冲信号负端 DIR+ 方向电平信号正端 DIR- 方向电平信号负端 EN+ 使能电平信号正端 EN- 使能电平信号负端 CW+ 正向步进脉冲信号正端 CW- 正向步进脉冲信号负端 CCW+ 反向步进脉冲信号正端 CCW- 反向步 进脉冲信号负端 指示灯: Power 电源指示灯(绿灯) No ready 未准备好指示灯(红灯) 拨位开关设定: 1-4位 设定电机每转步数(细分数) 5位 设定步进脉冲信号方式,0-单脉冲,1-双脉冲 6位 设定是否允许半电流,0-不允许,1-允许 7-10位 设定输出电流值 电机接口: U V W 连接三相混合式步进电机 电源接口: AC110V-220V 交流电源功率不小于600W ,50~60Hz 请勿直接接入电网,应使用隔离变压器供电 接地保护端 PE 如果供电电源无隔离变压器,必须使驱动器和电机可靠接地,但要求使用隔离变压器供电 未准备好输出: 为一继电器的触点,准备好为闭合 未准备好为打开

步进电机选用计算方法

步进电机选用计算方法 步进电机是一种能将数字输入脉冲转换成旋转或直线增量运动的电磁执行元件。每输入一个脉冲电机转轴步进一个步距角增量。电机总的回转角与输入脉冲数成正比例,相应的转速取决于输入脉冲频率。步进电机是机电一体化产品中关键部件之一,通常被用作定位控制和定速控制。步进电机惯量低、定位精度高、无累积误差、控制简单等特点。广泛应用于机电一体化产品中,如:数控机床、包装机械、计算机外围设备、复印机、传真机等。 选择步进电机时,首先要保证步进电机的输出功率大于负载所需的功率。而在选用功率步进电机时,首先要计算机械系统的负载转矩,电机的矩频特性能满足机械负载并有一定的余量保证其运行可靠。在实际工作过程中,各种频率下的负载力矩必须在矩频特性曲线的范围内。一般地说最大静力矩Mjmax大的电机,负载力矩大。 选择步进电机时,应使步距角和机械系统匹配,这样可以得到机床所需的脉冲当量。在机械传动过程中为了使得有更小的脉冲当量,一是可以改变丝杆的导程,二是可以通过步进电机的细分驱动来完成。但细分只能改变其分辨率,不改变其精度。精度是由电机的固有特性所决定。 选择功率步进电机时,应当估算机械负载的负载惯量和机床要求的启动频率,使之与步进电机的惯性频率特性相匹配还有一定的余量,使之最高速连续工作频率能满足机床快速移动的需要。 选择步进电机需要进行以下计算: (1)计算齿轮的减速比 根据所要求脉冲当量,齿轮减速比i计算如下: i=(φ.S)/(360.Δ) (1-1) 式中φ ---步进电机的步距角(o/脉冲) S ---丝杆螺距(mm) Δ---(mm/脉冲) (2)计算工作台,丝杆以及齿轮折算至电机轴上的惯量Jt。 Jt=J1+(1/i2)[(J2+Js)+W/g(S/2π)2] (1-2) 式中Jt ---折算至电机轴上的惯量(Kg.cm.s2) J1、J2 ---齿轮惯量(Kg.cm.s2)

步进电机转速与频率计算公式

步进电机转速与频率计 算公式 集团文件发布号:(9816-UATWW-MWUB-WUNN-INNUL-DQQTY-

步进电机的转速可以用频率来控制,步进电机的运行频率跟转速成正比,可以通过计算公式,计算出步进电机的转速。步进电机转速=频率*60/((360/T)*x) 步进电机的转速单位是:转/分 频率单位是:赫兹 x实指细分倍数 T:固有步进角 举例说明: 步进电机采用整步,即1细分;频率1K,即1000赫兹;套用公式:1000*60/200= 300转/分 注意事项:此公式适应于两相步进电机。 步进电机空载最高转速的真正意义是什么 发布者:admin 发布时间:2010-4-12 阅读:474次 两相步进电机的空载转速最高可以达到2000转/分钟以上,不过它只是一个参考值,没有什么实际意义,因为步进电机的转矩随着转速的升高下降很快,转速高到一定程度时力矩几乎为零。步进电机在整步无细分情况下(每200个脉冲转一圈)提高时钟频率,人们往往发现电机在远未达到空载最高速度时即发生堵转,以至于搞不清最高转速到底是多少,甚至怀疑自己的系统是否正常,这就是其中的真正原因所在。 步进电机在低速下的运行性能才有实际意义,一般是每分钟300转到600转,考虑到用户使用机械减速装置带负载,要使电机提供足够的力矩,电机的常态速度常常被选择在每分钟几十转,此时电机供力大、效率高、噪音低,至于振动问题,则要靠增加驱动器细分的方法加以解决了。 最高空载转速的计算公式为: 空载转速(转/分)=60 乘以时钟频率 / 200乘以细分数 (M是细分数) 假如M=16,时钟频率=150KHZ 则最高空载转速约等于2800转/分钟 即60乘以150000,再除以200与16的积,得出的结果。

步进电机选型计算方法

1步进电机 步进电机驱动器 无刷电机 无刷电机驱动器 地址:深圳宝安区 TEL :2 朱生 步进电机选型的计算方法 步进电机选型表中有部分参数需要计算来得到。但是实际计算中许多情况我们都无法得到确切的机械参数,因此,这里只给出比较简单的计算方法。 ◎驱动模式的选择 驱动模式是指如何将传送装置的运动转换为步进电机的旋转。 下图所示的驱动模式包括了电机的加/减速时间,驱动和定位时间,电机的选型基于模式图。 ●必要脉冲数的计算 必要脉冲数是指传动装置将物体从起始位置传送到目标位置所需要提供给步进电机的脉冲数。必要脉冲数按 下面公式计算: 必要脉冲数= 物体移动的距离 距离电机旋转一周移动的距离 × 360 o 步进角 ●驱动脉冲速度的计算 驱动脉冲速度是指在设定的定位时间中电机旋转过一定角度所需要的脉冲数。 驱动脉冲数可以根据必要脉冲数、定位时间和加/减速时间计算得出。 (1)自启动运行方式 自启动运行方式是指在驱动电机旋转和停止时不经过加速、减速阶段,而直接以驱动脉冲速度启动和停止的运行方式。 自启动运行方式通常在转速较低的时候使用。同时,因为在启动/停止时存在一个突然的速度变化,所以这种方式需要较大的加/减速力矩。 自启动运行方式的驱动脉冲速度计算方法如下:

必要脉冲数[脉冲] 驱动脉冲速度[Hz]= 定位时间[秒] (2)加/减速运行方式 加//减速运行方式是指电机首先以一个较低的速度启动,经过一个加速过程后达到正常的驱动脉冲速度,运行一段时间之后再经过一个减速过程后电机停止的运行方式。其定位时间包括加速时间、减速时间和以驱动脉冲速度运行的时间。 加/减速时间需要根据传送距离、速度和定位时间来计算。在加/减速运行方式中,因为速度变化较小,所以需要的力矩要比自启动方式下的力矩小。加/减速运行方式下的驱动脉冲速度计算方法如下: 必要脉冲数-启动脉冲数[Hz]×加/减速时间[秒] 驱动脉冲速度[Hz]= 定位时间[秒]-加/减速时间[秒] ◎电机力矩的简单计算示例 必要的电机力矩=(负载力矩+加/减速力矩)×安全系数 ●负载力矩的计算(T L) 负载力矩是指传送装置上与负载接触部分所受到的摩擦力矩。步进电机驱动过程中始终需要此力矩。负载力矩根据传动装置和物体的重量的不同而不同。许多情况下我们无法得到精确的系统参数,所以下面只给出了简单的计算方法。 负载力矩可以根据下面的图表和公式来计算。 (1)滚轴丝杆驱动 2步进电机步进电机驱动器无刷电机无刷电机驱动器 地址:深圳宝安区 TEL:2 朱生

步进电机选择的详细计算过程上课讲义

步进电机选择的详细 计算过程

1,如何正确选择伺服电机和步进电机? 主要视具体应用情况而定,简单地说要确定:负载的性质(如水平还是垂直负载等),转矩、惯量、转速、精度、加减速等要求,上位控制要求(如对端口界面和通讯方面的要求),主要控制方式是位置、转矩还是速度方式。供电电源是直流还是交流电源,或电池供电,电压范围。据此以确定电机和配用驱动器或控制器的型号。 2,选择步进电机还是伺服电机系统? 其实,选择什么样的电机应根据具体应用情况而定,各有其特点。请见下表,自然明白。 步进电机系统伺服电机系统 力矩范围中小力矩(一般在20Nm以下)小中大,全范围 速度范围低(一般在2000RPM以下,大力矩电机小于1000RPM)高(可达5000RPM),直流伺服电机更可达1~2万转/分 控制方式主要是位置控制多样化智能化的控制方式,位置/转速/转矩方式平滑性低速时有振动(但用细分型驱动器则可明显改善)好,运行平滑 精度一般较低,细分型驱动时较高高(具体要看反馈装置的分辨率) 矩频特性高速时,力矩下降快力矩特性好,特性较硬 过载特性过载时会失步可3~10倍过载(短时) 反馈方式大多数为开环控制,也可接编码器,防止失步闭环方式,编码器反馈 编码器类型 - 光电型旋转编码器(增量型/绝对值型),旋转变压器型 响应速度一般快 耐振动好一般(旋转变压器型可耐振动)

温升运行温度高一般 维护性基本可以免维护较好 价格低高 3,如何配用步进电机驱动器? 根据电机的电流,配用大于或等于此电流的驱动器。如果需要低振动或高精度时,可配用细分型驱动器。对于大转矩电机,尽可能用高电压型驱动器,以获得良好的高速性能。 4,2相和5相步进电机有何区别,如何选择? 2相电机成本低,但在低速时的震动较大,高速时的力矩下降快。5相电机则振动较小,高速性能好,比2相电机的速度高30~50%,可在部分场合取代伺服电机。 5,何时选用直流伺服系统,它和交流伺服有何区别? 直流伺服电机分为有刷和无刷电机。 有刷电机成本低,结构简单,启动转矩大,调速范围宽,控制容易,需要维护,但维护方便(换碳刷),产生电磁干扰,对环境有要求。因此它可以用于对成本敏感的普通工业和民用场合。 无刷电机体积小,重量轻,出力大,响应快,速度高,惯量小,转动平滑,力矩稳定。控制复杂,容易实现智能化,其电子换相方式灵活,可以方波换相或正弦波换相。电机免维护,效率很高,运行温度低,电磁辐射很小,长寿命,可用于各种环境。 交流伺服电机也是无刷电机,分为同步和异步电机,目前运动控制中一般都用同步电机,它的功率范围大,可以做到很大的功率。大惯量,最高转动速度低,且随着功率增大而快速降低。因而适合做低速平稳运行的应用。 6,使用电机时要注意的问题?

步进电动机的步距角计算方法

步进电动机的步距角计算方法 步进电机作为执行元件,是机电一体化的关键产品之一,广泛应 用在各种自动化控制系统中。随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在各个国民经济领域都有应用。 步进电机是一种将电脉冲转化为角位移的执行机构。当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为"步距角"),它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。步进电机可以作为一种控制用的特种电机,利用其没有积累误差(精度为100%)的特点,广泛应用于各种 开环控制。 现在比较常用的步进电机包括反应式步进电机(VR)、永磁式步进电机(PM)、混合式步进电机(HB)和单相式步进电机等。 永磁式步进电机一般为两相,转矩和体积较小,步进角一般为度或15度; 反应式步进电机一般为三相,可实现大转矩输出,步进角一般为度,但噪声和振动都很大。反应式步进电机的转子磁路由软磁材料制成,定子上有多相励磁绕组,利用磁导的变化产生转矩。 混合式步进电机是指混合了永磁式和反应式的优点。它又分为两相和五相:两相步进角一般为度而五相步进角一般为度。这种步进电机的应用最为广泛,也是本次细分驱动方案所选用的步进电机。 步进电机的一些基本参数: 电机固有步距角:

它表示控制系统每发一个步进脉冲信号,电机所转动的角度。电机出厂时给出了一个步距角的值,如SL86S2114A型电机给出的值为°/°(表示半步工作时为°、整步工作时为°),这个步距角可以称之为'电机固有步距角',它不一定是电机实际工作时的真正步距角,真正的步距角和驱动器有关。 步进电机的相数: 是指电机内部的线圈组数,目前常用的有二相、三相、四相、五相步进电机。电机相数不同,其步距角也不同,一般二相电机的步距角为°/°、三相的为°/°、五相的为°/°。在没有细分驱动器时,用户主要靠选择不同相数的步进电机来满足自己步距角的要求。如果使用细分驱动器,则'相数'将变得没有意义,用户只需在驱动器上改变细分数,就可以改变步距角。 保持转矩(HOLDINGTORQUE): 是指步进电机通电但没有转动时,定子锁住转子的力矩。它是步进电机最重要的参数之一,通常步进电机在低速时的力矩接近保持转矩。由于步进电机的输出力矩随速度的增大而不断衰减,输出功率也随速度的增大而变化,所以保持转矩就成为了衡量步进电机最重要的参数之一。比如,当人们说的步进电机,在没有特殊说明的情况下是指保持转矩为的步进电机。 DETENTTORQU E: 是指步进电机没有通电的情况下,定子锁住转子的力矩。DETENTTORQUE 在国内没有统一的翻译方式,容易使大家产生误解;由于反应式步进电机的转子不是永磁材料,所以它没有DETENTTORQUE。 步进电机的一些特点: 1.一般步进电机的精度为步进角的3-5%,且不累积。 2.步进电机外表允许的最高温度。

步进电机脉冲数计算

步进电机一个脉冲运动距离怎么算? 步进电机一个脉冲运动距离怎么算?能不能给个公式在举个例子? 答案: 用360度去除以步距角,就是电机转一圈的脉冲数,当然如果细分的话,还要乘以细分倍数。电机转一圈丝杠前进一个导程,用导程除以一圈的脉冲数就是脉冲运动距离。 第一步确定步进电机的步距角,这个电机上会标明的。比如说,1.8度,则一个圆周360/1.8=200,也就是说电机旋转一周需要200个脉冲。第二步确定电机驱动器设了细分细分没有,查清细分数,可以看驱动器上的拨码。比如说4细分,则承上所述,200*4=800,等于说800个脉冲电机才旋转一周。第三步确定电机轴一周的长度或者说导程:如果是丝杠,螺距*螺纹头数=导程,如果是齿轮齿条传动,分度圆直径(m*z)即为导程,导程/脉冲个数=一个脉冲的线位移。什么是细分呢?和几相是一个意思吗?和 几相没关系吗? 细分和相数没关系。以1.8度为例,原来一个脉冲走1.8度,现在改为4细分,那么现在一个脉冲只能走1.8/4度了。细分越多,每个脉冲的步进长度越短。细分的多少可由驱动器设置。 控制步进电机转多少最主要你得通过步进电机步距角度计算出电机转一圈需要多少脉冲,比如步距角度为0.9°则电机转一圈需要给步进电机驱动器360/0.9=400个脉冲,转半圈就是200个脉冲。步进电机驱动器资料你先了解下! 步进电机转速则通过改变脉冲频率来控制,用plc的pwm输出控制是比较方便的,速度的快慢不影响步进电机的行程,行程多少取决于脉冲数量。 注意一点步进电机速度越快转矩越小,请根据你的应用调节速度以防失步,造成走位不准确。步进电机是接收步进驱动器给过来的脉冲信号,比如两相的步进,AB相分别轮流输出正反脉冲(按一定顺序),步进电机就可以运行了,相当于一定的脉冲步进马达对应走一定旋转角度。而PLC也可以发出脉冲,但脉冲电压不够,所以需要把PLC输出的脉冲给步进驱动器放大来驱动步进驱动器,相当于PLC的脉冲就是指令脉冲。一般PLC驱动步进时候有两路信号,一路是角度脉冲,另外一路是方向脉冲,PLC里边一般配所谓位移指令,发梯形脉冲给步进驱动器,这样可以缓冲启动带来的力冲击。

步进电机选择的详细计算过程总结

步进电机选择的详细计算过程 2011-07-25 00:13:59| 分类:默认分类|举报|字号订阅 1,如何正确选择伺服电机和步进电机? 主要视具体应用情况而定,简单地说要确定:负载的性质(如水平还是垂直负载等),转矩、惯量、转速、精度、加减速等要求,上位控制要求(如对端口界面和通讯方面的要求),主要控制方式是位置、转矩还是速度方式。供电电源是直流还是交流电源,或电池供电,电压范围。据此以确定电机和配用驱动器或控制器的型号。 2,选择步进电机还是伺服电机系统? 其实,选择什么样的电机应根据具体应用情况而定,各有其特点。请见下表,自然明白。

各种环境。 交流伺服电机也是无刷电机,分为同步和异步电机,目前运动控制中一般都用同步电机,它的功率范围大,可以做到很大的功率。大惯量,最高转动速度低,且随着功率增大而快速降低。因而适合做低速平稳运行的应用。 6,使用电机时要注意的问题? 上电运行前要作如下检查: 1)电源电压是否合适(过压很可能造成驱动模块的损坏);对于直流输入的+/-极性一定不能接错,驱动控制器上的电机型号或电流设定值是否合适(开始时不要太大); 2)控制信号线接牢靠,工业现场最好要考虑屏蔽问题(如采用双绞线); 3)不要开始时就把需要接的线全接上,只连成最基本的系统,运行良好后,再逐步连接。 4)一定要搞清楚接地方法,还是采用浮空不接。 5)开始运行的半小时内要密切观察电机的状态,如运动是否正常,声音和温升情况,发现问题立即停机调整。 7,步进电机启动运行时,有时动一下就不动了或原地来回动,运行时有时还会失步,是什么问题? 一般要考虑以下方面作检查: 1)电机力矩是否足够大,能否带动负载,因此我们一般推荐用户选型时要选用力矩比实际需要大50%~100%的电机,因为步进电机不能过负载运行,哪怕是瞬间,都会造成失步,严重时停转或不规则原地反复动。 2)上位控制器来的输入走步脉冲的电流是否够大(一般要>10mA),以使光耦稳定导通,输入的频率是否过高,导致接收不到,如果上位控制器的输出电路是CMOS电路,则也要选用CMOS输入型的驱动器。 3)启动频率是否太高,在启动程序上是否设置了加速过程,最好从电机规定的启动频率内开始加速到设定频率,哪怕加速时间很短,否则可能就不稳定,甚至处于惰态。 4)电机未固定好时,有时会出现此状况,则属于正常。因为,实际上此时造成了电机的强烈共振而导致进入失步状态。电机必须固定好。 5)对于5相电机来说,相位接错,电机也不能工作。 8,我想通过通讯方式直接控制伺服电机,可以吗? 可以的,也比较方便,只是速度问题,用于对响应速度要求不太高的应用。如果要求快速的响应控制参数,最好用伺服运动控制卡,一般它上面有DSP和高速

步进电机的选用及电机型号参数尺寸标准

步进电机是一种能将数字输入脉冲转换成旋转或直线增量运动的电磁执行元件。每输入一个脉冲电机转轴步进一个步距角增量。电机总的回转角与输入脉冲数成正比例,相应的转速取决于输入脉冲频率。 步进电机是机电一体化产品中关键部件之一,通常被用作定位控制和定速控制。步进电机惯量低、定位精度高、无累积误差、控制简单等特点。广泛应用于机电一体化产品中,如:数控机床、包装机械、计算机外围设备、复印机、传真机等。 选择步进电机时,首先要保证步进电机的输出功率大于负载所需的功率。而在选用功率步进电机时,首先要计算机械系统的负载转矩,电机的矩频特性能满足机械负载并有一定的余量保证其运行可靠。在实际工作过程中,各种频率下的负载力矩必须在矩频特性曲线的范围内。一般地说最大静力矩Mjmax大的电机,负载力矩大。 选择步进电机时,应使步距角和机械系统匹配,这样可以得到机床所需的脉冲当量。在机械传动过程中为了使得有更小的脉冲当量,一是可以改变丝杆的导程,二是可以通过步进电机的细分驱动来完成。但细分只能改变其分辨率,不改变其精度。精度是由电机的固有特性所决定。论文天地欢迎您 选择功率步进电机时,应当估算机械负载的负载惯量和机床要求的启动频率,使之与步进电机的惯性频率特性相匹配还有一定的余量,使之最高速连续工作频率能满足机床快速移动的需要。 选择步进电机需要进行以下计算: (1)计算齿轮的减速比 根据所要求脉冲当量,齿轮减速比i计算如下: i=(φ.S)/(360.Δ) (1-1) 式中φ---步进电机的步距角(o/脉冲)

S ---丝杆螺距(mm) Δ---(mm/脉冲) (2)计算工作台,丝杆以及齿轮折算至电机轴上的惯量Jt。 Jt=J1+(1/i2)[(J2+Js)+W/g(S/2π)2] (1-2) 式中Jt ---折算至电机轴上的惯量(Kg.cm.s2) J1、J2 ---齿轮惯量(Kg.cm.s2) Js ----丝杆惯量(Kg.cm.s2) W---工作台重量(N) S ---丝杆螺距(cm) (3)计算电机输出的总力矩M M=Ma+Mf+Mt (1-3) Ma=(Jm+Jt).n/T× 1.02×10ˉ 2 (1-4) 式中Ma ---电机启动加速力矩(N.m) Jm、Jt---电机自身惯量与负载惯量(Kg.cm.s2) n---电机所需达到的转速(r/min) T---电机升速时间(s) Mf=(u.W.s)/(2πηi)×10ˉ 2 (1-5) Mf---导轨摩擦折算至电机的转矩(N.m) u---摩擦系数 η---传递效率 Mt=(Pt.s)/(2πηi)×10ˉ 2 (1-6) Mt---切削力折算至电机力矩(N.m) Pt---最大切削力(N) (4)负载起动频率估算。数控系统控制电机的启动频率与负载转矩和惯量有很大关系,其估算公式为 fq=fq0[(1-(Mf+Mt))/Ml)÷(1+Jt/Jm)] 1/2 (1-7) 式中fq---带载起动频率(Hz)

步进电机的选型及计算方法

步进电机选型的计算方法 步进电机选型表中有部分参数需要计算来得到。但是实际计算中许多情况我们都无法得到确切的机械参数,因此,这里只给出比较简单的计算方法。 一、驱动模式的选择 驱动模式是指如何将传送装置的运动转换为步进电机的旋转。 下图所示的驱动模式包括了电机的加/减速时间,驱动和定位时间,电机的选型基于模式图。 ●必要脉冲数的计算 必要脉冲数是指传动装置将物体从起始位置传送到目标位置所需要提供给步进电机的脉冲数。必要脉冲数按下面公式计算: 必要脉冲数= 物体移动的距离 距离电机旋转一周移动的距离 × 360 o 步进角 ●驱动脉冲速度的计算 驱动脉冲速度是指在设定的定位时间中电机旋转过一定角度所需要的脉冲数。 驱动脉冲数可以根据必要脉冲数、定位时间和加/减速时间计算得出。 (1)自启动运行方式 自启动运行方式是指在驱动电机旋转和停止时不经过加速、减速阶段,而直接以驱动脉冲速度启动和停止的运行方式。 自启动运行方式通常在转速较低的时候使用。同时,因为在启动/停止时存在一个突然的速度变化,所以这种方式需要较大的加/减速力矩。 自启动运行方式的驱动脉冲速度计算方法如下: 驱动脉冲速度[Hz]= 必要脉冲数[脉冲] 定位时间[秒] (2)加/减速运行方式

加//减速运行方式是指电机首先以一个较低的速度启动,经过一个加速过程后达到正常的驱动脉冲速度,运行一段时间之后再经过一个减速过程后电机停止的运行方式。其定位时间包括加速时间、减速时间和以驱动脉冲速度运行的时间。 加/减速时间需要根据传送距离、速度和定位时间来计算。在加/减速运行方式中,因为速度变化较小,所以需要的力矩要比自启动方式下的力矩小。加/减速运行方式下的驱动脉冲速度计算方法如下: 驱动脉冲速度[Hz]= 必要脉冲数-启动脉冲数[Hz]×加/减速时间[秒] 定位时间[秒]-加/减速时间[秒] 二、电机力矩的简单计算示例 必要的电机力矩=(负载力矩+加/减速力矩)×安全系数 ●负载力矩的计算(TL) 负载力矩是指传送装置上与负载接触部分所受到的摩擦力矩。步进电机驱动过程中始终需要此力矩。负载力矩根据传动装置和物体的重量的不同而不同。许多情况下我们无法得到精确的系统参数,所以下面只给出了简单的计算方法。 负载力矩可以根据下面的图表和公式来计算。 (1)滚轴丝杆驱动 ※负载力矩的计算公式: TL=[ F·PB 2πη + μ0F0PB 2π ]× 1 i [kgf·cm] ※负载力矩的估算公式: TL=m·PB 2πη × 1 i [kgf·cm] (水平方向) TL=m·PB × 1 ×2 [kgf·cm] (垂直方向)

步进电机脉冲数计算

步进电机脉冲数计算 Company number:【WTUT-WT88Y-W8BBGB-BWYTT-19998】

步进电机一个脉冲运动距离怎么算步进电机一个脉冲运动距离怎么算能不能给个公式在举个例子 答案: 用360度去除以步距角,就是电机转一圈的脉冲数,当然如果细分的话,还要乘以细分倍数。电机转一圈丝杠前进一个导程,用导程除以一圈的脉冲数就是脉冲运动距离。 第一步确定步进电机的步距角,这个电机上会标明的。比如说,度,则一个圆周360/=200,也就是说电机旋转一周需要200个脉冲。第二步确定电机驱动器设了细分细分没有,查清细分数,可以看驱动器上的拨码。比如说4细分,则承上所述,200*4=800,等于说800个脉冲电机才旋转一周。第三步确定电机轴一周的长度或者说导程:如果是丝杠,螺距*螺纹头数=导程,如果是齿轮齿条传动,分度圆直径(m*z)即为导程,导程/脉冲个数=一个脉冲的线位移。什么是细分呢和几相是一个意思吗和 几相没关系吗 细分和相数没关系。以度为例,原来一个脉冲走度,现在改为4细分,那么现在一个脉冲只能走4度了。细分越多,每个脉冲的步进长度越短。细分的多少可由驱动器设置。 控制步进电机转多少最主要你得通过步进电机步距角度计算出电机转一圈需要多少脉冲,比如步距角度为°则电机转一圈需要给步进电机驱动器360/=400个脉冲,转半圈就是200个脉冲。步进电机驱动器资料你先了解下! 步进电机转速则通过改变脉冲频率来控制,用plc的pwm输出控制是比较方便的,速度的快慢不影响步进电机的行程,行程多少取决于脉冲数量。 注意一点步进电机速度越快转矩越小,请根据你的应用调节速度以防失步,造成走位不准确。步进电机是接收步进驱动器给过来的脉冲信号,比如两相的步进,AB相分别轮流输出正反脉冲(按一定顺序),步进电机就可以运行了,相当于一定的脉冲步进马达对应走一定旋转角度。而

步进电机选型的计算示例

步进电机选型的计算示例 一、必要脉冲数和驱动脉冲数速度计算的示例 下面给出的是一个3相步进电机必要脉冲数和驱动脉冲速度的计算示例。这是一个实际应用例子,可以更好的理解电机选型的计算方法。 1.1 驱动滚轴丝杆 如下图,3相步进电机(1.2°/步)驱动物体运动1秒钟,则必要脉冲数和驱动脉冲速度的计算方法如下: 必要脉冲数= 100 10 × 360° 1.2° =3000[脉冲] 如果采用自启动方式驱动1秒钟,则驱动脉冲速度应该这样计算: 3000[Pulse]/1[sec]=3[kHz] 但是,自启动速度不可能是5kHz,应该采用加/减速运行方式来驱动。如果加/减速时间设置为定位时间的25%,启动脉冲速度为500[Hz],则计算方法如下: 驱动脉冲速度[Hz]=3000[脉冲]-500[Hz]×0.25[秒] 1[秒]-0.25[秒] =3.8 [kHz] 如图所示: 1.2驱动传动带 如下图,3相步进电机(1.2°/步)驱动物体运动1秒钟。驱动轮的周长即旋转一圈移动的距离大约为50[mm]。 因此,所需要的必要脉冲数为: 必要脉冲数= 1100 50 × 360° 1.2° =6600 [脉冲]

所需参数同上例驱动滚轴丝杆,采用加/减速运行模式,则驱动脉冲速度为: 驱动脉冲速度[Hz]=6600[脉冲]-500[Hz]×0.25[秒] 1[秒]-0.25[秒] =8.7 [kHz] 如图所示: 二、负载力矩的计算示例(T L) 下面给出的是一个3相步进电机负载力矩的计算示例。这是一个实际应用例子,其中的数字公式有助于更好的理解电机选型的应用。 2.1滚轴丝杆驱动水平负载 如下图,滚轴丝杆驱动水平负载,效率为90%,负载重量为40千克,则负载力矩的计算方法如下: T L=m·P B 2πη × 1 i [kgf·cm] T L=40[kg]×1[cm] 2π×0.9 × 1 1 =7.07 [kgf·cm] 2.2传送带驱动水平负载 传送带驱动水平负载,效率为90%,驱动轮直径16毫米,负载重量是9千克,则负载力矩的计算方法如下:

步进电机的选型和计算方法

1、步进电机的选用计算方法 步进电机是一种将电脉冲转化为角位移的执行机构。通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。您可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时您可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。步进电机是机电一体化产品中关键部件之一,通常被用作定位控制和定速控制。步进电机惯量低、定位精度高、无累积误差、控制简单等特点,广泛应用于机电一体化产品中,如:数控机床、包装机械、计算机外围设备、复印机、传真机等。 选择步进电机时,首先要保证步进电机的输出功率大于负载所需的功率。而在选用功率步进电机时,首先要计算机械系统的负载转矩,电机的矩频特性能满足机械负载并有一定的余量保证其运行可靠。在实际工作过程中,各种频率下的负载力矩必须在矩频特性曲线的范围内。一般地说最大静力矩Mjmax大的电机,负载力矩大。 选择步进电机时,应使步距角和机械系统匹配,这样可以得到机床所需的脉冲当量。在机械传动过程中为了使得有更小的脉冲当量,一是可以改变丝杆的导程,二是可以通过步进电机的细分驱动来完成。但细分只能改变其分辨率,不改变其精度。精度是由电机的固有特性所决定。 选择功率步进电机时,应当估算机械负载的负载惯量和机床要求的启动频率,使之与步进电机的惯性频率特性相匹配还有一定的余量,使之最高速连续工作频率能满足机床快速移动的需要。 选择步进电机需要进行以下计算: (1)计算齿轮的减速比根据所要求脉冲当量,齿轮减速比i计算如下: i=(φ.S)/(360.Δ) (1-1) 式中φ -步进电机的步距角(o/脉冲) S -丝杆螺距(mm) Δ-(mm/脉冲) (2)计算工作台,丝杆以及齿轮折算至电机轴上的惯量Jt。 Jt=J1+(1/i2)[(J2+Js)+W/g(S/2π)2] (1-2)式中Jt-折算至电机轴上的惯量(Kg.cm.s2) J1、J2 -齿轮惯量(Kg.cm.s2) Js -丝杆惯量(Kg.cm.s2) W-工作台重量(N)S-丝杆螺距(cm) (3)计算电机输出的总力矩M M=Ma+Mf+Mt (1-3) Ma=(Jm+Jt).n/T×1.02×10ˉ2 (1-4) 式中Ma -电机启动加速力矩(N.m) Jm、Jt-电机自身惯量与负载惯量(Kg.cm.s2) n-电机所需达到的转速(r/min) T---电机升速时间(s) Mf=(u.W.s)/(2πηi)×10ˉ2 (1-5)Mf-导轨摩擦折算至电机的转矩(N.m) u-摩擦系数η-传递效率 Mt=(Pt.s)/(2πηi)×10ˉ2 (1-6)Mt-切削力折算至电机力矩(N.m) Pt-最大切削力(N) (4)负载起动频率估算。数控系统控制电机的启动频率与负载转矩和惯量有很大关系,其估算公式为 fq=fq0[(1-(Mf+Mt))/Ml)÷(1+Jt/Jm)] 1/2 (1-7)式中fq---带载起动频率(Hz) fq0---空载起动频率 Ml---起动频率下由矩频特性决定的电机输出力矩(N.m) 若负载参数无法精确确定,则可按fq=1/2fq0进行估算. (5)运行的最高频率与升速时间的计算。由于电机的输出力矩随着频率的升高而下降,因此在最高

相关主题
文本预览
相关文档 最新文档