我选用的步进电机是42系列两相混合式,参数如下图
选用的程序是固高开发板的PWM模块的程序,当我按照程序(PWM频率为5KHz)驱动步进电机是,只有嗡嗡的声音,电机不转,于是我将频率调为上图的1.6KHz,电机可以运转。通过调节,我发现,只有频率在1.3KHz-1.8KHz时,电机才可以运转。
1、不是说可以通过调节频率来调节步进电机的转速吗,可是现在只有这么窄的范围,可以实现转速调节吗?
而且我发现在这些频率内,电机转速都差不多,是不是我理解错了?
2、当我调节PWM占空比的时候,发现也没有什么实际作用,电机转速也不会改变,那么占空比对于步进电机有什么意义呢?
3、我该如何利用PWM模块来调节步进电机不同的转速?
开发板中的PWM模块的程序如下:
#define CPU_CLK 100e6
#endif
#define PWM_CLK 1.6e3 // If diff freq. desired, change freq here.
#define SP CPU_CLK/(2*PWM_CLK)
#define TBCTLVAL 0x200E // Up-down cnt, timebase = SYSCLKOUT
void EPwmSetup()
{
InitEPwm1Gpio();
EPwm1Regs.TBSTS.all=0;
EPwm1Regs.TBPHS.half.TBPHS=0;
EPwm1Regs.TBCTR=0;
EPwm1Regs.CMPCTL.all=0x50; // Immediate mode for CMPA and CMPB
EPwm1Regs.CMPA.half.CMPA =SP/2;
EPwm1Regs.CMPB=0;
EPwm1Regs.AQCTLA.all=0x60; // EPWMxA = 1 when CTR=CMPA and counter inc
// EPWMxA = 0 when CTR=CMPA and counter dec
EPwm1Regs.AQCTLB.all=0;
EPwm1Regs.AQSFRC.all=0;
EPwm1Regs.AQCSFRC.all=0;
EPwm1Regs.DBCTL.all=0xf;//b; // EPWMxB is inverted
EPwm1Regs.DBRED=1000;
EPwm1Regs.DBFED=1000;
EPwm1Regs.TZSEL.all=0;
EPwm1Regs.TZCTL.all=0;
EPwm1Regs.TZEINT.all=0;
EPwm1Regs.TZFLG.all=0;
EPwm1Regs.TZCLR.all=0;
EPwm1Regs.TZFRC.all=0;
EPwm1Regs.ETSEL.all=9; // Interrupt when TBCTR = 0x0000
EPwm1Regs.ETPS.all=1; // Interrupt on first event
EPwm1Regs.ETFLG.all=0;
EPwm1Regs.ETCLR.all=0;
EPwm1Regs.ETFRC.all=0;
EPwm1Regs.PCCTL.all=0;
EPwm1Regs.TBCTL.all=0x0010+TBCTLVAL; // Enable Timer
EPwm1Regs.TBPRD=SP;
}
------解决方案--------------------
1、不是说可以通过调节频率来调节步进电机的转速吗,可是现在只有这么窄的范围,可以实现转速调节吗?
而且我发现在这些频率内,电机转速都差不多,是不是我理解错了?
我印象中,伺服电机才是PWM调速的,步进电机用的是步进脉冲的频率调速.也有可能是不同的驱动器采用的方式不一样...
2、当我调节PWM占空比的时候,发现也没有什么实际作用,电机转速也不会改变,那么占空比对于步进电机有什么意义呢?
不知道是不是驱动器的特殊要求.
3、我该如何利用PWM模块来调节步进电机不同的转速?
同上
要不LZ好好查查~
------解决方案--------------------
1、不是说可以通过调节频率来调节步进电机的转速吗,可是现在只有这么窄的范围,可以实现转速调节吗?
而且我发现在这些频率内,电机转速都差不多,是不是我理解错了?
转速和PWM的频率没关系,和绕线的通电方向的切换速度有关
2、当我调节PWM占空比的时候,发现也没有什么实际作用,电机转速也不会改变,那么占空比对于步进电机有什么意义呢?
PWM占空比会影响步进电机的力矩但不会影响速度,占空比太小了其力矩无法推动自身的惯性就会出现转不动的现象
3、我该如何利用PWM模块来调节步进电机不同的转速?
没用过你那个PWM模块,
以4节拍为例
A+:A线组正向通电
B+:B线组正向通电
A+ -> B+ -> A- -> B- ->A+ ->.....
该循环越快电机转速越快,但注意是有上限的
------解决方案--------------------
楼主要确认你用的是单纯的PWM模块还是步进电机的驱动模块
------解决方案--------------------
看来下20403的PDF,的确是靠频率控制速度的,
你是不是接错线了?
------解决方案--------------------
先把电机断掉,拿示波器看看驱动器输出的频率是多少
看你贴的半步下最大空载起动频率是1.6Khz
再看看驱动器编码开关是怎么配置的
确定是半步?
------解决方案--------------------
1. 你要找点步进电机基础知识的书看看,我没深入玩过,上一次玩都是5年前的事情了,用的是一个细分驱动芯片,确认受控就直接扔在一边不管。现在乱说就是误人子弟。可以去看看这个
http://www.ti.com.cn/solution/cn/motor_control_stepper_motor?247SEM
2. 1.6khz是电机本身的响应最大频率,而不是驱动器的。你还要看看驱动器本身的响应,这个要查datasheet了,就是SH-20403本身的。我看到最大响应是70Khz,这个信号进去之后驱动器会加以转换,在特定的细分下才能推动电机。
3. 你那个187hz信号是什么样的?你用哪里当参考点的?是每一相对地的?还是相和相之间的?
------解决方案--------------------
先把电机断掉,拿示波器看看驱动器输出的频率是多少
看你贴的半步下最大空载起动频率是1.6Khz
再看看驱动器编码开关是怎么配置的
确定是半步?
电机我已经调好了,现在可以正常运转,而且起动PWM频率也可以高至5KHz,我按照你说的拿示波器测了一下,步进驱动器输出的频率为187Hz,我不太清楚是怎么从PWM频率计算过来的...那个空载起动频率1.6KHz,指的是进入步进驱动器的频率吧?
你说的很对,我没有设置成半步,以为都一样呢...现在已经改过来了。半步的起动频率是1.6KHz,那整步起动频率是多少啊?