一个学期都没有更新博客了,一是平常太忙没有时间,二是经过一个学期时间的反思和沉淀,某些知识才能有更完善的见解。
在这个学期中,博主经历了吉林省的全国大学生电子设计大赛,由于电路上的某些原因,最终以毫厘之差错失省一,取得了省级二等奖。毕竟这是博主在大学期间参加的第一次省级及以上比赛,也算是为今后的大型比赛采坑积累经验。
我们选中的A题用到了步进电机,在比赛后我结合比赛区间遇到的一些情况又对步进电机进行了系统性的总结分析,此篇博客就是记录前前后后关于步进电机的所有知识。
步进电机综述
步进电机定义
步进电机型号及分类
步进电机原理
步进电机驱动模块与驱动器
细分的概念
A4988驱动模块
DRV8825驱动模块
步进电机驱动器(黑盒)
步进电机使用经验PRO
转速与频率篇
TMC2226-SA——发热与声音的克星
“S”型速度加减速曲线
插补算法
步进电机是一种将电脉冲信号转换成相应角位移或线位移的电动机。每输入一个脉冲信号,转子就转动一个角度或前进一步,其输出的角位移或线位移与输入的脉冲数成正比,转速与脉冲频率成正比。因此,步进电动机又称脉冲电动机。
问题:在省赛A题要求必须使用直流电机,那么步进电机是否属于直流电机?
答:根据电机学上的解释,步进电机与常见的直流电机在原理上有很大不同,根据其名称一般按照用途分类分别被定义为控制类电机和驱动类电机;但是步进电机终究通的还是直流电,所以属于直流电机中感应电机的一种。
首先是项数与出线,常见的是两种,四相五线制和两相四线制
常用的步进电机有42的,57的,这些指的都是电机外径。
电机外径越大,扭矩越大,通过的最大额定电流也就越大。
决定电机“劲”(扭矩)大不大的是通过的电流。
步距角多数都是1.8°的(默认零细分情况下)。
以两相四线步进电机为例,简要介绍一下工作原理。
步进电机的驱动是按照“拍”的方式去驱动的,两项线圈接出四根线按照有规律的不同组合通电就是拍,如下:
8拍: 1、在A与A-正电压,B与B-不给电悬空; 2、在A与A-正电压,B与B-也给正电压; 3、A与A-不给电压悬空,B与B-正电压; 4、A与A-给负电压,B与B-给正电压; 5、 A与A-给负电压,B与B-不给悬空; 6、A与A-给负电压,B与B-给负电压; 7、A与A-不
给电悬空,B与B-给负电压; 8、A与给正电压,B与B-给负电压;按以上八个状态轮流供电。
其实讲原理没有一点用,待会儿下面会用驱动器的。。。
步进电机的专业驱动模块大大简化驱动时序与控制问题,如果老老实实根据原理需要用单片机或PLC输出四路信号才能控制,而且驱动能力极差(因为驱动能力与电流有关);使用驱动模块之后,就可以以一路信号线控制转角与转速,还可以增大功率(扭矩),还具有细分功能。
细分通俗来讲是将步进角进行细化,通常有2,4,6,8,16,32,64………128等细分规格。在使用驱动模块和控制器之后,单片机输出一个脉冲走一个步进角的角度,细分之后一个脉冲走一个(步进角÷细分数)的角度,精确度很高。
A4988是一款完全的微步电动机驱动器,带有内置转换器,易于操作。该产品可在1、2、4、8、16细分模式时操作双极步进电动机。兼容3.3和5 V逻辑电平。转换器是 A4988 易于实施的关键。只要在“STEP”输入中输入一个脉冲,即可驱动电动机产生微步。无须进行相位顺序表、高频率控制行或复杂的界面编程。
驱动性能:电压可达35 V,没有加散热片,电流最好在1.2A以下。如果加散热片,电流可以达到2A。
VMOT、GND:功率供电引脚,作为输出的驱动电源,供电范围:0-35V,此处使用一个47uf的电解电容来保护驱动板免受瞬时电压的冲击。
VDD、GND:逻辑供电引脚,作为芯片内部的逻辑器件电源。
OUTPUT1A、1B、2A、2B:按照相序接四线电机。
DIR:输入高低电平控制转动方向。
STEP:用于步数与转速控制,一个脉冲走一步(细分后的角度)。
SLEEP:低电平使能使模块处于休眠模式,当电机不工作时,它可以最大程度地降低功耗,默认为高电平。
RESET:如果这个针脚的输入是低电平,那么所有的微步设置都将被忽略掉。因此上图将SLEEP和RESET连接起来,目的是将RESET针脚设置为高电平,以便模块可控。
MS1, MS2和MS3:用于细分设置,细分数如下:
MS1 |
MS2 |
MS3 |
细分数 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
2 |
0 |
1 |
0 |
4 |
1 |
1 |
0 |
8 |
1 |
1 |
1 |
16 |
板载电位器:用于调节最大输出电流,具体依据如下:最大电流计算公式:I_TripMax= Vref/(8*Rs)。例如:Rs为R100,我们需要最大1.5A的驱动电流,Vref参考电压就需要调节到1.2 V。Rs:Rs电阻值市面上一般有3种类型0.05 欧姆, 0.1 欧姆或者0.2 欧姆,对应的是驱动模块上面S1 S2电阻。这里是0.1欧姆(标号R100=0.1欧姆,R200=0.2欧姆, R050=0.05欧姆)。Vref:参考电压可以通过调节电位器改变,顺时针旋转电位器调大电压,逆时针旋转电位器调小电压。测量电位器金属旋钮和GND之间的电压,即是Vref。
功率供电电压:8.2V-45V。
驱动能力:最大输出24V,2.5A电流。
最高32细分。
具有过流保护,热关机,欠压锁定,故障指示引脚 nFUAULT。
其他的跟A4988几乎一样。
引脚说明:
VM、GND:功率供电引脚,作为输出的驱动电源,供电范围:8.2-45V。
VDD、GND:逻辑供电引脚,作为芯片内部的逻辑器件电源。
AOUT1,AOUT2,BOUT1,BOUT2:按照相序接四线电机。
DECAY:衰减控制引脚,低电平为低衰减模式,高电平为高速衰减模式,悬空(open)为混合衰减模式。引脚内置悬空(上下拉)。
DIR:输入高低电平控制转动方向。内置下拉。
STEP:用于步数与转速控制,一个脉冲走一步(细分后的角度)。内置下拉。
SLEEP:低电平使能使模块处于休眠模式,当电机不工作时,它可以最大程度地降低功耗,默认为高电平。
RESET:如果这个针脚的输入是低电平,那么所有的微步设置都将被忽略掉。因此上图将SLEEP和RESET连接起来,目的是将RESET针脚设置为高电平,以便模块可控。
MODE1, MODE 2和MODE 3:用于细分设置,细分数如下:
MODE0 |
MODE1 |
MODE2 |
细分数 |
0 |
0 |
0 |
1(不细分) |
1 |
0 |
0 |
2 |
0 |
1 |
0 |
4 |
1 |
1 |
0 |
8 |
0 |
0 |
1 |
16 |
1 |
0 |
1 |
32 |
0 |
1 |
1 |
32 |
1 |
1 |
1 |
32 |
ENABLE:接高电平后将禁止输出驱动。
FAULT:错误标志引脚,输出引脚,正常为高电平,错误会导致引脚低电平。
步进电机通过电流计算公式:Imot=2*Uref,Uref电压测量方式为电位器中心抽头的端子。
市面上常见的步进电机驱动器种类非常多,但是用法和引脚通常一致。
有若干拨码开关控制通过电流与细分数,按照表格对应即可。A+A-B+B-按照相序接步进电机四根线,VCC与GND接功率电源。
剩下EN+EN-DIR+DIR-PUL(STEP)+ PUL(STEP)-六个接口有两种接法。
接法一:共阳接法
EN+,DIR+,PUL(STEP)+接逻辑电源正(5V/3.3V)
EN-,DIR-,PUL(STEP)-接单片机或PLC控制信号
EN-若为高电平,脱机信号失能,四个电机输出引脚上电,电机若工作则转动,不工作则锁死;EN-若为低电平,脱机信号使能,电机可手动自由转动,PUL(STEP)给信号也不转动。
DIR-通高低电平控制正反转。
PUL(STEP)-接脉冲端输入脉冲控制,一个脉冲走一步(步进角÷细分数)
接法二:共阴接法
EN-,DIR-,PUL(STEP)-接逻辑电源地
EN+,DIR+,PUL(STEP)+接单片机或PLC控制信号
EN+若为低电平,脱机信号失能,四个电机输出引脚上电,电机若工作则转动,不工作则锁死;EN+若为高电平,脱机信号使能,电机可手动自由转动,PUL(STEP)给信号也不转动。
DIR+通高低电平控制正反转。
PUL(STEP)+接脉冲端输入脉冲控制,一个脉冲走一步(步进角÷细分数)。
步进电机驱动器一般所能兼容的细分数,可通过电流和散热要比芯片好得多,因此在某些对于尺寸没有要求的项目可以优先考虑驱动器。
步进电机的转速只跟通入脉冲信号(一般为PWM方波)的频率有关。
转速(°/秒)=步进角/细分数*脉冲频率。
所通脉冲频率不能太低也不能太高,太低会导致电机没反应,太高会导致电机无法转动并发热,振动发出高频响声,且可以用手拧动电机轴。
正常1.8°步进角的42步进电机在无细分的情况下需要1K以上的方波信号,最高4kHz(???记不太清了)以下的方波信号。
因为在吉林省赛A题中对步进电机的速度有要求,因此博主在实际中发现了一种特殊的现象:
假如一个1.8°的步进电机在无细分且正常工作(即能有一定的转矩)的情况下最高能通4kHz的方波,则在2细分且正常工作的情况下最高就能通到9kHz左右的方波,在4细分且正常工作的情况下最高能通到20kHz左右的方波……以此类推按照比例换算的话,细分数越高则最快转速的上限就会越高,不过博主当时好像就试到32细分,目前也不知道是为什么,当时比赛就用的这个方法达到要求转速,权当提高转速的方法了。
为什么强调正常工作(具有一定的转矩),因为在实际使用过程中观察到,在高细分的情况下,转速越接近最高极限转速的时候,电机力矩会变得超级超级小,以至于开始转的好好地,用手轻轻一捏就丢步了,甚至小到起转的时候都无法克服自己转子的阻力,嗡嗡作响不转动。
原因如下:根据原理步进电机转子转动是由两项线圈产生磁场,来吸引带动转子转动,输入的PWM信号频率控制两项线圈磁场的改变速度,但是当频率改变速度太快且负载太大(转动惯性大)的时候,没有等转子转动到指定位置时两项线圈的磁场就已经改变了,因此转速越高,留给转子转动每步的时间就越短,所以转矩就越小,如果频率再高到一定程度,转子就赶不上磁场改变的速度,就产生了振动,发热,嗡嗡作响,丢步等现象。
此外,还有一个小现象和细节也是要用上面的理论解释。步进电机想要达到高细分的高转速情况,当转子静止的时候不能直接给一个理想高转速对应的信号频率,特别是在有较大负载的时候(博主亲测),这样的话转子有很大的概率是一上来就丢步的,甚至嗡嗡作响不转动。解决办法是要有一个加速的过程,要先用低速时的高转矩来驱动转子由静到动先抵消一部分转动惯量,再将速度提上来进入理想转速,这个加速过程可以很短而且可以不是线性的,但是也一定要有这个加速过程。
综上所述:
在保证一定驱动能力且不丢步的情况下提高步进电机的转速有以下注意事项:
按照参数给够驱动芯片或驱动器的输出驱动电流。
牺牲部分转矩保持转速,因此负载不易过大,防止丢步。
适当提升细分数来提升最大转速的上限。
需要有加速过程,避免直接通入高频信号。
你是否厌倦了步进电机经常发热的情况,你是否厌倦了步进电机吵吵闹闹的情况……
来吧,了解一下TMC2226-SA静音步进电机驱动模块吧!!!
普通的步进电机驱动模块或驱动板的四路输出引脚在驱动芯片的控制下输出的是有规律的方波(非常规矩的方波哟);而基于StealthChop2™的TMC2226-SA芯片可以自己适应所接步进电机每次运动的电压与电流,在不影响转矩转速的情况下进行调节电压调制,以最小化电流波动。目前此芯片已经实现低于经典电流控制 10 dB 或以上的噪声水平。此外,由于电压与电流管控,线圈发热的现象得到有效管控。
静音防抖步进驱动,内置MOS,最高29V,峰值2.8A;防堵转、电流自适应负载(节能高达75%)等功能;不加散热片。
基本描述:
TMC2226-SA是超静音、不共振两相步进电机驱动器IC。 TMC2209与许多传统驱动器以及TMC2208引脚兼容。 TRINAMICs先进的StealthChop2斩波器可确保电机无噪音运行,实现最高效率和最佳电机扭矩。 其快速的电流调节和抑制共振功能组合可实现高动态运动。 StallGuard用于无传感器回原点,防止堵转。 内置功率MOSFET可处理高达2A RMS的电机电流,具有保护和诊断功能,可实现稳定可靠的运行。 一个简单易用的UART接口打开了调优和控制选项。将应用程序调优存储到OTP内存。 通过单独的脉冲方向可将驱动器设置为无噪音运行和最精确的操作。
TMC2226-SA是经济型的静音驱动芯片,可以替换那些使电机噪声大、共振的驱动芯片,帮助客户现有产品快速升级、换代 。
参数如下:
2相步进电机驱动芯片,峰值 2.8A,持续 2A;4.7529V DC 供电。
脉冲/方向控制 8,16,32,64 细分硬件配置,UART配置最高256 细分 内部自带MicroPley。
细分插补技术实现 256 细分输出,确保运行平滑。
StealthChop2 静音驱动技术(低速超静音)。
SpreadCycle 高动态性能电机斩波控制(高速防抖动)。
Stallguard4 第四代同时适应 StealthChop 的负载力矩检测功能(防堵转)。
Coolstep 电流随负载调节控制,可节能 75%(电流自适应)。
低 RDSon,低温升。LS 170mΩ & HS 170mΩ (typ. at 25°C)。
低功耗待机适应 EUP 或电池供电应用。
可选内部检测电阻,无需外置。
单线 UART&OTP 高级配置选项。
集成独立运动的脉冲发生器。
齐全的保护和诊断功能。
HTSSOP28 封装,散热性能更好。
这个其实是转速篇步进电机加减速中比较不错解决方案,因为篇幅有限,而且涉及大量运算论证,博主在这里只简要介绍一下内容。
加加速段
加加速度为 jmax,加速度线性增加至设定值或最大值amax。
匀加速段
加加速度为0,加速度恒定。
减加速段
当速度接近设定的值或最大值vmax时,加加速度突变为反向的jmax,进入加速度线性减小的变减速运动阶段。
匀速段
当速度增至vmax后,加加速和加速度均变为0,进入匀速运动阶段。
加减速段
加加速度突变为反向的jmax,加速度反向线性增加至−amax。
匀减速段
加加速度和为0,减加速度恒定。
减减速段
加速度突变为jmax, 加速度由负向的amax线性减小至0。
就是这么一张图,放到步进电机上的大概意思是电机的转速若按照这个图上的曲线进行启动加速和停止减速,将会减少启动时丢步和停止时超步的现象,而且对于负载的转动会更加的稳定。具体原理和实现方法如下链接:
https://blog.csdn.net/septembernine/article/details/53125828
https://blog.csdn.net/zxp121127/article/details/72330735
https://blog.csdn.net/weixin_44603292/article/details/98725029
使用STM32控制3轴步进电机S型加减速运动的代码:
https://github.com/luoliCHq/4StepperMotorsDriveBySTM32F103x
在数控机床与3D打印中通常会用到步进电机,而且执行每个轨迹的运动模式是一种叫插补算法的原理。
插补算法的简要原理是将一个简单运动轨迹分为极其微小的无数段正交直线的轨迹,通过执行每一小段的运动来整体近似达到完整轨迹的方法。实际又分为直线插补,曲线插补,圆周插补。
详细的与原理分析如下链接:
https://blog.csdn.net/gogokongyin/article/details/45153033
https://wenku.baidu.com/view/60b6f4a631126edb6e1a1057.html
代码与仿真分析如下:
https://github.com/zjw11525/MyRobot