直流无刷电机【一】从零开始上手

博主分享了自己从零开始制作无刷电机驱动板的经历,使用了IRLR7843TRPBF MOSFET、IR2104驱动器和CKS32F030C8T6主控。虽然缺乏相电流采样,但通过磁编码器实现了简单的速度和位置闭环控制。文章详细解释了直流无刷电机的工作原理,尤其是六步换相法,并提供了开环控制的简单代码示例,帮助初学者理解无刷电机的运行机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这学期正好学完了两学期的电机学,加上个人一直对四轴无人机的无刷电机与电调感兴趣,同时也比较喜欢几个月前看见的foc控制的电机旋钮那个开源项目,于是自己做了一套无刷电机驱动板(算是真正的从0开始),淘宝买了个十几块的不知名云台无刷电机就开始瞎折腾了。

mos是IRLR7843TRPBF,三相桥驱动是很原始的三个IR2104方案,主控是cks32f030c8t6,原理图方案说不上有多好,随便看看就行,毕竟由于连可调直流电源都没有,12V都是从PD快充头里出来的,还好这电机堵转电流都才1A多点,功率不大。

这驱动板也没法做foc控制,因为没有相电流采样,传感器只有在电机底部加的一个磁编码器as5600,只能做简单的速度和位置闭环,不过就个人上手感觉够了。

关于直流无刷电机

直流无刷电机即BLDC,这东西有三根线对应Y型连接绕组的三相,此外一般是外转子的(航模无刷电机和我在淘宝上能看到的大多数都是),我也不知道为什么。

关于六步换相

直流无刷电机驱动的核心就是六步换相法,换相即按顺序改变导通的两相绕组进而改变电枢绕组产生的磁场方向,这样就相当于产生一个旋转磁场带着转子转(跟异步电机有点眼熟),之所以是六步,是因为按照这个流程六步即旋转一个电角度,形成一个周期。因为是电控制换相,所以叫“无刷”。有电机学基础看下面这个视频就很容易明白。

无刷电机工作原理演示动画_哔哩哔哩_bilibilliubu

而六步换相法的核心是如何确定换相时刻,最好的换相时刻肯定是在电机刚好旋转至上一个状态磁场指向时,而如何实现就延伸到有感(有传感器)的霍尔/磁编码器换相检测或者无感的反电动势检测,这是后话了。

顺带提一句,直流无刷电机的调速跟六步换相的时刻没关系,调速是通过改变三相全桥mos的占空比进而改变加在绕组上的电机实现的,乱改换相时刻只会让电机不转或者转的顿挫感极强。

关于如何简单粗暴的让它转起来

我觉得初次上手这个没必要直接去折腾怎么找换相时间,有大概率陷入对传感器的迷惑之中,所以最简单粗暴的方法是直接开环跑六步换相。

while (1)
  {
	  EN1_ON;
	  EN2_OFF;
	  EN3_ON;
	  IN1_OFF;
	  IN3_ON;
	  //HAL_Delay(2);//U+M-
	  for_delay_us(delay_time);

	  EN1_OFF;
	  EN2_ON;
	  EN3_ON;
	  IN3_ON;
	  IN2_OFF;
	  //HAL_Delay(2);//U+V-
	  for_delay_us(delay_time);

	  EN1_ON;
	  EN2_ON;
	  EN3_OFF;
	  IN2_OFF;
	  IN1_ON;
	  //HAL_Delay(2);//M+V-
	  for_delay_us(delay_time);

	  EN1_ON;
	  EN2_ON;
	  EN3_OFF;
	  IN3_OFF;
	  IN1_ON;
	  //HAL_Delay(2);//M+U-
	  for_delay_us(delay_time);

	  EN1_OFF;
	  EN2_ON;
	  EN3_ON;
	  IN2_ON;
	  IN3_OFF;
	  //HAL_Delay(2);//V+U-
	  for_delay_us(delay_time);

	  EN1_ON;
	  EN2_ON;
	  EN3_OFF;
	  IN2_ON;
	  IN1_OFF;
	  //HAL_Delay(2);//V+M-
	  for_delay_us(delay_time);
}

所谓开环跑,是直接确定六步换相每步间的时间间隔(六步换相的顺序是固定的),即代码中的delay_time,在我的测试中delay_time在ms级时电机会转的顿挫震动感极强,降到100us左右时效果比较好(虽然也有顿挫感)。

于是我们好歹能让电机转起来了。

BLDC开环六步换相

直流电机堵转检测电路可以采用多种方法。其中种常见的方法是使用速度波动检测法。该方法的基本思路是在快速环路(电流环)内记录观测器输出的速度值,然后在慢速环路(速度环)内计算速度的平均值以及速度的波动。如果速度的波动超过设定的阈值,就可以判断为发生了堵转事件。然而,速度波动检测法在某些特定场景下可能失效,特别是负载突变的时候。因此,该方法并不推荐用于堵转检测。另种可靠的方法是使用反电动势校验法。该方法通过检测电机的反电动势信号来判断是否发生了堵转事件。具体实现时,可以将电机的反电动势信号送到控制电路中,通过判断信号的高低来确定电机是否正常工作。另外,对于无传感器的直流无刷电机,可以使用无传感器六步方波控制方案来实现堵转检测功能。该方案通过对反电动势过零的周期进行判断,如果周期异常并持续段时间,就触发堵转检测。具体实现时,可以对过零点周期进行比较和计算,判断是否满足异常状态的条件,如果满足则触发堵转检测事件停机。总之,直流电机堵转检测电路的设计需要根据具体的应用场景和需求来选择合适的方法。 #### 引用[.reference_title] - *1* *3* [无感无刷电机控制堵转检测](https://blog.csdn.net/Still8912/article/details/103537864)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [电机的堵转检测及处理](https://blog.csdn.net/weixin_44947987/article/details/107185788)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值