当前位置: 首页 > news >正文

【从零开始实现stm32无刷电机FOC】【实践1/3】 stm32高级定时器

  • 点击查看本文开源的完整FOC工程https://gitee.com/best_pureer/stm32_foc
  • 配套硬件:点此前往查看

在完成理论方面的准备后,是可以进行写代码实现了,但是stm32单片机提供了不少可以用于电机控制的硬件外设,充分利用这些硬件资源,可以减少代码量以及提高运行性能。
本文使用的stm32型号为喜闻乐见的stm32f103c8t6,这个芯片的最小系统板价格低、使用量很高,适合学习无刷电机FOC使用。本文使用最流行的stm32cube+hal库配置硬件资源。
用于FOC的硬件外设最重要的两个是:1.高级定时器。2.adc外设的高级用法。本节介绍stm32高级定时器的用法。如果需要实现电机力矩控制,那么需要使用到adc外设。
查看电机控制电路原理图,可以看到6个输入口控制了6个功率管(半桥*3)的开关,继而控制电机相线。从前文理论部分可知,FOC最终控制的是半桥的相线PWM占空比,对应上下桥PWM示意图如下:

image

从上图看到,半桥的上功率管和下功率管不能同时导通,否则功率管会由于短路流经大量电流被烧毁,因此上下两个的功率管的PWM要求互补导通。由于功率管不是理想器件,导通和关断不是瞬间完成的,有上升和跌落的时间,因此在互补状态下还要提供一个死区时间防止开关过程中的上下同时导通。

互补PWM以及死区时间的示意图如下,

image

从上图看,若以正通道高电平周期为标准:

  • 互补通道的变正的时刻(正通道变低的时刻),必须要延后一段时间。
  • 互补通道在变负的时刻(正通道要变高的时候),必须提前一段时间

下图是MOS管NCE6005AS的开关时间,从图中看出,死区时间应该至少设置为17+2.5=19.5ns。

image

stm32的高级定时器在硬件层面提供了生成互补pwm输出功能以及死区功能。下图是定时器配置为上下计数模式的pwm产生示意图,定时器当前计数值与设定的比较线(值)的比较关系控制定时器通道的输出。示意图中计数值低于比较线时输出高电平(输出高电平还是低电平可配置)


image

将上下功率管的控制引脚分别接到单片机pwm输出通道的正通道以及互补通道,即可实现自动互补pwm输出以及自动插入死区时间。

特别地,有些功率管驱动器(半桥驱动器,比如ir2104)自带上下桥互补输出+死区,这样只需pwm正通道即可控制上下桥功率管,就不必开启单片机的PWM互补输出+死区功能了。

 

http://www.aitangshan.cn/news/1117.html

相关文章:

  • Windows 10静默漏洞缓解机制:专为1%人群设计的NtLoadKey3系统调用
  • 初二新初三集训 Part 1
  • 常用命令 - Charlie
  • 2025最新整理PyCharm 2024下载安装教程加免费激活教程
  • R语言绘制单倍型热图
  • # 把时间当作朋友:高效管理的四个关键认知
  • 随笔
  • 2025.8.12打卡
  • P3700 [CQOI2017] 小 Q 的表格 题目分析
  • Oracle DBA必备工具:11G命令自定义创建数据库脚本
  • CF2128游记
  • 02011001 语句
  • 75. 颜色分类
  • Vue vs React 多维度剖析: 哪一个更适合大型项目?
  • MarkDown 常用操作
  • python爬虫类 - LittleD
  • 算法[未完成] - LittleD
  • 设计模式 - LittleD
  • 计算机网络 - LittleD
  • java学习(8月12日)
  • 25暑期训练5 总结
  • 「HDU 6566」The Hanged Man
  • 深入解析:【Jenkins入门以及安装】
  • [25年8月]本地部署 LLM 日语翻译能力实测
  • 「题解」仓鼠找 sugar
  • 【C++】C++中只用指针而无需完整类型定义的技巧与原理
  • 项目技术点(1) - Charon
  • (简记)线段树优化建图
  • 第三十一天
  • 本地部署 LLM 翻译能力实测