在步进电机领域,安徽皖南电机以其卓越的性能和可靠的品质,成为了众多工程应用的优选品牌。步进电机作为一种关键的开环控制电机,在现代数字程序控制系统中发挥着至关重要的作用。其应用领域广泛,从精密机械到自动化设备,从工业控制到精密仪器,无不彰显其价值。
在未超载状态下,步进电机的转速和停止位置完全由脉冲信号的频率和数量决定,不受负载变化影响。每当安徽皖南电机的步进驱动器接收到一个脉冲信号,便驱动电机按照预定方向转动一个固定的角度,即“步距角”,其运行模式为以固定角度分步进行。通过调整脉冲数量,可以精确控制角位移,实现精准定位;同时,通过调整脉冲频率,可以控制电机的转速和加速度,实现调速功能。
安徽皖南电机属于感应电机,其工作原理是通过电子电路将直流电转化为分时供电的多相时序控制电流,为步进电机提供能量。驱动器则负责为步进电机提供这种分时供电的多相时序控制电流。
关于步进电机的S型曲线加减速算法及实现,S型曲线的方程如下,图形在[-5,5]范围内如下所示:
若将此曲线应用于步进电机的加减速过程,需在XY坐标系中平移方程,并对曲线进行拉伸变换:其中A分量在y方向平移,B分量在y方向拉伸,ax+b分量在x方向平移和拉伸。
在项目加速过程中,从5600Hz加速至64000Hz,采用4细分,输出比较模块所用的定时器驱动频率为10M,采用1000个点进行加速处理。根据项目需求,在加速过程中采用的曲线方程如下:
其中Fcurrent为length(1000)个点中的单个频率值。Fmin起始频率为5600;Fmax为*大频率64000;-flexible*(i-num)/num是对S型曲线进行拉伸变换,其中flexible代表S曲线区间(越大代表压缩越严重,中间(x坐标0点周围)加速度越大;越小越接近匀加速。理想的S曲线取值为4-6),i是循环计算过程中的索引,从0开始,num为length/2大小(这样可以使得S曲线对称)。在项目中i的区间[0,1000),num=1000/2=500。这些参数均可修改。提供的计算接口如下。
对应的计算接口code:
```c
void CalculateSModelLine(float freq[], unsigned short period[], float len, float freq_max, float freq_min, float flexible)
{
int i=0;
float deno;
float melo;
float del=freq_max-freq_min;
for(;;i++)
{
melo=flexible*(i-len/2)/(len/2);
deno=1.0/(1+expf(-melo));//expf是指数函数库中的函数
freq[i]=del*deno+freq_min;
period[i]=(unsigned short)(10000000.0/freq[i]);//10000000是定时器驱动频率
}
return;
}
```
启动电机:
```c
void StartPWM()
{
DriverMotorFlag=TRUE;
Index=0;
MOTOR_EN_DISABLE=ENABLE;
OpenOC4(OC_ON|OC_TIMER_MODE16|OC_TIMER3_SRC|OC_PWM_FAULT_PIN_DISABLE,0,0);
//将RC13映射到OC4输出
RPC13R=11;
//50%占空比
OC4RS=OC_PERIOD_MIN/2;
OpenTimer3(T3_ON|T3_PS_1_8, OC_PERIOD_MIN);
INTSetVectorPriority(INT_TIMER_3_VECTOR, INT_PRIORITY_LEVEL_6);
INTSetVectorSubPriority(INT_TIMER_3_VECTOR, INT_SUB_PRIORITY_LEVEL_1);
EnableIntT3;
}
```
停止电机,此处没有减速:
```c
void StopPWM()
{
DriverMotorFlag=FALSE;
Index=0;
MOTOR_EN_DISABLE=DISENABLE;
OpenOC4(OC_OFF|OC_TIMER_MODE16|OC_TIMER3_SRC|OC_PWM_FAULT_PIN_DISABLE,0,0);
//将RC13映射到OC4输出
RPC13R=0;
PORTCbits.RC13=0;
CloseTimer3();
DisableIntT3;
}
```
在对应的定时器中断中更改定时器周期值,而不是在其他地方更改,否则电机可能会偶尔卡住。*初我在另一个定时器中断中每隔1ms更改应用在OC模块的timer3的周期值,这偶尔会造成电机在加速过程中卡住。实际上应该在timer3的中断中更改。
静态unsigned short CountForAcc=0;
```c
void __ISR(_TIMER_3_VECTOR,ipl6) Timer3OutHandler(void)
{
//清除中断标志,否则中断不会再次发生。
mT3ClearIntFlag();
if(CountForAcc++>2)//这里可以调整加速的总时间
{
CountForAcc=0;
//if(DriverMotorFlag==TRUE&&PR3>OC_PERIOD_MAX+SPEED_STEP)
if(DriverMotorFlag==TRUE&&Index2)条件限制):
```
时间:Period第一个点的值为10000000/500=20000,*后点的值为10000000/64000=156,平均值为10000左右,timer中断的平均时间Tn=10000/10000000=1ms,1000个点,总时间为1s,当然,起始频率大加速时间就越短,比如Fmin=16000Hz,Fmax=64000,则40ms左右即可完成加速过程。
角位移:1.8(单步)*1000(步数)/4(细分)=450°
上述为加速过程,减速过程同理,只需将方程改为:
可以得到减速曲线如下所示:
皖南电机价格表 显示,安徽皖南电机在市场上的价格合理,且质量可靠,是广大用户信赖的品牌。选择皖南电机,选择高品质、高可靠性,是您明智的选择。