打印
[STM32F1]

基于ARM单片机的两相步进电机驱动设计

[复制链接]
690|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Clovee|  楼主 | 2020-4-30 23:28 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
基于ARM单片机的两相步进电机驱动设计

步进电机是一种运用广泛的控制电机,其特征是不使用位置反馈回路就能进行速度控制及定位控制,即所谓的电机开环控制。相对于伺服电机,步进电机有着成本低廉,控制简单等优点,尤其是两相混合式步进电机,在工业运动控制系统中有着广泛的应用。然而,传统的驱动方式,比如单电压驱动、高低电压驱动、斩波恒流驱动等等,虽然已经应用十分成熟,但是只限于低速运行,并且细分度一般限制在1/2步距,无法很好消除低频振荡,以及定位精度差等缺点。细分驱动的出现很好地弥补了这一缺点。

常见的细分控制器一般由MCU、专用逻辑驱动芯片以及功率驱动模块组成,这样的驱动器虽然能满足多细分驱动,但由于细分数量和效果会受到逻辑驱动芯片的影响,并且无法调整细分数和限流值、从而造成系统调试困难、矩频特性差等缺点。

本文使用ST公司的32位ARM单片机,加上MOSFET驱动模块及电流传感模块,省去了逻辑驱动芯片。电机电流采用单片机内部AD采样,控制逻辑算法直接由单片机软件实现,MOSFET按照外部输入的脉冲速度及内部的时序来运行,从而大大简化了应用电路,提高了电路的通用性和驱动性能。

1 意法半导体STM32F103RB单片机简述

STM32F103RB采用ARM公司最新的Cortex-M3内核,具有运行速度高、处理能力强、外设接口丰富等特点。由于其低廉的价格和很强的控制、运算性能,被广泛运用于电机控制。其具体性能指标如下:1)工作频率:最高72 MHz;工作温度范围:-40~+85℃;宽电压供电:2.0~3.6 V;2)128 k字节的闪存存储器和16 k的SRAM;3)12位16通道AD转换器具有双采样和保持功能,转换时间最短1μs。4)3个16位通用定时器,每个定时器有多达4个通道,用于输入捕获/输出比较/PWM或脉冲输出;1个16位带死区控制盒紧急刹车,用于电机控制的PWM高级控制定时器。

2 细分驱动原理

一般两相步进电机驱动分为单极型和双极性驱动两种,单极型驱动适用于6线制电机,这样的驱动方法等于将两相电机转变为四相电机,从表面上看步距角缺损减小了,实则是以牺牲电机的拖动转矩换来的,这样电机的带负载能力就会大大下降。而双极型驱动则主要针对两相四线(或者八线制)电机,一般机械步距角为50齿1.8°(也可为100齿0.9°价格较贵),故细分驱动技术主要是通过对步进电机的相电流进行阶梯化控制,使电机的以更小的单位步距角运行,从而减小步长和低频振荡。

细分驱动的思想是把原来简单的对转子电流的通断过程改变为逐渐的改变各相绕组的电流大小和方向,使电机内部的空间合成磁场逐步改变,这样就能把原来的一个步距角的通电方式改变成为跟随电流的阶梯波,变成多步。具体的计算方法如下:

转矩T在一般情况下可表示为:

T=KT·(-Iasinθ+Ibcosθ) (1)

式子中KT在理想状态下的比例常数,θ为转子的电角度位置。

如果两相步进电机的矩角特性是正弦波,则给绕组通入如下电流:

Ia=Im·cosβ

Ib=Im·sinβ (2)

β为电机希望定位的电角度。

将式(2)代入式(1),则

T=KT·Im·sin(β-θ) (3)

从而可见,两相混合式步进电机的细分就是控制两相绕组中的电流大小。理想状态下,电机内部的磁场为圆形空间旋转磁场,使步进电机按照交流同步电机的方式旋转。而AB相的理想电流为正弦波,而一般情况下通过阶梯波来模拟正弦波,从而达到恒转矩幅值的控制效果。而转矩的大小由合成磁场的矢量来决定,即相邻两个合成磁场的夹角为细分步距角。

每当β变化一度,则步进电机走过1/360的电角度,例如一般的8细分控制,则β的步长为π/16。所以为了实现对两相混合式步进电机的恒转矩细分控制,就需要在电机的两相绕组中通以按正弦规律变化并互差90°相位的的两相电流,阶梯越细小,越接近于正弦波,步距角也越小,细分效果越好。


3 系统硬件设计

基于STM32F103RB驱动系统的硬件部分主要由信号输入端、电源输入端、电源模块、MOSFET驱动模块、H桥模块和采样放大模块组成。总体硬件图如图3所示。


3.1 输入信号

在硬件设计中,需要从外部输入3种信号:Enable使能信号、Dir电机转向信号以及Frequency速度脉冲信号。Enable信号为使能信号,为防止电机在停止时,定子绕组仍然通电造成的电机发热而设置的电机转子断电信号。Dir信号控制电机的转向;而Frequency信号为外部控制器件发出的方波脉冲信号,此信号的频率将决定电机的转速,3个控制信号均由光耦与内部隔离。

驱动器上电前需通过拨码开关设置细分数和限流值,目前细分最多支持16细分,限流值一般为电机绕组可承受的最大电流的1.2倍左右,可以设置6档限流值。驱动器最大可承受4 A的电流。

3.2 系统电源

驱动系统的电源由一个外部输入的24~48V的直流电源输入接线端,然后通过BUCK降压芯片至5 V为内部光耦、比较器和运放供电,然后将5 V通过LDO降至3.3 V给MCU供电,这样MCU能获得相对干净的电源。另一路外部电源经过电阻分压,产生一个15 V电源用于MOSFET驱动芯片IR2010的供电。

3.3 驱动电路

MOSFET驱动部分采用IR公司的IR2101S驱动芯片来驱动双H桥,从而靠双H桥来控制一个四线制步进电机。IR2101是IR公司生产的一款高性价比驱动器,使用方法非常简单,性价比高,能输出100~210 mA电流。IR2101驱动器可驱动一组功率管,整个功率电路需4片即可,这样不但节约制造成本,而且还提高系统稳定性。其驱动电路如图4所示。


3.4 电流检测和过流保护

本系统使用采样电阻来采集经过H桥(即电机的定子电流)。此处采样电阻阻值比较大时,会使电阻分压过大,造成H桥的低端电压高于地电压,影响系统的稳定性,而阻值太小又会使信号过小影响检测精度,所以本系统选用0.1Ω电阻作为采样电阻。然后经过LMV358放大后,成为0~3 V的电压信号,在经过一个跟随器后,进入MCU片上AD,进行数模转换,放大后的信号还连接一个比较器用于过流保护。


4 系统软件设计

系统软件主程序框图如图5和图6所示,图5为主程序软件框图,图6为ADC中断软件流程图。

主程序处于死循环状态,每次外部信号Enable后,就会锁存外部的控制频率,方向,限流值,细分度等信号,然后进行内部参数初始化,等待刷新定时器计时完毕后就开始按照计时中的ADC中断及定时器中断完成的参数计算进行调节位置和速度。

其中ADC在每个PWM的上升沿触发,采样两相电流进行处理,并且将其送给PI调节器调节PWM占空比,并且每次都会与限流值进行比较,一旦电流超过限流值,则自行执行脱机。这些程序在中断中完成,可以是系统更具有实时性。另外,每次走完一个阶梯的波形后,程序将触发timer3计数器,进行细分步数的计算,从而快的调整个周期的细分数。TImer3程序流程图如图7所示。

电机的细分步数为每次Enable之后方能调整,而细分值表则由计算好的正余弦参数存于MCU Flash中。


5 结论

    本系统采用电流实时采样并进行PI调节,使两相混合式步进电机的恒转矩运行,真正达到了电流矢量不变控制,在测试中能够有效的降低低频振荡,并且,在16细分的状态下控制工作,大幅度的减小了噪声和阻尼振荡,是一种有效的控制步进电机的手段。



使用特权

评论回复
沙发
八层楼| | 2020-5-9 15:01 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
板凳
观海| | 2020-5-9 15:05 | 只看该作者
arm和avr有什么不同呢 请问

使用特权

评论回复
地板
guanjiaer| | 2020-5-9 15:06 | 只看该作者
看不懂公式啊

使用特权

评论回复
5
heimaojingzhang| | 2020-5-9 15:06 | 只看该作者
没做过电机的相关项目

使用特权

评论回复
6
keaibukelian| | 2020-5-9 15:06 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
7
labasi| | 2020-5-9 15:07 | 只看该作者
流程图看不清啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

708

主题

1032

帖子

2

粉丝