基于STM32步进电机多细分控制的设计

发布时间:2023-06-26  

本文主要介绍了一种基于STM32的混合式步进电机控制方案,STM32产生PWM(脉宽调制信号),利用PWM完成DAC转换,通过PWMDAC的输出电压实现对步进电机的多细分控制。该设计相比利用DAC数模转换芯片的设计方案具有电路简单,费效比高的优点,而且可实现步进电机十六分之一步的驱动控制,精度较高。


1、硬件设计

硬件设计框图如图1所示,主要由PC上位机给STM32F103发送控制命令,通过STM32F103控制A3988,从而驱动两个步进电机转动。其中,STM32F103是意法半导体公司生产的基于ARMCortex—M3内核的微控制器,内核架构先进,性能优越,主频可达72MHz,执行效率高,具有较高的运算能力及数据处理功能,拥有丰富的外设接口,在硬件设计中,上位机与STM32F103之间的RS—422串行通信,就是通过外接MAX3079电平转换芯片来实现的。

基于STM32步进电机多细分控制的设计

图1硬件设计框图

STM32F103控制定时器产生PWM,通过LPF(低通滤波器)实现PWM的DAC转换,并由PWMDAC来提供A3988的4个基准电压,设计中,定时器TIM1的输出通道在经过滤波器后与A3988的参考电压VERFx接口相连,PC0~3,PB12~15,PB6~9为通用GPIO输出端口,接A3988的逻辑控制信号输入脚I0x、I1x和Phasex,PC0~3和PB12~15分别置低,Phasex用于控制流过电机各相电流的方向。选用的步进电机的步距角为0.9,额定电流为0.5A。


2、多细分控制原理分析与实现

2.1、多细分控制原理分析

选用电机为两相步进电机,假设为A、B相,通过两相的电流在相位上相差为90,控制流过两相的电流大小和方向就可以控制电机转动。A3988是一个4DMOS全桥脉宽调制电机驱动器,可以同时驱动两个步进电机,每个全桥输出电流最大可达到1.2A。流过电机的每一相电流可以通过UREFx,I0x,I1x,Phasex和接SENSEx引脚的电阻Rx进行控制。工作电流通过公式(1)可以得到。


ITripMax=UREFx/(3RSx)(1)

由式(1)可知,最大电流ITripMax是由UREFx和RSx共同决定,UREFx为PWM-DAC的输出的电压,其最大值为1.1V,RSx选用1欧的电阻。

ITrip=(%ITripMax/100)ITripMax(2)

式(2)中,ITrip为实际输出的电流,逻辑接口I0x,I1x控制%ITripMax,由A3988的用户文档可知,当I0x,I1x控制逻辑都为低时,实际输出电流就等于最大电流,由上述公式可知,ITrip最大输出约为367mA。


为实现步进电机多细分控制,必须能够控制流过步进电机的两相电流,在参考电压UREFx一定的情况下,使用逻辑接口I0x,I1x,Phasex仅可实现步进电机整步、半步和四分之一步的驱动控制,这样的细分控制并不能满足设计需求,为了得到更多的细分,设计采用动态改变UREFx的方法来输出动态变化的电流,通过对UREFx的多细分控制,来实现对ITrip的多细分,从而实现对步进电机多细分控制。


UREFx由PWM-DAC输出,其值在0~1.1V变化,将其按0~π的正旋曲线32等分得到32个电压值,令PWM-DAC输出的值为这32个值,从而对应得到0~1.1V的32个电压值和按正弦规律变化的32个电流值,通过Phasex控制电流方向,可实现步进电机1/16步的驱动控制。


2.2、PWM实现DAC转换的原理及设计

虽然大容量的STM32F103具有内部DAC,但是更多的型号是没有DAC的,本文中所用到的STM32F03就没有DAC外设功能。不过STM32所有的芯片都有PWM输出,因此,可以用PWM+LPF来实现PWM-DAC输出,从而节省成本。


PWM本质上是一种周期一定而高低电平的占空比可以调制的方波信号,实际电路中典型的PWM波形如图2所示。

基于STM32步进电机多细分控制的设计

图2典型的PWM波形

图2的PWM波形可以用分段函数表示为式(3)。

基于STM32步进电机多细分控制的设计

式(3)中,T是STM32定时器TIM1的计数频率(最高可达72MHz)的倒数,N是PWM波一个周期的计数脉冲个数,也就是STM32的ARR—1的值,n是PWM波一个周期中高电平的计数脉冲个数,也就是STM32的CCRx的值,VH和VL分别是STM32产生PWM波的高低电平电压值,高电平为3.3V,低电平为0V,k为谐波次数,t为时间。将式(3)展开成傅里叶级数,得到式(4)。

基于STM32步进电机多细分控制的设计

从式(4)可以看出,式(4)中第1个方括弧为直流分量,第2项为1次谐波分量,第3项为大于1次的高次谐波分量。直流分量与n成线性关系,并随着n从0到N,直流分量在0~3.3V变化。这正是电压输出的DAC所需要的。因此,如果能把式中除直流分量外的谐波过滤掉,则可以得到从PWM波到电压输出DAC的转换,即:PWM波可以通过一个低通滤波器进行解调。其中,第2项的幅度和相角与n有关,频率为1/(NT),其实就是PWM的输出频率。该频率是设计低通滤波器的依据。如果能把1次谐波很好过滤掉,则高次谐波就基本不存在了。


选用RC二阶低通滤波器实现PWM波的解调,电路设计如图3所示。

基于STM32步进电机多细分控制的设计

图3二阶低通滤波器调理电路

当N取值为256时,PWM-DAC的分辨率为log2(N)=8位,在8位分辨条件下,要求1次谐波对输出电压的影响不要超过1个位的精度,也就是3.3/256=0.01289V。由式(4)可知,一次谐波的最大值是2×3.3/π=2.1V,所以,RC滤波电路要提供至少-20lg(2.1/0.01289)=-44dB的衰减。

当STM32的定时器TIM1的计数频率是72MHz,分辨率为8的时候,PWM频率为72/256=281.25kHz。如果是1阶RC滤波,则要求截止频率为1.77kHz,如果为2阶RC滤波,则要求截止频率为22.34kHz。相比之下,2阶滤波器的信号抑制能力更强,滤波效果更好。由分析可知,2阶RC滤波截止频率计算公式为:

基于STM32步进电机多细分控制的设计

7.96×10-5,可确定电路参数值,令R1=R2=2.4kΩ,C1=C2=3300pF,可计算出图3的截止频率为21.9kHz,略小于22.34kHz,符合设计需求。PWM波调制后,输出的直流分量最大值为3.3V,而UREFx可操作的电压的范围是只有0~1.5V,可利用一个2.4kΩ的电阻R3与滤波器串联,从而实现对直流分量的分压调理。


3、软件设计

软件设计主要是电机驱动软件的相关设计,通过对定时器的控制,实现电机的转动方向和速度的调节,其次是PC上位机控制软件设计,主要利用C++Bulider平台开发,完成对步进电机的测试。


3.1、PWM信号产生的设计

STM32F103中的7个定时器,每个定时器均有4个独立可编程通道输出的PWM信号。选用高级定时器TIM1,它由APB2总线提供时钟,设置为72MHz,向上(增)计数,自动装载寄存器ARR—1的值为256,所以,PWM波的占空比的取值范围为0~256,不同占空比的取值存储在每个通道的捕获比较寄存器CCRx中,编程时,通过改变寄存器CCRx的值来改变PWM波的占空比。占空比值的计算如式(6)所示。

基于STM32步进电机多细分控制的设计

这样就得到正旋曲线0~π范围内的32个点对应的占空比的值。将得到的占空比的值放在定义的数组Sequence[32]内,通过查表的方法,使定时器TIM1输出占空比变化的PWM波,通过滤波器后产生UREFx的波形如图4。

基于STM32步进电机多细分控制的设计

图4PWM产生UREFx波形图

从图中可以看出,输出信号UREFx波形达到了预期目标。由于选择了合适的滤波器参数,PWM波和UREFx几乎不存在大的相位差。


3.2、Phasex信号产生的设计

Phase1~Phase4用于控制流过电机各相电流的方向,当Phase1为1时,电流从OUT1A流向OUT1B流向,当Phase1为0时,电流从OUT1B流向OUT1A,其他三相控制原理相同,下面就以Phase1为例加以阐述。


STM32F103通过PB6来控制Phase1信号,配置PB6为推挽输出端口,在UREFx奇数次周期时,将PB6置1,偶数次周期时,PB6置0,在0~2π区间内,PB6将变化两次。Phase1信号变化如图5所示。

基于STM32步进电机多细分控制的设计

图5Phase1信号变化波形

通过Phasex信号对电流方向的控制,可实现实际输出电流ITrip以2π为周期的正弦曲线变化,在0~2π共产生64个电流值,从而实现了步进可实现步进电机十六分之一步的驱动控制。

3.3、步进电机正反转和变速控制

由于通过步进电机A、B相的电流在相位上相差为90,当A相超前B相时,电机正转,而当B超前A时,则电机反转。所以,控制流过A、B相电流的相位差,即可实现对步进电机的方向控制,也就是控制输入参考电压的相位差。在软件设计时,定时器TIM1通过查表法输出PWM波,在占空比数组的初始下标取值时,让A、B相对应的PWM输出相差90。例如,当A相对应的PWM输出的初始占空比为Sequence[0]时,B相为Sequence[16],这样使得输入各相的参考电压在相位上相差了90。

在步距角已知的情况下,通过控制相邻两个取值的变化时间间隔,便可以控制电机的转动速度,时间间隔越小,转动速度越高,时间长则转速低。为了得到两个取值变化之间精确的时间间隔,设计通过定时器TIM2进行精确的定时控制,TIM2中ARR—1的取值通过等分0~π2正弦曲线的办法计算得到,在这里不再赘述,定时器产生定时中断,中断响应中改变PWM占空比的值,实现了速度10级可调。可知,在步进电机实现变速控制时,Phasex和UREFx的频率都发生了变化。


3.4、上位机控制和实验测试

STM32F103提供功能强大的USART串口功能,在本设计中,通过外接电平转换芯片实现了上位机与MCU之间的RS—422串行通信,RS—422是一种全双工的通讯总线。STM32F103通过计算PWM占空比变化的次数和TIM2的中断周期,将电机的位置点和速度信息发送至上位机,上位机利用增量式PID算法,向步进电机发送控制命令,实现对电机的实时控制。

为了确定系统能否按照设计需求工作,需要对系统进行测试。上位机模拟生成一段目标航路,控制步进电机跟踪,测试结果如图6所示。

基于STM32步进电机多细分控制的设计

图6模拟航路跟踪误差曲线

由测试结果可知,步进电机跟踪精度在2mil之内,达到了模型设计的需求。


4、结束语

本文介绍了基于STM32F103和A3988的步进电机多细分控制系统,较传统的利用DA转换芯片的方案,具有结构简单,灵活性较好等优点,充分利用了A3988技术应用特点和STM32F103芯片优越的性能,极大提高了系统的性能和可扩展性。经实际实验表明,该系统工作稳定,精度高,且具有较高精度及效费比,达到了设计要求,为步进电机控制提供了一种新的方法,具有一定推广价值。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>