步进电机整步、半步、细分波形理解

在这里插入图片描述

混合式四线双极性步进电机:

步进电机的整步、半步、细分:

整步:A-B-A'-B'各加一次脉冲完成一圈旋转360度,但42步进电机转子齿数50,两相混合式步进电机的基本步距角为360/50/4=1.8度/步,(每4拍才转一个齿)。一共4*50=200个脉冲转一圈;

半步:配上半步驱动器后,步距角减少为0.9度;

细分:配上细分驱动器后。其步距角可细分达256倍(0.007度/微步)

流过电机绕组电流波形:

 细分实现:

假设电机转矩需要电流为2A,A相接收到一个脉冲后就会达到2A(电流设置会控制在2A),细分后接收到一个脉冲后不可能达到2A,平均值假设0.5A,只能增加触发脉冲频率来使流过电机线圈的电流平均值达到2A.

SPWM波使用两种方式来接近正弦波,正弦波可平滑的控制电机,一种是实时改变PWM的脉宽,正弦波形顶部使用更宽的PWM波,使平均值更接近正弦波形;另一种PWM脉宽固定,实时改变脉冲频率,正弦波顶部增加脉冲个数,使平均值接近正弦波;

步进电机的PWM脉宽固定,增加脉冲频率,就会使流过电机线圈的电流平均值增加0.5A-1A-1.5A-2A,由现在的阶梯型波形代替矩形波;和SPWM的区别是脉冲频率固定,并不是随时间频率发生变化,不是将阶梯型替代正弦波。

衰减模式此处可不必看,研究中

9.2.2.3 Decay Modes步进驱动器DRV8825的衰减模式:
The DRV8825 supports three different decay modes: slow decay, fast decay, and mixed decay. The current through the motor windings is regulated using a fixed-frequency PWM scheme. This means that after any drive phase, when a motor winding current has hit the current chopping threshold (I TRIP ), the DRV8825 will place thewinding in one of the three decay modes until the PWM cycle has expired. Afterward, a new drive phase starts.
The blanking time, t BLANK , defines the minimum drive time for the current chopping. I TRIP is ignored during t BLANK ,
so the winding current may overshoot the trip level.

支持三种衰减模式,慢衰减(减速)、快衰减(刹车)和混合衰减模式。通过电机绕组的电流被固定频率的PWM控制,这意味着当一个电机绕组电流达到斩波电流的时候,DRV8825将让这个绕组处于衰减模式直到结束PWM本次脉冲,开始下一个相位;

TBLANK消隐时间为电流斩波定义了最小的驱动时间,ITRIP在消隐时间内被忽视

细分定义:

步进电机细分驱动的实质是步进电机在输入脉冲切换(绕组通电切换)时,只 改变相应绕组中的电流的一部分,即对相电流实施微量控制,利用各相电流的 阶梯变化产生一系列的假想的磁极对,则转子对应的每步运动也相应只是原步 距角的一部分,即达到细分的目的。

步进电机细分驱动的实现方法,其基本目的是把步进电机的每一粗步进行细 分,得到较小的步距,这就要求使电机各相绕组中的电流按一定的规律阶梯上 升或下降,即分段达到相电流的额定值,然后再分段降为零,

归纳起来,其实 现的方法可以分为如下几类: 
1) 、 放 大型细分驱动技术 其基 本 思 路是把等幅等宽的电压或电流方波合成而得到阶梯波,从而控制 绕组中的电流阶梯上升或下降,这又分为两种方法: 
a、 先 放大 再叠加,即先对等幅等宽的方波信号进行功率放大,再在电机 绕组 上 进 行 叠 加而得到阶梯形电流。DRV8825应该采用这种
b、 先 叠 加再放大,即先将等幅等宽的方波信号进行叠加得到阶梯形电流, 而后 经 功 率 放 大再施加到电机绕组上。
2) 、 脉 宽调制(PWM)细分驱动 细分 驱 动 技术中,阶梯波电流的产生很自然会想到应用脉宽调制PWM持不变,改善了绕组电流波形,提高了步进电机的高频特性。 恒流 斩 波 驱动技术虽然有许多缺点,如低速运行时由于绕组电流冲击大, 使低频产生振荡,运行不平稳,噪声大定位精度没有提高等,但由于它极大地 改善了电流波形,采用能量反馈,提高了电源效率,改善了矩频特性,故目前 国内各厂家生产使用的改造型步进电机数控系统的驱动大部分是这种类型
 

 

### STM32 控制步进电机半步驱动方法 #### 配置硬件连接 为了实现STM32对步进电机半步驱动,首先需要了解具体的硬件连接方式。通常情况下,步进电机有五根线(对于五线四相步进电机),其中一根为公共端子,其余四根分别对应四个绕组。这些绕组需依次通电来使转子转动特定角度。 在实际操作中,应将步进电机的数据线接到L298N或其他类型的H桥芯片上,再由该芯片与STM32相连[^1]。具体到引脚分配方面,则取决于所使用的开发板型号以及个人设计习惯;然而一般而言,GPIO口会被指定用于发送脉冲信号给驱动模块以控制电流流向各个定子线圈。 #### 编写初始化函数 接下来就是软件部分的工作了——编写程序完成必要的设置工作: ```c void TIM_Config(void){ // 定义定时器参数结构体并填充默认值 TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); // 设置自动重装载寄存器周期值 TIM_TimeBaseStructure.TIM_Period = 7199; // PSC预分频数=71,即频率变为原来的1/(PSC+1)=1/72倍 TIM_TimeBaseStructure.TIM_Prescaler = 71; // 向上计数模式 TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; // ARR更新事件发生后重新开始向上计数 TIM_TimeBaseStructure.TIM_RepetitionCounter = 0; TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure); } ``` 上述代码片段展示了如何配置一个基本的PWM波形生成器,这有助于后续更精细的速度调节功能实现[^2]。 #### 实现半步序逻辑 针对半步驱动模式下的进序列,以下是C语言描述的一个简单例子: ```c // 假设我们定义了一个数组存储每一的状态 uint8_t step_sequence[][5]={ {1,0,0,0}, // A {1,1,0,0}, // AB {0,1,0,0}, // B {0,1,1,0}, // BC {0,0,1,0}, // C {0,0,1,1}, // CD {0,0,0,1}, // D {1,0,0,1} // DA }; int current_step = 0; void StepMotorHalfStep(int direction){ int next_step=(current_step+(direction?1:-1)+sizeof(step_sequence)/sizeof(*step_sequence))%(sizeof(step_sequence)/sizeof(*step_sequence)); GPIO_Write(GPIOA,(unsigned long)step_sequence[next_step]); current_step=next_step; } ``` 此段代码实现了基于方向变量`direction`(正向或反向移动)改变当前骤索引,并据此调输出至相应IO端口上的高低电压状态组合,从而达到让电机按照预定路径旋转的目的[^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值