找回密码
 立即注册
查看: 264|回复: 16

求助,电机无法进入闭环

[复制链接]
已绑定手机

2

主题

11

回帖

36

积分

新手上路

积分
36
发表于 2026-7-30 08:11:41 | 显示全部楼层 |阅读模式



采用“三相无刷电机驱动-STC8H-无HALL-Ver3-正反转”代码,测试一款无人机电机(型号D0802,3.7V供电,6对磁极,标称19000KV)。空载时,代码运行到转动检测时出现“逆风”(代码如下),电机刹车停止,无法进入闭环。采用硬盘电机可正常运行(调整供电和反电动势检测电阻),求教各位大神,出现这种情况是什么问题?如何解决?



                                StartTime = (StartTime + RollPahseTimeAB)/2;        //半个周期(3个换相时间)
                                if(!B_CCW && (RollPahseTimeAB < StartTime))        //正转逆风, A相下降沿与B相上升沿时间 < 半周期时间
                                {
                                        P_PWM2N = 1;        P_PWM3N = 1;        //刹车
                                        StartTime = 0;
                                        RollCheckIndex = 4;
                                }
                                else if(B_CCW && (RollPahseTimeAB > StartTime))        //反转逆风, A相下降沿与B相上升沿时间 < 半周期时间
                                {
                                        P_PWM2N = 1;        P_PWM3N = 1;        //刹车
                                        StartTime = 0;
                                        RollCheckIndex = 4;
                                }

回复

使用道具 举报 送花

83

主题

8219

回帖

1万

积分

超级版主

积分
17644
发表于 2026-7-30 09:43:01 | 显示全部楼层
可能是检测反电动势的顺序不对。
回复

使用道具 举报 送花

已绑定手机

2

主题

11

回帖

36

积分

新手上路

积分
36
 楼主| 发表于 2026-7-30 09:46:49 | 显示全部楼层
梁*** 发表于 2026-7-30 09:43
可能是检测反电动势的顺序不对。

用的是你“三相无刷电机驱动-STC8H-无HALL-Ver3-正反转”的代码,在12V硬盘电机上是正常的。

点评

3.7V供电,6对磁极,标称19000KV,则3.7V时转速 = 19000*3.7=70300RPM,即7万转、分,电子转速=19000*3.7*6=421800RPM,即42万转/分,有这么快吗? 1900KV差不多。  详情 回复 发表于 2026-7-30 12:35
回复

使用道具 举报 送花

865

主题

1万

回帖

2万

积分

管理员

积分
25122
发表于 2026-7-30 10:46:36 | 显示全部楼层
截图202607301046308384.jpg


回复

使用道具 举报 送花

865

主题

1万

回帖

2万

积分

管理员

积分
25122
发表于 2026-7-30 10:46:56 | 显示全部楼层

您好!我是 STC 的 FAE 工程师,看到您在论坛上发的这个帖子,我来帮您分析一下这个问题。


问题分析

您遇到的情况是:D0802 无人机电机(3.7V,6对磁极,19000KV)在空载时,转动检测阶段触发"逆风"判断,导致刹车停止,无法进入闭环;而 12V 硬盘电机可以正常运行。

这是一个典型的无感 BLDC 方波驱动低电压、高转速、小电感电机上遇到的适配问题。下面我从几个关键点帮您分析:


1. 核心原因:反电动势(BEMF)检测信号异常

无感 BLDC 的换相依赖于检测悬浮相的反电动势过零点。D0802 这类无人机电机有以下特点,会导致反电动势检测困难:

特性 影响
极对数多(6对) 电气转速 = 机械转速 × 6,换相频率很高,检测窗口极短
KV值高(19000KV) 3.7V 下空载转速约 70,000 RPM,电气频率非常高
电机体积小、电感小 反电动势信号幅值小,信噪比低,容易受 PWM 开关噪声干扰
供电电压低(3.7V) 反电动势幅值正比于转速×磁通,低电压下反电动势信号更弱

而硬盘电机通常是 12V 供电、极对数少(3~4对)、电感较大,反电动势信号干净且幅值足够,所以能正常运行。


2. 代码中"逆风"判断的逻辑

if(!B_CCW && (RollPahseTimeAB < StartTime))        //正转逆风
{
    P_PWM2N = 1;  P_PWM3N = 1;        //刹车
    StartTime = 0;
    RollCheckIndex = 4;
}

这段代码的逻辑是:在转动检测阶段,如果检测到的 A相下降沿与B相上升沿之间的时间(RollPahseTimeAB) 小于 半周期时间(StartTime),就认为"逆风"(即转动方向与预期相反或换相时序错乱),执行刹车。

对于 D0802 电机,由于反电动势信号弱、噪声大,比较器输出的边沿信号可能包含大量毛刺或误触发,导致 RollPahseTimeAB 测量值异常偏小,从而误判为"逆风"。


3. 解决方案建议

方案一:调整反电动势检测分压电阻网络

D0802 在 3.7V 下反电动势幅值较小,需要重新计算分压电阻,确保送入比较器的信号幅值在合理范围内(通常建议反电动势峰值在 0.5V~2.5V 之间,具体取决于比较器参考电压设置)。

  • 检查原理图中反电动势检测分压电阻的比值
  • 对于 3.7V 供电,可能需要减小分压比,提高送入比较器的信号幅度

方案二:增加反电动势信号的滤波电容

在反电动势检测引脚对地并联 10nF~100nF 的电容,滤除 PWM 开关噪声,减少误触发。

方案三:调整转动检测阶段的参数

在代码中,可以适当放宽"逆风"判断条件,或者增加连续多次确认机制:

// 示例:增加连续计数,避免单次误触发就刹车
if(!B_CCW && (RollPahseTimeAB < StartTime))
{
    RollCheckErrCnt++;
    if(RollCheckErrCnt >= 3)    // 连续3次才确认为逆风
    {
        P_PWM2N = 1;  P_PWM3N = 1;  //刹车
        StartTime = 0;
        RollCheckIndex = 4;
    }
}
else
{
    RollCheckErrCnt = 0;    // 正常则清零
}

方案四:提高 PWM 频率

对于小电感电机,PWM 频率过低会导致电流纹波大,干扰反电动势检测。尝试将 PWM 频率提高到 24kHz 或更高,减少噪声。

方案五:调整开环启动参数

无感 BLDC 的启动通常采用"三段式":预定位 → 开环加速 → 切换闭环。对于高 KV 电机,开环加速阶段的频率上升曲线需要调整:

  • 减小开环加速的步长
  • 延长每步的等待时间
  • 降低切换到闭环的转速阈值

4. 建议排查步骤

  1. 用示波器测量反电动势检测引脚(A/B/C 三相分压后的信号),观察信号幅度和波形是否干净
  2. 测量比较器输出,看是否有毛刺或误触发
  3. 在 3.7V 下用手转动电机,测量反电动势幅值,确认分压后信号是否在比较器参考电压范围内
  4. 尝试降低 PWM 占空比启动,看是否能越过"逆风"检测阶段

5. 关于 STC8H 系列用于 BLDC 控制的参考文档

STC8H 系列手册中关于 高级 PWM(支持正交编码器)比较器 的章节,对 BLDC 控制有详细说明,您可以参考:

  • STC8H 手册 - 第25章:16位高级PWM定时器,支持正交编码器(F18T25)
  • STC8H 手册 - 第19章:比较器,掉电检测,内部1.19V参考信号源(F18T19)

总结:您遇到的核心问题是 D0802 无人机电机在低电压下反电动势信号弱、噪声大,导致转动检测阶段误判为"逆风"。建议从 调整分压电阻、增加滤波、放宽逆风判断条件 三个方向入手解决。

如果方便的话,可以拍一下您的反电动势检测电路原理图和比较器参考电压设置,我帮您进一步分析参数是否匹配。


🔍 搜索 "https://www.stcaimcu.com/thread-25046-1-1.html"

⏱️ 查找用时 2.8s | 总回答用时 16.0s

回复

使用道具 举报 送花

83

主题

8219

回帖

1万

积分

超级版主

积分
17644
发表于 2026-7-30 12:35:17 | 显示全部楼层
zxf*** 发表于 2026-7-30 09:46
用的是你“三相无刷电机驱动-STC8H-无HALL-Ver3-正反转”的代码,在12V硬盘电机上是正常的。 ...

3.7V供电,6对磁极,标称19000KV,则3.7V时转速 = 19000*3.7=70300RPM,即7万转、分,电子转速=19000*3.7*6=421800RPM,即42万转/分,有这么快吗? 1900KV差不多。
回复

使用道具 举报 送花

已绑定手机

2

主题

11

回帖

36

积分

新手上路

积分
36
 楼主| 发表于 2026-7-30 12:49:38 | 显示全部楼层
梁*** 发表于 2026-7-30 12:35
3.7V供电,6对磁极,标称19000KV,则3.7V时转速 = 19000*3.7=70300RPM,即7万转、分,电子转速=19000*3.7 ...

梁工,电机铭牌上标注是19000KV,以下是网上查到的信息,按公式「转速=KV值×电压」计算,理论空载转速为 ‌72200 RPM。用现成的EFM8BB10F8G单片机做的驱动板是可以驱动的,实际转速也就在4万转左右。现在只不过是想自己用STC8H1K28单片机实现而已。

D0802无人机电机没有统一的固定KV值,不同品牌的同规格产品有多个主流KV版本:
主流商用版本‌:常见的有19500KV、22000KV、25000KV,部分竞速专用型号还推出了27000KV、28000KV的高转速版本,适配1S锂电池供电场景。
选型参考‌:低KV版本(19500KV)适合追求飞行稳定性的航拍场景,高KV版本(25000KV及以上)更适配竞速穿越机的高转速需求。

点评

有转速计的话可以测试一下实际转速,或者示波器看其6步的时间。我用于小固定翼4000KV的我觉得已经是很高的KV值了。  详情 回复 发表于 2026-7-30 23:11
回复

使用道具 举报 送花

已绑定手机

2

主题

11

回帖

36

积分

新手上路

积分
36
 楼主| 发表于 2026-7-30 12:54:42 | 显示全部楼层
梁*** 发表于 2026-7-30 12:35
3.7V供电,6对磁极,标称19000KV,则3.7V时转速 = 19000*3.7=70300RPM,即7万转、分,电子转速=19000*3.7 ...

如果你代码里面写的12万转是电子转,那这个代码是不适合这个电机。

点评

是的,你的电机如果电子转速达到42万转,我的代码驱动不了的。42万转,就是7000转/秒,就是28000次换相/秒,而PWM频率都没那么快,一个PWM周期不到又要换相了,所以我的程序处理不了的。  详情 回复 发表于 2026-7-30 23:09
回复

使用道具 举报 送花

83

主题

8219

回帖

1万

积分

超级版主

积分
17644
发表于 2026-7-30 23:09:36 | 显示全部楼层
zxf*** 发表于 2026-7-30 12:54
如果你代码里面写的12万转是电子转,那这个代码是不适合这个电机。

是的,你的电机如果电子转速达到42万转,我的代码驱动不了的。42万转,就是7000转/秒,就是28000次换相/秒,而PWM频率都没那么快,一个PWM周期不到又要换相了,所以我的程序处理不了的。

点评

转速竟然这么高  发表于 2026-8-27 20:08
回复

使用道具 举报 送花

83

主题

8219

回帖

1万

积分

超级版主

积分
17644
发表于 2026-7-30 23:11:51 | 显示全部楼层
zxf*** 发表于 2026-7-30 12:49
梁工,电机铭牌上标注是19000KV,以下是网上查到的信息,按公式「转速=KV值×电压」计算,理论空载转速为 ...

有转速计的话可以测试一下实际转速,或者示波器看其6步的时间。我用于小固定翼4000KV的我觉得已经是很高的KV值了。
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-9-23 16:02 , Processed in 0.073395 second(s), 85 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表