找回密码
 立即注册

QQ登录

只需一步,快速开始

打印 上一主题 下一主题
开启左侧

26万转:用最短代码,转最快电机

  [复制链接]
跳转到指定楼层
#
Angus 发表于 2013-12-23 15:55:08 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
本帖最后由 Angus 于 2024-7-17 11:11 编辑

点击图片-->实际大小,可查看高清大图

Mini51ZDE 航模电调——启转快,转速高,最高电转速 30万转以上


下图已达到 25.7万转/分,周期0.7ms/3=0.2333ms,  频率1/0.2333 =4.286KHz


Mini52LDE 电动工具——轻重载起转都顺利


310V (220V的峰值)高压,PWM1 控制过零分压比,启转效果佳


48V BLDC 控制器, 启用 Brake 功能,转动时输出线短路,功率管也不会烧。


吸尘器转速到13万6千转的波形


顺风起转





可以极低转速,4转/秒




上臂做 PWM 的电机端电压波形, 适用于高压BLDC


下臂做 PWM 波形, 下臂开关速度快


上下臂轮流做 PWM 的电机端波形, 上下MOS发热均衡


电流很大,续流时间较长,只单边有斜坡了,无感模式,仍正常转动



代码逻辑清晰:代码分三部分
1>,ADC 中断: 负责读取各路ADC值,以及保证电流不过流。即使功率管关闭仍会每个PWM 周期做ADC 测量,其它不管。
2>,Timer1中断:只负责检过0、换相。电压电流是多少一律不管,即使功率管关闭仍会检过0按时换相。除非关了Timer1的中断,才会停止这些工作。
3>,主循环: 控制起停、调速(决定输出电压)、正反转、高低压保护,以及温度保护等
Mini52xDE_BLDC_Code_V23.zip (132.21 KB, 下载次数: 1289)


Mini52 BLDC 代码简介.pdf

2 MB, 下载次数: 17065

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 顶 踩
回复

使用道具 举报

推荐
 楼主| Angus 发表于 2024-10-22 10:01:10 | 只看该作者
为提高检过 0 的准确性,我们是在一个时间窗检过 0 的。如下图,每次检到过0后,延时 T0 时间换相,延时 T1 时间检过 0。检过 0 是图中斜线阴影时间。
而这个 T1 延时,是变化的,在起转时,稍长。起转成功后,每个周期前 80% 多的时间是不检过0的,只在实际过 0 附近检过0,所以滤除了很多干忧。




你若想验证这一点,可在main() 主循环中反转一个引脚的电平,因检过 0 是在 timer1 中断里,所以此引脚电平不反转时就是在检过0,这样就能看到检过 0 的时间窗了。

下图绿色是 main() 中反转引脚的波形,那些空缺是代码在 timer1 中检过0时间。
  



提高转速,会发现,无轮转速多快,都会在过 0 时间附近有这个空缺,只有这段时间检过0,其它时间是不检过 0 的


回复 支持 1 反对 0

使用道具 举报

推荐
陈飞宇 发表于 2013-12-26 13:37:18 | 只看该作者
貌似非常强大啊
回复 支持 1 反对 0

使用道具 举报

178#
匿名  发表于 2024-7-17 11:28:49
26万转,咋会这么快呢?
回复 支持 反对

使用道具

177#
a760656130 发表于 2024-2-24 15:40:51 | 只看该作者
Angus 发表于 2024-2-23 18:38
有客户在此代码基础上做手电钻

楼主您好,我想制作一个PCBA
我看前面有群友问答里面您有提及直接烧录进去,接线没有错误即可转动,所以我想自己制作试试看;现在就是有2个原理图,一个是这个帖子首页的贴图,一个是首页程序包内有个PDF的原理图,用哪一个制作PCBA更适配这个程序呢?
回复 支持 反对

使用道具 举报

176#
 楼主| Angus 发表于 2024-2-23 18:38:01 | 只看该作者
a760656130 发表于 2024-2-23 13:33
你好 有没有18V手电钻的这个原理图和PCB资料,适配这份代码吗?

有客户在此代码基础上做手电钻
回复 支持 反对

使用道具 举报

175#
a760656130 发表于 2024-2-23 13:33:35 | 只看该作者
你好 有没有18V手电钻的这个原理图和PCB资料,适配这份代码吗?
回复 支持 反对

使用道具 举报

174#
匿名  发表于 2023-6-28 13:56:12
Angus 发表于 2023-6-28 12:20
快速电刹车只需让下三路功率管导通即可。

如果电机在转,先调用   Set_BLDC_Free()关闭六个功率管,然后 ...

非常感谢
回复 支持 反对

使用道具

173#
 楼主| Angus 发表于 2023-6-28 12:20:35 | 只看该作者
本帖最后由 Angus 于 2023-6-28 16:39 编辑
游客 58.209.114.x 发表于 2023-6-28 09:18
感谢楼主,在现有的代码里如何增加刹车功能呢?快速刹车是不是需要硬件调整? ...

快速电刹车只需让下三路功率管导通即可。

如果电机在转,先调用   Set_BLDC_Free()关闭六个功率管,然后用这句就可以让下三路功率管导通刹车
PWM->PHCHG    =  Shut_All_MOS ^ 0x6A;     // PWM135驱动下管,关断数据的1,3,5位取反后写入,就是导通
延时后,再用下句把功率管关上。
PWM->PHCHG    =  Shut_All_MOS ;   

回复 支持 反对

使用道具 举报

172#
匿名  发表于 2023-6-28 09:18:34
Angus 发表于 2023-6-28 09:15
四种起转方式用于四种不同情况,起转前先测电机是否已在转,测不到稳定的过周期过0信号,就是电机在静止
...

感谢楼主,在现有的代码里如何增加刹车功能呢?快速刹车是不是需要硬件调整?
回复 支持 反对

使用道具

171#
 楼主| Angus 发表于 2023-6-28 09:15:03 | 只看该作者
本帖最后由 Angus 于 2023-7-3 13:56 编辑
游客 58.209.114.x 发表于 2023-6-28 08:48
楼主,您好,程序里有四种启动方式,在TabPhase[25]这里数组里吗?问一下它们的区别和原理,另外我这边项目 ...

四种起转方式用于四种不同情况,起转前先测电机是否已在转,测不到稳定的过0信号,电机就是在静止

1,静止起转:电机静止时,用静止起转方式,BLDC_Start(PeriodMax,大于1);  第二个参数估计一个退磁时间,或试起转几次后按测量设定。

2,低速起转:虽测到电机在转,但转速很低,不能直接同步,但可以对齐相位起转,起转会很顺。BLDC_Start(PeriodNow,  temp32), 参数一是测到的转速(换相周期),参数二可取换相周期的1/4左右

3,高速起转,起转前电机在高速转,可直接同步转,BLDC_Start(PeriodNow,0), 与方式二起转相比,此处参数二是0

4,拉回起转状态,这个很少用,这个并不是起转,而是电机在以很低转速同步转,需突然增加电压很多,加速度很快到高速,这样执行一下BLDC_Start(PeriodMax, 0) ,回到刚起转成功状态,会快速调整换相周期,加快提速,防止错相。

所以,快速起动、快速停止的项目,起转仍按上述情况判断,只是起转成功后,快速增加电压,在零点几秒内使电机达到全速。快速停转可增加刹车功能。
回复 支持 反对

使用道具 举报

170#
匿名  发表于 2023-6-28 08:48:52
楼主,您好,程序里有四种启动方式,在TabPhase[25]这里数组里吗?问一下它们的区别和原理,另外我这边项目是一个转速不高,需要立即启动立即停止,电机功率在50W,电压24V,转速在4000rmp左右,应该用那种启动方式?
回复 支持 反对

使用道具

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

新唐MCU