找回密码
 立即注册
楼主: 梁工

BLDC三相无刷直流电机驱动-8H系列/32G系列-无HALL, 12万转, 视频讲解,改进启动算法

 火... [复制链接]
  • 打卡等级:常住居民II
  • 打卡总天数:83
  • 最近打卡:2025-10-15 08:48:47
已绑定手机

6

主题

48

回帖

562

积分

高级会员

积分
562
发表于 5 天前 | 显示全部楼层
梁工您好,看过了V3版本的程序,发现里面也有关于转速的计算,而且是使用了SVPWM进行调控。关于这个运行的稳定性是否和使用PID算法的稳定基本一致。之前使用PID的例程感觉稳定性很好。目前产品测试基本正常,就是启动时方向为反转稍微存在问题。若是V3版本和PID的运行稳压差不多打算改用V3版本。还有一个问题,在之前的版本中,都有比较器检测时间的一个滤波延时补偿,V3中没有,这个是为啥。

点评

V3版本是为了解决启动问题: 1、改进启动算法。使用SVPWM强拖启动,你看到的SVPWM就是启动时使用的,进入闭环后,还是使用的方波驱动。 2、检测顺风、逆风转动。当启动电机时,此时电机可能正在转动,是由于风吹转动  详情 回复 发表于 5 天前
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:200
  • 最近打卡:2025-10-15 13:18:53

77

主题

6775

回帖

1万

积分

超级版主

积分
14384
发表于 5 天前 | 显示全部楼层
月亮*** 发表于 2025-10-11 10:13
梁工您好,看过了V3版本的程序,发现里面也有关于转速的计算,而且是使用了SVPWM进行调控。关于这个运行的 ...

V3版本是为了解决启动问题:
1、改进启动算法。使用SVPWM强拖启动,你看到的SVPWM就是启动时使用的,进入闭环后,还是使用的方波驱动。
2、检测顺风、逆风转动。当启动电机时,此时电机可能正在转动,是由于风吹转动或刚关停电机又启动,电机由于惯性还在转动。启动程序会先检测顺逆风转动,如果是顺风(电机转动方向与要求的一致),则直接进入闭环驱动。如果是逆风转动,则先刹车,再从静止启动。如果检测到电机是静止的,则从静止启动。

您说的PID控制,跟上述的功能改进没有关系,PID是进入闭环后才启动的。但是V3版本的启动要比以前的好得多,建议改为V3的启动,PID不需要改动的。

V3版本的比较器一样是有滤波的:
截图202510111124404876.jpg

回复

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:83
  • 最近打卡:2025-10-15 08:48:47
已绑定手机

6

主题

48

回帖

562

积分

高级会员

积分
562
发表于 5 天前 | 显示全部楼层
梁*** 发表于 2025-10-11 11:24
V3版本是为了解决启动问题:
1、改进启动算法。使用SVPWM强拖启动,你看到的SVPWM就是启动时使用的,进入 ...

好的,了解了。
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:10
  • 最近打卡:2025-10-15 15:34:55
已绑定手机

0

主题

4

回帖

52

积分

注册会员

积分
52
发表于 3 天前 | 显示全部楼层
梁*** 发表于 2025-9-30 14:55
使用2212电机的启动参数。
#define                MOTOR_TYPE        0        //0:2212电机,1:8元风扇单机,2:12万转涵道风扇电机 ...

国庆期间倒腾了几天,做了软硬件上的小修改,最终是转起来了,感谢!


修改点:
1、软件:在原始的MOTOR_TYPE == 0配置基础上修改了几点(如下代码)
2、硬件:过零检测电路的电阻全部使用的10KΩ,电容使用的100nF
3、软件:顺手将原来的ADC11(ADC输入监测电位调速器)改成了PWM捕获模式,以适配手上的PWM调速器(如下代码)

遗留的问题:

1、BeginSpeed、FinishSpeed 参数不管怎么调整 电机和AO4616芯片都有些发热
2、改写成PWM调速器代码后,PWM调速器可调控区间很小(不到全量程的1/5),超过一半量程转速居然还变慢,电机抖动发热(PWM代码如下)

参数配置:
发现BeginSpeed参数从100到300,对应FinishSpeed 从1000到3000都可以跑起来。原始(MOTOR_TYPE == 0)测试过新老硬件都不行。
  1. #if        (MOTOR_TYPE == -1)                        
  2.         // 1503电机
  3.         #define        MPP                                        7
  4.         #define        ROLL_MinSpeed                80
  5.         #define        PRE_PWM_DUTY                100
  6.         #define        START_PWM_DUTY                   200
  7.         #define        STOP_PWM_DUTY                50
  8.         #define        BeginSpeed                        100                             
  9.         #define        FinishSpeed                        1000                        
  10.         #define        D_StartTime                        1000
  11.         #define        PRE_STATE_TIME1                50
  12.         #define        PRE_STATE_TIME2                35
  13.         #define        PRE_STATE_TIME3                20
复制代码


PWM调速器代码:
1、依然使用的ADC11的P0.3口作为PWM捕获输入
2、通过CC7/8不重复模式,分别捕获上升和下降沿,只获取PWM高电平时长
3、测试手里的PWM调速器数据(在STC8H1K28下),高电平最小到最大占空比是850us到2160us(使用时直接取的1000 ~ 2023作为电机PWM_SET值输入)
  1. // PWM输入信号捕获
  2. u16 cap1,cap2;                                                                // CC7、CC8捕获值
  3. u16 cap;                                                                        // 捕获差值即测量的PWM高电平脉宽
  4. void PWMIN_Config(void)                                                // 输入信号PWM初始化设置
  5. {
  6.         //--------------------------PWMB设置-CC7捕获上升沿、CC8捕获下降沿-----------------------        
  7.         PWMB_PS |= 0x80;                                        // PWM通道8映射P0.3
  8.         PWMB_CCER2 = 0x00;                                        // 关闭通道
  9.         PWMB_CCMR3 = 0x02;                                         // CC7通道配置为输入,映射在TI8FP7上
  10.         PWMB_CCMR4 = 0x01;                                         // CC8通道配置为输入,映射在TI8FP8上
  11.         PWMB_CCER2 = 0x11;                                        // 使能CC7、CC8通道
  12.         PWMB_CCER2 |= 0x00;                                        // 设置CC7捕获上升沿
  13.         PWMB_CCER2 |= 0x20;                                        // 设置CC8捕获下降沿
  14.                
  15.         PWMB_IER = 0x10;                                         // 使能CC8捕获中断               
  16.         PWMB_CR1 |= 0x01;                                         // 使能PWMB计数器
  17. }
  18. void PWMIN_ISR() interrupt PWMB_VECTOR
  19. {
  20.         if (PWMB_SR1 & 0x10)                                // 当CC8捕获中断标志置1
  21.         {        
  22.                 PWMB_SR1 &= ~0x10;                                // 清零捕获中断标志
  23.                 cap1 =(PWMB_CCR7H << 8) + PWMB_CCR7L;        // 读取捕获1计数值CCR7
  24.                 cap2 =(PWMB_CCR8H << 8) + PWMB_CCR8L;        // 读取捕获2计数值CCR8
  25.                 cap = cap2 - cap1;                                // 高电平脉宽=两次捕获差值
  26.         }
  27. }
复制代码



点评

电机驱动跟电路和软件息息相关,如果我有一套你的电路和电机,就可以调好。无感方波驱动还是比较容易做好的。  详情 回复 发表于 3 天前
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:200
  • 最近打卡:2025-10-15 13:18:53

77

主题

6775

回帖

1万

积分

超级版主

积分
14384
发表于 3 天前 | 显示全部楼层
impu*** 发表于 2025-10-13 22:25
国庆期间倒腾了几天,做了软硬件上的小修改,最终是转起来了,感谢!

电机驱动跟电路和软件息息相关,如果我有一套你的电路和电机,就可以调好。无感方波驱动还是比较容易做好的。
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-10-15 15:11:31
已绑定手机

0

主题

2

回帖

14

积分

新手上路

积分
14
发表于 前天 11:03 | 显示全部楼层
STC8H-无HALL-Ver3的版本,能不能请梁工发一个加了一个正反转的?我把step改一下后,貌似也无法反转,把帖子从1-72看了一下,貌似不少人在问这个反转的修改。

点评

反转不难的吧?就是换相序列和过0检测颠倒一下即可。 我空了改一个吧。  详情 回复 发表于 前天 22:46
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2025-10-14 11:37:20
已绑定手机

0

主题

1

回帖

8

积分

新手上路

积分
8
发表于 前天 11:37 | 显示全部楼层
手里有个48V的无刷电机,但是没看到有48V的方案。请问该方案是否兼容,对应的R2,R8,R14电阻是怎样计算的呢?

点评

程序一样,+12V供电要处理,反电动势分压电阻要改大接电枢的那个电阻,保证48V分压后为3~4V即可。  详情 回复 发表于 前天 22:55
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:200
  • 最近打卡:2025-10-15 13:18:53

77

主题

6775

回帖

1万

积分

超级版主

积分
14384
发表于 前天 22:46 | 显示全部楼层
hous*** 发表于 2025-10-14 11:03
STC8H-无HALL-Ver3的版本,能不能请梁工发一个加了一个正反转的?我把step改一下后,貌似也无法反转,把帖 ...

反转不难的吧?就是换相序列和过0检测颠倒一下即可。
我空了改一个吧。
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:200
  • 最近打卡:2025-10-15 13:18:53

77

主题

6775

回帖

1万

积分

超级版主

积分
14384
发表于 前天 22:55 | 显示全部楼层
滕*** 发表于 2025-10-14 11:37
手里有个48V的无刷电机,但是没看到有48V的方案。请问该方案是否兼容,对应的R2,R8,R14电阻是怎样计算的呢 ...

程序一样,+12V供电要处理,反电动势分压电阻要改大接电枢的那个电阻,保证48V分压后为3~4V即可。
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:266
  • 最近打卡:2025-10-15 11:17:50

0

主题

4

回帖

1030

积分

金牌会员

积分
1030
发表于 昨天 11:56 | 显示全部楼层
梁工帮忙看看用IPM模块的这个图有没有问题
1.pdf (125.7 KB, 下载次数: 2)
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-10-16 03:28 , Processed in 0.152702 second(s), 115 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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