首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 单片机 >

DSP的PWM输出统制步进电机疑惑

2013-06-19 
DSP的PWM输出控制步进电机疑惑我选用的步进电机是42系列两相混合式,参数如下图选用的程序是固高开发板的PW

DSP的PWM输出控制步进电机疑惑
我选用的步进电机是42系列两相混合式,参数如下图DSP的PWM输出统制步进电机疑惑
选用的程序是固高开发板的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;

} DSP PWM脉冲 步进电机
[解决办法]
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,的确是靠频率控制速度的,

引用
脉冲信号输入
共阳极时该脉冲信号下降沿被驱动器解释为一个有效脉冲,并驱动电机运行一步。为了确保脉冲信号的可靠响应,共阳极时脉冲低电平的持续时间不应少于10μs。本驱动器的信号响应频率为70KHz,过高的输入频率将可能得不到正确响应

你是不是接错线了?
引用
错相保护
  两相电机与驱动器连接时,用户极易接错相,从而严重损坏驱动器。本驱动器设计了错相保护电路。用户即使接错相,驱动器也不会损坏,不过电机运行会不正常,主要表现在出力极小。遇此情况,应检查电机接线是否正确

[解决办法]
先把电机断掉,拿示波器看看驱动器输出的频率是多少
看你贴的半步下最大空载起动频率是1.6Khz

再看看驱动器编码开关是怎么配置的
确定是半步?
[解决办法]
引用:
Quote: 引用:

先把电机断掉,拿示波器看看驱动器输出的频率是多少
看你贴的半步下最大空载起动频率是1.6Khz

再看看驱动器编码开关是怎么配置的
确定是半步?

电机我已经调好了,现在可以正常运转,而且起动PWM频率也可以高至5KHz,我按照你说的拿示波器测了一下,步进驱动器输出的频率为187Hz,我不太清楚是怎么从PWM频率计算过来的...那个空载起动频率1.6KHz,指的是进入步进驱动器的频率吧?
你说的很对,我没有设置成半步,以为都一样呢...现在已经改过来了。半步的起动频率是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信号是什么样的?你用哪里当参考点的?是每一相对地的?还是相和相之间的?
[解决办法]
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

先把电机断掉,拿示波器看看驱动器输出的频率是多少
看你贴的半步下最大空载起动频率是1.6Khz

再看看驱动器编码开关是怎么配置的
确定是半步?

电机我已经调好了,现在可以正常运转,而且起动PWM频率也可以高至5KHz,我按照你说的拿示波器测了一下,步进驱动器输出的频率为187Hz,我不太清楚是怎么从PWM频率计算过来的...那个空载起动频率1.6KHz,指的是进入步进驱动器的频率吧?
你说的很对,我没有设置成半步,以为都一样呢...现在已经改过来了。半步的起动频率是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信号是什么样的?你用哪里当参考点的?是每一相对地的?还是相和相之间的?

先谢谢你的悉心指点!我刚问了一个师兄,我测量的187Hz是从A+端口测的,师兄说这是步进驱动器产生的电流信号,并不是步进电机的起动频率。1.6KHz应该是从步进驱动器的脉冲输入端测得。这样的话,那么就符合现在的数据了。你认为呢?
步进驱动器以前没用过,我一直以为A+、A-也是脉冲信号,师兄说是电流信号,我又糊涂了...

你看你贴的图,空载启动频率1.6Khz,这是步进电机本身的参数,没记错的话,如果电机带载,这个频率还要降低。
你用驱动器,就是要控制驱动器,使驱动器的输出满足小于1.6Khz,如果大于1.6khz,电机是没有响应的。你实验中还有5khz的pwm进驱动器的,如果5khz是直接进电机的,电机怎么能转呢?电机的线圈上有电流,这个电流通过线圈产生磁力,才能推动电机,如果频率太高,电机来不及响应,自然就不转。
[解决办法]
还有这个
http://jpkc.cdutetc.cn/zdh/dldz/wjnr/dldzja/3.htm

估计你的驱动器是用PWM控制相电流输出的,原理参见降压斩波。
你输入1.6khz或者5khz都是为了控制相电流

找个差分探头把示波器连到A+对A-,截图贴上来看看

热点排行