瑞盟 MS41929 步进电机驱动IC 一些使用心得

概述

        项目上使用了一款(瑞盟MS41929 )电机驱动芯片,使用了一段时间,在这写些个人心得,个人能力有限,理解可能有误,其它地方还是需要自己看datasheet。在这做一下记录,方便以后查阅。

只需对寄存器来操作即可。高性价比MS41929国产镜头电机驱动IC,完美替代 AN41908A马达驱动IC。讲解对应的手册是《MS41929说明书2.0_24MHz晶振版.pdf》

电机:功率 = 扭矩*角速度
(注:PPS 是pulse per second 的简写,即每秒的脉冲数,所以pps=Hz , 不用换算。)

  科普知识,PWM:
1、频率
瑞盟 MS41929 步进电机驱动IC 一些使用心得_第1张图片
1)频率是指1秒内有多少个变化周期,如:1个周期内有一开一关/高低电平形成。例如100Hz,那么也就是1秒内开关(高低电平)100次。
通过示波器看出横坐标是时间,比如:1格是5毫秒,可以看到当前一个周期占用两格,也就是10毫秒,1秒等于1000毫秒,1000除以10就是100Hz,
瑞盟 MS41929 步进电机驱动IC 一些使用心得_第2张图片

2)通过上图看出1个周期的时间长度变为4格,也就是1个周期变成20毫秒,1000除以20等于50Hz

瑞盟 MS41929 步进电机驱动IC 一些使用心得_第3张图片
3)通过上图看出1个周期的时间长度变为1格,也就是1个周期变成5毫秒,1000除以5等于200Hz

以上3点简述就是频率概念。


2、占空比概念

1)、占空比就是1个周期中高低电平所占用的时间比例,如果把高电平理解为“开”,低电平理解为“关”,那么占空比可以简单理解为“开”的时间百分比。
瑞盟 MS41929 步进电机驱动IC 一些使用心得_第4张图片
比如上图,“开”与“关”的时间各占一半,那么占空比就是50%,

瑞盟 MS41929 步进电机驱动IC 一些使用心得_第5张图片
2)通过上图可知,“开”的时间明显变长,“关”的时间变短
瑞盟 MS41929 步进电机驱动IC 一些使用心得_第6张图片
3)通过上图可知,占空比为100%,波形变成一条高电平直线,意思就是一直处于“开”着,一直处于高电平状态。

瑞盟 MS41929 步进电机驱动IC 一些使用心得_第7张图片
4)比如当占空比为30%时,“开”的时间占30%,“关”的时间占70%
瑞盟 MS41929 步进电机驱动IC 一些使用心得_第8张图片
5)当占空比为0%时,波形为0伏直线。代表完全处于低电平状态,可以理解为全关。

3、通过以上几点得出结论:

      1)占空比越大,高电平的时间越长,输出的功率也就越大
      2)占空比越小,高电平的时间越短,输出的功率也就越小
开关电源调压,电机调速,LED灯亮度调节,就是利用以上的原理。

科普一下步进电机知识:

                                            1-2-Phase

  1 2 3 4 5 6 7 8
A + + + _ _ _ _ _
/A _ _ _ _ + + + _
B + _ _ _ _ _ + +
/B _ _ + + + _ _ _


 

 

 

 


对应的就是8拍,转一周(在不细分的情况下)

                                           2-2-Phase

  1 2 3 4
A + _ _ +
/A _ + + _
B + + _ _
/B _ _ + +

 

 

 

 



对应就是4拍,转一周(在不细分的情况下)
假设:
2-2 Phase:一步 = 18°C
电机转一圈
360°C / 18°C = 20步
假设 1s, 100Hz
通过上面表得知:1周期 = 4步,求在多少个,100Hz/s 转1周(圈)
也就是100Hz = 100pps,分别4步走完1周(圈),所以就是100pps * 4 = 400pps。
只需要给它400pps脉冲,电机就可以转1圈。

step(1-2 Phase)  步数(电机1圈的行程:长度)
step(2-2 Phase)  步数(电机1圈的行程:长度)
                                 2-2 Phase 电机
正弦频率          Hz = (pps / 4) -> 对应1~256细分
pps(1-2 Phase)  速度
pps(2-2 Phase)  速度

瑞盟 MS41929 步进电机驱动IC 一些使用心得_第9张图片
 

INTCTxx[15:0] × 768 = OSCIN 频率 / 转动频率

INTCTxx[15:0] × PSUMxx[7:0] × 24 = OSCIN 频率 / VD 频率

转动频率 = 800pps / 8 = 100Hz   8细分
因为对应的是1-2相位的Phase


举例说明 OSCIN 频率 = 24 MHz,VD 频率 = 60Hz

INTCTxx[15:0] × 768 = 24 / 100
INTCTxx[15:0] = 24000 / 100 / 768 = 312

PSUMxx[7:0] = OSCIN 频率 / VD 频率 / (INTCTxx[15:0] × 24) = 24 / 60 / (312 * 24) = 53

INTCTxx[15:0] = OSCIN 频率 / VD 频率 / (PSUMxx[7:0] × 24) = 24/60/(53*24) = 314


PSUMxx[7:0] = 1/(100Hz)×24MHz/ (39 ×24) = 256

16384 + (x - 25) * 8 = 16736

(x - 25) * 8 = 16736 - 16384

(x - 25) = 16736 - 16384 / 8
x-25 = 44
x=69


INTCTxx[15:0] × PSUMxx[7:0] × 24 = OSCIN 频率 / VD 频率
INTCTxx[15:0] × 768 = OSCIN 频率 / 转动频率

通过以上两个公式,得出以下公式:
INTCTxx[15:0] × PSUMxx[7:0] × 24 = 24 / 60

INTCTxx[15:0] = 1 / 60 / PSUMxx[7:0]
PSUMxx[7:0] = 1 / 60 / INTCTxx[15:0] = 53

INTCTxx[15:0] = 24MHz / (100Hz × 768) =312
INTCTxx[15:0] × PSUMxx[7:0] × 24 = 24 / 60

INTCTxx[15:0] = 24 /60 / (53 * 24) = 314

PWM频率 = 系统时钟48MHZ/48/10000 = 100HZ

占空比 = 脉宽值(Pulse)/装载值(Period)*100% = 4999/9999 * 100% = 49.9%

PWM 频率 = OSCIN 频率 / ((PWMMODE × 23 ) × 2PWMRES )

PWM 频率 = 24 / ((1 × 8 ) × 1 ) = 3 * 10^3
PWM 频率 = 24 / ((1 × 8 ) × 2 ) = 1.5 * 10^3
PWM 频率 = 24 / ((1 × 8 ) × 4 ) = 0.75 * 10^3

驱动器 X 最大占空比 = PPWx/ (PWMMODE × 8)

最大占空比 = 200 / (28*8) = 0.89
通过结论 PWMMODE不能大于PPWx,不然占空比会超过100%
当 PWMMODE = 10, PPWx = 96
最大占空比 = 96 / (10*8) = 1.2*10^3 = 120%

步距角=360/(2*相数*转子齿数);

360/(2*2*5) = 18°C

VSM08142电机
18°c步距角

转一圈需要多少个脉冲
360°C / 18°C =  20pps

通过公式推导得出结果:(如有错误请及时指出谢谢!)

20pps 就走了18°C。

1)那么1°C是多少pps
20pps / 18°C = 1.11pps,那么1°C是1.11pps。 

2)那么1pps走了多少°C
18°C / 20pps = 0.9°C,那么1pps走了0.9°C。 


64细分等分
18 / 64= 0.28125,得出每一个细分就是0.2°C
通过上面可以得出,1°C / 0.2°C = 5;
0.2°C * 5 = 1°C = 1.11pps
那么:一个细分是多少pps?
1.11 / 5 = 0.222pps
各个放大100倍:
20°C = 22pps

128细分等分
18 / 128= 0.140625,得出每一个细分就是0.14°C
通过上面可以得出,1°C / 0.14°C = 7.14285
0.14°C * 7.142 = 1°C = 1.11pps
那么:一个细分是多少pps?
1.11 / 7.142 = 0.155pps
各个放大100倍:
14°C = 15pps

256细分等分
18 / 256 = 0.0679,得出每一个细分就是 0.067°C
通过上面可以得出,1°C / 0.067°C = 14.9253
0.067°C * 14.9253 = 1°C = 1.11pps
那么:一个细分是多少pps?
1.11 / 14.9253  = 0.0743pps
各个放大100倍:
6°C = 7pps


360/(2*2*10) = 9°C

VSM08161电机
9°c步距角

转一圈需要多少个脉冲
360°C / 9°C =  40pps

 

补充部分:可能和上面介绍有小部分重复内容,自行辨识

t = n×8192/24MHz

n = 24/t/8192

PWM 频率 = OSCIN 频率 / ((PWMMODE × 2^3 ) × 2^PWMRES )

推导出:
PWM 频率 = 24 / ((1 × 2^3 ) × 2^0 ) = 3000

PWM 频率 = 24 / ((2 × 2^3 ) × 2^1 ) = 1500

PWM 频率 = 24 / ((3 × 2^3 ) × 2^2 ) = 250‬

寄存器:0x22
PHMODAB[5:0](相位矫正α电机)
瑞盟 MS41929 步进电机驱动IC 一些使用心得_第10张图片
PHMODCD[5:0](相位矫正β电机)

000000
000001 0.7°
011111 21.8°
100000 -22.5°
111111 -0.7°
减幅单位 360° / 512 = 0.70°

 

 

 

 

 

 

步进电机线圈之间的相位差一般为 90°。但是,因为电机的不同,或者工艺偏差,相位差也会偏
移出 90°。因此,即使驱动波形电流的相位差 90°,但是电机本身不是相差 90°,也会产生转矩
纹波,噪声还是存在的。
这个设置主要是减少由于电机变化时产生的转矩纹波。
 

寄存器 0x23
最大占空比由下式进行计算:
驱动器 X 最大占空比 = PPWx/ (PWMMODE × 8)


当 PPWA[7:0] = 200,PWMMODE[4:0] = 28,最大占空比为
200/28/8=0.89=89%

96/10/8=120%


PSUMAB[7:0](α电机步进数)
PSUMCD[7:0](β电机步进数)

如果要停止电机转动,设置 PSUMXX[7:0]=0.

寄存器值                                       总步数
  64 细分模式 128 细分模式 256 细分模式
0 0 0 0
1 500ns 250ns 125ns
max 32.8ms 16.4ms 8.2ms
n 12n/24MHz 6n/24MHz 3n/24MHz

 

 

 

 

 

 

BRAKEAB(α电机刹车状态)CCWCWAB(α电机转动方向)
CCWCWCD(β电机转动方向)
方向定义:
设置值          电机转动方向
0                   正向
1                   反向

BRAKECD(β电机刹车状态)
刹车定义:
设置值         α电机刹车
0                  正常状态
1                  刹车状态


ENDISAB(α电机 Enable/Disable)
ENDISCD(β电机 Enable/Disable)

ENDISAB 和 ENDISCD 分别设置α电机和β电机的输出控制。
当 ENDISxx = 0 时输出高阻态。然而,内部的激励位置计数器在 ENDISxx = 0 仍然保持计数。
因此,当在正常状态下想要停止电机,设置 PSUMxx[7:0] = 0,而不是设置 ENDISxx = 0.

设置值         电机输出状态
0                 输出关闭(高阻态)
1                 输出打开

MICROAB(α电机正弦波分频数)
MICROCD(β电机正弦波分频数)
MICROAB 和 MICROCD 分别设置α电机和β电机的正弦波分频数。
64 分频的波形如第 26 页所示。

MICROAB                    分频数
00       256
01 256
10 128
11 64

 

 

 

 

 

 

瑞盟 MS41929 步进电机驱动IC 一些使用心得_第11张图片

INTCTAB[15:0]和 INTCTCD[15:0]分别设置α电机和β电机的一个步进的周期。
INTCTAB(α电机 1 个步进周期)
INTCTCD(β电机 1 个步进周期)

寄存器值                                       总步数
  64 细分模式 128 细分模式 256 细分模式
0 0 0 0
1 500ns 250ns 125ns
max 32.8ms 16.4ms 8.2ms
n 12n/24MHz 6n/24MHz 3n/24MHz

 

 

 

 

 

 

当 INTCTAB[15:0]=0,只要 pwm 最大占空比不为 0,电机就保持在释放时状态。
举例说明:
当 INTCTAB[15:0]=400 时,64 细分下每步周期
    12*400/24MHz=0.2ms
因此,每个正旋波周期为 12.8ms(78.1Hz);同样计算,128 细分与 256 细分下也为 12.8ms。

对应的芯片手册:下载连接,当然也可以去官网:下载链接

 

总结:想控制步进电机,首先需要花时间去了解电机的运作原理,其次再去了解驱动电机芯片,电机这个学问还是有点深度,还是需要花点时间揣摩才行。好了,废话有点多,本篇只要是给自己做个记录。

 

你可能感兴趣的:(#,电机)